00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef LIBWPD_INTERNAL_H
00027 #define LIBWPD_INTERNAL_H
00028 #include "WPXStream.h"
00029 #include <stdio.h>
00030 #include "WPXString.h"
00031
00032
00033
00034 #define WPD_CHECK_FILE_ERROR(v) if (v==EOF) { WPD_DEBUG_MSG(("X_CheckFileError: %d\n", __LINE__)); throw FileException(); }
00035 #define WPD_CHECK_FILE_SEEK_ERROR(v) if (v) { WPD_DEBUG_MSG(("X_CheckFileSeekError: %d\n", __LINE__)); throw FileException(); }
00036 #define WPD_CHECK_FILE_READ_ERROR(v,num_elements) if (v != num_elements) {\
00037 WPD_DEBUG_MSG(("X_CheckFileReadElementError: %d\n", __LINE__)); throw FileException(); }
00038
00039 #define DELETEP(m) if (m) { delete m; m = NULL; }
00040
00041 #ifdef DEBUG
00042 #define WPD_DEBUG_MSG(M) printf M
00043 #else
00044 #define WPD_DEBUG_MSG(M)
00045 #endif
00046
00047 #define WPD_LE_GET_GUINT8(p) (*(uint8_t const *)(p))
00048 #define WPD_LE_GET_GUINT16(p) \
00049 (uint16_t)((((uint8_t const *)(p))[0] << 0) | \
00050 (((uint8_t const *)(p))[1] << 8))
00051 #define WPD_LE_GET_GUINT32(p) \
00052 (uint32_t)((((uint8_t const *)(p))[0] << 0) | \
00053 (((uint8_t const *)(p))[1] << 8) | \
00054 (((uint8_t const *)(p))[2] << 16) | \
00055 (((uint8_t const *)(p))[3] << 24))
00056
00057 #define WPD_BE_GET_GUINT8(p) (*(uint8_t const *)(p))
00058 #define WPD_BE_GET_GUINT16(p) \
00059 (uint16_t)((((uint8_t const *)(p))[1] << 0) | \
00060 (((uint8_t const *)(p))[0] << 8))
00061 #define WPD_BE_GET_GUINT32(p) \
00062 (uint32_t)((((uint8_t const *)(p))[3] << 0) | \
00063 (((uint8_t const *)(p))[2] << 8) | \
00064 (((uint8_t const *)(p))[1] << 16) | \
00065 (((uint8_t const *)(p))[0] << 24))
00066
00067
00068
00069 int8_t read8(WPXInputStream *input);
00070 uint8_t readU8(WPXInputStream *input);
00071 uint16_t readU16(WPXInputStream *input, bool bigendian=false);
00072 uint32_t readU32(WPXInputStream *input, bool bigendian=false);
00073
00074 void appendUCS4(WPXString &str, uint32_t ucs4);
00075
00076
00077
00078 int extendedCharacterWP6ToUCS2(uint8_t character, uint8_t characterSet,
00079 const uint16_t **chars);
00080
00081 int extendedCharacterWP5ToUCS2(uint8_t character, uint8_t characterSet,
00082 const uint16_t **chars);
00083
00084 enum WPXFileType { WP6_DOCUMENT, WP5_DOCUMENT, WP42_DOCUMENT, OTHER };
00085 enum WPXNumberingType { ARABIC, LOWERCASE, UPPERCASE, LOWERCASE_ROMAN, UPPERCASE_ROMAN };
00086 enum WPXNoteType { FOOTNOTE, ENDNOTE };
00087 enum WPXHeaderFooterType { HEADER, FOOTER };
00088 enum WPXHeaderFooterOccurence { ODD, EVEN, ALL };
00089 enum WPXFormOrientation { PORTRAIT, LANDSCAPE };
00090 enum WPXTabAlignment { LEFT, RIGHT, CENTER, DECIMAL, BAR };
00091 enum WPXVerticalAlignment { TOP, MIDDLE, BOTTOM, FULL };
00092
00093 enum WPXTextColumnType { NEWSPAPER, NEWSPAPER_VERTICAL_BALANCE, PARALLEL, PARALLEL_PROTECT };
00094
00095 const float WPX_DEFAULT_LIST_INDENT = 0.2f;
00096
00097
00098 #define WPX_EXTRA_LARGE_BIT 1
00099 #define WPX_VERY_LARGE_BIT 2
00100 #define WPX_LARGE_BIT 4
00101 #define WPX_SMALL_PRINT_BIT 8
00102 #define WPX_FINE_PRINT_BIT 16
00103 #define WPX_SUPERSCRIPT_BIT 32
00104 #define WPX_SUBSCRIPT_BIT 64
00105 #define WPX_OUTLINE_BIT 128
00106 #define WPX_ITALICS_BIT 256
00107 #define WPX_SHADOW_BIT 512
00108 #define WPX_REDLINE_BIT 1024
00109 #define WPX_DOUBLE_UNDERLINE_BIT 2048
00110 #define WPX_BOLD_BIT 4096
00111 #define WPX_STRIKEOUT_BIT 8192
00112 #define WPX_UNDERLINE_BIT 16384
00113 #define WPX_SMALL_CAPS_BIT 32768
00114 #define WPX_BLINK_BIT 65536
00115 #define WPX_REVERSEVIDEO_BIT 131072
00116
00117
00118 #define WPX_PARAGRAPH_JUSTIFICATION_LEFT 0x00
00119 #define WPX_PARAGRAPH_JUSTIFICATION_FULL 0x01
00120 #define WPX_PARAGRAPH_JUSTIFICATION_CENTER 0x02
00121 #define WPX_PARAGRAPH_JUSTIFICATION_RIGHT 0x03
00122 #define WPX_PARAGRAPH_JUSTIFICATION_FULL_ALL_LINES 0x04
00123 #define WPX_PARAGRAPH_JUSTIFICATION_DECIMAL_ALIGNED 0x05
00124
00125
00126 #define WPX_TABLE_POSITION_ALIGN_WITH_LEFT_MARGIN 0x00
00127 #define WPX_TABLE_POSITION_ALIGN_WITH_RIGHT_MARGIN 0x01
00128 #define WPX_TABLE_POSITION_CENTER_BETWEEN_MARGINS 0x02
00129 #define WPX_TABLE_POSITION_FULL 0x03
00130 #define WPX_TABLE_POSITION_ABSOLUTE_FROM_LEFT_MARGIN 0x04
00131
00132
00133 const uint8_t WPX_TABLE_CELL_LEFT_BORDER_OFF = 0x01;
00134 const uint8_t WPX_TABLE_CELL_RIGHT_BORDER_OFF = 0x02;
00135 const uint8_t WPX_TABLE_CELL_TOP_BORDER_OFF = 0x04;
00136 const uint8_t WPX_TABLE_CELL_BOTTOM_BORDER_OFF = 0x08;
00137
00138
00139 #define WPX_PAGE_BREAK 0x00
00140 #define WPX_SOFT_PAGE_BREAK 0x01
00141 #define WPX_COLUMN_BREAK 0x02
00142
00143
00144 #define WPX_LEFT 0x00
00145 #define WPX_RIGHT 0x01
00146 #define WPX_CENTER 0x02
00147 #define WPX_TOP 0x03
00148 #define WPX_BOTTOM 0x04
00149
00150 typedef struct _RGBSColor RGBSColor;
00151 struct _RGBSColor
00152 {
00153 _RGBSColor(uint8_t r, uint8_t g, uint8_t b, uint8_t s);
00154 _RGBSColor();
00155 uint8_t m_r;
00156 uint8_t m_g;
00157 uint8_t m_b;
00158 uint8_t m_s;
00159 };
00160
00161 typedef struct _WPXColumnDefinition WPXColumnDefinition;
00162 struct _WPXColumnDefinition
00163 {
00164 _WPXColumnDefinition();
00165 float m_width;
00166 float m_leftGutter;
00167 float m_rightGutter;
00168 };
00169
00170 typedef struct _WPXTabStop WPXTabStop;
00171 struct _WPXTabStop
00172 {
00173 _WPXTabStop(float position, WPXTabAlignment alignment, uint16_t leaderCharacter, uint8_t leaderNumSpaces);
00174 _WPXTabStop();
00175 float m_position;
00176 WPXTabAlignment m_alignment;
00177 uint16_t m_leaderCharacter;
00178 uint8_t m_leaderNumSpaces;
00179 };
00180
00181
00182
00183 class VersionException
00184 {
00185
00186 };
00187
00188 class FileException
00189 {
00190
00191 };
00192
00193 class ParseException
00194 {
00195
00196 };
00197
00198 class GenericException
00199 {
00200
00201 };
00202
00203 class UnsupportedEncryptionException
00204 {
00205
00206 };
00207
00208 #endif