Coverage Report

Created: 2026-03-12 06:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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: