/src/libstaroffice/src/lib/StarAttribute.hxx
Line | Count | Source |
1 | | /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */ |
2 | | |
3 | | /* libstaroffice |
4 | | * Version: MPL 2.0 / LGPLv2+ |
5 | | * |
6 | | * The contents of this file are subject to the Mozilla Public License Version |
7 | | * 2.0 (the "License"); you may not use this file except in compliance with |
8 | | * the License or as specified alternatively below. You may obtain a copy of |
9 | | * the License at http://www.mozilla.org/MPL/ |
10 | | * |
11 | | * Software distributed under the License is distributed on an "AS IS" basis, |
12 | | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
13 | | * for the specific language governing rights and limitations under the |
14 | | * License. |
15 | | * |
16 | | * Major Contributor(s): |
17 | | * Copyright (C) 2002 William Lachance (wrlach@gmail.com) |
18 | | * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net) |
19 | | * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch) |
20 | | * Copyright (C) 2006, 2007 Andrew Ziem |
21 | | * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr) |
22 | | * |
23 | | * |
24 | | * All Rights Reserved. |
25 | | * |
26 | | * For minor contributions see the git repository. |
27 | | * |
28 | | * Alternatively, the contents of this file may be used under the terms of |
29 | | * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"), |
30 | | * in which case the provisions of the LGPLv2+ are applicable |
31 | | * instead of those above. |
32 | | */ |
33 | | |
34 | | /* |
35 | | * file to read/parse StarOffice attributes |
36 | | * |
37 | | */ |
38 | | #ifndef STAR_ATTRIBUTE |
39 | | # define STAR_ATTRIBUTE |
40 | | |
41 | | #include <set> |
42 | | #include <sstream> |
43 | | #include <vector> |
44 | | |
45 | | #include "STOFFDebug.hxx" |
46 | | #include "STOFFEntry.hxx" |
47 | | #include "STOFFInputStream.hxx" |
48 | | |
49 | | #include "StarItem.hxx" |
50 | | |
51 | | namespace StarAttributeInternal |
52 | | { |
53 | | struct State; |
54 | | } |
55 | | |
56 | | class StarItemPool; |
57 | | class StarObject; |
58 | | class StarState; |
59 | | class StarZone; |
60 | | |
61 | | //! virtual class used to store the different attribute |
62 | | class StarAttribute |
63 | | { |
64 | | public: |
65 | | //! the attribute list |
66 | | enum Type { |
67 | | ATTR_SPECIAL=-1, // special |
68 | | ATTR_CHR_CASEMAP = 1, // 1 |
69 | | ATTR_CHR_CHARSETCOLOR, // 2 |
70 | | ATTR_CHR_COLOR, // 3 |
71 | | ATTR_CHR_CONTOUR, // 4 |
72 | | ATTR_CHR_CROSSEDOUT, // 5 |
73 | | ATTR_CHR_ESCAPEMENT, // 6 |
74 | | ATTR_CHR_FONT, // 7 |
75 | | ATTR_CHR_FONTSIZE, // 8 |
76 | | ATTR_CHR_KERNING, // 9 |
77 | | ATTR_CHR_LANGUAGE, // 10 |
78 | | ATTR_CHR_POSTURE, // 11 |
79 | | ATTR_CHR_PROPORTIONALFONTSIZE, // 12 |
80 | | ATTR_CHR_SHADOWED, // 13 |
81 | | ATTR_CHR_UNDERLINE, // 14 |
82 | | ATTR_CHR_WEIGHT, // 15 |
83 | | ATTR_CHR_WORDLINEMODE, // 16 |
84 | | ATTR_CHR_AUTOKERN, // 17 |
85 | | ATTR_CHR_BLINK, // 18 |
86 | | ATTR_CHR_NOHYPHEN, // 19 |
87 | | ATTR_CHR_NOLINEBREAK, // 20 |
88 | | ATTR_CHR_BACKGROUND, // 21 |
89 | | ATTR_CHR_CJK_FONT, // 22 |
90 | | ATTR_CHR_CJK_FONTSIZE, // 23 |
91 | | ATTR_CHR_CJK_LANGUAGE, // 24 |
92 | | ATTR_CHR_CJK_POSTURE, // 25 |
93 | | ATTR_CHR_CJK_WEIGHT, // 26 |
94 | | ATTR_CHR_CTL_FONT, // 27 |
95 | | ATTR_CHR_CTL_FONTSIZE, // 28 |
96 | | ATTR_CHR_CTL_LANGUAGE, // 29 |
97 | | ATTR_CHR_CTL_POSTURE, // 30 |
98 | | ATTR_CHR_CTL_WEIGHT, // 31 |
99 | | ATTR_CHR_ROTATE, // 32 |
100 | | ATTR_CHR_EMPHASIS_MARK, // 33 |
101 | | ATTR_CHR_TWO_LINES, // 34 |
102 | | ATTR_CHR_SCALEW, // 35 |
103 | | ATTR_CHR_RELIEF, // 36 |
104 | | ATTR_CHR_DUMMY1, // 37 |
105 | | |
106 | | ATTR_TXT_INETFMT, // 38 |
107 | | ATTR_TXT_DUMMY4, // 39 |
108 | | ATTR_TXT_REFMARK, // 40 |
109 | | ATTR_TXT_TOXMARK, // 41 |
110 | | ATTR_TXT_CHARFMT, // 42 |
111 | | ATTR_TXT_DUMMY5, // 43 |
112 | | ATTR_TXT_CJK_RUBY, // 44 |
113 | | ATTR_TXT_UNKNOWN_CONTAINER, // 45 |
114 | | ATTR_TXT_DUMMY6, // 46 |
115 | | ATTR_TXT_DUMMY7, // 47 |
116 | | |
117 | | ATTR_TXT_FIELD, // 48 |
118 | | ATTR_TXT_FLYCNT, // 49 |
119 | | ATTR_TXT_FTN, // 50 |
120 | | ATTR_TXT_SOFTHYPH, // 51 |
121 | | ATTR_TXT_HARDBLANK, // 52 |
122 | | ATTR_TXT_DUMMY1, // 53 |
123 | | ATTR_TXT_DUMMY2, // 54 |
124 | | |
125 | | ATTR_PARA_LINESPACING, // 55 |
126 | | ATTR_PARA_ADJUST, // 56 |
127 | | ATTR_PARA_SPLIT, // 57 |
128 | | ATTR_PARA_ORPHANS, // 58 |
129 | | ATTR_PARA_WIDOWS, // 59 |
130 | | ATTR_PARA_TABSTOP, // 60 |
131 | | ATTR_PARA_HYPHENZONE, // 61 |
132 | | ATTR_PARA_DROP, // 62 |
133 | | ATTR_PARA_REGISTER, // 63 |
134 | | ATTR_PARA_NUMRULE, // 64 |
135 | | ATTR_PARA_SCRIPTSPACE, // 65 |
136 | | ATTR_PARA_HANGINGPUNCTUATION, // 66 |
137 | | ATTR_PARA_FORBIDDEN_RULES, // 67 |
138 | | ATTR_PARA_VERTALIGN, // 68 |
139 | | ATTR_PARA_SNAPTOGRID, // 69 |
140 | | ATTR_PARA_CONNECT_BORDER, // 70 |
141 | | ATTR_PARA_DUMMY5, // 71 |
142 | | ATTR_PARA_DUMMY6, // 72 |
143 | | ATTR_PARA_DUMMY7, // 73 |
144 | | ATTR_PARA_DUMMY8, // 74 |
145 | | |
146 | | ATTR_FRM_FILL_ORDER, // 75 |
147 | | ATTR_FRM_FRM_SIZE, // 76 |
148 | | ATTR_FRM_PAPER_BIN, // 77 |
149 | | ATTR_FRM_LR_SPACE, // 78 |
150 | | ATTR_FRM_UL_SPACE, // 79 |
151 | | ATTR_FRM_PAGEDESC, // 80 |
152 | | ATTR_FRM_BREAK, // 81 |
153 | | ATTR_FRM_CNTNT, // 82 |
154 | | ATTR_FRM_HEADER, // 83 |
155 | | ATTR_FRM_FOOTER, // 84 |
156 | | ATTR_FRM_PRINT, // 85 |
157 | | ATTR_FRM_OPAQUE, // 86 |
158 | | ATTR_FRM_PROTECT, // 87 |
159 | | ATTR_FRM_SURROUND, // 88 |
160 | | ATTR_FRM_VERT_ORIENT, // 89 |
161 | | ATTR_FRM_HORI_ORIENT, // 90 |
162 | | ATTR_FRM_ANCHOR, // 91 |
163 | | ATTR_FRM_BACKGROUND, // 92 |
164 | | ATTR_FRM_BOX, // 93 |
165 | | ATTR_FRM_SHADOW, // 94 |
166 | | ATTR_FRM_FRMMACRO, // 95 |
167 | | ATTR_FRM_COL, // 96 |
168 | | ATTR_FRM_KEEP, // 97 |
169 | | ATTR_FRM_URL, // 98 |
170 | | ATTR_FRM_EDIT_IN_READONLY, // 99 |
171 | | ATTR_FRM_LAYOUT_SPLIT, // 100 |
172 | | ATTR_FRM_CHAIN, // 101 |
173 | | ATTR_FRM_TEXTGRID, // 102 |
174 | | ATTR_FRM_LINENUMBER, // 103 |
175 | | ATTR_FRM_FTN_AT_TXTEND, // 104 |
176 | | ATTR_FRM_END_AT_TXTEND, // 105 |
177 | | ATTR_FRM_COLUMNBALANCE, // 106 |
178 | | ATTR_FRM_FRAMEDIR, // 107 |
179 | | ATTR_FRM_HEADER_FOOTER_EAT_SPACING, // 108 |
180 | | ATTR_FRM_FRMATTR_DUMMY9, // 109 |
181 | | |
182 | | ATTR_GRF_MIRRORGRF, // 110 |
183 | | ATTR_GRF_CROPGRF, // 111 |
184 | | ATTR_GRF_ROTATION, // 112 |
185 | | ATTR_GRF_LUMINANCE, // 113 |
186 | | ATTR_GRF_CONTRAST, // 114 |
187 | | ATTR_GRF_CHANNELR, // 115 |
188 | | ATTR_GRF_CHANNELG, // 116 |
189 | | ATTR_GRF_CHANNELB, // 117 |
190 | | ATTR_GRF_GAMMA, // 118 |
191 | | ATTR_GRF_INVERT, // 119 |
192 | | ATTR_GRF_TRANSPARENCY, // 120 |
193 | | ATTR_GRF_DRAWMODE, // 121 |
194 | | ATTR_GRF_DUMMY1, // 122 |
195 | | ATTR_GRF_DUMMY2, // 123 |
196 | | ATTR_GRF_DUMMY3, // 124 |
197 | | ATTR_GRF_DUMMY4, // 125 |
198 | | ATTR_GRF_DUMMY5, // 126 |
199 | | |
200 | | ATTR_BOX_FORMAT, // 127 |
201 | | ATTR_BOX_FORMULA, // 128 |
202 | | ATTR_BOX_VALUE, // 129 |
203 | | |
204 | | // other |
205 | | ATTR_SC_USERDEF, // 130 |
206 | | ATTR_SC_HYPHENATE, |
207 | | ATTR_SC_HORJUSTIFY, |
208 | | ATTR_SC_INDENT, |
209 | | ATTR_SC_VERJUSTIFY, |
210 | | ATTR_SC_ORIENTATION, |
211 | | ATTR_SC_ROTATE_VALUE, |
212 | | ATTR_SC_ROTATE_MODE, |
213 | | ATTR_SC_VERTICAL_ASIAN, |
214 | | ATTR_SC_WRITINGDIR, |
215 | | ATTR_SC_LINEBREAK, // 140 |
216 | | ATTR_SC_MARGIN, |
217 | | ATTR_SC_MERGE, |
218 | | ATTR_SC_MERGE_FLAG, |
219 | | ATTR_SC_VALUE_FORMAT, |
220 | | ATTR_SC_LANGUAGE_FORMAT, |
221 | | ATTR_SC_BACKGROUND, |
222 | | ATTR_SC_PROTECTION, |
223 | | ATTR_SC_BORDER, |
224 | | ATTR_SC_BORDER_INNER, |
225 | | ATTR_SC_SHADOW, // 150 |
226 | | ATTR_SC_VALIDDATA, |
227 | | ATTR_SC_CONDITIONAL, |
228 | | ATTR_SC_PATTERN, |
229 | | ATTR_SC_PAGE, |
230 | | ATTR_SC_PAGE_PAPERTRAY, |
231 | | ATTR_SC_PAGE_SIZE, |
232 | | ATTR_SC_PAGE_MAXSIZE, |
233 | | ATTR_SC_PAGE_HORCENTER, |
234 | | ATTR_SC_PAGE_VERCENTER, |
235 | | ATTR_SC_PAGE_ON, |
236 | | ATTR_SC_PAGE_DYNAMIC, |
237 | | ATTR_SC_PAGE_SHARED, |
238 | | ATTR_SC_PAGE_NOTES, |
239 | | ATTR_SC_PAGE_GRID, |
240 | | ATTR_SC_PAGE_HEADERS, |
241 | | ATTR_SC_PAGE_CHARTS, |
242 | | ATTR_SC_PAGE_OBJECTS, |
243 | | ATTR_SC_PAGE_DRAWINGS, |
244 | | ATTR_SC_PAGE_TOPDOWN, |
245 | | ATTR_SC_PAGE_SCALE, |
246 | | ATTR_SC_PAGE_SCALETOPAGES, |
247 | | ATTR_SC_PAGE_FIRSTPAGENO, |
248 | | ATTR_SC_PAGE_PRINTAREA, |
249 | | ATTR_SC_PAGE_REPEATROW, |
250 | | ATTR_SC_PAGE_REPEATCOL, |
251 | | ATTR_SC_PAGE_PRINTTABLES, |
252 | | ATTR_SC_PAGE_HEADERLEFT, |
253 | | ATTR_SC_PAGE_FOOTERLEFT, |
254 | | ATTR_SC_PAGE_HEADERRIGHT, |
255 | | ATTR_SC_PAGE_FOOTERRIGHT, |
256 | | ATTR_SC_PAGE_HEADERSET, |
257 | | ATTR_SC_PAGE_FOOTERSET, |
258 | | ATTR_SC_PAGE_FORMULAS, |
259 | | ATTR_SC_PAGE_NULLVALS, |
260 | | |
261 | | ATTR_EE_PARA_XMLATTRIBS, |
262 | | ATTR_EE_PARA_ASIANCJKSPACING, |
263 | | ATTR_EE_PARA_NUMBULLET, |
264 | | ATTR_EE_PARA_BULLETSTATE, |
265 | | ATTR_EE_PARA_OUTLLR_SPACE, |
266 | | ATTR_EE_PARA_OUTLLEVEL, |
267 | | ATTR_EE_PARA_BULLET, |
268 | | ATTR_EE_CHR_SCALEW, |
269 | | ATTR_EE_CHR_RUBI_DUMMY, |
270 | | ATTR_EE_CHR_XMLATTRIBS, |
271 | | ATTR_EE_FEATURE_TAB, |
272 | | ATTR_EE_FEATURE_LINEBR, |
273 | | ATTR_EE_FEATURE_FIELD, |
274 | | |
275 | | ATTR_SCH_DATADESCR_DESCR, |
276 | | ATTR_SCH_DATADESCR_SHOW_SYM, |
277 | | ATTR_SCH_LEGEND_POS, |
278 | | ATTR_SCH_TEXT_ORIENT, |
279 | | ATTR_SCH_TEXT_ORDER, |
280 | | |
281 | | ATTR_SCH_X_AXIS_AUTO_MIN, |
282 | | ATTR_SCH_X_AXIS_MIN, |
283 | | ATTR_SCH_X_AXIS_AUTO_MAX, |
284 | | ATTR_SCH_X_AXIS_MAX, |
285 | | ATTR_SCH_X_AXIS_AUTO_STEP_MAIN, |
286 | | ATTR_SCH_X_AXIS_STEP_MAIN, |
287 | | ATTR_SCH_X_AXIS_AUTO_STEP_HELP, |
288 | | ATTR_SCH_X_AXIS_STEP_HELP, |
289 | | ATTR_SCH_X_AXIS_LOGARITHM, |
290 | | ATTR_SCH_X_AXIS_AUTO_ORIGIN, |
291 | | ATTR_SCH_X_AXIS_ORIGIN, |
292 | | ATTR_SCH_Y_AXIS_AUTO_MIN, |
293 | | ATTR_SCH_Y_AXIS_MIN, |
294 | | ATTR_SCH_Y_AXIS_AUTO_MAX, |
295 | | ATTR_SCH_Y_AXIS_MAX, |
296 | | ATTR_SCH_Y_AXIS_AUTO_STEP_MAIN, |
297 | | ATTR_SCH_Y_AXIS_STEP_MAIN, |
298 | | ATTR_SCH_Y_AXIS_AUTO_STEP_HELP, |
299 | | ATTR_SCH_Y_AXIS_STEP_HELP, |
300 | | ATTR_SCH_Y_AXIS_LOGARITHM, |
301 | | ATTR_SCH_Y_AXIS_AUTO_ORIGIN, |
302 | | ATTR_SCH_Y_AXIS_ORIGIN, |
303 | | ATTR_SCH_Z_AXIS_AUTO_MIN, |
304 | | ATTR_SCH_Z_AXIS_MIN, |
305 | | ATTR_SCH_Z_AXIS_AUTO_MAX, |
306 | | ATTR_SCH_Z_AXIS_MAX, |
307 | | ATTR_SCH_Z_AXIS_AUTO_STEP_MAIN, |
308 | | ATTR_SCH_Z_AXIS_STEP_MAIN, |
309 | | ATTR_SCH_Z_AXIS_AUTO_STEP_HELP, |
310 | | ATTR_SCH_Z_AXIS_STEP_HELP, |
311 | | ATTR_SCH_Z_AXIS_LOGARITHM, |
312 | | ATTR_SCH_Z_AXIS_AUTO_ORIGIN, |
313 | | ATTR_SCH_Z_AXIS_ORIGIN, |
314 | | |
315 | | ATTR_SCH_AXISTYPE, |
316 | | ATTR_SCH_DUMMY0, |
317 | | ATTR_SCH_DUMMY1, |
318 | | ATTR_SCH_DUMMY2, |
319 | | ATTR_SCH_DUMMY3, |
320 | | ATTR_SCH_DUMMY_END, |
321 | | |
322 | | ATTR_SCH_STAT_AVERAGE, |
323 | | ATTR_SCH_STAT_KIND_ERROR, |
324 | | ATTR_SCH_STAT_PERCENT, |
325 | | ATTR_SCH_STAT_BIGERROR, |
326 | | ATTR_SCH_STAT_CONSTPLUS, |
327 | | ATTR_SCH_STAT_CONSTMINUS, |
328 | | ATTR_SCH_STAT_REGRESSTYPE, |
329 | | ATTR_SCH_STAT_INDICATE, |
330 | | ATTR_SCH_TEXT_DEGREES, |
331 | | ATTR_SCH_TEXT_OVERLAP, |
332 | | ATTR_SCH_TEXT_DUMMY0, |
333 | | ATTR_SCH_TEXT_DUMMY1, |
334 | | ATTR_SCH_TEXT_DUMMY2, |
335 | | ATTR_SCH_TEXT_DUMMY3, |
336 | | |
337 | | ATTR_SCH_STYLE_DEEP, |
338 | | ATTR_SCH_STYLE_3D, |
339 | | ATTR_SCH_STYLE_VERTICAL, |
340 | | ATTR_SCH_STYLE_BASETYPE, |
341 | | ATTR_SCH_STYLE_LINES, |
342 | | ATTR_SCH_STYLE_PERCENT, |
343 | | ATTR_SCH_STYLE_STACKED, |
344 | | ATTR_SCH_STYLE_SPLINES, |
345 | | ATTR_SCH_STYLE_SYMBOL, |
346 | | ATTR_SCH_STYLE_SHAPE, |
347 | | |
348 | | ATTR_SCH_AXIS, |
349 | | ATTR_SCH_AXIS_AUTO_MIN, |
350 | | ATTR_SCH_AXIS_MIN, |
351 | | ATTR_SCH_AXIS_AUTO_MAX, |
352 | | ATTR_SCH_AXIS_MAX, |
353 | | ATTR_SCH_AXIS_AUTO_STEP_MAIN, |
354 | | ATTR_SCH_AXIS_STEP_MAIN, |
355 | | ATTR_SCH_AXIS_AUTO_STEP_HELP, |
356 | | ATTR_SCH_AXIS_STEP_HELP, |
357 | | ATTR_SCH_AXIS_LOGARITHM, |
358 | | ATTR_SCH_AXIS_AUTO_ORIGIN, |
359 | | ATTR_SCH_AXIS_ORIGIN, |
360 | | |
361 | | ATTR_SCH_AXIS_TICKS, |
362 | | ATTR_SCH_AXIS_NUMFMT, |
363 | | ATTR_SCH_AXIS_NUMFMTPERCENT, |
364 | | ATTR_SCH_AXIS_SHOWAXIS, |
365 | | ATTR_SCH_AXIS_SHOWDESCR, |
366 | | ATTR_SCH_AXIS_SHOWMAINGRID, |
367 | | ATTR_SCH_AXIS_SHOWHELPGRID, |
368 | | ATTR_SCH_AXIS_TOPDOWN, |
369 | | ATTR_SCH_AXIS_HELPTICKS, |
370 | | |
371 | | ATTR_SCH_AXIS_DUMMY0, |
372 | | ATTR_SCH_AXIS_DUMMY1, |
373 | | ATTR_SCH_AXIS_DUMMY2, |
374 | | ATTR_SCH_AXIS_DUMMY3, |
375 | | ATTR_SCH_BAR_OVERLAP, |
376 | | ATTR_SCH_BAR_GAPWIDTH, |
377 | | |
378 | | ATTR_SCH_SYMBOL_BRUSH, |
379 | | ATTR_SCH_STOCK_VOLUME, |
380 | | ATTR_SCH_STOCK_UPDOWN, |
381 | | ATTR_SCH_SYMBOL_SIZE, |
382 | | ATTR_SCH_USER_DEFINED_ATTR, |
383 | | |
384 | | XATTR_LINESTYLE, |
385 | | XATTR_LINEDASH, |
386 | | XATTR_LINEWIDTH, |
387 | | XATTR_LINECOLOR, |
388 | | XATTR_LINESTART, |
389 | | XATTR_LINEEND, |
390 | | XATTR_LINESTARTWIDTH, |
391 | | XATTR_LINEENDWIDTH, |
392 | | XATTR_LINESTARTCENTER, |
393 | | XATTR_LINEENDCENTER, |
394 | | XATTR_LINETRANSPARENCE, |
395 | | XATTR_LINEJOINT, |
396 | | XATTR_LINERESERVED2, |
397 | | XATTR_LINERESERVED3, |
398 | | XATTR_LINERESERVED4, |
399 | | XATTR_LINERESERVED5, |
400 | | XATTR_LINERESERVED_LAST, |
401 | | XATTR_SET_LINE, |
402 | | XATTR_FILLSTYLE, |
403 | | XATTR_FILLCOLOR, |
404 | | XATTR_FILLGRADIENT, |
405 | | XATTR_FILLHATCH, |
406 | | XATTR_FILLBITMAP, |
407 | | XATTR_FILLTRANSPARENCE, |
408 | | XATTR_GRADIENTSTEPCOUNT, |
409 | | XATTR_FILLBMP_TILE, |
410 | | XATTR_FILLBMP_POS, |
411 | | XATTR_FILLBMP_SIZEX, |
412 | | XATTR_FILLBMP_SIZEY, |
413 | | XATTR_FILLFLOATTRANSPARENCE, |
414 | | XATTR_FILLBMP_SIZELOG, |
415 | | XATTR_FILLBMP_TILEOFFSETX, |
416 | | XATTR_FILLBMP_TILEOFFSETY, |
417 | | XATTR_FILLBMP_STRETCH, |
418 | | XATTR_FILLBMP_POSOFFSETX, |
419 | | XATTR_FILLBMP_POSOFFSETY, |
420 | | XATTR_FILLBACKGROUND, |
421 | | XATTR_FILLRESERVED2, |
422 | | XATTR_FILLRESERVED3, |
423 | | XATTR_FILLRESERVED4, |
424 | | XATTR_FILLRESERVED5, |
425 | | XATTR_FILLRESERVED6, |
426 | | XATTR_FILLRESERVED7, |
427 | | XATTR_FILLRESERVED8, |
428 | | XATTR_FILLRESERVED10, |
429 | | XATTR_FILLRESERVED11, |
430 | | XATTR_FILLRESERVED_LAST, |
431 | | XATTR_SET_FILL, |
432 | | XATTR_FORMTXTSTYLE, |
433 | | XATTR_FORMTXTADJUST, |
434 | | XATTR_FORMTXTDISTANCE, |
435 | | XATTR_FORMTXTSTART, |
436 | | XATTR_FORMTXTMIRROR, |
437 | | XATTR_FORMTXTOUTLINE, |
438 | | XATTR_FORMTXTSHADOW, |
439 | | XATTR_FORMTXTSHDWCOLOR, |
440 | | XATTR_FORMTXTSHDWXVAL, |
441 | | XATTR_FORMTXTSHDWYVAL, |
442 | | XATTR_FORMTXTSTDFORM, |
443 | | XATTR_FORMTXTHIDEFORM, |
444 | | XATTR_FORMTXTSHDWTRANSP, |
445 | | XATTR_FTRESERVED2, |
446 | | XATTR_FTRESERVED3, |
447 | | XATTR_FTRESERVED4, |
448 | | XATTR_FTRESERVED5, |
449 | | XATTR_FTRESERVED_LAST, |
450 | | XATTR_SET_TEXT, |
451 | | |
452 | | // SDR |
453 | | SDRATTR_SHADOW, |
454 | | SDRATTR_SHADOWCOLOR, |
455 | | SDRATTR_SHADOWXDIST, |
456 | | SDRATTR_SHADOWYDIST, |
457 | | SDRATTR_SHADOWTRANSPARENCE, |
458 | | SDRATTR_SHADOW3D, |
459 | | SDRATTR_SHADOWPERSP, |
460 | | SDRATTR_SHADOWRESERVE1, |
461 | | SDRATTR_SHADOWRESERVE2, |
462 | | SDRATTR_SHADOWRESERVE3, |
463 | | SDRATTR_SHADOWRESERVE4, |
464 | | SDRATTR_SHADOWRESERVE5, |
465 | | SDRATTR_SET_SHADOW, |
466 | | |
467 | | SDRATTR_CAPTIONTYPE, |
468 | | SDRATTR_CAPTIONFIXEDANGLE, |
469 | | SDRATTR_CAPTIONANGLE, |
470 | | SDRATTR_CAPTIONGAP, |
471 | | SDRATTR_CAPTIONESCDIR, |
472 | | SDRATTR_CAPTIONESCISREL, |
473 | | SDRATTR_CAPTIONESCREL, |
474 | | SDRATTR_CAPTIONESCABS, |
475 | | SDRATTR_CAPTIONLINELEN, |
476 | | SDRATTR_CAPTIONFITLINELEN, |
477 | | SDRATTR_CAPTIONRESERVE1, |
478 | | SDRATTR_CAPTIONRESERVE2, |
479 | | SDRATTR_CAPTIONRESERVE3, |
480 | | SDRATTR_CAPTIONRESERVE4, |
481 | | SDRATTR_CAPTIONRESERVE5, |
482 | | SDRATTR_SET_CAPTION, |
483 | | |
484 | | SDRATTR_SET_OUTLINER, |
485 | | |
486 | | SDRATTR_ECKENRADIUS, |
487 | | SDRATTR_TEXT_MINFRAMEHEIGHT, |
488 | | SDRATTR_TEXT_AUTOGROWHEIGHT, |
489 | | SDRATTR_TEXT_FITTOSIZE, |
490 | | SDRATTR_TEXT_LEFTDIST, |
491 | | SDRATTR_TEXT_RIGHTDIST, |
492 | | SDRATTR_TEXT_UPPERDIST, |
493 | | SDRATTR_TEXT_LOWERDIST, |
494 | | SDRATTR_TEXT_VERTADJUST, |
495 | | SDRATTR_TEXT_MAXFRAMEHEIGHT, |
496 | | SDRATTR_TEXT_MINFRAMEWIDTH, |
497 | | SDRATTR_TEXT_MAXFRAMEWIDTH, |
498 | | SDRATTR_TEXT_AUTOGROWWIDTH, |
499 | | SDRATTR_TEXT_HORZADJUST, |
500 | | SDRATTR_TEXT_ANIKIND, |
501 | | SDRATTR_TEXT_ANIDIRECTION, |
502 | | SDRATTR_TEXT_ANISTARTINSIDE, |
503 | | SDRATTR_TEXT_ANISTOPINSIDE, |
504 | | SDRATTR_TEXT_ANICOUNT, |
505 | | SDRATTR_TEXT_ANIDELAY, |
506 | | SDRATTR_TEXT_ANIAMOUNT, |
507 | | SDRATTR_TEXT_CONTOURFRAME, |
508 | | SDRATTR_AUTOSHAPE_ADJUSTMENT, |
509 | | SDRATTR_XMLATTRIBUTES, |
510 | | SDRATTR_RESERVE15, |
511 | | SDRATTR_RESERVE16, |
512 | | SDRATTR_RESERVE17, |
513 | | SDRATTR_RESERVE18, |
514 | | SDRATTR_RESERVE19, |
515 | | SDRATTR_SET_MISC, |
516 | | |
517 | | SDRATTR_EDGEKIND, |
518 | | SDRATTR_EDGENODE1HORZDIST, |
519 | | SDRATTR_EDGENODE1VERTDIST, |
520 | | SDRATTR_EDGENODE2HORZDIST, |
521 | | SDRATTR_EDGENODE2VERTDIST, |
522 | | SDRATTR_EDGENODE1GLUEDIST, |
523 | | SDRATTR_EDGENODE2GLUEDIST, |
524 | | SDRATTR_EDGELINEDELTAANZ, |
525 | | SDRATTR_EDGELINE1DELTA, |
526 | | SDRATTR_EDGELINE2DELTA, |
527 | | SDRATTR_EDGELINE3DELTA, |
528 | | SDRATTR_EDGERESERVE02, |
529 | | SDRATTR_EDGERESERVE03, |
530 | | SDRATTR_EDGERESERVE04, |
531 | | SDRATTR_EDGERESERVE05, |
532 | | SDRATTR_EDGERESERVE06, |
533 | | SDRATTR_EDGERESERVE07, |
534 | | SDRATTR_EDGERESERVE08, |
535 | | SDRATTR_EDGERESERVE09, |
536 | | SDRATTR_SET_EDGE, |
537 | | |
538 | | SDRATTR_MEASUREKIND, |
539 | | SDRATTR_MEASURETEXTHPOS, |
540 | | SDRATTR_MEASURETEXTVPOS, |
541 | | SDRATTR_MEASURELINEDIST, |
542 | | SDRATTR_MEASUREHELPLINEOVERHANG, |
543 | | SDRATTR_MEASUREHELPLINEDIST, |
544 | | SDRATTR_MEASUREHELPLINE1LEN, |
545 | | SDRATTR_MEASUREHELPLINE2LEN, |
546 | | SDRATTR_MEASUREBELOWREFEDGE, |
547 | | SDRATTR_MEASURETEXTROTA90, |
548 | | SDRATTR_MEASURETEXTUPSIDEDOWN, |
549 | | SDRATTR_MEASUREOVERHANG, |
550 | | SDRATTR_MEASUREUNIT, |
551 | | SDRATTR_MEASURESCALE, |
552 | | SDRATTR_MEASURESHOWUNIT, |
553 | | SDRATTR_MEASUREFORMATSTRING, |
554 | | SDRATTR_MEASURETEXTAUTOANGLE, |
555 | | SDRATTR_MEASURETEXTAUTOANGLEVIEW, |
556 | | SDRATTR_MEASURETEXTISFIXEDANGLE, |
557 | | SDRATTR_MEASURETEXTFIXEDANGLE, |
558 | | SDRATTR_MEASUREDECIMALPLACES, |
559 | | SDRATTR_MEASURERESERVE05, |
560 | | SDRATTR_MEASURERESERVE06, |
561 | | SDRATTR_MEASURERESERVE07, |
562 | | SDRATTR_SET_MEASURE, |
563 | | |
564 | | SDRATTR_CIRCKIND, |
565 | | SDRATTR_CIRCSTARTANGLE, |
566 | | SDRATTR_CIRCENDANGLE, |
567 | | SDRATTR_CIRCRESERVE0, |
568 | | SDRATTR_CIRCRESERVE1, |
569 | | SDRATTR_CIRCRESERVE2, |
570 | | SDRATTR_CIRCRESERVE3, |
571 | | SDRATTR_SET_CIRC, |
572 | | |
573 | | SDRATTR_OBJMOVEPROTECT, |
574 | | SDRATTR_OBJSIZEPROTECT, |
575 | | SDRATTR_OBJPRINTABLE, |
576 | | SDRATTR_LAYERID, |
577 | | SDRATTR_LAYERNAME, |
578 | | SDRATTR_OBJECTNAME, |
579 | | SDRATTR_ALLPOSITIONX, |
580 | | SDRATTR_ALLPOSITIONY, |
581 | | SDRATTR_ALLSIZEWIDTH, |
582 | | SDRATTR_ALLSIZEHEIGHT, |
583 | | SDRATTR_ONEPOSITIONX, |
584 | | SDRATTR_ONEPOSITIONY, |
585 | | SDRATTR_ONESIZEWIDTH, |
586 | | SDRATTR_ONESIZEHEIGHT, |
587 | | SDRATTR_LOGICSIZEWIDTH, |
588 | | SDRATTR_LOGICSIZEHEIGHT, |
589 | | SDRATTR_ROTATEANGLE, |
590 | | SDRATTR_SHEARANGLE, |
591 | | SDRATTR_MOVEX, |
592 | | SDRATTR_MOVEY, |
593 | | SDRATTR_RESIZEXONE, |
594 | | SDRATTR_RESIZEYONE, |
595 | | SDRATTR_ROTATEONE, |
596 | | SDRATTR_HORZSHEARONE, |
597 | | SDRATTR_VERTSHEARONE, |
598 | | SDRATTR_RESIZEXALL, |
599 | | SDRATTR_RESIZEYALL, |
600 | | SDRATTR_ROTATEALL, |
601 | | SDRATTR_HORZSHEARALL, |
602 | | SDRATTR_VERTSHEARALL, |
603 | | SDRATTR_TRANSFORMREF1X, |
604 | | SDRATTR_TRANSFORMREF1Y, |
605 | | SDRATTR_TRANSFORMREF2X, |
606 | | SDRATTR_TRANSFORMREF2Y, |
607 | | SDRATTR_TEXTDIRECTION, |
608 | | SDRATTR_NOTPERSISTRESERVE2, |
609 | | SDRATTR_NOTPERSISTRESERVE3, |
610 | | SDRATTR_NOTPERSISTRESERVE4, |
611 | | SDRATTR_NOTPERSISTRESERVE5, |
612 | | SDRATTR_NOTPERSISTRESERVE6, |
613 | | SDRATTR_NOTPERSISTRESERVE7, |
614 | | SDRATTR_NOTPERSISTRESERVE8, |
615 | | SDRATTR_NOTPERSISTRESERVE9, |
616 | | SDRATTR_NOTPERSISTRESERVE10, |
617 | | SDRATTR_NOTPERSISTRESERVE11, |
618 | | SDRATTR_NOTPERSISTRESERVE12, |
619 | | SDRATTR_NOTPERSISTRESERVE13, |
620 | | SDRATTR_NOTPERSISTRESERVE14, |
621 | | SDRATTR_NOTPERSISTRESERVE15, |
622 | | |
623 | | SDRATTR_GRAFRED, |
624 | | SDRATTR_GRAFGREEN, |
625 | | SDRATTR_GRAFBLUE, |
626 | | SDRATTR_GRAFLUMINANCE, |
627 | | SDRATTR_GRAFCONTRAST, |
628 | | SDRATTR_GRAFGAMMA, |
629 | | SDRATTR_GRAFTRANSPARENCE, |
630 | | SDRATTR_GRAFINVERT, |
631 | | SDRATTR_GRAFMODE, |
632 | | SDRATTR_GRAFCROP, |
633 | | SDRATTR_GRAFRESERVE3, |
634 | | SDRATTR_GRAFRESERVE4, |
635 | | SDRATTR_GRAFRESERVE5, |
636 | | SDRATTR_GRAFRESERVE6, |
637 | | SDRATTR_SET_GRAF, |
638 | | |
639 | | SDRATTR_3DOBJ_PERCENT_DIAGONAL, |
640 | | SDRATTR_3DOBJ_BACKSCALE, |
641 | | SDRATTR_3DOBJ_DEPTH, |
642 | | SDRATTR_3DOBJ_HORZ_SEGS, |
643 | | SDRATTR_3DOBJ_VERT_SEGS, |
644 | | SDRATTR_3DOBJ_END_ANGLE, |
645 | | SDRATTR_3DOBJ_DOUBLE_SIDED, |
646 | | SDRATTR_3DOBJ_NORMALS_KIND, |
647 | | SDRATTR_3DOBJ_NORMALS_INVERT, |
648 | | SDRATTR_3DOBJ_TEXTURE_PROJ_X, |
649 | | SDRATTR_3DOBJ_TEXTURE_PROJ_Y, |
650 | | SDRATTR_3DOBJ_SHADOW_3D, |
651 | | SDRATTR_3DOBJ_MAT_COLOR, |
652 | | SDRATTR_3DOBJ_MAT_EMISSION, |
653 | | SDRATTR_3DOBJ_MAT_SPECULAR, |
654 | | SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY, |
655 | | SDRATTR_3DOBJ_TEXTURE_KIND, |
656 | | SDRATTR_3DOBJ_TEXTURE_MODE, |
657 | | SDRATTR_3DOBJ_TEXTURE_FILTER, |
658 | | |
659 | | SDRATTR_3DOBJ_SMOOTH_NORMALS, |
660 | | SDRATTR_3DOBJ_SMOOTH_LIDS, |
661 | | SDRATTR_3DOBJ_CHARACTER_MODE, |
662 | | SDRATTR_3DOBJ_CLOSE_FRONT, |
663 | | SDRATTR_3DOBJ_CLOSE_BACK, |
664 | | |
665 | | SDRATTR_3DOBJ_RESERVED_06, |
666 | | SDRATTR_3DOBJ_RESERVED_07, |
667 | | SDRATTR_3DOBJ_RESERVED_08, |
668 | | SDRATTR_3DOBJ_RESERVED_09, |
669 | | SDRATTR_3DOBJ_RESERVED_10, |
670 | | SDRATTR_3DOBJ_RESERVED_11, |
671 | | SDRATTR_3DOBJ_RESERVED_12, |
672 | | SDRATTR_3DOBJ_RESERVED_13, |
673 | | SDRATTR_3DOBJ_RESERVED_14, |
674 | | SDRATTR_3DOBJ_RESERVED_15, |
675 | | SDRATTR_3DOBJ_RESERVED_16, |
676 | | SDRATTR_3DOBJ_RESERVED_17, |
677 | | SDRATTR_3DOBJ_RESERVED_18, |
678 | | SDRATTR_3DOBJ_RESERVED_19, |
679 | | SDRATTR_3DOBJ_RESERVED_20, |
680 | | |
681 | | SDRATTR_3DSCENE_PERSPECTIVE, |
682 | | SDRATTR_3DSCENE_DISTANCE, |
683 | | SDRATTR_3DSCENE_FOCAL_LENGTH, |
684 | | SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, |
685 | | SDRATTR_3DSCENE_LIGHTCOLOR_1, |
686 | | SDRATTR_3DSCENE_LIGHTCOLOR_2, |
687 | | SDRATTR_3DSCENE_LIGHTCOLOR_3, |
688 | | SDRATTR_3DSCENE_LIGHTCOLOR_4, |
689 | | SDRATTR_3DSCENE_LIGHTCOLOR_5, |
690 | | SDRATTR_3DSCENE_LIGHTCOLOR_6, |
691 | | SDRATTR_3DSCENE_LIGHTCOLOR_7, |
692 | | SDRATTR_3DSCENE_LIGHTCOLOR_8, |
693 | | SDRATTR_3DSCENE_AMBIENTCOLOR, |
694 | | SDRATTR_3DSCENE_LIGHTON_1, |
695 | | SDRATTR_3DSCENE_LIGHTON_2, |
696 | | SDRATTR_3DSCENE_LIGHTON_3, |
697 | | SDRATTR_3DSCENE_LIGHTON_4, |
698 | | SDRATTR_3DSCENE_LIGHTON_5, |
699 | | SDRATTR_3DSCENE_LIGHTON_6, |
700 | | SDRATTR_3DSCENE_LIGHTON_7, |
701 | | SDRATTR_3DSCENE_LIGHTON_8, |
702 | | SDRATTR_3DSCENE_LIGHTDIRECTION_1, |
703 | | SDRATTR_3DSCENE_LIGHTDIRECTION_2, |
704 | | SDRATTR_3DSCENE_LIGHTDIRECTION_3, |
705 | | SDRATTR_3DSCENE_LIGHTDIRECTION_4, |
706 | | SDRATTR_3DSCENE_LIGHTDIRECTION_5, |
707 | | SDRATTR_3DSCENE_LIGHTDIRECTION_6, |
708 | | SDRATTR_3DSCENE_LIGHTDIRECTION_7, |
709 | | SDRATTR_3DSCENE_LIGHTDIRECTION_8, |
710 | | SDRATTR_3DSCENE_SHADOW_SLANT, |
711 | | SDRATTR_3DSCENE_SHADE_MODE, |
712 | | SDRATTR_3DSCENE_RESERVED_01, |
713 | | SDRATTR_3DSCENE_RESERVED_02, |
714 | | SDRATTR_3DSCENE_RESERVED_03, |
715 | | SDRATTR_3DSCENE_RESERVED_04, |
716 | | SDRATTR_3DSCENE_RESERVED_05, |
717 | | SDRATTR_3DSCENE_RESERVED_06, |
718 | | SDRATTR_3DSCENE_RESERVED_07, |
719 | | SDRATTR_3DSCENE_RESERVED_08, |
720 | | SDRATTR_3DSCENE_RESERVED_09, |
721 | | SDRATTR_3DSCENE_RESERVED_10, |
722 | | SDRATTR_3DSCENE_RESERVED_11, |
723 | | SDRATTR_3DSCENE_RESERVED_12, |
724 | | SDRATTR_3DSCENE_RESERVED_13, |
725 | | SDRATTR_3DSCENE_RESERVED_14, |
726 | | SDRATTR_3DSCENE_RESERVED_15, |
727 | | SDRATTR_3DSCENE_RESERVED_16, |
728 | | SDRATTR_3DSCENE_RESERVED_17, |
729 | | SDRATTR_3DSCENE_RESERVED_18, |
730 | | SDRATTR_3DSCENE_RESERVED_19, |
731 | | SDRATTR_3DSCENE_RESERVED_20 |
732 | | }; |
733 | | |
734 | | //! destructor |
735 | | virtual ~StarAttribute(); |
736 | | //! returns the attribute type |
737 | | Type getType() const |
738 | 0 | { |
739 | 0 | return m_type; |
740 | 0 | } |
741 | | //! create a new attribute |
742 | | virtual std::shared_ptr<StarAttribute> create() const=0; |
743 | | //! read an attribute zone |
744 | | virtual bool read(StarZone &zone, int vers, long endPos, StarObject &document)=0; |
745 | | //! add to a state |
746 | | void addTo(StarState &state) const |
747 | 1.70M | { |
748 | 1.70M | std::set<StarAttribute const *> done; |
749 | 1.70M | addTo(state, done); |
750 | 1.70M | } |
751 | | //! add to send the zone data |
752 | | bool send(STOFFListenerPtr &listener, StarState &state) const |
753 | 9.27k | { |
754 | 9.27k | std::set<StarAttribute const *> done; |
755 | 9.27k | return send(listener, state, done); |
756 | 9.27k | } |
757 | | //! add to a state(internal) |
758 | | virtual void addTo(StarState &/*state*/, std::set<StarAttribute const *> &/*done*/) const |
759 | 429k | { |
760 | 429k | } |
761 | | //! try to send the child zone(internal) |
762 | | virtual bool send(STOFFListenerPtr &/*listener*/, StarState &/*state*/, std::set<StarAttribute const *> &/*done*/) const |
763 | 0 | { |
764 | 0 | return false; |
765 | 0 | } |
766 | | //! returns the debug name |
767 | | std::string const &getDebugName() const |
768 | 0 | { |
769 | 0 | return m_debugName; |
770 | 0 | } |
771 | | //! debug function to print the data |
772 | | virtual void print(libstoff::DebugStream &o, std::set<StarAttribute const *> &done) const |
773 | 0 | { |
774 | 0 | if (done.find(this)!=done.end()) { |
775 | 0 | o << m_debugName << ","; |
776 | 0 | return; |
777 | 0 | } |
778 | 0 | done.insert(this); |
779 | 0 | printData(o); |
780 | 0 | } |
781 | | //! debug function to print the data |
782 | | virtual void printData(libstoff::DebugStream &o) const |
783 | 36.7k | { |
784 | 36.7k | o << m_debugName << ","; |
785 | 36.7k | } |
786 | | protected: |
787 | | //! constructor |
788 | | StarAttribute(Type type, std::string const &debugName) |
789 | 73.1M | : m_type(type) |
790 | 73.1M | , m_debugName(debugName) |
791 | 73.1M | { |
792 | 73.1M | } |
793 | | //! copy constructor |
794 | | explicit StarAttribute(StarAttribute const &orig) |
795 | 1.54M | : m_type(orig.m_type) |
796 | 1.54M | , m_debugName(orig.m_debugName) |
797 | 1.54M | { |
798 | 1.54M | } |
799 | | |
800 | | // |
801 | | // data |
802 | | // |
803 | | |
804 | | //! the type |
805 | | Type m_type; |
806 | | //! the debug name |
807 | | std::string m_debugName; |
808 | | |
809 | | private: |
810 | | StarAttribute &operator=(StarAttribute const &orig); |
811 | | }; |
812 | | |
813 | | //! a boolean attribute |
814 | | class StarAttributeBool : public StarAttribute |
815 | | { |
816 | | public: |
817 | | //! constructor |
818 | | StarAttributeBool(Type type, std::string const &debugName, bool value) |
819 | 16.5M | : StarAttribute(type, debugName) |
820 | 16.5M | , m_value(value) |
821 | 16.5M | { |
822 | 16.5M | } |
823 | | //! create a new attribute |
824 | | std::shared_ptr<StarAttribute> create() const override |
825 | 13.9k | { |
826 | 13.9k | return std::shared_ptr<StarAttribute>(new StarAttributeBool(*this)); |
827 | 13.9k | } |
828 | | //! read a zone |
829 | | bool read(StarZone &zone, int ver, long endPos, StarObject &object) override; |
830 | | //! debug function to print the data |
831 | | void printData(libstoff::DebugStream &o) const override |
832 | 12.7k | { |
833 | 12.7k | o << m_debugName; |
834 | 12.7k | if (m_value) o << "=true"; |
835 | 12.7k | o << ","; |
836 | 12.7k | } |
837 | | protected: |
838 | | //! copy constructor |
839 | 88.6k | StarAttributeBool(StarAttributeBool const &) = default; |
840 | | // the bool value |
841 | | bool m_value; |
842 | | }; |
843 | | |
844 | | //! a color attribute |
845 | | class StarAttributeColor : public StarAttribute |
846 | | { |
847 | | public: |
848 | | //! constructor |
849 | | StarAttributeColor(Type type, std::string const &debugName, STOFFColor const &value) |
850 | 1.53M | : StarAttribute(type, debugName) |
851 | 1.53M | , m_value(value) |
852 | 1.53M | , m_defValue(value) |
853 | 1.53M | { |
854 | 1.53M | } |
855 | | //! create a new attribute |
856 | | std::shared_ptr<StarAttribute> create() const override |
857 | 741 | { |
858 | 741 | return std::shared_ptr<StarAttribute>(new StarAttributeColor(*this)); |
859 | 741 | } |
860 | | //! read a zone |
861 | | bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; |
862 | | //! debug function to print the data |
863 | | void printData(libstoff::DebugStream &o) const override |
864 | 8.98k | { |
865 | 8.98k | o << m_debugName << "[col=" << m_value << "],"; |
866 | 8.98k | } |
867 | | protected: |
868 | | //! copy constructor |
869 | 16.8k | StarAttributeColor(StarAttributeColor const &) = default; |
870 | | //! the color value |
871 | | STOFFColor m_value; |
872 | | //! the default value |
873 | | STOFFColor m_defValue; |
874 | | }; |
875 | | |
876 | | //! a double attribute |
877 | | class StarAttributeDouble : public StarAttribute |
878 | | { |
879 | | public: |
880 | | //! constructor |
881 | 2.95M | StarAttributeDouble(Type type, std::string const &debugName, double value) : StarAttribute(type, debugName), m_value(value) |
882 | 2.95M | { |
883 | 2.95M | } |
884 | | //! create a new attribute |
885 | | std::shared_ptr<StarAttribute> create() const override |
886 | 8.60k | { |
887 | 8.60k | return std::shared_ptr<StarAttribute>(new StarAttributeDouble(*this)); |
888 | 8.60k | } |
889 | | //! read a zone |
890 | | bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; |
891 | | |
892 | | //! debug function to print the data |
893 | | void printData(libstoff::DebugStream &o) const override |
894 | 1 | { |
895 | 1 | o << m_debugName; |
896 | 1 | if (m_value<0 || m_value>0) o << "=" << m_value; |
897 | 1 | o << ","; |
898 | 1 | } |
899 | | protected: |
900 | | //! copy constructor |
901 | 8.60k | StarAttributeDouble(StarAttributeDouble const &) = default; |
902 | | // the double value |
903 | | double m_value; |
904 | | }; |
905 | | |
906 | | //! an integer attribute |
907 | | class StarAttributeInt : public StarAttribute |
908 | | { |
909 | | public: |
910 | | //! constructor |
911 | | StarAttributeInt(Type type, std::string const &debugName, int intSize, int value) |
912 | 13.1M | : StarAttribute(type, debugName) |
913 | 13.1M | , m_value(value) |
914 | 13.1M | , m_intSize(intSize) |
915 | 13.1M | { |
916 | 13.1M | if (intSize!=1 && intSize!=2 && intSize!=4) { |
917 | 0 | STOFF_DEBUG_MSG(("StarAttributeInt: bad num size\n")); |
918 | 0 | m_intSize=0; |
919 | 0 | } |
920 | 13.1M | } |
921 | | //! create a new attribute |
922 | | std::shared_ptr<StarAttribute> create() const override |
923 | 3.48k | { |
924 | 3.48k | return std::shared_ptr<StarAttribute>(new StarAttributeInt(*this)); |
925 | 3.48k | } |
926 | | //! read a zone |
927 | | bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; |
928 | | //! debug function to print the data |
929 | | void printData(libstoff::DebugStream &o) const override |
930 | 2.68k | { |
931 | 2.68k | o << m_debugName; |
932 | 2.68k | if (m_value) o << "=" << m_value; |
933 | 2.68k | o << ","; |
934 | 2.68k | } |
935 | | |
936 | | protected: |
937 | | //! copy constructor |
938 | 73.6k | StarAttributeInt(StarAttributeInt const &) = default; |
939 | | // the int value |
940 | | int m_value; |
941 | | // number of byte 1,2,4 |
942 | | int m_intSize; |
943 | | }; |
944 | | |
945 | | //! a unsigned integer attribute |
946 | | class StarAttributeUInt : public StarAttribute |
947 | | { |
948 | | public: |
949 | | //! constructor |
950 | | StarAttributeUInt(Type type, std::string const &debugName, int intSize, unsigned int value) |
951 | 12.2M | : StarAttribute(type, debugName) |
952 | 12.2M | , m_value(value) |
953 | 12.2M | , m_intSize(intSize) |
954 | 12.2M | { |
955 | 12.2M | if (intSize!=1 && intSize!=2 && intSize!=4) { |
956 | 0 | STOFF_DEBUG_MSG(("StarAttributeUInt: bad num size\n")); |
957 | 0 | m_intSize=0; |
958 | 0 | } |
959 | 12.2M | } |
960 | | //! create a new attribute |
961 | | std::shared_ptr<StarAttribute> create() const override |
962 | 24.4k | { |
963 | 24.4k | return std::shared_ptr<StarAttribute>(new StarAttributeUInt(*this)); |
964 | 24.4k | } |
965 | | //! read a zone |
966 | | bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; |
967 | | //! debug function to print the data |
968 | | void printData(libstoff::DebugStream &o) const override |
969 | 77.6k | { |
970 | 77.6k | o << m_debugName; |
971 | 77.6k | if (m_value) o << "=" << m_value; |
972 | 77.6k | o << ","; |
973 | 77.6k | } |
974 | | protected: |
975 | | //! copy constructor |
976 | 248k | StarAttributeUInt(StarAttributeUInt const &) = default; |
977 | | // the int value |
978 | | unsigned int m_value; |
979 | | // number of byte 1,2,4 |
980 | | int m_intSize; |
981 | | }; |
982 | | |
983 | | //! an Vec2i attribute |
984 | | class StarAttributeVec2i : public StarAttribute |
985 | | { |
986 | | public: |
987 | | //! constructor |
988 | | StarAttributeVec2i(Type type, std::string const &debugName, int intSize, STOFFVec2i value=STOFFVec2i(0,0)) |
989 | 236k | : StarAttribute(type, debugName) |
990 | 236k | , m_value(value) |
991 | 236k | , m_intSize(intSize) |
992 | 236k | { |
993 | 236k | if (intSize!=1 && intSize!=2 && intSize!=4) { |
994 | 0 | STOFF_DEBUG_MSG(("StarAttributeVec2i: bad num size\n")); |
995 | 0 | m_intSize=0; |
996 | 0 | } |
997 | 236k | } |
998 | | //! create a new attribute |
999 | | std::shared_ptr<StarAttribute> create() const override |
1000 | 0 | { |
1001 | 0 | return std::shared_ptr<StarAttribute>(new StarAttributeVec2i(*this)); |
1002 | 0 | } |
1003 | | //! read a zone |
1004 | | bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; |
1005 | | //! debug function to print the data |
1006 | | void printData(libstoff::DebugStream &o) const override |
1007 | 0 | { |
1008 | 0 | o << m_debugName; |
1009 | 0 | if (m_value!=STOFFVec2i(0,0)) o << "=" << m_value; |
1010 | 0 | o << ","; |
1011 | 0 | } |
1012 | | |
1013 | | protected: |
1014 | | //! copy constructor |
1015 | 5.89k | StarAttributeVec2i(StarAttributeVec2i const &) = default; |
1016 | | // the int value |
1017 | | STOFFVec2i m_value; |
1018 | | // number of byte 1,2,4 |
1019 | | int m_intSize; |
1020 | | }; |
1021 | | |
1022 | | //! a list of item attribute of StarAttributeInternal |
1023 | | class StarAttributeItemSet : public StarAttribute |
1024 | | { |
1025 | | public: |
1026 | | //! constructor |
1027 | | StarAttributeItemSet(Type type, std::string const &debugName, std::vector<STOFFVec2i> const &limits) |
1028 | 1.65M | : StarAttribute(type, debugName) |
1029 | 1.65M | , m_limits(limits) |
1030 | 1.65M | , m_itemSet() |
1031 | 1.65M | { |
1032 | 1.65M | } |
1033 | | //! create a new attribute |
1034 | | std::shared_ptr<StarAttribute> create() const override |
1035 | 17.4k | { |
1036 | 17.4k | return std::shared_ptr<StarAttribute>(new StarAttributeItemSet(*this)); |
1037 | 17.4k | } |
1038 | | //! read a zone |
1039 | | bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; |
1040 | | //! debug function to print the data |
1041 | | void print(libstoff::DebugStream &o, std::set<StarAttribute const *> &done) const override; |
1042 | | |
1043 | | protected: |
1044 | | //! add to a state |
1045 | | void addTo(StarState &state, std::set<StarAttribute const *> &done) const override; |
1046 | | //! try to send the sone data |
1047 | | bool send(STOFFListenerPtr &listener, StarState &state, std::set<StarAttribute const *> &done) const override; |
1048 | | |
1049 | | //! copy constructor |
1050 | 301k | StarAttributeItemSet(StarAttributeItemSet const &) = default; |
1051 | | //! the pool limits id |
1052 | | std::vector<STOFFVec2i> m_limits; |
1053 | | //! the list of items |
1054 | | StarItemSet m_itemSet; |
1055 | | }; |
1056 | | |
1057 | | //! void attribute of StarAttribute |
1058 | | class StarAttributeVoid : public StarAttribute |
1059 | | { |
1060 | | public: |
1061 | | //! constructor |
1062 | | StarAttributeVoid(Type type, std::string const &debugName) |
1063 | 16.0M | : StarAttribute(type, debugName) |
1064 | 16.0M | { |
1065 | 16.0M | } |
1066 | | //! create a new attribute |
1067 | | std::shared_ptr<StarAttribute> create() const override |
1068 | 5.30k | { |
1069 | 5.30k | return std::shared_ptr<StarAttribute>(new StarAttributeVoid(*this)); |
1070 | 5.30k | } |
1071 | | //! read a zone |
1072 | | bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; |
1073 | | }; |
1074 | | |
1075 | | /** \brief the main class to read/.. a StarOffice attribute |
1076 | | * |
1077 | | * |
1078 | | * |
1079 | | */ |
1080 | | class StarAttributeManager |
1081 | | { |
1082 | | public: |
1083 | | //! constructor |
1084 | | StarAttributeManager(); |
1085 | | //! destructor |
1086 | | virtual ~StarAttributeManager(); |
1087 | | |
1088 | | |
1089 | | //! try to read an attribute and return it |
1090 | | std::shared_ptr<StarAttribute> readAttribute(StarZone &zone, int which, int vers, long endPos, StarObject &document); |
1091 | | //! try to return the default attribute |
1092 | | std::shared_ptr<StarAttribute> getDefaultAttribute(int which); |
1093 | | //! return a dummy attribute |
1094 | | static std::shared_ptr<StarAttribute> getDummyAttribute(int type=-1); |
1095 | | |
1096 | | protected: |
1097 | | // |
1098 | | // data |
1099 | | // |
1100 | | private: |
1101 | | //! the state |
1102 | | std::shared_ptr<StarAttributeInternal::State> m_state; |
1103 | | }; |
1104 | | #endif |
1105 | | // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: |