libwpd_internal.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* libwpd
3  * Version: MPL 2.0 / LGPLv2.1+
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * Major Contributor(s):
10  * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
11  * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
12  *
13  * For minor contributions see the git repository.
14  *
15  * Alternatively, the contents of this file may be used under the terms
16  * of the GNU Lesser General Public License Version 2.1 or later
17  * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
18  * applicable instead of those above.
19  *
20  * For further information visit http://libwpd.sourceforge.net
21  */
22 
23 /* "This product is not manufactured, approved, or supported by
24  * Corel Corporation or Corel Corporation Limited."
25  */
26 
27 #ifndef LIBWPD_INTERNAL_H
28 #define LIBWPD_INTERNAL_H
29 
30 #include <librevenge/librevenge.h>
31 #include <librevenge-stream/librevenge-stream.h>
32 #include "WPXEncryption.h"
33 
34 /* Various functions/defines that need not/should not be exported externally */
35 
36 #define DELETEP(m) if (m) { delete m; m = 0; }
37 
38 #if defined(__clang__) || defined(__GNUC__)
39 #define WPD_ATTRIBUTE_PRINTF(fmt, arg) __attribute__((format(printf, fmt, arg)))
40 #else
41 #define WPD_ATTRIBUTE_PRINTF(fmt, arg)
42 #endif
43 
44 #ifdef DEBUG
45 namespace libwpd
46 {
47 void debugPrint(const char *format, ...) WPD_ATTRIBUTE_PRINTF(1, 2);
48 }
49 
50 #define WPD_DEBUG_MSG(M) libwpd::debugPrint M
51 #else
52 #define WPD_DEBUG_MSG(M)
53 #endif
54 
55 #define WPD_NUM_ELEMENTS(array) sizeof(array)/sizeof(array[0])
56 
57 // add more of these as needed for byteswapping
58 // (the 8-bit functions are just there to make things consistent)
59 unsigned char readU8(librevenge::RVNGInputStream *input, WPXEncryption *encryption);
60 unsigned short readU16(librevenge::RVNGInputStream *input, WPXEncryption *encryption, bool bigendian=false);
61 signed short readS16(librevenge::RVNGInputStream *input, WPXEncryption *encryption, bool bigendian=false);
62 unsigned readU32(librevenge::RVNGInputStream *input, WPXEncryption *encryption, bool bigendian=false);
63 
64 librevenge::RVNGString readPascalString(librevenge::RVNGInputStream *input, WPXEncryption *encryption);
65 librevenge::RVNGString readCString(librevenge::RVNGInputStream *input, WPXEncryption *encryption);
66 
67 void appendUCS4(librevenge::RVNGString &str, unsigned ucs4);
68 
69 // Various helper structures for the libwpd parser..
70 
71 int extendedCharacterWP6ToUCS4(unsigned char character, unsigned char characterSet,
72  const unsigned **chars);
73 
74 int extendedCharacterWP5ToUCS4(unsigned char character, unsigned char characterSet,
75  const unsigned **chars);
76 
77 int appleWorldScriptToUCS4(unsigned short character, const unsigned **chars);
78 
79 int extendedCharacterWP42ToUCS4(unsigned char character, const unsigned **chars);
80 
81 unsigned short fixedPointToWPUs(const unsigned fixedPointNumber);
82 double fixedPointToDouble(const unsigned fixedPointNumber);
83 double wpuToFontPointSize(const unsigned short wpuNumber);
84 
97  };
98 
102 
104 
106 
107 // ATTRIBUTE bits
108 #define WPX_EXTRA_LARGE_BIT 1
109 #define WPX_VERY_LARGE_BIT 2
110 #define WPX_LARGE_BIT 4
111 #define WPX_SMALL_PRINT_BIT 8
112 #define WPX_FINE_PRINT_BIT 16
113 #define WPX_SUPERSCRIPT_BIT 32
114 #define WPX_SUBSCRIPT_BIT 64
115 #define WPX_OUTLINE_BIT 128
116 #define WPX_ITALICS_BIT 256
117 #define WPX_SHADOW_BIT 512
118 #define WPX_REDLINE_BIT 1024
119 #define WPX_DOUBLE_UNDERLINE_BIT 2048
120 #define WPX_BOLD_BIT 4096
121 #define WPX_STRIKEOUT_BIT 8192
122 #define WPX_UNDERLINE_BIT 16384
123 #define WPX_SMALL_CAPS_BIT 32768
124 #define WPX_BLINK_BIT 65536
125 #define WPX_REVERSEVIDEO_BIT 131072
126 
127 // JUSTIFICATION bits.
128 #define WPX_PARAGRAPH_JUSTIFICATION_LEFT 0x00
129 #define WPX_PARAGRAPH_JUSTIFICATION_FULL 0x01
130 #define WPX_PARAGRAPH_JUSTIFICATION_CENTER 0x02
131 #define WPX_PARAGRAPH_JUSTIFICATION_RIGHT 0x03
132 #define WPX_PARAGRAPH_JUSTIFICATION_FULL_ALL_LINES 0x04
133 #define WPX_PARAGRAPH_JUSTIFICATION_DECIMAL_ALIGNED 0x05
134 
135 // TABLE POSITION bits.
136 #define WPX_TABLE_POSITION_ALIGN_WITH_LEFT_MARGIN 0x00
137 #define WPX_TABLE_POSITION_ALIGN_WITH_RIGHT_MARGIN 0x01
138 #define WPX_TABLE_POSITION_CENTER_BETWEEN_MARGINS 0x02
139 #define WPX_TABLE_POSITION_FULL 0x03
140 #define WPX_TABLE_POSITION_ABSOLUTE_FROM_LEFT_MARGIN 0x04
141 
142 // TABLE CELL BORDER bits
143 const unsigned char WPX_TABLE_CELL_LEFT_BORDER_OFF = 0x01;
144 const unsigned char WPX_TABLE_CELL_RIGHT_BORDER_OFF = 0x02;
145 const unsigned char WPX_TABLE_CELL_TOP_BORDER_OFF = 0x04;
146 const unsigned char WPX_TABLE_CELL_BOTTOM_BORDER_OFF = 0x08;
147 
148 // BREAK bits
149 #define WPX_PAGE_BREAK 0x00
150 #define WPX_SOFT_PAGE_BREAK 0x01
151 #define WPX_COLUMN_BREAK 0x02
152 
153 // Generic bits
154 #define WPX_LEFT 0x00
155 #define WPX_RIGHT 0x01
156 #define WPX_CENTER 0x02
157 #define WPX_TOP 0x03
158 #define WPX_BOTTOM 0x04
159 
160 struct RGBSColor
161 {
162  RGBSColor(unsigned char r, unsigned char g, unsigned char b, unsigned char s);
163  RGBSColor(unsigned short red, unsigned short green, unsigned short blue); // Construct
164  // RBBSColor from double precision RGB color used by WP3.x for Mac
165  RGBSColor(); // initializes all values to 0
166  unsigned char m_r;
167  unsigned char m_g;
168  unsigned char m_b;
169  unsigned char m_s;
170 };
171 
173 {
174  WPXColumnDefinition(); // initializes all values to 0
175  double m_width;
176  double m_leftGutter;
178 };
179 
181 {
183  unsigned m_attributes;
184  unsigned char m_alignment;
185 };
186 
188 {
189  WPXTabStop();
190  double m_position;
193  unsigned char m_leaderNumSpaces;
194 };
195 
196 // Various exceptions: libwpd does not propagate exceptions externally..
197 
199 {
200 };
201 
203 {
204 };
205 
207 {
208 };
209 
211 {
212 };
213 
215 {
216 };
217 
219 {
220 };
221 
223 {
224 };
225 
226 // Various usefull, but cheesey functions
227 
228 int _extractNumericValueFromRoman(const char romanChar);
229 int _extractDisplayReferenceNumberFromBuf(const librevenge::RVNGString &buf, const WPXNumberingType listType);
230 WPXNumberingType _extractWPXNumberingTypeFromBuf(const librevenge::RVNGString &buf, const WPXNumberingType putativeWPXNumberingType);
231 librevenge::RVNGString _numberingTypeToString(WPXNumberingType t);
232 extern const unsigned macRomanCharacterMap[];
233 librevenge::RVNGString doubleToString(const double value);
234 
235 #endif /* LIBWPD_INTERNAL_H */
236 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
WPXNumberingType
Definition: libwpd_internal.h:86
Definition: libwpd_internal.h:89
unsigned char m_g
Definition: libwpd_internal.h:167
WPXTabAlignment m_alignment
Definition: libwpd_internal.h:191
Definition: libwpd_internal.h:103
unsigned char readU8(librevenge::RVNGInputStream *input, WPXEncryption *encryption)
Definition: libwpd_internal.cpp:103
Definition: libwpd_internal.h:85
Definition: libwpd_internal.h:92
Definition: libwpd_internal.h:187
Definition: libwpd_internal.h:91
Definition: libwpd_internal.h:94
double m_width
Definition: libwpd_internal.h:175
WPXHeaderFooterInternalType
Definition: libwpd_internal.h:89
unsigned char m_r
Definition: libwpd_internal.h:166
unsigned short readU16(librevenge::RVNGInputStream *input, WPXEncryption *encryption, bool bigendian=false)
Definition: libwpd_internal.cpp:116
int extendedCharacterWP5ToUCS4(unsigned char character, unsigned char characterSet, const unsigned **chars)
Definition: libwpd_internal.cpp:1017
WPXColumnProperties()
Definition: libwpd_internal.cpp:1222
Definition: libwpd_internal.h:90
Definition: libwpd_internal.h:89
librevenge::RVNGString readCString(librevenge::RVNGInputStream *input, WPXEncryption *encryption)
Definition: libwpd_internal.cpp:183
WPXTextColumnType
Definition: libwpd_internal.h:103
const unsigned char WPX_TABLE_CELL_BOTTOM_BORDER_OFF
Definition: libwpd_internal.h:146
Definition: libwpd_internal.h:103
#define WPD_ATTRIBUTE_PRINTF(fmt, arg)
Definition: libwpd_internal.h:41
Definition: libwpd_internal.h:87
WPXHeaderFooterOccurrence
Definition: libwpd_internal.h:90
librevenge::RVNGString _numberingTypeToString(WPXNumberingType t)
Definition: libwpd_internal.cpp:1322
Definition: libwpd_internal.h:88
Definition: libwpd_internal.h:218
Definition: libwpd_internal.h:96
Definition: libwpd_internal.h:100
WPXFileType
Definition: libwpd_internal.h:85
int appleWorldScriptToUCS4(unsigned short character, const unsigned **chars)
Definition: libwpd_internal.cpp:1408
WPXSubDocumentType
Definition: libwpd_internal.h:105
double wpuToFontPointSize(const unsigned short wpuNumber)
Definition: libwpd_internal.cpp:1178
Definition: libwpd_internal.h:95
Definition: libwpd_internal.h:85
WPXTabAlignment
Definition: libwpd_internal.h:100
Definition: libwpd_internal.h:89
Definition: libwpd_internal.h:105
unsigned short fixedPointToWPUs(const unsigned fixedPointNumber)
Definition: libwpd_internal.cpp:1163
WPXColumnDefinition()
Definition: libwpd_internal.cpp:1215
int _extractNumericValueFromRoman(const char romanChar)
Definition: libwpd_internal.cpp:1229
unsigned char m_s
Definition: libwpd_internal.h:169
Definition: libwpd_internal.h:222
Definition: libwpd_internal.h:90
Definition: libwpd_internal.h:86
Definition: libwpd_internal.h:93
Definition: libwpd_internal.h:86
Definition: libwpd_internal.h:99
signed short readS16(librevenge::RVNGInputStream *input, WPXEncryption *encryption, bool bigendian=false)
Definition: libwpd_internal.cpp:131
Definition: libwpd_internal.h:202
Definition: libwpd_internal.h:100
unsigned m_attributes
Definition: libwpd_internal.h:183
int extendedCharacterWP6ToUCS4(unsigned char character, unsigned char characterSet, const unsigned **chars)
Definition: libwpd_internal.cpp:659
Definition: libwpd_internal.h:105
Definition: libwpd_internal.h:90
Definition: libwpd_internal.h:86
Definition: libwpd_internal.h:206
Definition: libwpd_internal.h:86
Definition: libwpd_internal.h:214
unsigned m_leaderCharacter
Definition: libwpd_internal.h:192
Definition: libwpd_internal.h:99
Definition: libwpd_internal.h:101
int _extractDisplayReferenceNumberFromBuf(const librevenge::RVNGString &buf, const WPXNumberingType listType)
Definition: libwpd_internal.cpp:1256
librevenge::RVNGString doubleToString(const double value)
Definition: libwpd_internal.cpp:1384
Definition: libwpd_internal.h:180
WPXFormOrientation
Definition: libwpd_internal.h:99
Definition: libwpd_internal.h:92
Definition: libwpd_internal.h:91
Definition: libwpd_internal.h:101
const unsigned macRomanCharacterMap[]
Definition: libwpd_internal.cpp:1352
Definition: libwpd_internal.h:86
RGBSColor()
Definition: libwpd_internal.cpp:1191
Definition: libwpd_internal.h:103
const unsigned char WPX_TABLE_CELL_TOP_BORDER_OFF
Definition: libwpd_internal.h:145
double fixedPointToDouble(const unsigned fixedPointNumber)
Definition: libwpd_internal.cpp:1171
WPXVerticalAlignment
Definition: libwpd_internal.h:101
Definition: libwpd_internal.h:100
Definition: libwpd_internal.h:172
double m_leftGutter
Definition: libwpd_internal.h:176
Definition: libwpd_internal.h:94
unsigned char m_b
Definition: libwpd_internal.h:168
double m_rightGutter
Definition: libwpd_internal.h:177
Definition: libwpd_internal.h:100
Definition: libwpd_internal.h:105
unsigned char m_leaderNumSpaces
Definition: libwpd_internal.h:193
Definition: libwpd_internal.h:100
Definition: WPXEncryption.h:33
Definition: libwpd_internal.h:93
unsigned char m_alignment
Definition: libwpd_internal.h:184
Definition: libwpd_internal.h:160
WPXTabStop()
Definition: libwpd_internal.cpp:1207
Definition: libwpd_internal.h:90
Definition: libwpd_internal.h:210
Definition: libwpd_internal.h:85
WPXPageNumberPosition
Definition: libwpd_internal.h:91
Definition: libwpd_internal.h:85
Definition: libwpd_internal.h:91
void appendUCS4(librevenge::RVNGString &str, unsigned ucs4)
Definition: libwpd_internal.cpp:151
double m_position
Definition: libwpd_internal.h:190
unsigned readU32(librevenge::RVNGInputStream *input, WPXEncryption *encryption, bool bigendian=false)
Definition: libwpd_internal.cpp:136
Definition: libwpd_internal.h:101
const unsigned char WPX_TABLE_CELL_RIGHT_BORDER_OFF
Definition: libwpd_internal.h:144
Definition: libwpd_internal.h:87
Definition: libwpd_internal.h:198
Definition: libwpd_internal.h:89
const unsigned char WPX_TABLE_CELL_LEFT_BORDER_OFF
Definition: libwpd_internal.h:143
WPXHeaderFooterType
Definition: libwpd_internal.h:88
librevenge::RVNGString readPascalString(librevenge::RVNGInputStream *input, WPXEncryption *encryption)
Definition: libwpd_internal.cpp:162
Definition: libwpd_internal.h:103
int extendedCharacterWP42ToUCS4(unsigned char character, const unsigned **chars)
Definition: libwpd_internal.cpp:1150
Definition: libwpd_internal.h:89
WPXNumberingType _extractWPXNumberingTypeFromBuf(const librevenge::RVNGString &buf, const WPXNumberingType putativeWPXNumberingType)
Definition: libwpd_internal.cpp:1302
Definition: libwpd_internal.h:101
Definition: libwpd_internal.h:105
WPXNoteType
Definition: libwpd_internal.h:87
Definition: libwpd_internal.h:88
Definition: libwpd_internal.h:105

Generated for libwpd by doxygen 1.8.7