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 getType() const737 Type getType() const 738 { 739 return m_type; 740 } 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 addTo(StarState & state) const746 void addTo(StarState &state) const 747 { 748 std::set<StarAttribute const *> done; 749 addTo(state, done); 750 } 751 //! add to send the zone data send(STOFFListenerPtr & listener,StarState & state) const752 bool send(STOFFListenerPtr &listener, StarState &state) const 753 { 754 std::set<StarAttribute const *> done; 755 return send(listener, state, done); 756 } 757 //! add to a state(internal) addTo(StarState &,std::set<StarAttribute const * > &) const758 virtual void addTo(StarState &/*state*/, std::set<StarAttribute const *> &/*done*/) const 759 { 760 } 761 //! try to send the child zone(internal) send(STOFFListenerPtr &,StarState &,std::set<StarAttribute const * > &) const762 virtual bool send(STOFFListenerPtr &/*listener*/, StarState &/*state*/, std::set<StarAttribute const *> &/*done*/) const 763 { 764 return false; 765 } 766 //! returns the debug name getDebugName() const767 std::string const &getDebugName() const 768 { 769 return m_debugName; 770 } 771 //! debug function to print the data print(libstoff::DebugStream & o,std::set<StarAttribute const * > & done) const772 virtual void print(libstoff::DebugStream &o, std::set<StarAttribute const *> &done) const 773 { 774 if (done.find(this)!=done.end()) { 775 o << m_debugName << ","; 776 return; 777 } 778 done.insert(this); 779 printData(o); 780 } 781 //! debug function to print the data printData(libstoff::DebugStream & o) const782 virtual void printData(libstoff::DebugStream &o) const 783 { 784 o << m_debugName << ","; 785 } 786 protected: 787 //! constructor StarAttribute(Type type,std::string const & debugName)788 StarAttribute(Type type, std::string const &debugName) 789 : m_type(type) 790 , m_debugName(debugName) 791 { 792 } 793 //! copy constructor StarAttribute(StarAttribute const & orig)794 explicit StarAttribute(StarAttribute const &orig) 795 : m_type(orig.m_type) 796 , m_debugName(orig.m_debugName) 797 { 798 } 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 StarAttributeBool(Type type,std::string const & debugName,bool value)818 StarAttributeBool(Type type, std::string const &debugName, bool value) 819 : StarAttribute(type, debugName) 820 , m_value(value) 821 { 822 } 823 //! create a new attribute create() const824 std::shared_ptr<StarAttribute> create() const override 825 { 826 return std::shared_ptr<StarAttribute>(new StarAttributeBool(*this)); 827 } 828 //! read a zone 829 bool read(StarZone &zone, int ver, long endPos, StarObject &object) override; 830 //! debug function to print the data printData(libstoff::DebugStream & o) const831 void printData(libstoff::DebugStream &o) const override 832 { 833 o << m_debugName; 834 if (m_value) o << "=true"; 835 o << ","; 836 } 837 protected: 838 //! copy constructor 839 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 StarAttributeColor(Type type,std::string const & debugName,STOFFColor const & value)849 StarAttributeColor(Type type, std::string const &debugName, STOFFColor const &value) 850 : StarAttribute(type, debugName) 851 , m_value(value) 852 , m_defValue(value) 853 { 854 } 855 //! create a new attribute create() const856 std::shared_ptr<StarAttribute> create() const override 857 { 858 return std::shared_ptr<StarAttribute>(new StarAttributeColor(*this)); 859 } 860 //! read a zone 861 bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; 862 //! debug function to print the data printData(libstoff::DebugStream & o) const863 void printData(libstoff::DebugStream &o) const override 864 { 865 o << m_debugName << "[col=" << m_value << "],"; 866 } 867 protected: 868 //! copy constructor 869 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 StarAttributeDouble(Type type,std::string const & debugName,double value)881 StarAttributeDouble(Type type, std::string const &debugName, double value) : StarAttribute(type, debugName), m_value(value) 882 { 883 } 884 //! create a new attribute create() const885 std::shared_ptr<StarAttribute> create() const override 886 { 887 return std::shared_ptr<StarAttribute>(new StarAttributeDouble(*this)); 888 } 889 //! read a zone 890 bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; 891 892 //! debug function to print the data printData(libstoff::DebugStream & o) const893 void printData(libstoff::DebugStream &o) const override 894 { 895 o << m_debugName; 896 if (m_value<0 || m_value>0) o << "=" << m_value; 897 o << ","; 898 } 899 protected: 900 //! copy constructor 901 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 StarAttributeInt(Type type,std::string const & debugName,int intSize,int value)911 StarAttributeInt(Type type, std::string const &debugName, int intSize, int value) 912 : StarAttribute(type, debugName) 913 , m_value(value) 914 , m_intSize(intSize) 915 { 916 if (intSize!=1 && intSize!=2 && intSize!=4) { 917 STOFF_DEBUG_MSG(("StarAttributeInt: bad num size\n")); 918 m_intSize=0; 919 } 920 } 921 //! create a new attribute create() const922 std::shared_ptr<StarAttribute> create() const override 923 { 924 return std::shared_ptr<StarAttribute>(new StarAttributeInt(*this)); 925 } 926 //! read a zone 927 bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; 928 //! debug function to print the data printData(libstoff::DebugStream & o) const929 void printData(libstoff::DebugStream &o) const override 930 { 931 o << m_debugName; 932 if (m_value) o << "=" << m_value; 933 o << ","; 934 } 935 936 protected: 937 //! copy constructor 938 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 StarAttributeUInt(Type type,std::string const & debugName,int intSize,unsigned int value)950 StarAttributeUInt(Type type, std::string const &debugName, int intSize, unsigned int value) 951 : StarAttribute(type, debugName) 952 , m_value(value) 953 , m_intSize(intSize) 954 { 955 if (intSize!=1 && intSize!=2 && intSize!=4) { 956 STOFF_DEBUG_MSG(("StarAttributeUInt: bad num size\n")); 957 m_intSize=0; 958 } 959 } 960 //! create a new attribute create() const961 std::shared_ptr<StarAttribute> create() const override 962 { 963 return std::shared_ptr<StarAttribute>(new StarAttributeUInt(*this)); 964 } 965 //! read a zone 966 bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; 967 //! debug function to print the data printData(libstoff::DebugStream & o) const968 void printData(libstoff::DebugStream &o) const override 969 { 970 o << m_debugName; 971 if (m_value) o << "=" << m_value; 972 o << ","; 973 } 974 protected: 975 //! copy constructor 976 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 StarAttributeVec2i(Type type,std::string const & debugName,int intSize,STOFFVec2i value=STOFFVec2i (0,0))988 StarAttributeVec2i(Type type, std::string const &debugName, int intSize, STOFFVec2i value=STOFFVec2i(0,0)) 989 : StarAttribute(type, debugName) 990 , m_value(value) 991 , m_intSize(intSize) 992 { 993 if (intSize!=1 && intSize!=2 && intSize!=4) { 994 STOFF_DEBUG_MSG(("StarAttributeVec2i: bad num size\n")); 995 m_intSize=0; 996 } 997 } 998 //! create a new attribute create() const999 std::shared_ptr<StarAttribute> create() const override 1000 { 1001 return std::shared_ptr<StarAttribute>(new StarAttributeVec2i(*this)); 1002 } 1003 //! read a zone 1004 bool read(StarZone &zone, int vers, long endPos, StarObject &object) override; 1005 //! debug function to print the data printData(libstoff::DebugStream & o) const1006 void printData(libstoff::DebugStream &o) const override 1007 { 1008 o << m_debugName; 1009 if (m_value!=STOFFVec2i(0,0)) o << "=" << m_value; 1010 o << ","; 1011 } 1012 1013 protected: 1014 //! copy constructor 1015 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 StarAttributeItemSet(Type type,std::string const & debugName,std::vector<STOFFVec2i> const & limits)1027 StarAttributeItemSet(Type type, std::string const &debugName, std::vector<STOFFVec2i> const &limits) 1028 : StarAttribute(type, debugName) 1029 , m_limits(limits) 1030 , m_itemSet() 1031 { 1032 } 1033 //! create a new attribute create() const1034 std::shared_ptr<StarAttribute> create() const override 1035 { 1036 return std::shared_ptr<StarAttribute>(new StarAttributeItemSet(*this)); 1037 } 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 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 StarAttributeVoid(Type type,std::string const & debugName)1062 StarAttributeVoid(Type type, std::string const &debugName) 1063 : StarAttribute(type, debugName) 1064 { 1065 } 1066 //! create a new attribute create() const1067 std::shared_ptr<StarAttribute> create() const override 1068 { 1069 return std::shared_ptr<StarAttribute>(new StarAttributeVoid(*this)); 1070 } 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: 1106