xref: /aoo4110/main/sw/source/filter/ww8/dump/ww8darr.cxx (revision b1cdbd2c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 #include <stdlib.h>
28 
29 #include "ww8dout.hxx"				// OutShort()
30 #include "ww8darr.hxx"
31 
32 
33 
34 
35 //-----------------------------------------
36 
37 
38 
39 SprmDumpInfo aSprmDumpTab[] = {
40 	0, (FnOut)0, "NOP(0)",
41 	2, OutShort, "sprmPIstd",  // pap.istd (style code)
42 	3, (FnOut)0, "sprmPIstdPermute", // pap.istd	permutation
43 	4, OutByte,  "sprmPIncLv1", // pap.istddifference
44 	5, OutByte,  "sprmPJc", // pap.jc (justification)
45 	6, OutBool,  "sprmPFSideBySide", // pap.fSideBySide
46 	7, OutBool,  "sprmPFKeep", // pap.fKeep
47 	8, OutBool,  "sprmPFKeepFollow ", //	pap.fKeepFollow
48 	9, OutBool,  "sprmPPageBreakBefore", // pap.fPageBreakBefore
49 
50 	10, (FnOut)0, "sprmPBrcl", //	pap.brcl
51 	11, (FnOut)0, "sprmPBrcp ", // pap.brcp
52 	12, (FnOut)0, "sprmPAnld", //	pap.anld (ANLD structure)
53 	13, OutByte,  "sprmPNLvlAnm", // pap.nLvlAnm nn
54 	14, OutBool,  "sprmPFNoLineNumb", //ap.fNoLnn
55 
56 	//??
57 	15, OutTab,   "?sprmPChgTabsPapx", // pap.itbdMac, ...
58 
59 
60 	16, OutShort,  "sprmPDxaRight", // pap.dxaRight
61 	17, OutShort,  "sprmPDxaLeft", // pap.dxaLeft
62 	18, OutWord,  "sprmPNest", // pap.dxaLeft
63 	19, OutShort,  "sprmPDxaLeft1", // pap.dxaLeft1
64 
65 	20, OutShorts, "sprmPDyaLine", // pap.lspd	an LSPD
66 	21, OutWord,  "sprmPDyaBefore", // pap.dyaBefore
67 	22, OutWord,  "sprmPDyaAfter", //	pap.dyaAfter
68 
69 
70 	//??
71 	23, (FnOut)0, "?sprmPChgTabs", // pap.itbdMac, pap.rgdxaTab, ...
72 
73 
74 	24, OutBool,  "sprmPFInTable", // pap.fInTable
75 	25, OutBool,  "sprmPTtp", // pap.fTtp
76 	26, OutWord,  "sprmPDxaAbs", // pap.dxaAbs
77 	27, OutWord,  "sprmPDyaAbs", // pap.dyaAbs
78 	28, OutWord, "sprmPDxaWidth", // pap.dxaWidth
79 	29, (FnOut)0, "sprmPPc", // pap.pcHorz, pap.pcVert
80 
81 	30, (FnOut)0, "sprmPBrcTop10", // pap.brcTop BRC10
82 	31, (FnOut)0, "sprmPBrcLeft10", // pap.brcLeft BRC10
83 	32, (FnOut)0, "sprmPBrcBottom10", // pap.brcBottom BRC10
84 	33, (FnOut)0, "sprmPBrcRight10", // pap.brcRight BRC10
85 	34, (FnOut)0, "sprmPBrcBetween10", // pap.brcBetween BRC10
86 	35, (FnOut)0, "sprmPBrcBar10", // pap.brcBar BRC10
87 	36, OutWord, "sprmPFromText10", // pap.dxaFromText dxa
88 	37, (FnOut)0, "sprmPWr", // pap.wr wr
89 	38, OutWordHex, "sprmPBrcTop", // pap.brcTop BRC
90 	39, OutWordHex, "sprmPBrcLeft", // pap.brcLeft BRC
91 
92 	40, OutWordHex, "sprmPBrcBottom", // pap.brcBottom BRC
93 	41, OutWordHex, "sprmPBrcRight", // pap.brcRight BRC
94 	42, (FnOut)0, "sprmPBrcBetween", // pap.brcBetween BRC
95 	43, (FnOut)0, "sprmPBrcBar",//pap.brcBar BRC word
96 	44, OutBool,  "sprmPFNoAutoHyph",//pap.fNoAutoHyph
97 	45, OutWord,  "sprmPWHeightAbs",//pap.wHeightAbs w
98 	46, (FnOut)0, "sprmPDcs",//pap.dcs DCS
99 	47, OutWordHex, "sprmPShd",//pap.shd SHD
100 	48, OutWord,  "sprmPDyaFromText",//pap.dyaFromText dya
101 	49, OutWord,  "sprmPDxaFromText",//pap.dxaFromText dxa
102 
103 	50, OutBool,  "sprmPFLocked", // pap.fLocked 0 or 1 byte
104 	51, OutBool,  "sprmPFWidowControl", // pap.fWidowControl 0 or 1 byte
105 
106 
107 	//??
108 	52, (FnOut)0, "?sprmPRuler 52", //???
109 
110 
111 	65, OutBool,  "sprmCFStrikeRM", // chp.fRMarkDel 1 or 0 bit
112 	66, OutBool,  "sprmCFRMark", // chp.fRMark 1 or 0 bit
113 	67, OutBool,  "sprmCFFldVanish", // chp.fFldVanish 1 or 0 bit
114 	68, OutTab68, "sprmCPicLocation", // chp.fcPic and chp.fSpec
115 	69, OutShort, "sprmCIbstRMark", // chp.ibstRMark index into sttbRMark
116 
117 	70, (FnOut)0, "sprmCDttmRMark", // chp.dttm DTTM long
118 	71, OutBool,  "sprmCFData", // chp.fData 1 or 0 bit
119 	72, OutShort, "sprmCRMReason", // chp.idslRMReason an index to a table
120 	73, (FnOut)0, "sprmCChse", // chp.fChsDiff and chp.chse see below 3 bytes
121 	74, (FnOut)0, "sprmCSymbol", // chp.fSpec, chp.chSym and chp.ftcSym
122 	75, OutBool,  "sprmCFOle2", // chp.fOle2 1 or 0	bit
123 
124 	80, OutShort, "sprmCIstd", // chp.istd istd, see stylesheet definition short
125 	81, (FnOut)0, "sprmCIstdPermute", // chp.istd permutation vector (see below)
126 	82, (FnOut)0, "sprmCDefault", // whole CHP (see below) none variable length
127 	83, (FnOut)0, "sprmCPlain", // whole CHP (see below) none 0
128 	84, (FnOut)0, "??84",
129 	85, OutBool4, "sprmCFBold", // chp.fBold 0,1, 128, or 129 (see below) byte
130 	86, OutBool4, "sprmCFItalic", // chp.fItalic 0,1, 128, or 129 (see below) byte
131 	87, OutBool4, "sprmCFStrike", // chp.fStrike 0,1, 128, or 129 (see below) byte
132 	88, OutBool4, "sprmCFOutline", // chp.fOutline 0,1, 128, or 129 (see below) byte
133 	89, OutBool4, "sprmCFShadow", // chp.fShadow 0,1, 128, or 129 (see below) byte
134 
135 	90, OutBool4, "sprmCFSmallCaps", // chp.fSmallCaps 0,1, 128, or 129 (see below) byte
136 	91, OutBool4, "sprmCFCaps", // chp.fCaps 0,1, 128, or 129 (see below) byte
137 	92, OutBool4, "sprmCFVanish", // chp.fVanish 0,1, 128, or 129 (see below) byte
138 	93, OutWord,  "sprmCFtc", // chp.ftc ftc word
139 	94, OutByte,  "sprmCKul", // chp.kul kul byte
140 	95, (FnOut)0, "sprmCSizePos", // chp.hps, chp.hpsPos (see below) 3 bytes
141 	96, OutWord,  "sprmCDxaSpace", // chp.dxaSpace dxa word
142 	97, OutWord,  "sprmCLid", // chp.lid LID word
143 	98, OutByte,  "sprmCIco", // chp.ico ico byte
144 	99, OutWord,  "sprmCHps", // chp.hps hps word!
145 
146 	100, OutByte,  "sprmCHpsInc", // chp.hps (see below) byte
147 	101, OutWord,  "sprmCHpsPos", // chp.hpsPos hps byte
148 	102, OutByte,  "sprmCHpsPosAdj", // chp.hpsPos hps (see below) byte
149 
150 
151 	//??
152 	103, (FnOut)0, "?sprmCMajority", // chp.fBold, chp.fItalic, chp.fSmallCaps, ...
153 
154 
155 	104, OutByte,  "sprmCIss", // chp.iss iss byte
156 	105, (FnOut)0, "sprmCHpsNew50", // chp.hps hps variable width, length always recorded as 2
157 	106, (FnOut)0, "sprmCHpsInc1", // chp.hps complex (see below) variable width, length always recorded as 2
158 	107, OutShort, "sprmCHpsKern", // chp.hpsKern hps short
159 	108, (FnOut)0, "sprmCMajority50", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, ...
160 	109, OutShort, "sprmCHpsMul", // chp.hps percentage to grow hps short
161 
162 	110, OutShort, "sprmCCondHyhen", // chp.ysri ysri short
163 	117, OutBool,  "sprmCFSpec", // chp.fSpec  1 or 0 bit
164 	118, OutBool,  "sprmCFObj", // chp.fObj 1 or 0 bit
165 	119, (FnOut)0, "sprmPicBrcl", // pic.brcl brcl (see PIC structure definition) byte
166 
167 	120,	(FnOut)0, "sprmPicScale", // pic.mx, pic.my, pic.dxaCropleft,
168 	121, (FnOut)0, "sprmPicBrcTop", // pic.brcTop BRC word
169 	122, (FnOut)0, "sprmPicBrcLeft", // pic.brcLeft BRC word
170 	123, (FnOut)0, "sprmPicBrcBottom", // pic.brcBottom BRC word
171 	124, (FnOut)0, "sprmPicBrcRight", // pic.brcRight BRC word
172 	131, OutByte,  "sprmSScnsPgn", // sep.cnsPgn cns byte
173 	132, (FnOut)0, "sprmSiHeadingPgn", // sep.iHeadingPgn heading number level byte
174 	133, (FnOut)0, "sprmSOlstAnm", // sep.olstAnm OLST variable length
175 	136, (FnOut)0, "sprmSDxaColWidth", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
176 	137, (FnOut)0, "sprmSDxaColSpacing", // sep.rgdxaColWidthSpacing complex (see below) 3 bytes
177 	138, OutBool,  "sprmSFEvenlySpaced", // sep.fEvenlySpaced 1 or 0 byte
178 	139, OutBool,  "sprmSFProtected", // sep.fUnlocked 1 or 0 byte
179 
180 	140, OutWord,  "sprmSDmBinFirst", // sep.dmBinFirst  word
181 	141, OutWord,  "sprmSDmBinOther", // sep.dmBinOther  word
182 	142, OutByte,  "sprmSBkc", // sep.bkc bkc byte
183 	143, OutBool,  "sprmSFTitlePage", // sep.fTitlePage 0 or 1 byte
184 	144, OutWord,  "sprmSCcolumns", // sep.ccolM1 # of cols - 1 word
185 	145, OutWord,  "sprmSDxaColumns", // sep.dxaColumns dxa word
186 	146, (FnOut)0, "sprmSFAutoPgn", // sep.fAutoPgn obsolete byte
187 	147, OutByte,  "sprmSNfcPgn", // sep.nfcPgn nfc byte
188 	148, OutShort, "sprmSDyaPgn", // sep.dyaPgn dya short
189 	149, OutShort, "sprmSDxaPgn", // sep.dxaPgn dya short
190 
191 	150, OutBool,  "sprmSFPgnRestart", // sep.fPgnRestart 0 or 1 byte
192 	151, OutBool,  "sprmSFEndnote", // sep.fEndnote 0 or 1 byte
193 	152, OutByte,  "sprmSLnc", // sep.lnc lnc byte
194 	153, (FnOut)0, "sprmSGprfIhdt", // sep.grpfIhdt grpfihdt (see Headers and Footers topic) byte
195 	154, OutWord,  "sprmSNLnnMod", // sep.nLnnMod non-neg int. word
196 	155, OutWord, "sprmSDxaLnn", // sep.dxaLnn dxa word
197 	156, OutWord,  "sprmSDyaHdrTop", // sep.dyaHdrTop dya word
198 	157, OutWord,  "sprmSDyaHdrBottom", // sep.dyaHdrBottom dya word
199 	158, OutBool,  "sprmSLBetween", // sep.fLBetween 0 or 1 byte
200 	159, OutByte,  "sprmSVjc", // sep.vjc vjc byte
201 
202 	160, OutWord,  "sprmSLnnMin", // sep.lnnMin lnn word
203 	161, OutWord,  "sprmSPgnStart", // sep.pgnStart pgn word
204 	162, OutByte,  "sprmSBOrientation", // sep.dmOrientPage dm byte
205 
206 
207 	//??
208 	163, OutWord,  "?SprmSBCustomize 163", //???
209 
210 
211 	164, OutWord,  "sprmSXaPage", // sep.xaPage xa word
212 	165, OutWord,  "sprmSYaPage", // sep.yaPage ya word
213 	166, OutWord,  "sprmSDxaLeft", // sep.dxaLeft dxa word
214 	167, OutWord,  "sprmSDxaRight", // sep.dxaRight dxa word
215 	168, OutWord,  "sprmSDyaTop", // sep.dyaTop dya word
216 	169, OutWord,  "sprmSDyaBottom", // sep.dyaBottom dya word
217 
218 	170, OutWord,  "sprmSDzaGutter", // sep.dzaGutter dza word
219 	171, OutWord,  "sprmSDMPaperReq", // sep.dmPaperReq dm word
220 	182, OutWord,  "sprmTJc", // tap.jc jc word (low order byte is significant)
221 	183, OutWord,  "sprmTDxaLeft", // tap.rgdxaCenter (see below) dxa word
222 	184, OutWord,  "sprmTDxaGapHalf", // tap.dxaGapHalf, tap.rgdxaCenter (see below) dxa word
223 	185, OutBool,  "sprmTFCantSplit", // tap.fCantSplit 1 or 0 byte
224 	186, OutBool,  "sprmTTableHeader", // tap.fTableHeader 1 or 0 byte
225 	187, OutWordsHex, "sprmTTableBorders", // tap.rgbrcTable complex(see below) 12 bytes
226 	188, (FnOut)0, "sprmTDefTable10", // tap.rgdxaCenter, tap.rgtc complex (see below) variable length
227 	189, OutShort,  "sprmTDyaRowHeight", // tap.dyaRowHeight dya word
228 
229 
230 	//??
231 	190, OutTab190, "sprmTDefTable", // tap.rgtc complex (see below)
232 
233 
234 	//??
235 	191, OutTab191, "sprmTDefTableShd", // tap.rgshd complex (see below)
236 
237 
238 	192, OutTab192, "sprmTTlp", // tap.tlp TLP 4 bytes
239 	193, (FnOut)0, "sprmTSetBrc", // tap.rgtc[].rgbrc complex (see below) 5 bytes
240 	194, (FnOut)0, "sprmTInsert", // tap.rgdxaCenter,tap.rgtc complex (see below) 4 bytes
241 	195, (FnOut)0, "sprmTDelete", // tap.rgdxaCenter, tap.rgtc complex (see below) word
242 	196, (FnOut)0, "sprmTDxaCol", // tap.rgdxaCenter complex (see below) 4 bytes
243 	197, (FnOut)0, "sprmTMerge", // tap.fFirstMerged, tap.fMerged complex (see below) word
244 	198, (FnOut)0, "sprmTSplit", // tap.fFirstMerged, tap.fMerged complex (see below) word
245 	199, (FnOut)0, "sprmTSetBrc10", // tap.rgtc[].rgbrc complex (see below) 5 bytes
246 
247 	200, (FnOut)0, "sprmTSetShd", // tap.rgshd complex (see below) 4 bytes
248 
249 
250 
251 	// ab hier Selbstdefinierte Ids
252 
253 	256, (FnOut)0, "FootNote",
254 	257, (FnOut)0, "EndNote",
255 	258, (FnOut)0, "??258 selbstdef.",
256 	259, (FnOut)0, "??259 selbstdef.",
257 	260, (FnOut)0, "Field",
258 
259 //- neue ab Ver8 ------------------------------------------------------------
260 
261 	0x4600, OutShort,"sprmPIstd", // pap.istd;istd (style code);short;
262 	0xC601, (FnOut)0,"sprmPIstdPermute", // pap.istd;permutation vector (see below);variable length;
263 	0x2602, OutByte, "sprmPIncLvl", // pap.istd, pap.lvl;difference between istd of base PAP and istd of PAP to be produced (see below);byte;
264 	0x2403, OutByte, "sprmPJc", // pap.jc;jc (justification);byte;
265 	0x2404, OutByte, "sprmPFSideBySide", // pap.fSideBySide;0 or 1;byte;
266 	0x2405, OutByte, "sprmPFKeep", // pap.fKeep;0 or 1;byte;
267 	0x2406, OutByte, "sprmPFKeepFollow", // pap.fKeepFollow;0 or 1;byte;
268 	0x2407, OutByte, "sprmPFPageBreakBefore", // pap.fPageBreakBefore;0 or 1;byte;
269 	0x2408, OutByte, "sprmPBrcl", // pap.brcl;brcl;byte;
270 	0x2409, OutByte, "sprmPBrcp", // pap.brcp;brcp;byte;
271 	0x260A, OutByte, "sprmPIlvl", // pap.ilvl;ilvl;byte;
272 	0x460B, OutShort, "sprmPIlfo", // pap.ilfo;ilfo (list index) ;short;
273 	0x240C, OutByte, "sprmPFNoLineNumb", // pap.fNoLnn;0 or 1;byte;
274 	0xC60D, OutTab,  "sprmPChgTabsPapx", // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length
275 	0x840E, OutWord, "sprmPDxaRight", // pap.dxaRight;dxa;word;
276 	0x840F, OutWord, "sprmPDxaLeft", // pap.dxaLeft;dxa;word;
277 	0x4610, OutWord, "sprmPNest", // pap.dxaLeft;dxa-see below;word;
278 	0x8411, OutWord, "sprmPDxaLeft1", // pap.dxaLeft1;dxa;word;
279 	0x6412,OutLongHex,"sprmPDyaLine", // pap.lspd;an LSPD, a long word structure consisting of a short of dyaLine followed by a short of fMultLinespace - see below;long;
280 	0xA413, OutWord, "sprmPDyaBefore", // pap.dyaBefore;dya;word;
281 	0xA414, OutWord, "sprmPDyaAfter", // pap.dyaAfter;dya;word;
282 	0xC615, (FnOut)0,"sprmPChgTabs", // pap.itbdMac, pap.rgdxaTab, pap.rgtbd;complex - see below;variable length;
283 	0x2416, OutByte, "sprmPFInTable", // pap.fInTable;0 or 1;byte;
284 	0x2417, OutByte, "sprmPFTtp", // pap.fTtp;0 or 1;byte;
285 	0x8418, OutWord, "sprmPDxaAbs", // pap.dxaAbs;dxa;word;
286 	0x8419, OutWord, "sprmPDyaAbs", // pap.dyaAbs;dya;word;
287 	0x841A, OutWord, "sprmPDxaWidth", // pap.dxaWidth;dxa;word;
288 	0x261B, OutByte, "sprmPPc", // pap.pcHorz, pap.pcVert;complex - see below;byte;
289 	0x461C, OutWord, "sprmPBrcTop10", // pap.brcTop;BRC10;word;
290 	0x461D, OutWord, "sprmPBrcLeft10", // pap.brcLeft;BRC10;word;
291 	0x461E, OutWord, "sprmPBrcBottom10", // pap.brcBottom;BRC10;word;
292 	0x461F, OutWord, "sprmPBrcRight10", // pap.brcRight;BRC10;word;
293 	0x4620, OutWord, "sprmPBrcBetween10", // pap.brcBetween;BRC10;word;
294 	0x4621, OutWord, "sprmPBrcBar10", // pap.brcBar;BRC10;word;
295 	0x4622, OutWord, "sprmPDxaFromText10", // pap.dxaFromText;dxa;word;
296 	0x2423, OutByte, "sprmPWr", // pap.wr;wr (see description of PAP for definition;byte;
297 	0x6424,OutLongHex,"sprmPBrcTop", // pap.brcTop;BRC;long;
298 	0x6425,OutLongHex,"sprmPBrcLeft", // pap.brcLeft;BRC;long;
299 	0x6426,OutLongHex,"sprmPBrcBottom", // pap.brcBottom;BRC;long;
300 	0x6427,OutLongHex,"sprmPBrcRight", // pap.brcRight;BRC;long;
301 	0x6428,OutLongHex,"sprmPBrcBetween", // pap.brcBetween;BRC;long;
302 	0x6629,OutLongHex,"sprmPBrcBar", // pap.brcBar;BRC;long;
303 	0x242A, OutByte, "sprmPFNoAutoHyph", // pap.fNoAutoHyph;0 or 1;byte;
304 	0x442B, OutWord, "sprmPWHeightAbs", // pap.wHeightAbs;w;word;
305 	0x442C, OutShort,"sprmPDcs", // pap.dcs;DCS;short;
306 	0x442D, OutWord, "sprmPShd", // pap.shd;SHD;word;
307 	0x842E, OutWord, "sprmPDyaFromText", // pap.dyaFromText;dya;word;
308 	0x842F, OutWord, "sprmPDxaFromText", // pap.dxaFromText;dxa;word;
309 	0x2430, OutByte, "sprmPFLocked", // pap.fLocked;0 or 1;byte;
310 	0x2431, OutByte, "sprmPFWidowControl", // pap.fWidowControl;0 or 1;byte;
311 	0xC632, (FnOut)0,"sprmPRuler", // ;;variable length;
312 	0x2433, OutByte, "sprmPFKinsoku", // pap.fKinsoku;0 or 1;byte;
313 	0x2434, OutByte, "sprmPFWordWrap", // pap.fWordWrap;0 or 1;byte;
314 	0x2435, OutByte, "sprmPFOverflowPunct", // pap.fOverflowPunct;0 or 1;byte;
315 	0x2436, OutByte, "sprmPFTopLinePunct", // pap.fTopLinePunct;0 or 1;byte;
316 	0x2437, OutByte, "sprmPFAutoSpaceDE", // pap.fAutoSpaceDE;0 or 1;byte;
317 	0x2438, OutByte, "sprmPFAutoSpaceDN", // pap.fAutoSpaceDN;0 or 1;byte;
318 	0x4439, OutWord, "sprmPWAlignFont", // pap.wAlignFont;iFa (see description of PAP for definition);word;
319 	0x443A, OutWord, "sprmPFrameTextFlow", // pap.fVertical pap.fBackward pap.fRotateFont;complex (see description of PAP for definition);word;
320 	0x243B, OutByte, "sprmPISnapBaseLine", // obsolete: not applicable in Word97 and later versions;;byte;
321 	0xC63E, (FnOut)0,"sprmPAnld", // pap.anld;;variable length;
322 	0xC63F, (FnOut)0,"sprmPPropRMark", // pap.fPropRMark;complex (see below);variable length;
323 	0x2640, OutByte, "sprmPOutLvl", // pap.lvl;has no effect if pap.istd is < 1 or is > 9;byte;
324 	0x2441, OutByte, "sprmPFBiDi", // ;;byte;
325 	0x2443, OutBool, "sprmPFNumRMIns", // pap.fNumRMIns;1 or 0;bit;
326 	0x2444, OutByte, "sprmPCrLf", // ;;byte;
327 	0xC645, (FnOut)0,"sprmPNumRM", // pap.numrm;;variable length;
328 	0x6645,OutHugeHex,"sprmPHugePapx", // see below;fc in the data stream to locate the huge grpprl (see below);long;
329 	0x6646,OutHugeHex,"sprmPHugePapx", // see below;fc in the data stream to locate the huge grpprl (see below);long;
330 	0x2447, OutByte, "sprmPFUsePgsuSettings", // pap.fUsePgsuSettings;1 or 0;byte;
331 	0x2448, OutByte, "sprmPFAdjustRight", // pap.fAdjustRight;1 or 0;byte;
332 	0x0800, OutBool, "sprmCFRMarkDel", // chp.fRMarkDel;1 or 0;bit;
333 	0x0801, OutBool, "sprmCFRMark", // chp.fRMark;1 or 0;bit;
334 	0x0802, OutBool, "sprmCFFldVanish", // chp.fFldVanish;1 or 0;bit;
335 	0x6A03, OutTab68,"sprmCPicLocation", // chp.fcPic and chp.fSpec;see below;variable length, length recorded is always 4;
336 	0x4804, OutShort,"sprmCIbstRMark", // chp.ibstRMark;index into sttbRMark;short;
337 	0x6805,OutLongHex,"sprmCDttmRMark", // chp.dttmRMark;DTTM;long;
338 	0x0806, OutBool, "sprmCFData", // chp.fData;1 or 0;bit;
339 	0x4807, OutShort, "sprmCIdslRMark", // chp.idslRMReason;an index to a table of strings defined in Word 6.0 executables;short;
340 	0xEA08, (FnOut)0,"sprmCChs", // chp.fChsDiff and chp.chse;see below;3 bytes;
341 	0x6A09, (FnOut)0,"sprmCSymbol", // chp.fSpec, chp.xchSym and chp.ftcSym;see below;variable length, length recorded is always 4;
342 	0x080A, OutBool, "sprmCFOle2", // chp.fOle2;1 or 0;bit;
343 //0x480B, obsolete,"sprmCIdCharType", // obsolete: not applicable in Word97 and later versions;;;
344 	0x2A0C, OutByte, "sprmCHighlight", // chp.fHighlight, chp.icoHighlight;ico (fHighlight is set to 1 iff ico is not 0);byte;
345 	0x680E,OutLongHex,"sprmCObjLocation", // chp.fcObj;FC;long;
346 //0x2A10, ? ? ?  , "sprmCFFtcAsciSymb", // ;;;
347 	0x4A30, OutShort, "sprmCIstd", // chp.istd;istd, see stylesheet definition;short;
348 	0xCA31, (FnOut)0,"sprmCIstdPermute", // chp.istd;permutation vector (see below);variable length;
349 	0x2A32, (FnOut)0,"sprmCDefault", // whole CHP (see below);none;variable length;
350 	0x2A33, (FnOut)0,"sprmCPlain", // whole CHP (see below);none; Laenge: 0;
351 	0x2A34, OutByte, "sprmCKcd", // ;;;
352 	0x0835, OutByte, "sprmCFBold", // chp.fBold;0,1, 128, or 129 (see below);byte;
353 	0x0836, OutByte, "sprmCFItalic", // chp.fItalic;0,1, 128, or 129 (see below);byte;
354 	0x0837, OutByte, "sprmCFStrike", // chp.fStrike;0,1, 128, or 129 (see below);byte;
355 	0x0838, OutByte, "sprmCFOutline", // chp.fOutline;0,1, 128, or 129 (see below);byte;
356 	0x0839, OutByte, "sprmCFShadow", // chp.fShadow;0,1, 128, or 129 (see below);byte;
357 	0x083A, OutByte, "sprmCFSmallCaps", // chp.fSmallCaps;0,1, 128, or 129 (see below);byte;
358 	0x083B, OutByte, "sprmCFCaps", // chp.fCaps;0,1, 128, or 129 (see below);byte;
359 	0x083C, OutByte, "sprmCFVanish", // chp.fVanish;0,1, 128, or 129 (see below);byte;
360 	0x4A3D, OutWord, "sprmCFtcDefault", // ;ftc, only used internally, never stored in file;word;
361 	0x2A3E, OutByte, "sprmCKul", // chp.kul;kul;byte;
362 	0xEA3F, (FnOut)0,"sprmCSizePos", // chp.hps, chp.hpsPos;(see below);3 bytes;
363 	0x8840, OutWord, "sprmCDxaSpace", // chp.dxaSpace;dxa;word;
364 	0x4A41, OutWord, "sprmCLid", // ;only used internally never stored;word;
365 	0x2A42, OutByte, "sprmCIco", // chp.ico;ico;byte;
366 	0x4A43, OutWord, "sprmCHps", // chp.hps;hps;word;
367 	0x2A44, OutByte, "sprmCHpsInc", // chp.hps;(see below);byte;
368 	0x4845, OutByte, "sprmCHpsPos", // chp.hpsPos;hps;byte;
369 	0x2A46, OutByte, "sprmCHpsPosAdj", // chp.hpsPos;hps (see below);byte;
370 	0xCA47, (FnOut)0,"sprmCMajority", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.rgftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico, chp.rglid;complex (see below);variable length, length byte plus size of following grpprl;
371 	0x2A48, OutByte, "sprmCIss", // chp.iss;iss;byte;
372 	0xCA49, (FnOut)0,"sprmCHpsNew50", // chp.hps;hps;variable width, length always recorded as 2;
373 	0xCA4A, (FnOut)0,"sprmCHpsInc1", // chp.hps;complex (see below);variable width, length always recorded as 2;
374 	0x484B, OutShort,"sprmCHpsKern", // chp.hpsKern;hps;short;
375 	0xCA4C, (FnOut)0,"sprmCMajority50", // chp.fBold, chp.fItalic, chp.fSmallCaps, chp.fVanish, chp.fStrike, chp.fCaps, chp.ftc, chp.hps, chp.hpsPos, chp.kul, chp.dxaSpace, chp.ico,;complex (see below);variable length;
376 	0x4A4D, OutShort,"sprmCHpsMul", // chp.hps;percentage to grow hps;short;
377 	0x484E, OutShort,"sprmCYsri", // chp.ysri;ysri;short;
378 	0x4A4F, OutShort,"sprmCRgFtc0", // chp.rgftc[0];ftc for ASCII text (see below);short;
379 	0x4A50, OutShort,"sprmCRgFtc1", // chp.rgftc[1];ftc for Far East text (see below);short;
380 	0x4A51, OutShort,"sprmCRgFtc2", // chp.rgftc[2];ftc for non-Far East text (see below);short;
381 //0x4852, ? ? ?  , "sprmCCharScale", // ;;;
382 	0x2A53, OutByte, "sprmCFDStrike", // chp.fDStrike;;byte;
383 	0x0854, OutBool, "sprmCFImprint", // chp.fImprint;1 or 0;bit;
384 	0x0855, OutBool, "sprmCFSpec", // chp.fSpec ;1 or 0;bit;
385 	0x0856, OutBool, "sprmCFObj", // chp.fObj;1 or 0;bit;
386 	0xCA57, (FnOut)0,"sprmCPropRMark", // chp.fPropRMark, chp.ibstPropRMark, chp.dttmPropRMark;Complex (see below);variable length always recorded as 7 bytes;
387 	0x0858, OutBool, "sprmCFEmboss", // chp.fEmboss;1 or 0;bit;
388 	0x2859, OutByte, "sprmCSfxText", // chp.sfxtText;text animation;byte;
389 //0x085A, ? ? ?  , "sprmCFBiDi", // ;;;
390 //0x085B, ? ? ?  , "sprmCFDiacColor", // ;;;
391 //0x085C, ? ? ?  , "sprmCFBoldBi", // ;;;
392 //0x085D, ? ? ?  , "sprmCFItalicBi", // ;;;
393 	0x4A5E, OutWord, "sprmCFtcBi", // ;;;
394 	0x485F, OutWord, "sprmCLidBi", // ;;;
395 //0x4A60, ? ? ?  , "sprmCIcoBi", // ;;;
396 	0x4A61, OutWord, "sprmCHpsBi", // ;;;
397 	0xCA62, (FnOut)0,"sprmCDispFldRMark", // chp.fDispFldRMark, chp.ibstDispFldRMark, chp.dttmDispFldRMark ;Complex (see below);variable length always recorded as 39 bytes;
398 	0x4863, OutShort,"sprmCIbstRMarkDel", // chp.ibstRMarkDel;index into sttbRMark;short;
399 	0x6864,OutLongHex,"sprmCDttmRMarkDel", // chp.dttmRMarkDel;DTTM;long;
400 	0x6865,OutLongHex,"sprmCBrc", // chp.brc;BRC;long;
401 	0x4866, OutShort,"sprmCShd", // chp.shd;SHD;short;
402 	0x4867, OutShort,"sprmCIdslRMarkDel", // chp.idslRMReasonDel;an index to a table of strings defined in Word 6.0 executables;short;
403 	0x0868, OutBool, "sprmCFUsePgsuSettings", // chp.fUsePgsuSettings;1 or 0;bit;
404 	0x486B, OutWord, "sprmCCpg", // ;;word;
405 	0x486D, OutWord, "sprmCRgLid0", // chp.rglid[0];LID: for non-Far East text;word;
406 	0x486E, OutWord, "sprmCRgLid1", // chp.rglid[1];LID: for Far East text;word;
407 	0x286F, OutByte, "sprmCIdctHint", // chp.idctHint;IDCT: (see below);byte;
408 	0x2E00, OutByte, "sprmPicBrcl", // pic.brcl;brcl (see PIC structure definition);byte;
409 	0xCE01, (FnOut)0,"sprmPicScale", // pic.mx, pic.my, pic.dxaCropleft, pic.dyaCropTop pic.dxaCropRight, pic.dyaCropBottom;Complex (see below);length byte plus 12 bytes;
410 	0x6C02,OutLongHex,"sprmPicBrcTop", // pic.brcTop;BRC;long;
411 	0x6C03,OutLongHex,"sprmPicBrcLeft", // pic.brcLeft;BRC;long;
412 	0x6C04,OutLongHex,"sprmPicBrcBottom", // pic.brcBottom;BRC;long;
413 	0x6C05,OutLongHex,"sprmPicBrcRight", // pic.brcRight;BRC;long;
414 	0x3000, OutByte, "sprmScnsPgn", // sep.cnsPgn;cns;byte;
415 	0x3001, OutByte, "sprmSiHeadingPgn", // sep.iHeadingPgn;heading number level;byte;
416 	0xD202, (FnOut)0,"sprmSOlstAnm", // sep.olstAnm;OLST;variable length;
417 	0xF203, (FnOut)0,"sprmSDxaColWidth", // sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
418 	0xF204, (FnOut)0,"sprmSDxaColSpacing", // sep.rgdxaColWidthSpacing;complex (see below);3 bytes;
419 	0x3005, OutByte, "sprmSFEvenlySpaced", // sep.fEvenlySpaced;1 or 0;byte;
420 	0x3006, OutByte, "sprmSFProtected", // sep.fUnlocked;1 or 0;byte;
421 	0x5007, OutWord, "sprmSDmBinFirst", // sep.dmBinFirst;;word;
422 	0x5008, OutWord, "sprmSDmBinOther", // sep.dmBinOther;;word;
423 	0x3009, OutByte, "sprmSBkc", // sep.bkc;bkc;byte;
424 	0x300A, OutByte, "sprmSFTitlePage", // sep.fTitlePage;0 or 1;byte;
425 	0x500B, OutWord, "sprmSCcolumns", // sep.ccolM1;# of cols - 1;word;
426 	0x900C, OutWord, "sprmSDxaColumns", // sep.dxaColumns;dxa;word;
427 	0x300D, OutByte, "sprmSFAutoPgn", // sep.fAutoPgn;obsolete;byte;
428 	0x300E, OutByte, "sprmSNfcPgn", // sep.nfcPgn;nfc;byte;
429 	0xB00F, OutShort,"sprmSDyaPgn", // sep.dyaPgn;dya;short;
430 	0xB010, OutShort,"sprmSDxaPgn", // sep.dxaPgn;dya;short;
431 	0x3011, OutByte, "sprmSFPgnRestart", // sep.fPgnRestart;0 or 1;byte;
432 	0x3012, OutByte, "sprmSFEndnote", // sep.fEndnote;0 or 1;byte;
433 	0x3013, OutByte, "sprmSLnc", // sep.lnc;lnc;byte;
434 	0x3014, OutByte, "sprmSGprfIhdt", // sep.grpfIhdt;grpfihdt (see Headers and Footers topic);byte;
435 	0x5015, OutWord, "sprmSNLnnMod", // sep.nLnnMod;non-neg int.;word;
436 	0x9016, OutWord, "sprmSDxaLnn", // sep.dxaLnn;dxa;word;
437 	0xB017, OutWord, "sprmSDyaHdrTop", // sep.dyaHdrTop;dya;word;
438 	0xB018, OutWord, "sprmSDyaHdrBottom", // sep.dyaHdrBottom;dya;word;
439 	0x3019, OutByte, "sprmSLBetween", // sep.fLBetween;0 or 1;byte;
440 	0x301A, OutByte, "sprmSVjc", // sep.vjc;vjc;byte;
441 	0x501B, OutWord, "sprmSLnnMin", // sep.lnnMin;lnn;word;
442 	0x501C, OutWord, "sprmSPgnStart", // sep.pgnStart;pgn;word;
443 	0x301D, OutByte, "sprmSBOrientation", // sep.dmOrientPage;dm;byte;
444 //0x301E, ? ? ?  , "sprmSBCustomize", // ;;;
445 	0xB01F, OutWord, "sprmSXaPage", // sep.xaPage;xa;word;
446 	0xB020, OutWord, "sprmSYaPage", // sep.yaPage;ya;word;
447 	0xB021, OutWord, "sprmSDxaLeft", // sep.dxaLeft;dxa;word;
448 	0xB022, OutWord, "sprmSDxaRight", // sep.dxaRight;dxa;word;
449 	0x9023, OutWord, "sprmSDyaTop", // sep.dyaTop;dya;word;
450 	0x9024, OutWord, "sprmSDyaBottom", // sep.dyaBottom;dya;word;
451 	0xB025, OutWord, "sprmSDzaGutter", // sep.dzaGutter;dza;word;
452 	0x5026, OutWord, "sprmSDmPaperReq", // sep.dmPaperReq;dm;word;
453 	0xD227, (FnOut)0,"sprmSPropRMark", // sep.fPropRMark, sep.ibstPropRMark, sep.dttmPropRMark ;complex (see below);variable length always recorded as 7 bytes;
454 //0x3228, ? ? ?  , "sprmSFBiDi", // ;;;
455 //0x3229, ? ? ?  , "sprmSFFacingCol", // ;;;
456 //0x322A, ? ? ?  , "sprmSFRTLGutter", // ;;;
457 	0x702B,OutLongHex,"sprmSBrcTop", // sep.brcTop;BRC;long;
458 	0x702C,OutLongHex,"sprmSBrcLeft", // sep.brcLeft;BRC;long;
459 	0x702D,OutLongHex,"sprmSBrcBottom", // sep.brcBottom;BRC;long;
460 	0x702E,OutLongHex,"sprmSBrcRight", // sep.brcRight;BRC;long;
461 	0x522F, OutWord, "sprmSPgbProp", // sep.pgbProp;;word;
462 	0x7030,OutLongHex,"sprmSDxtCharSpace", // sep.dxtCharSpace;dxt;long;
463 	0x9031,OutLongHex,"sprmSDyaLinePitch", // sep.dyaLinePitch;dya;long;
464 //0x5032, ? ? ?  , "sprmSClm", // ;;;
465 	0x5033, OutShort,"sprmSTextFlow", // sep.wTextFlow;complex (see below);short;
466 	0x5400, OutWord, "sprmTJc", // tap.jc;jc;word (low order byte is significant);
467 	0x9601, OutWord, "sprmTDxaLeft", // tap.rgdxaCenter (see below);dxa;word;
468 	0x9602, OutWord, "sprmTDxaGapHalf", // tap.dxaGapHalf, tap.rgdxaCenter (see below);dxa;word;
469 	0x3403, OutByte, "sprmTFCantSplit", // tap.fCantSplit;1 or 0;byte;
470 	0x3404, OutByte, "sprmTTableHeader", // tap.fTableHeader;1 or 0;byte;
471 	0xD605, (FnOut)0,"sprmTTableBorders", // tap.rgbrcTable;complex(see below);24 bytes;
472 	0xD606, (FnOut)0,"sprmTDefTable10", // tap.rgdxaCenter, tap.rgtc;complex (see below);variable length;
473 	0x9407, OutShort, "sprmTDyaRowHeight", // tap.dyaRowHeight;dya;word;
474 	0xD608, OutTabD608,"sprmTDefTable", // tap.rgtc;complex (see below);;
475 	0xD609, OutTabD609,"sprmTDefTableShd", // tap.rgshd;complex (see below);;
476 	0x740A, (FnOut)0,"sprmTTlp", // tap.tlp;TLP;4 bytes;
477 //0x560B, ? ? ?  , "sprmTFBiDi", // ;;;
478 //0x740C, ? ? ?  , "sprmTHTMLProps", // ;;;
479 	0xD620, (FnOut)0,"sprmTSetBrc", // tap.rgtc[].rgbrc;complex (see below);5 bytes;
480 	0x7621, (FnOut)0,"sprmTInsert", // tap.rgdxaCenter, tap.rgtc;complex (see below);4 bytes;
481 	0x5622, OutWord, "sprmTDelete", // tap.rgdxaCenter, tap.rgtc;complex (see below);word;
482 	0x7623, (FnOut)0,"sprmTDxaCol", // tap.rgdxaCenter;complex (see below);4 bytes;
483 	0x5624, OutWord, "sprmTMerge", // tap.fFirstMerged, tap.fMerged;complex (see below);word;
484 	0x5625, OutWord, "sprmTSplit", // tap.fFirstMerged, tap.fMerged;complex (see below);word;
485 	0xD626, (FnOut)0,"sprmTSetBrc10", // tap.rgtc[].rgbrc;complex (see below);5 bytes;
486 	0x7627, (FnOut)0,"sprmTSetShd", // tap.rgshd;complex (see below);4 bytes;
487 	0x7628, (FnOut)0,"sprmTSetShdOdd", // tap.rgshd;complex (see below);4 bytes;
488 	0x7629, OutWord, "sprmTTextFlow", // tap.rgtc[].fVerticaltap.rgtc[].fBackwardtap.rgtc[].fRotateFont;0 or 10 or 10 or 1;word;
489 //0xD62A, ? ? ?  , "sprmTDiagLine", // ;;;
490 	0xD62B, (FnOut)0,"sprmTVertMerge", // tap.rgtc[].vertMerge;complex (see below);variable length always recorded as 2 bytes;
491 	0xD62C, (FnOut)0,"sprmTVertAlign", // tap.rgtc[].vertAlign;complex (see below);variable length always recorded as 3 byte;
492 
493 	0x4873, OutWord, "sprm?? CJK ??", // CJK-Unknown
494 	0x4874, OutWord, "sprm?? CJK ??", // CJK-Unknown
495 
496 };
497 
498 
499 static int
500 #if defined( WNT )
501  __cdecl
502 #endif
503 #if defined( ICC )
504  _Optlink
505 #endif
CompSprmDumpId(const void * pFirst,const void * pSecond)506 	CompSprmDumpId( const void *pFirst, const void *pSecond)
507 {
508 	return( ((SprmDumpInfo*)pFirst )->nId - ((SprmDumpInfo*)pSecond)->nId );
509 }
510 
511 
WW8GetSprmDumpInfo(sal_uInt16 nId)512 SprmDumpInfo& WW8GetSprmDumpInfo( sal_uInt16 nId )
513 {
514 	// ggfs. Tab sortieren
515 	static sal_Bool bInit = sal_False;
516 	if( !bInit )
517 	{
518 		qsort( (void*)aSprmDumpTab,
519 			sizeof( aSprmDumpTab      ) / sizeof (aSprmDumpTab[ 0 ]),
520 			sizeof( aSprmDumpTab[ 0 ] ),
521 			CompSprmDumpId );
522 		bInit = sal_True;
523 	}
524 	// Sprm heraussuchen
525 	void* pFound;
526 	SprmDumpInfo aSrch;
527 	aSrch.nId = nId;
528 	if( 0 == ( pFound = bsearch( (char *) &aSrch,
529 						(void*) aSprmDumpTab,
530 						sizeof( aSprmDumpTab      ) / sizeof (aSprmDumpTab[ 0 ]),
531 						sizeof( aSprmDumpTab[ 0 ] ),
532 						CompSprmDumpId )))
533 	{
534 		// im Fehlerfall auf Nulltes Element verweisen
535 		pFound = (void*)aSprmDumpTab;
536 	}
537 	return *(SprmDumpInfo*) pFound;
538 }
539 
540 
541 
542 
543