mirror of
https://github.com/simon987/antiword.git
synced 2025-04-10 13:06:41 +00:00
318 lines
8.1 KiB
C
318 lines
8.1 KiB
C
/*
|
|
* wordtypes.h
|
|
* Copyright (C) 1998-2004 A.J. van Os; Released under GPL
|
|
*
|
|
* Description:
|
|
* Typedefs for the interpretation of MS Word files
|
|
*/
|
|
|
|
#if !defined(__wordtypes_h)
|
|
#define __wordtypes_h 1
|
|
|
|
#include <time.h>
|
|
#if defined(__riscos)
|
|
#include "DeskLib:Font.h"
|
|
#include "DeskLib:Wimp.h"
|
|
#endif /* __riscos */
|
|
|
|
typedef unsigned char UCHAR;
|
|
typedef unsigned short USHORT;
|
|
typedef unsigned int UINT;
|
|
typedef unsigned long ULONG;
|
|
|
|
#if defined(__riscos)
|
|
typedef struct diagram_tag {
|
|
drawfile_info tInfo;
|
|
window_handle tMainWindow;
|
|
window_handle tScaleWindow;
|
|
menu_ptr pSaveMenu;
|
|
long lXleft; /* In DrawUnits */
|
|
long lYtop; /* In DrawUnits */
|
|
size_t tMemorySize;
|
|
int iScaleFactorCurr; /* In percentage */
|
|
int iScaleFactorTemp; /* In percentage */
|
|
char szFilename[19+1];
|
|
} diagram_type;
|
|
#else
|
|
typedef struct diagram_tag {
|
|
FILE *pOutFile;
|
|
long lXleft; /* In DrawUnits */
|
|
long lYtop; /* In DrawUnits */
|
|
} diagram_type;
|
|
typedef UCHAR drawfile_fontref;
|
|
#endif /* __riscos */
|
|
|
|
typedef struct output_tag {
|
|
char *szStorage;
|
|
long lStringWidth; /* In millipoints */
|
|
size_t tStorageSize;
|
|
size_t tNextFree;
|
|
USHORT usFontStyle;
|
|
USHORT usFontSize;
|
|
UCHAR ucFontColor;
|
|
drawfile_fontref tFontRef;
|
|
struct output_tag *pPrev;
|
|
struct output_tag *pNext;
|
|
} output_type;
|
|
|
|
/* Types of conversion */
|
|
typedef enum conversion_tag {
|
|
conversion_unknown = 0,
|
|
conversion_text,
|
|
conversion_draw,
|
|
conversion_ps,
|
|
conversion_xml,
|
|
conversion_pdf,
|
|
conversion_fmt_text
|
|
} conversion_type;
|
|
|
|
/* Types of encoding */
|
|
typedef enum encoding_tag {
|
|
encoding_neutral = 100,
|
|
encoding_latin_1 = 801,
|
|
encoding_latin_2 = 802,
|
|
encoding_cyrillic = 805,
|
|
encoding_utf_8 = 1601
|
|
} encoding_type;
|
|
|
|
/* Font translation table entry */
|
|
typedef struct font_table_tag {
|
|
USHORT usFontStyle;
|
|
UCHAR ucWordFontNumber;
|
|
UCHAR ucFFN;
|
|
UCHAR ucEmphasis;
|
|
UCHAR ucInUse;
|
|
char szWordFontname[65];
|
|
char szOurFontname[33];
|
|
} font_table_type;
|
|
|
|
/* Options */
|
|
typedef enum image_level_tag {
|
|
level_gs_special = 0,
|
|
level_no_images,
|
|
level_ps_2,
|
|
level_ps_3,
|
|
level_default = level_ps_2
|
|
} image_level_enum;
|
|
|
|
typedef struct options_tag {
|
|
int iParagraphBreak;
|
|
conversion_type eConversionType;
|
|
BOOL bHideHiddenText;
|
|
BOOL bRemoveRemovedText;
|
|
BOOL bUseLandscape;
|
|
encoding_type eEncoding;
|
|
int iPageHeight; /* In points */
|
|
int iPageWidth; /* In points */
|
|
image_level_enum eImageLevel;
|
|
#if defined(__riscos)
|
|
BOOL bAutofiletypeAllowed;
|
|
int iScaleFactor; /* As a percentage */
|
|
#endif /* __riscos */
|
|
} options_type;
|
|
|
|
/* Property Set Storage */
|
|
typedef struct pps_tag {
|
|
ULONG ulSB;
|
|
ULONG ulSize;
|
|
} pps_type;
|
|
typedef struct pps_info_tag {
|
|
pps_type tWordDocument; /* Text stream */
|
|
pps_type tData; /* Data stream */
|
|
pps_type tTable; /* Table stream */
|
|
pps_type tSummaryInfo; /* Summary Information */
|
|
pps_type tDocSummaryInfo;/* Document Summary Information */
|
|
pps_type t0Table; /* Table 0 stream */
|
|
pps_type t1Table; /* Table 1 stream */
|
|
} pps_info_type;
|
|
|
|
/* Record of data block information */
|
|
typedef struct data_block_tag {
|
|
ULONG ulFileOffset;
|
|
ULONG ulDataPos;
|
|
ULONG ulLength;
|
|
} data_block_type;
|
|
|
|
/* Record of text block information */
|
|
typedef struct text_block_tag {
|
|
ULONG ulFileOffset;
|
|
ULONG ulCharPos;
|
|
ULONG ulLength;
|
|
BOOL bUsesUnicode; /* This block uses 16 bits per character */
|
|
USHORT usPropMod;
|
|
} text_block_type;
|
|
|
|
/* Record of the document block information */
|
|
typedef struct document_block_tag {
|
|
time_t tCreateDate; /* Unix timestamp */
|
|
time_t tRevisedDate; /* Unix timestamp */
|
|
USHORT usDefaultTabWidth; /* In twips */
|
|
UCHAR ucHdrFtrSpecification;
|
|
} document_block_type;
|
|
|
|
/* Record of table-row block information */
|
|
typedef struct row_block_tag {
|
|
ULONG ulFileOffsetStart;
|
|
ULONG ulFileOffsetEnd;
|
|
ULONG ulCharPosStart;
|
|
ULONG ulCharPosEnd;
|
|
short asColumnWidth[TABLE_COLUMN_MAX+1]; /* In twips */
|
|
UCHAR ucNumberOfColumns;
|
|
UCHAR ucBorderInfo;
|
|
} row_block_type;
|
|
|
|
/* Various level types */
|
|
typedef enum level_type_tag {
|
|
level_type_none = 0,
|
|
level_type_outline,
|
|
level_type_numbering,
|
|
level_type_sequence,
|
|
level_type_pause
|
|
} level_type_enum;
|
|
|
|
typedef enum list_id_tag {
|
|
no_list = 0,
|
|
text_list,
|
|
footnote_list,
|
|
hdrftr_list,
|
|
macro_list,
|
|
annotation_list,
|
|
endnote_list,
|
|
textbox_list,
|
|
hdrtextbox_list,
|
|
end_of_lists
|
|
} list_id_enum;
|
|
|
|
/* Linked list of style description information */
|
|
typedef struct style_block_tag {
|
|
ULONG ulFileOffset; /* The style start with this character */
|
|
list_id_enum eListID;/* The fileoffset is in this list */
|
|
BOOL bNumPause;
|
|
BOOL bNoRestart; /* Don't restart by more significant levels */
|
|
USHORT usIstd; /* Current style */
|
|
USHORT usIstdNext; /* Next style unless overruled */
|
|
USHORT usStartAt; /* Number at the start of a list */
|
|
USHORT usBeforeIndent; /* Vertical indent before paragraph in twips */
|
|
USHORT usAfterIndent; /* Vertical indent after paragraph in twips */
|
|
USHORT usListIndex; /* Before Word 8 this field was not filled */
|
|
USHORT usListChar; /* Character for an itemized list (Unicode) */
|
|
short sLeftIndent; /* Left indentation in twips */
|
|
short sLeftIndent1; /* First line left indentation in twips */
|
|
short sRightIndent; /* Right indentation in twips */
|
|
UCHAR ucAlignment;
|
|
UCHAR ucNFC; /* Number format code */
|
|
UCHAR ucNumLevel;
|
|
UCHAR ucListLevel; /* Before Word 8 this field was not filled */
|
|
char szListChar[4]; /* Character for an itemized list */
|
|
} style_block_type;
|
|
|
|
/* Font description information */
|
|
typedef struct font_block_tag {
|
|
ULONG ulFileOffset;
|
|
USHORT usFontStyle;
|
|
USHORT usFontSize;
|
|
UCHAR ucFontNumber;
|
|
UCHAR ucFontColor;
|
|
} font_block_type;
|
|
|
|
/* Picture description information */
|
|
typedef struct picture_block_tag {
|
|
ULONG ulFileOffset;
|
|
ULONG ulFileOffsetPicture;
|
|
ULONG ulPictureOffset;
|
|
} picture_block_type;
|
|
|
|
/* Section description information */
|
|
typedef struct section_block_tag {
|
|
BOOL bNewPage;
|
|
USHORT usNeedPrevLvl; /* Print previous level numbers */
|
|
USHORT usHangingIndent;
|
|
UCHAR aucNFC[9]; /* Number format code */
|
|
UCHAR ucHdrFtrSpecification; /* Which headers/footers Word < 8 */
|
|
} section_block_type;
|
|
|
|
/* Header/footer description information */
|
|
typedef struct hdrftr_block_tag {
|
|
output_type *pText;
|
|
long lHeight; /* In DrawUnits */
|
|
} hdrftr_block_type;
|
|
|
|
/* Footnote description information */
|
|
typedef struct footnote_block_tag {
|
|
char *szText;
|
|
} footnote_block_type;
|
|
|
|
/* List description information */
|
|
typedef struct list_block_tag {
|
|
ULONG ulStartAt; /* Number at the start of a list */
|
|
BOOL bNoRestart; /* Don't restart by more significant levels */
|
|
USHORT usListChar; /* Character for an itemized list (Unicode) */
|
|
short sLeftIndent; /* Left indentation in twips */
|
|
UCHAR ucNFC; /* Number format code */
|
|
} list_block_type;
|
|
|
|
/* Types of images */
|
|
typedef enum imagetype_tag {
|
|
imagetype_is_unknown = 0,
|
|
imagetype_is_external,
|
|
imagetype_is_emf,
|
|
imagetype_is_wmf,
|
|
imagetype_is_pict,
|
|
imagetype_is_jpeg,
|
|
imagetype_is_png,
|
|
imagetype_is_dib
|
|
} imagetype_enum;
|
|
|
|
/* Types of compression */
|
|
typedef enum compression_tag {
|
|
compression_unknown = 0,
|
|
compression_none,
|
|
compression_rle4,
|
|
compression_rle8,
|
|
compression_jpeg,
|
|
compression_zlib
|
|
} compression_enum;
|
|
|
|
/* Image information */
|
|
typedef struct imagedata_tag {
|
|
/* The type of the image */
|
|
imagetype_enum eImageType;
|
|
/* Information from the Word document */
|
|
size_t tPosition;
|
|
size_t tLength;
|
|
int iHorSizeScaled; /* Size in points */
|
|
int iVerSizeScaled; /* Size in points */
|
|
/* Information from the image */
|
|
int iWidth; /* Size in pixels */
|
|
int iHeight; /* Size in pixels */
|
|
int iComponents; /* Number of color components */
|
|
UINT uiBitsPerComponent; /* Bits per color component */
|
|
BOOL bAdobe; /* Image includes Adobe comment marker */
|
|
compression_enum eCompression; /* Type of compression */
|
|
BOOL bColorImage; /* Is color image */
|
|
int iColorsUsed; /* 0 = uses the maximum number of colors */
|
|
UCHAR aucPalette[256][3]; /* RGB palette */
|
|
} imagedata_type;
|
|
|
|
typedef enum row_info_tag {
|
|
found_nothing,
|
|
found_a_cell,
|
|
found_not_a_cell,
|
|
found_end_of_row,
|
|
found_not_end_of_row
|
|
} row_info_enum;
|
|
|
|
typedef enum notetype_tag {
|
|
notetype_is_footnote,
|
|
notetype_is_endnote,
|
|
notetype_is_unknown
|
|
} notetype_enum;
|
|
|
|
typedef enum image_info_tag {
|
|
image_no_information,
|
|
image_minimal_information,
|
|
image_full_information
|
|
} image_info_enum;
|
|
|
|
#endif /* __wordtypes_h */
|