blob: 66d88b55da96a0725eb4446ec8363172dea5c967 [file] [log] [blame]
#ifndef _RTF
#define _RTF
#include <stdarg.h>
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "richedit.h"
/*
* rtf.h - RTF document processing stuff. Release 1.10.
*/
/*
* Twentieths of a point (twips) per inch (Many RTF measurements
* are in twips per inch (tpi) units). Assumes 72 points/inch.
*/
# define rtfTpi 1440
/*
* RTF buffer size (avoids BUFSIZ, which differs across systems)
*/
# define rtfBufSiz 1024
/*
* Tokens are associated with up to three classification numbers:
*
* Class number: Broadest (least detailed) breakdown. For programs
* that only care about gross token distinctions.
* Major/minor numbers: Within their class, tokens have a major
* number, and may also have a minor number to further
* distinguish tokens with the same major number.
*
* *** Class, major and minor token numbers are all >= 0 ***
*
* Tokens that can't be classified are put in the "unknown" class.
* For such, the major and minor numbers are meaningless, although
* rtfTextBuf may be of interest then.
*
* Text tokens are a single character, and the major number indicates
* the character value (note: can be non-ascii, i.e., greater than 127).
* There is no minor number.
*
* Control symbols may have a parameter value, which will be found in
* rtfParam. If no parameter was given, rtfParam = rtfNoParam.
*
* RTFGetToken() return value is the class number, but it sets all the
* global token vars.
*
* rtfEOF is a fake token used by the reader; the writer never sees
* it (except in the token reader hook, if it installs one).
*/
# define rtfNoParam (-1000000)
/*
* For some reason, the no-style number is 222
*/
# define rtfNoStyleNum 222
# define rtfNormalStyleNum 0
/*
* Token classes (must be zero-based and sequential)
*/
# define rtfUnknown 0
# define rtfGroup 1
# define rtfText 2
# define rtfControl 3
# define rtfEOF 4
# define rtfMaxClass 5 /* highest class + 1 */
/*
* Group class major numbers
*/
# define rtfBeginGroup 0
# define rtfEndGroup 1
/*
* Control class major and minor numbers.
*/
# define rtfVersion 0
# define rtfDefFont 1
# define rtfCharSet 2
# define rtfAnsiCharSet 0
# define rtfMacCharSet 1
# define rtfPcCharSet 2
# define rtfPcaCharSet 3
/* destination minor numbers should be zero-based and sequential */
# define rtfDestination 3
# define rtfFontTbl 0
# define rtfFontAltName 1 /* new in 1.10 */
# define rtfEmbeddedFont 2 /* new in 1.10 */
# define rtfFontFile 3 /* new in 1.10 */
# define rtfFileTbl 4 /* new in 1.10 */
# define rtfFileInfo 5 /* new in 1.10 */
# define rtfColorTbl 6
# define rtfStyleSheet 7
# define rtfKeyCode 8
# define rtfRevisionTbl 9 /* new in 1.10 */
# define rtfInfo 10
# define rtfITitle 11
# define rtfISubject 12
# define rtfIAuthor 13
# define rtfIOperator 14
# define rtfIKeywords 15
# define rtfIComment 16
# define rtfIVersion 17
# define rtfIDoccomm 18
# define rtfIVerscomm 19
# define rtfNextFile 20 /* reclassified in 1.10 */
# define rtfTemplate 21 /* reclassified in 1.10 */
# define rtfFNSep 22
# define rtfFNContSep 23
# define rtfFNContNotice 24
# define rtfENSep 25 /* new in 1.10 */
# define rtfENContSep 26 /* new in 1.10 */
# define rtfENContNotice 27 /* new in 1.10 */
# define rtfPageNumLevel 28 /* new in 1.10 */
# define rtfParNumLevelStyle 29 /* new in 1.10 */
# define rtfHeader 30
# define rtfFooter 31
# define rtfHeaderLeft 32
# define rtfHeaderRight 33
# define rtfHeaderFirst 34
# define rtfFooterLeft 35
# define rtfFooterRight 36
# define rtfFooterFirst 37
# define rtfParNumText 38 /* new in 1.10 */
# define rtfParNumbering 39 /* new in 1.10 */
# define rtfParNumTextAfter 40 /* new in 1.10 */
# define rtfParNumTextBefore 41 /* new in 1.10 */
# define rtfBookmarkStart 42
# define rtfBookmarkEnd 43
# define rtfPict 44
# define rtfObject 45
# define rtfObjClass 46
# define rtfObjName 47
# define rtfObjTime 48 /* new in 1.10 */
# define rtfObjData 49
# define rtfObjAlias 50
# define rtfObjSection 51
# define rtfObjResult 52
# define rtfObjItem 53 /* new in 1.10 */
# define rtfObjTopic 54 /* new in 1.10 */
# define rtfDrawObject 55 /* new in 1.10 */
# define rtfFootnote 56
# define rtfAnnotRefStart 57 /* new in 1.10 */
# define rtfAnnotRefEnd 58 /* new in 1.10 */
# define rtfAnnotID 59 /* reclassified in 1.10 */
# define rtfAnnotAuthor 60 /* new in 1.10 */
# define rtfAnnotation 61 /* reclassified in 1.10 */
# define rtfAnnotRef 62 /* new in 1.10 */
# define rtfAnnotTime 63 /* new in 1.10 */
# define rtfAnnotIcon 64 /* new in 1.10 */
# define rtfField 65
# define rtfFieldInst 66
# define rtfFieldResult 67
# define rtfDataField 68 /* new in 1.10 */
# define rtfIndex 69
# define rtfIndexText 70
# define rtfIndexRange 71
# define rtfTOC 72
# define rtfNeXTGraphic 73
# define rtfGenerator 74
# define rtfNestTableProps 75
# define rtfNoNestTables 76
# define rtfShpPict 77
# define rtfNonShpPict 78
# define rtfMaxDestination 79 /* highest dest + 1 */
# define rtfFontFamily 4
# define rtfFFNil 0
# define rtfFFRoman 1
# define rtfFFSwiss 2
# define rtfFFModern 3
# define rtfFFScript 4
# define rtfFFDecor 5
# define rtfFFTech 6
# define rtfFFBidirectional 7 /* new in 1.10 */
# define rtfColorName 5
# define rtfRed 0
# define rtfGreen 1
# define rtfBlue 2
# define rtfSpecialChar 6
/* special chars seen in \info destination */
# define rtfIIntVersion 0
# define rtfICreateTime 1
# define rtfIRevisionTime 2
# define rtfIPrintTime 3
# define rtfIBackupTime 4
# define rtfIEditTime 5
# define rtfIYear 6
# define rtfIMonth 7
# define rtfIDay 8
# define rtfIHour 9
# define rtfIMinute 10
# define rtfISecond 11 /* new in 1.10 */
# define rtfINPages 12
# define rtfINWords 13
# define rtfINChars 14
# define rtfIIntID 15
/* other special chars */
# define rtfCurHeadDate 16
# define rtfCurHeadDateLong 17
# define rtfCurHeadDateAbbrev 18
# define rtfCurHeadTime 19
# define rtfCurHeadPage 20
# define rtfSectNum 21 /* new in 1.10 */
# define rtfCurFNote 22
# define rtfCurAnnotRef 23
# define rtfFNoteSep 24
# define rtfFNoteCont 25
# define rtfCell 26
# define rtfRow 27
# define rtfPar 28
# define rtfSect 29
# define rtfPage 30
# define rtfColumn 31
# define rtfLine 32
# define rtfSoftPage 33 /* new in 1.10 */
# define rtfSoftColumn 34 /* new in 1.10 */
# define rtfSoftLine 35 /* new in 1.10 */
# define rtfSoftLineHt 36 /* new in 1.10 */
# define rtfTab 37
# define rtfEmDash 38
# define rtfEnDash 39
# define rtfEmSpace 40 /* new in 1.10 */
# define rtfEnSpace 41 /* new in 1.10 */
# define rtfBullet 42
# define rtfLQuote 43
# define rtfRQuote 44
# define rtfLDblQuote 45
# define rtfRDblQuote 46
# define rtfFormula 47
# define rtfNoBrkSpace 49
# define rtfNoReqHyphen 50
# define rtfNoBrkHyphen 51
# define rtfOptDest 52
# define rtfLTRMark 53 /* new in 1.10 */
# define rtfRTLMark 54 /* new in 1.10 */
# define rtfNoWidthJoiner 55 /* new in 1.10 */
# define rtfNoWidthNonJoiner 56 /* new in 1.10 */
# define rtfCurHeadPict 57 /* valid? */
/*# define rtfCurAnnot 58*/ /* apparently not used */
# define rtfUnicode 58 /* no better category*/
# define rtfNestCell 59
# define rtfNestRow 60
# define rtfStyleAttr 7
# define rtfAdditive 0 /* new in 1.10 */
# define rtfBasedOn 1
# define rtfNext 2
# define rtfDocAttr 8
# define rtfDefTab 0
# define rtfHyphHotZone 1
# define rtfHyphConsecLines 2 /* new in 1.10 */
# define rtfHyphCaps 3 /* new in 1.10 */
# define rtfHyphAuto 4 /* new in 1.10 */
# define rtfLineStart 5
# define rtfFracWidth 6
# define rtfMakeBackup 7
# define rtfRTFDefault 8
# define rtfPSOverlay 9
# define rtfDocTemplate 10 /* new in 1.10 */
# define rtfDefLanguage 11
# define rtfFENoteType 12 /* new in 1.10 */
# define rtfFNoteEndSect 13
# define rtfFNoteEndDoc 14
# define rtfFNoteText 15
# define rtfFNoteBottom 16
# define rtfENoteEndSect 17 /* new in 1.10 */
# define rtfENoteEndDoc 18 /* new in 1.10 */
# define rtfENoteText 19 /* new in 1.10 */
# define rtfENoteBottom 20 /* new in 1.10 */
# define rtfFNoteStart 21
# define rtfENoteStart 22 /* new in 1.10 */
# define rtfFNoteRestartPage 23 /* new in 1.10 */
# define rtfFNoteRestart 24
# define rtfFNoteRestartCont 25 /* new in 1.10 */
# define rtfENoteRestart 26 /* new in 1.10 */
# define rtfENoteRestartCont 27 /* new in 1.10 */
# define rtfFNoteNumArabic 28 /* new in 1.10 */
# define rtfFNoteNumLLetter 29 /* new in 1.10 */
# define rtfFNoteNumULetter 30 /* new in 1.10 */
# define rtfFNoteNumLRoman 31 /* new in 1.10 */
# define rtfFNoteNumURoman 32 /* new in 1.10 */
# define rtfFNoteNumChicago 33 /* new in 1.10 */
# define rtfENoteNumArabic 34 /* new in 1.10 */
# define rtfENoteNumLLetter 35 /* new in 1.10 */
# define rtfENoteNumULetter 36 /* new in 1.10 */
# define rtfENoteNumLRoman 37 /* new in 1.10 */
# define rtfENoteNumURoman 38 /* new in 1.10 */
# define rtfENoteNumChicago 39 /* new in 1.10 */
# define rtfPaperWidth 40
# define rtfPaperHeight 41
# define rtfPaperSize 42 /* new in 1.10 */
# define rtfLeftMargin 43
# define rtfRightMargin 44
# define rtfTopMargin 45
# define rtfBottomMargin 46
# define rtfFacingPage 47
# define rtfGutterWid 48
# define rtfMirrorMargin 49
# define rtfLandscape 50
# define rtfPageStart 51
# define rtfWidowCtrl 52
# define rtfLinkStyles 53 /* new in 1.10 */
# define rtfNoAutoTabIndent 54 /* new in 1.10 */
# define rtfWrapSpaces 55 /* new in 1.10 */
# define rtfPrintColorsBlack 56 /* new in 1.10 */
# define rtfNoExtraSpaceRL 57 /* new in 1.10 */
# define rtfNoColumnBalance 58 /* new in 1.10 */
# define rtfCvtMailMergeQuote 59 /* new in 1.10 */
# define rtfSuppressTopSpace 60 /* new in 1.10 */
# define rtfSuppressPreParSpace 61 /* new in 1.10 */
# define rtfCombineTblBorders 62 /* new in 1.10 */
# define rtfTranspMetafiles 63 /* new in 1.10 */
# define rtfSwapBorders 64 /* new in 1.10 */
# define rtfShowHardBreaks 65 /* new in 1.10 */
# define rtfFormProtected 66 /* new in 1.10 */
# define rtfAllProtected 67 /* new in 1.10 */
# define rtfFormShading 68 /* new in 1.10 */
# define rtfFormDisplay 69 /* new in 1.10 */
# define rtfPrintData 70 /* new in 1.10 */
# define rtfRevProtected 71 /* new in 1.10 */
# define rtfRevisions 72
# define rtfRevDisplay 73
# define rtfRevBar 74
# define rtfAnnotProtected 75 /* new in 1.10 */
# define rtfRTLDoc 76 /* new in 1.10 */
# define rtfLTRDoc 77 /* new in 1.10 */
# define rtfAnsiCodePage 78
# define rtfUTF8RTF 79
# define rtfSectAttr 9
# define rtfSectDef 0
# define rtfENoteHere 1
# define rtfPrtBinFirst 2
# define rtfPrtBin 3
# define rtfSectStyleNum 4 /* new in 1.10 */
# define rtfNoBreak 5
# define rtfColBreak 6
# define rtfPageBreak 7
# define rtfEvenBreak 8
# define rtfOddBreak 9
# define rtfColumns 10
# define rtfColumnSpace 11
# define rtfColumnNumber 12 /* new in 1.10 */
# define rtfColumnSpRight 13 /* new in 1.10 */
# define rtfColumnWidth 14 /* new in 1.10 */
# define rtfColumnLine 15
# define rtfLineModulus 16
# define rtfLineDist 17
# define rtfLineStarts 18
# define rtfLineRestart 19
# define rtfLineRestartPg 20
# define rtfLineCont 21
# define rtfSectPageWid 22
# define rtfSectPageHt 23
# define rtfSectMarginLeft 24
# define rtfSectMarginRight 25
# define rtfSectMarginTop 26
# define rtfSectMarginBottom 27
# define rtfSectMarginGutter 28
# define rtfSectLandscape 29
# define rtfTitleSpecial 30
# define rtfHeaderY 31
# define rtfFooterY 32
# define rtfPageStarts 33
# define rtfPageCont 34
# define rtfPageRestart 35
# define rtfPageNumRight 36 /* renamed in 1.10 */
# define rtfPageNumTop 37
# define rtfPageDecimal 38
# define rtfPageURoman 39
# define rtfPageLRoman 40
# define rtfPageULetter 41
# define rtfPageLLetter 42
# define rtfPageNumHyphSep 43 /* new in 1.10 */
# define rtfPageNumSpaceSep 44 /* new in 1.10 */
# define rtfPageNumColonSep 45 /* new in 1.10 */
# define rtfPageNumEmdashSep 46 /* new in 1.10 */
# define rtfPageNumEndashSep 47 /* new in 1.10 */
# define rtfTopVAlign 48
# define rtfBottomVAlign 49
# define rtfCenterVAlign 50
# define rtfJustVAlign 51
# define rtfRTLSect 52 /* new in 1.10 */
# define rtfLTRSect 53 /* new in 1.10 */
# define rtfTblAttr 10
# define rtfRowDef 0
# define rtfRowGapH 1
# define rtfCellPos 2
# define rtfMergeRngFirst 3
# define rtfMergePrevious 4
# define rtfRowLeft 5
# define rtfRowRight 6
# define rtfRowCenter 7
# define rtfRowLeftEdge 8
# define rtfRowHt 9
# define rtfRowHeader 10 /* new in 1.10 */
# define rtfRowKeep 11 /* new in 1.10 */
# define rtfRTLRow 12 /* new in 1.10 */
# define rtfLTRRow 13 /* new in 1.10 */
# define rtfRowBordTop 14 /* new in 1.10 */
# define rtfRowBordLeft 15 /* new in 1.10 */
# define rtfRowBordBottom 16 /* new in 1.10 */
# define rtfRowBordRight 17 /* new in 1.10 */
# define rtfRowBordHoriz 18 /* new in 1.10 */
# define rtfRowBordVert 19 /* new in 1.10 */
# define rtfCellBordBottom 20
# define rtfCellBordTop 21
# define rtfCellBordLeft 22
# define rtfCellBordRight 23
# define rtfCellShading 24
# define rtfCellBgPatH 25
# define rtfCellBgPatV 26
# define rtfCellFwdDiagBgPat 27
# define rtfCellBwdDiagBgPat 28
# define rtfCellHatchBgPat 29
# define rtfCellDiagHatchBgPat 30
# define rtfCellDarkBgPatH 31
# define rtfCellDarkBgPatV 32
# define rtfCellFwdDarkBgPat 33
# define rtfCellBwdDarkBgPat 34
# define rtfCellDarkHatchBgPat 35
# define rtfCellDarkDiagHatchBgPat 36
# define rtfCellBgPatLineColor 37
# define rtfCellBgPatColor 38
# define rtfParAttr 11
# define rtfParDef 0
# define rtfStyleNum 1
# define rtfHyphenate 2 /* new in 1.10 */
# define rtfInTable 3
# define rtfKeep 4
# define rtfNoWidowControl 5 /* new in 1.10 */
# define rtfKeepNext 6
# define rtfOutlineLevel 7 /* new in 1.10 */
# define rtfNoLineNum 8
# define rtfPBBefore 9
# define rtfSideBySide 10
# define rtfQuadLeft 11
# define rtfQuadRight 12
# define rtfQuadJust 13
# define rtfQuadCenter 14
# define rtfFirstIndent 15
# define rtfLeftIndent 16
# define rtfRightIndent 17
# define rtfSpaceBefore 18
# define rtfSpaceAfter 19
# define rtfSpaceBetween 20
# define rtfSpaceMultiply 21 /* new in 1.10 */
# define rtfSubDocument 22 /* new in 1.10 */
# define rtfRTLPar 23 /* new in 1.10 */
# define rtfLTRPar 24 /* new in 1.10 */
# define rtfTabPos 25
# define rtfTabLeft 26 /* new in 1.10 */
# define rtfTabRight 27
# define rtfTabCenter 28
# define rtfTabDecimal 29
# define rtfTabBar 30
# define rtfLeaderDot 31
# define rtfLeaderHyphen 32
# define rtfLeaderUnder 33
# define rtfLeaderThick 34
# define rtfLeaderEqual 35
# define rtfParLevel 36 /* new in 1.10 */
# define rtfParBullet 37 /* new in 1.10 */
# define rtfParSimple 38 /* new in 1.10 */
# define rtfParNumCont 39 /* new in 1.10 */
# define rtfParNumOnce 40 /* new in 1.10 */
# define rtfParNumAcross 41 /* new in 1.10 */
# define rtfParHangIndent 42 /* new in 1.10 */
# define rtfParNumRestart 43 /* new in 1.10 */
# define rtfParNumCardinal 44 /* new in 1.10 */
# define rtfParNumDecimal 45 /* new in 1.10 */
# define rtfParNumULetter 46 /* new in 1.10 */
# define rtfParNumURoman 47 /* new in 1.10 */
# define rtfParNumLLetter 48 /* new in 1.10 */
# define rtfParNumLRoman 49 /* new in 1.10 */
# define rtfParNumOrdinal 50 /* new in 1.10 */
# define rtfParNumOrdinalText 51 /* new in 1.10 */
# define rtfParNumBold 52 /* new in 1.10 */
# define rtfParNumItalic 53 /* new in 1.10 */
# define rtfParNumAllCaps 54 /* new in 1.10 */
# define rtfParNumSmallCaps 55 /* new in 1.10 */
# define rtfParNumUnder 56 /* new in 1.10 */
# define rtfParNumDotUnder 57 /* new in 1.10 */
# define rtfParNumDbUnder 58 /* new in 1.10 */
# define rtfParNumNoUnder 59 /* new in 1.10 */
# define rtfParNumWordUnder 60 /* new in 1.10 */
# define rtfParNumStrikethru 61 /* new in 1.10 */
# define rtfParNumForeColor 62 /* new in 1.10 */
# define rtfParNumFont 63 /* new in 1.10 */
# define rtfParNumFontSize 64 /* new in 1.10 */
# define rtfParNumIndent 65 /* new in 1.10 */
# define rtfParNumSpacing 66 /* new in 1.10 */
# define rtfParNumInclPrev 67 /* new in 1.10 */
# define rtfParNumCenter 68 /* new in 1.10 */
# define rtfParNumLeft 69 /* new in 1.10 */
# define rtfParNumRight 70 /* new in 1.10 */
# define rtfParNumStartAt 71 /* new in 1.10 */
# define rtfBorderTop 72
# define rtfBorderBottom 73
# define rtfBorderLeft 74
# define rtfBorderRight 75
# define rtfBorderBetween 76
# define rtfBorderBar 77
# define rtfBorderBox 78
# define rtfBorderSingle 79
# define rtfBorderThick 80
# define rtfBorderShadow 81
# define rtfBorderDouble 82
# define rtfBorderDot 83
# define rtfBorderDash 84 /* new in 1.10 */
# define rtfBorderHair 85
# define rtfBorderWidth 86
# define rtfBorderColor 87
# define rtfBorderSpace 88
# define rtfShading 89
# define rtfBgPatH 90
# define rtfBgPatV 91
# define rtfFwdDiagBgPat 92
# define rtfBwdDiagBgPat 93
# define rtfHatchBgPat 94
# define rtfDiagHatchBgPat 95
# define rtfDarkBgPatH 96
# define rtfDarkBgPatV 97
# define rtfFwdDarkBgPat 98
# define rtfBwdDarkBgPat 99
# define rtfDarkHatchBgPat 100
# define rtfDarkDiagHatchBgPat 101
# define rtfBgPatLineColor 102
# define rtfBgPatColor 103
# define rtfNestLevel 104
# define rtfCharAttr 12
# define rtfPlain 0
# define rtfBold 1
# define rtfAllCaps 2
# define rtfDeleted 3
# define rtfSubScript 4
# define rtfSubScrShrink 5 /* new in 1.10 */
# define rtfNoSuperSub 6 /* new in 1.10 */
# define rtfExpand 7
# define rtfExpandTwips 8 /* new in 1.10 */
# define rtfKerning 9 /* new in 1.10 */
# define rtfFontNum 10
# define rtfFontSize 11
# define rtfItalic 12
# define rtfOutline 13
# define rtfRevised 14
# define rtfRevAuthor 15 /* new in 1.10 */
# define rtfRevDTTM 16 /* new in 1.10 */
# define rtfSmallCaps 17
# define rtfShadow 18
# define rtfStrikeThru 19
# define rtfUnderline 20
# define rtfDotUnderline 21 /* renamed in 1.10 */
# define rtfDbUnderline 22
# define rtfNoUnderline 23
# define rtfWordUnderline 24 /* renamed in 1.10 */
# define rtfSuperScript 25
# define rtfSuperScrShrink 26 /* new in 1.10 */
# define rtfInvisible 27
# define rtfForeColor 28
# define rtfBackColor 29
# define rtfRTLChar 30 /* new in 1.10 */
# define rtfLTRChar 31 /* new in 1.10 */
# define rtfCharStyleNum 32 /* new in 1.10 */
# define rtfCharCharSet 33 /* new in 1.10 */
# define rtfLanguage 34
# define rtfGray 35
# define rtfUnicodeLength 36
# define rtfPictAttr 13
# define rtfMacQD 0
# define rtfPMMetafile 1
# define rtfWinMetafile 2
# define rtfDevIndBitmap 3
# define rtfWinBitmap 4
# define rtfEmfBlip 5
# define rtfPixelBits 6
# define rtfBitmapPlanes 7
# define rtfBitmapWid 8
# define rtfPicWid 9
# define rtfPicHt 10
# define rtfPicGoalWid 11
# define rtfPicGoalHt 12
# define rtfPicScaleX 13
# define rtfPicScaleY 14
# define rtfPicScaled 15
# define rtfPicCropTop 16
# define rtfPicCropBottom 17
# define rtfPicCropLeft 18
# define rtfPicCropRight 19
# define rtfPicMFHasBitmap 20 /* new in 1.10 */
# define rtfPicMFBitsPerPixel 21 /* new in 1.10 */
# define rtfPicBinary 22
# define rtfBookmarkAttr 14
# define rtfBookmarkFirstCol 0
# define rtfBookmarkLastCol 1
# define rtfNeXTGrAttr 15
# define rtfNeXTGWidth 0
# define rtfNeXTGHeight 1
# define rtfFieldAttr 16
# define rtfFieldDirty 0
# define rtfFieldEdited 1
# define rtfFieldLocked 2
# define rtfFieldPrivate 3
# define rtfFieldAlt 4 /* new in 1.10 */
# define rtfTOCAttr 17
# define rtfTOCType 0
# define rtfTOCLevel 1
# define rtfPosAttr 18
# define rtfAbsWid 0
# define rtfAbsHt 1
# define rtfRPosMargH 2
# define rtfRPosPageH 3
# define rtfRPosColH 4
# define rtfPosX 5
# define rtfPosNegX 6 /* new in 1.10 */
# define rtfPosXCenter 7
# define rtfPosXInside 8
# define rtfPosXOutSide 9
# define rtfPosXRight 10
# define rtfPosXLeft 11
# define rtfRPosMargV 12
# define rtfRPosPageV 13
# define rtfRPosParaV 14
# define rtfPosY 15
# define rtfPosNegY 16 /* new in 1.10 */
# define rtfPosYInline 17
# define rtfPosYTop 18
# define rtfPosYCenter 19
# define rtfPosYBottom 20
# define rtfNoWrap 21
# define rtfDistFromTextAll 22 /* renamed in 1.10 */
# define rtfDistFromTextX 23 /* new in 1.10 */
# define rtfDistFromTextY 24 /* new in 1.10 */
# define rtfTextDistY 25
# define rtfDropCapLines 26 /* new in 1.10 */
# define rtfDropCapType 27 /* new in 1.10 */
# define rtfObjAttr 19
# define rtfObjEmb 0
# define rtfObjLink 1
# define rtfObjAutoLink 2
# define rtfObjSubscriber 3
# define rtfObjPublisher 4 /* new in 1.10 */
# define rtfObjICEmb 5
# define rtfObjLinkSelf 6
# define rtfObjLock 7
# define rtfObjUpdate 8 /* new in 1.10 */
# define rtfObjHt 9
# define rtfObjWid 10
# define rtfObjSetSize 11
# define rtfObjAlign 12 /* new in 1.10 */
# define rtfObjTransposeY 13
# define rtfObjCropTop 14
# define rtfObjCropBottom 15
# define rtfObjCropLeft 16
# define rtfObjCropRight 17
# define rtfObjScaleX 18
# define rtfObjScaleY 19
# define rtfObjResRTF 20
# define rtfObjResPict 21
# define rtfObjResBitmap 22
# define rtfObjResText 23
# define rtfObjResMerge 24
# define rtfObjBookmarkPubObj 25
# define rtfObjPubAutoUpdate 26
# define rtfFNoteAttr 20 /* new in 1.10 */
# define rtfFNAlt 0 /* new in 1.10 */
# define rtfKeyCodeAttr 21 /* new in 1.10 */
# define rtfAltKey 0 /* new in 1.10 */
# define rtfShiftKey 1 /* new in 1.10 */
# define rtfControlKey 2 /* new in 1.10 */
# define rtfFunctionKey 3 /* new in 1.10 */
# define rtfACharAttr 22 /* new in 1.10 */
# define rtfACBold 0 /* new in 1.10 */
# define rtfACAllCaps 1 /* new in 1.10 */
# define rtfACForeColor 2 /* new in 1.10 */
# define rtfACSubScript 3 /* new in 1.10 */
# define rtfACExpand 4 /* new in 1.10 */
# define rtfACFontNum 5 /* new in 1.10 */
# define rtfACFontSize 6 /* new in 1.10 */
# define rtfACItalic 7 /* new in 1.10 */
# define rtfACLanguage 8 /* new in 1.10 */
# define rtfACOutline 9 /* new in 1.10 */
# define rtfACSmallCaps 10 /* new in 1.10 */
# define rtfACShadow 11 /* new in 1.10 */
# define rtfACStrikeThru 12 /* new in 1.10 */
# define rtfACUnderline 13 /* new in 1.10 */
# define rtfACDotUnderline 14 /* new in 1.10 */
# define rtfACDbUnderline 15 /* new in 1.10 */
# define rtfACNoUnderline 16 /* new in 1.10 */
# define rtfACWordUnderline 17 /* new in 1.10 */
# define rtfACSuperScript 18 /* new in 1.10 */
# define rtfFontAttr 23 /* new in 1.10 */
# define rtfFontCharSet 0 /* new in 1.10 */
# define rtfFontPitch 1 /* new in 1.10 */
# define rtfFontCodePage 2 /* new in 1.10 */
# define rtfFTypeNil 3 /* new in 1.10 */
# define rtfFTypeTrueType 4 /* new in 1.10 */
# define rtfFileAttr 24 /* new in 1.10 */
# define rtfFileNum 0 /* new in 1.10 */
# define rtfFileRelPath 1 /* new in 1.10 */
# define rtfFileOSNum 2 /* new in 1.10 */
# define rtfFileSource 25 /* new in 1.10 */
# define rtfSrcMacintosh 0 /* new in 1.10 */
# define rtfSrcDOS 1 /* new in 1.10 */
# define rtfSrcNTFS 2 /* new in 1.10 */
# define rtfSrcHPFS 3 /* new in 1.10 */
# define rtfSrcNetwork 4 /* new in 1.10 */
/*
* Drawing attributes
*/
# define rtfDrawAttr 26 /* new in 1.10 */
# define rtfDrawLock 0 /* new in 1.10 */
# define rtfDrawPageRelX 1 /* new in 1.10 */
# define rtfDrawColumnRelX 2 /* new in 1.10 */
# define rtfDrawMarginRelX 3 /* new in 1.10 */
# define rtfDrawPageRelY 4 /* new in 1.10 */
# define rtfDrawColumnRelY 5 /* new in 1.10 */
# define rtfDrawMarginRelY 6 /* new in 1.10 */
# define rtfDrawHeight 7 /* new in 1.10 */
# define rtfDrawBeginGroup 8 /* new in 1.10 */
# define rtfDrawGroupCount 9 /* new in 1.10 */
# define rtfDrawEndGroup 10 /* new in 1.10 */
# define rtfDrawArc 11 /* new in 1.10 */
# define rtfDrawCallout 12 /* new in 1.10 */
# define rtfDrawEllipse 13 /* new in 1.10 */
# define rtfDrawLine 14 /* new in 1.10 */
# define rtfDrawPolygon 15 /* new in 1.10 */
# define rtfDrawPolyLine 16 /* new in 1.10 */
# define rtfDrawRect 17 /* new in 1.10 */
# define rtfDrawTextBox 18 /* new in 1.10 */
# define rtfDrawOffsetX 19 /* new in 1.10 */
# define rtfDrawSizeX 20 /* new in 1.10 */
# define rtfDrawOffsetY 21 /* new in 1.10 */
# define rtfDrawSizeY 22 /* new in 1.10 */
# define rtfCOAngle 23 /* new in 1.10 */
# define rtfCOAccentBar 24 /* new in 1.10 */
# define rtfCOBestFit 25 /* new in 1.10 */
# define rtfCOBorder 26 /* new in 1.10 */
# define rtfCOAttachAbsDist 27 /* new in 1.10 */
# define rtfCOAttachBottom 28 /* new in 1.10 */
# define rtfCOAttachCenter 29 /* new in 1.10 */
# define rtfCOAttachTop 30 /* new in 1.10 */
# define rtfCOLength 31 /* new in 1.10 */
# define rtfCONegXQuadrant 32 /* new in 1.10 */
# define rtfCONegYQuadrant 33 /* new in 1.10 */
# define rtfCOOffset 34 /* new in 1.10 */
# define rtfCOAttachSmart 35 /* new in 1.10 */
# define rtfCODoubleLine 36 /* new in 1.10 */
# define rtfCORightAngle 37 /* new in 1.10 */
# define rtfCOSingleLine 38 /* new in 1.10 */
# define rtfCOTripleLine 39 /* new in 1.10 */
# define rtfDrawTextBoxMargin 40 /* new in 1.10 */
# define rtfDrawTextBoxText 41 /* new in 1.10 */
# define rtfDrawRoundRect 42 /* new in 1.10 */
# define rtfDrawPointX 43 /* new in 1.10 */
# define rtfDrawPointY 44 /* new in 1.10 */
# define rtfDrawPolyCount 45 /* new in 1.10 */
# define rtfDrawArcFlipX 46 /* new in 1.10 */
# define rtfDrawArcFlipY 47 /* new in 1.10 */
# define rtfDrawLineBlue 48 /* new in 1.10 */
# define rtfDrawLineGreen 49 /* new in 1.10 */
# define rtfDrawLineRed 50 /* new in 1.10 */
# define rtfDrawLinePalette 51 /* new in 1.10 */
# define rtfDrawLineDashDot 52 /* new in 1.10 */
# define rtfDrawLineDashDotDot 53 /* new in 1.10 */
# define rtfDrawLineDash 54 /* new in 1.10 */
# define rtfDrawLineDot 55 /* new in 1.10 */
# define rtfDrawLineGray 56 /* new in 1.10 */
# define rtfDrawLineHollow 57 /* new in 1.10 */
# define rtfDrawLineSolid 58 /* new in 1.10 */
# define rtfDrawLineWidth 59 /* new in 1.10 */
# define rtfDrawHollowEndArrow 60 /* new in 1.10 */
# define rtfDrawEndArrowLength 61 /* new in 1.10 */
# define rtfDrawSolidEndArrow 62 /* new in 1.10 */
# define rtfDrawEndArrowWidth 63 /* new in 1.10 */
# define rtfDrawHollowStartArrow 64 /* new in 1.10 */
# define rtfDrawStartArrowLength 65 /* new in 1.10 */
# define rtfDrawSolidStartArrow 66 /* new in 1.10 */
# define rtfDrawStartArrowWidth 67 /* new in 1.10 */
# define rtfDrawBgFillBlue 68 /* new in 1.10 */
# define rtfDrawBgFillGreen 69 /* new in 1.10 */
# define rtfDrawBgFillRed 70 /* new in 1.10 */
# define rtfDrawBgFillPalette 71 /* new in 1.10 */
# define rtfDrawBgFillGray 72 /* new in 1.10 */
# define rtfDrawFgFillBlue 73 /* new in 1.10 */
# define rtfDrawFgFillGreen 74 /* new in 1.10 */
# define rtfDrawFgFillRed 75 /* new in 1.10 */
# define rtfDrawFgFillPalette 76 /* new in 1.10 */
# define rtfDrawFgFillGray 77 /* new in 1.10 */
# define rtfDrawFillPatIndex 78 /* new in 1.10 */
# define rtfDrawShadow 79 /* new in 1.10 */
# define rtfDrawShadowXOffset 80 /* new in 1.10 */
# define rtfDrawShadowYOffset 81 /* new in 1.10 */
/*
* index entry attributes
*/
# define rtfIndexAttr 27 /* new in 1.10 */
# define rtfIndexNumber 0 /* new in 1.10 */
# define rtfIndexBold 1 /* reclassified in 1.10 */
# define rtfIndexItalic 2 /* reclassified in 1.10 */
/*
* \wmetafile argument values
*/
# define rtfWmMmText 1
# define rtfWmMmLometric 2
# define rtfWmMmHimetric 3
# define rtfWmMmLoenglish 4
# define rtfWmMmHienglish 5
# define rtfWmMmTwips 6
# define rtfWmMmIsotropic 7
# define rtfWmMmAnisotropic 8
/*
* \pmmetafile argument values
*/
# define rtfPmPuArbitrary 4
# define rtfPmPuPels 8
# define rtfPmPuLometric 12
# define rtfPmPuHimetric 16
# define rtfPmPuLoenglish 20
# define rtfPmPuHienglish 24
# define rtfPmPuTwips 28
/*
* \lang argument values
*/
# define rtfLangNoLang 0x0400
# define rtfLangAlbanian 0x041c
# define rtfLangArabic 0x0401
# define rtfLangBahasa 0x0421
# define rtfLangBelgianDutch 0x0813
# define rtfLangBelgianFrench 0x080c
# define rtfLangBrazilianPortuguese 0x0416
# define rtfLangBulgarian 0x0402
# define rtfLangCatalan 0x0403
# define rtfLangLatinCroatoSerbian 0x041a
# define rtfLangCzech 0x0405
# define rtfLangDanish 0x0406
# define rtfLangDutch 0x0413
# define rtfLangAustralianEnglish 0x0c09
# define rtfLangUKEnglish 0x0809
# define rtfLangUSEnglish 0x0409
# define rtfLangFinnish 0x040b
# define rtfLangFrench 0x040c
# define rtfLangCanadianFrench 0x0c0c
# define rtfLangGerman 0x0407
# define rtfLangGreek 0x0408
# define rtfLangHebrew 0x040d
# define rtfLangHungarian 0x040e
# define rtfLangIcelandic 0x040f
# define rtfLangItalian 0x0410
# define rtfLangJapanese 0x0411
# define rtfLangKorean 0x0412
# define rtfLangBokmalNorwegian 0x0414
# define rtfLangNynorskNorwegian 0x0814
# define rtfLangPolish 0x0415
# define rtfLangPortuguese 0x0816
# define rtfLangRhaetoRomanic 0x0417
# define rtfLangRomanian 0x0418
# define rtfLangRussian 0x0419
# define rtfLangCyrillicSerboCroatian 0x081a
# define rtfLangSimplifiedChinese 0x0804
# define rtfLangSlovak 0x041b
# define rtfLangCastilianSpanish 0x040a
# define rtfLangMexicanSpanish 0x080a
# define rtfLangSwedish 0x041d
# define rtfLangSwissFrench 0x100c
# define rtfLangSwissGerman 0x0807
# define rtfLangSwissItalian 0x0810
# define rtfLangThai 0x041e
# define rtfLangTraditionalChinese 0x0404
# define rtfLangTurkish 0x041f
# define rtfLangUrdu 0x0420
/*
* Style types
*/
# define rtfParStyle 0 /* the default */
# define rtfCharStyle 1
# define rtfSectStyle 2
/*
* RTF font, color and style structures. Used for font table,
* color table, and stylesheet processing.
*/
typedef struct RTFFont RTFFont;
typedef struct RTFColor RTFColor;
typedef struct RTFStyle RTFStyle;
typedef struct RTFStyleElt RTFStyleElt;
typedef struct RTFBorder RTFBorder;
typedef struct RTFCell RTFCell;
typedef struct RTFTable RTFTable;
struct RTFFont
{
char *rtfFName; /* font name */
char *rtfFAltName; /* font alternate name */
int rtfFNum; /* font number */
int rtfFFamily; /* font family */
int rtfFCharSet; /* font charset */
int rtfFPitch; /* font pitch */
int rtfFType; /* font type */
int rtfFCodePage; /* font code page */
RTFFont *rtfNextFont; /* next font in list */
};
/*
* Color values are -1 if the default color for the color
* number should be used. The default color is writer-dependent.
*/
struct RTFColor
{
int rtfCNum; /* color number */
int rtfCRed; /* red value */
int rtfCGreen; /* green value */
int rtfCBlue; /* blue value */
RTFColor *rtfNextColor; /* next color in list */
};
struct RTFStyle
{
char *rtfSName; /* style name */
int rtfSType; /* style type */
int rtfSAdditive; /* whether or not style is additive */
int rtfSNum; /* style number */
int rtfSBasedOn; /* style this one's based on */
int rtfSNextPar; /* style next paragraph style */
RTFStyleElt *rtfSSEList; /* list of style words */
int rtfExpanding; /* non-zero = being expanded */
RTFStyle *rtfNextStyle; /* next style in style list */
};
struct RTFStyleElt
{
int rtfSEClass; /* token class */
int rtfSEMajor; /* token major number */
int rtfSEMinor; /* token minor number */
int rtfSEParam; /* control symbol parameter */
char *rtfSEText; /* text of symbol */
RTFStyleElt *rtfNextSE; /* next element in style */
};
struct RTFBorder
{
int width;
int color;
};
struct RTFCell
{
int rightBoundary;
RTFBorder border[4];
};
struct RTFTable
{
RTFCell cells[MAX_TABLE_CELLS];
int numCellsDefined;
int gapH, leftEdge;
/* borders for the table row */
RTFBorder border[6];
/* Used in v1.0 - v3.0 */
int numCellsInserted;
/* v4.1 */
/* tableRowStart may be the start row paragraph of the table row,
* or it may store the end of the previous row if it may still be
* continued, otherwise NULL is stored. */
ME_DisplayItem *tableRowStart;
/* Table definitions are stored as a stack to support nested tables. */
RTFTable *parent;
};
# define RTFBorderTypeNone 0x00
# define RTFBorderTypePara 0x10 /* for \brdrX control words */
# define RTFBorderTypeRow 0x20 /* for \trbrdrX control words */
# define RTFBorderTypeCell 0x30 /* for \clbrdrX control words */
# define RTFBorderTypeMask 0xf0
/* The X in the control words \brdrX \trbrdrX and \clbrdrX mentioned above
* should be one of t, l, b, r which stand for top, left, bottom, right
* respectively. */
# define RTFBorderSideTop 0x00
# define RTFBorderSideLeft 0x01
# define RTFBorderSideBottom 0x02
# define RTFBorderSideRight 0x03
# define RTFBorderSideHorizontal 0x04
# define RTFBorderSideVertical 0x05
# define RTFBorderSideMask 0x0f
/* Here are the values from the border types and sides put together. */
# define RTFBorderParaTop 0x10
# define RTFBorderParaLeft 0x11
# define RTFBorderParaBottom 0x12
# define RTFBorderParaRight 0x13
# define RTFBorderRowTop 0x20
# define RTFBorderRowLeft 0x21
# define RTFBorderRowBottom 0x22
# define RTFBorderRowRight 0x23
# define RTFBorderRowHorizontal 0x24
# define RTFBorderRowVertical 0x25
# define RTFBorderCellTop 0x30
# define RTFBorderCellLeft 0x31
# define RTFBorderCellBottom 0x32
# define RTFBorderCellRight 0x33
/*
* Return pointer to new element of type t, or NULL
* if no memory available.
*/
# define New(t) (heap_alloc (sizeof (t)))
/* Parser stack size */
# define maxStack 32
struct _RTF_Info;
typedef struct _RTF_Info RTF_Info;
typedef void (*RTFFuncPtr) (RTF_Info *); /* generic function pointer */
/* RTF parser stack element */
struct tagRTFState {
ME_Style *style;
int codePage;
int unicodeLength;
};
typedef struct tagRTFState RTFState;
struct _RTF_Info {
/*
* Public variables (listed in rtf.h)
*/
/*
* Information pertaining to last token read by RTFToken. The
* text is exactly as it occurs in the input file, e.g., "\{"
* will be found in rtfTextBuf as "\{", even though it means "{".
* These variables are also set when styles are reprocessed.
*/
int rtfClass;
int rtfMajor;
int rtfMinor;
int rtfParam;
int rtfFormat;
char *rtfTextBuf;
int rtfTextLen;
int rtfLineNum;
int rtfLinePos;
/*
* Private stuff
*/
int pushedChar; /* pushback char if read too far */
int pushedClass; /* pushed token info for RTFUngetToken() */
int pushedMajor;
int pushedMinor;
int pushedParam;
char *pushedTextBuf;
int prevChar;
BOOL bumpLine;
/* Document-wide attributes */
RTFFont *fontList; /* these lists MUST be */
RTFColor *colorList; /* initialized to NULL */
RTFStyle *styleList;
int ansiCodePage; /* ANSI codepage used in conversion to Unicode */
int defFont;
/* Character attributes */
int unicodeLength; /* The length of ANSI representation of Unicode characters */
int codePage; /* Current codepage for text conversion */
ME_InStream *stream;
ME_TextEditor *editor;
ME_Style *style;
RTFFuncPtr ccb[rtfMaxClass]; /* class callbacks */
RTFFuncPtr dcb[rtfMaxDestination]; /* destination callbacks */
RTFFuncPtr readHook;
DWORD dwOutputCount;
WCHAR OutputBuffer[0x1000];
DWORD dwCPOutputCount;
DWORD dwMaxCPOutputCount;
char *cpOutputBuffer;
RTFState stack[maxStack];
int stackTop;
BOOL styleChanged;
RTFTable *tableDef;
int nestingLevel;
BOOL canInheritInTbl;
int borderType; /* value corresponds to the RTFBorder constants. */
PARAFORMAT2 fmt; /* Accumulated para fmt for current paragraph. */
};
/*
* Public RTF reader routines
*/
void RTFInit (RTF_Info *) DECLSPEC_HIDDEN;
void RTFDestroy(RTF_Info *info) DECLSPEC_HIDDEN;
void RTFSetDestinationCallback (RTF_Info *, int, RTFFuncPtr) DECLSPEC_HIDDEN;
void RTFRead (RTF_Info *) DECLSPEC_HIDDEN;
int RTFGetToken (RTF_Info *) DECLSPEC_HIDDEN; /* writer should rarely need this */
void RTFSetReadHook (RTF_Info *, RTFFuncPtr) DECLSPEC_HIDDEN;
void RTFRouteToken (RTF_Info *) DECLSPEC_HIDDEN;
void RTFSkipGroup (RTF_Info *) DECLSPEC_HIDDEN;
void RTFReadGroup (RTF_Info *) DECLSPEC_HIDDEN;
int RTFCheckCM (const RTF_Info *, int, int) DECLSPEC_HIDDEN;
int RTFCheckCMM (const RTF_Info *, int, int, int) DECLSPEC_HIDDEN;
int RTFCheckMM (const RTF_Info *, int, int) DECLSPEC_HIDDEN;
RTFFont *RTFGetFont (const RTF_Info *, int) DECLSPEC_HIDDEN;
RTFColor *RTFGetColor (const RTF_Info *, int) DECLSPEC_HIDDEN;
int RTFCharToHex ( char) DECLSPEC_HIDDEN;
void RTFFlushOutputBuffer( RTF_Info *info ) DECLSPEC_HIDDEN;
void RTFSetEditStream(RTF_Info *info, ME_InStream *stream) DECLSPEC_HIDDEN;
void WriterInit (RTF_Info *) DECLSPEC_HIDDEN;
int BeginFile (RTF_Info *) DECLSPEC_HIDDEN;
int RTFCharSetToCodePage(RTF_Info *info, int charset) DECLSPEC_HIDDEN;
void LookupInit (void) DECLSPEC_HIDDEN;
void LookupCleanup (void) DECLSPEC_HIDDEN;
#endif