StarAttribute.hxx
Go to the documentation of this file.
00001 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
00002 
00003 /* libstaroffice
00004 * Version: MPL 2.0 / LGPLv2+
00005 *
00006 * The contents of this file are subject to the Mozilla Public License Version
00007 * 2.0 (the "License"); you may not use this file except in compliance with
00008 * the License or as specified alternatively below. You may obtain a copy of
00009 * the License at http://www.mozilla.org/MPL/
00010 *
00011 * Software distributed under the License is distributed on an "AS IS" basis,
00012 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00013 * for the specific language governing rights and limitations under the
00014 * License.
00015 *
00016 * Major Contributor(s):
00017 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
00018 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
00019 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
00020 * Copyright (C) 2006, 2007 Andrew Ziem
00021 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
00022 *
00023 *
00024 * All Rights Reserved.
00025 *
00026 * For minor contributions see the git repository.
00027 *
00028 * Alternatively, the contents of this file may be used under the terms of
00029 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
00030 * in which case the provisions of the LGPLv2+ are applicable
00031 * instead of those above.
00032 */
00033 
00034 /*
00035  * file to read/parse StarOffice attributes
00036  *
00037  */
00038 #ifndef STAR_ATTRIBUTE
00039 #  define STAR_ATTRIBUTE
00040 
00041 #include <set>
00042 #include <sstream>
00043 #include <vector>
00044 
00045 #include "STOFFDebug.hxx"
00046 #include "STOFFEntry.hxx"
00047 #include "STOFFInputStream.hxx"
00048 
00049 #include "StarItem.hxx"
00050 
00051 namespace StarAttributeInternal
00052 {
00053 struct State;
00054 }
00055 
00056 class StarItemPool;
00057 class StarObject;
00058 class StarState;
00059 class StarZone;
00060 
00062 class StarAttribute
00063 {
00064 public:
00066   enum Type {
00067     ATTR_SPECIAL=-1,                                  // special
00068     ATTR_CHR_CASEMAP = 1,                                                                       // 1
00069     ATTR_CHR_CHARSETCOLOR,                                                              // 2
00070     ATTR_CHR_COLOR,                                                                                             // 3
00071     ATTR_CHR_CONTOUR,                                                                                   // 4
00072     ATTR_CHR_CROSSEDOUT,                                                                        // 5
00073     ATTR_CHR_ESCAPEMENT,                                                                        // 6
00074     ATTR_CHR_FONT,                                                                                              // 7
00075     ATTR_CHR_FONTSIZE,                                                                          // 8
00076     ATTR_CHR_KERNING,                                                                           // 9
00077     ATTR_CHR_LANGUAGE,                                                                          // 10
00078     ATTR_CHR_POSTURE,                                                                           // 11
00079     ATTR_CHR_PROPORTIONALFONTSIZE,                              // 12
00080     ATTR_CHR_SHADOWED,                                                                          // 13
00081     ATTR_CHR_UNDERLINE,                                                                         // 14
00082     ATTR_CHR_WEIGHT,                                                                                    // 15
00083     ATTR_CHR_WORDLINEMODE,                                                              // 16
00084     ATTR_CHR_AUTOKERN,                                                                          // 17
00085     ATTR_CHR_BLINK,                                                                                             // 18
00086     ATTR_CHR_NOHYPHEN,                                                                          // 19
00087     ATTR_CHR_NOLINEBREAK,                                                               // 20
00088     ATTR_CHR_BACKGROUND,                                                                        // 21
00089     ATTR_CHR_CJK_FONT,                                                                          // 22
00090     ATTR_CHR_CJK_FONTSIZE,                                                              // 23
00091     ATTR_CHR_CJK_LANGUAGE,                                                              // 24
00092     ATTR_CHR_CJK_POSTURE,                                                               // 25
00093     ATTR_CHR_CJK_WEIGHT,                                                                        // 26
00094     ATTR_CHR_CTL_FONT,                                                                          // 27
00095     ATTR_CHR_CTL_FONTSIZE,                                                              // 28
00096     ATTR_CHR_CTL_LANGUAGE,                                                              // 29
00097     ATTR_CHR_CTL_POSTURE,                                                               // 30
00098     ATTR_CHR_CTL_WEIGHT,                                                                        // 31
00099     ATTR_CHR_ROTATE,                                                                                    // 32
00100     ATTR_CHR_EMPHASIS_MARK,                                                             // 33
00101     ATTR_CHR_TWO_LINES,                                                                         // 34
00102     ATTR_CHR_SCALEW,                                                                                    // 35
00103     ATTR_CHR_RELIEF,                                                                                    // 36
00104     ATTR_CHR_DUMMY1,                                                                                    // 37
00105 
00106     ATTR_TXT_INETFMT,                                                                                   // 38
00107     ATTR_TXT_DUMMY4,                                                                                    // 39
00108     ATTR_TXT_REFMARK,                                                                           // 40
00109     ATTR_TXT_TOXMARK,                                                                           // 41
00110     ATTR_TXT_CHARFMT,                                                                           // 42
00111     ATTR_TXT_DUMMY5,                                                                                    // 43
00112     ATTR_TXT_CJK_RUBY,                                                                          // 44
00113     ATTR_TXT_UNKNOWN_CONTAINER,                                                         // 45
00114     ATTR_TXT_DUMMY6,                                                                                    // 46
00115     ATTR_TXT_DUMMY7,                                                                                    // 47
00116 
00117     ATTR_TXT_FIELD,                                                                                             // 48
00118     ATTR_TXT_FLYCNT,                                                                                    // 49
00119     ATTR_TXT_FTN,                                                                                               // 50
00120     ATTR_TXT_SOFTHYPH,                                                                          // 51
00121     ATTR_TXT_HARDBLANK,                                                                         // 52
00122     ATTR_TXT_DUMMY1,                                                                                    // 53
00123     ATTR_TXT_DUMMY2,                                                                                    // 54
00124 
00125     ATTR_PARA_LINESPACING,                                      // 55
00126     ATTR_PARA_ADJUST,                                                                                           // 56
00127     ATTR_PARA_SPLIT,                                                                            // 57
00128     ATTR_PARA_ORPHANS,                                                                                  // 58
00129     ATTR_PARA_WIDOWS,                                                                                           // 59
00130     ATTR_PARA_TABSTOP,                                                                                  // 60
00131     ATTR_PARA_HYPHENZONE,                                                                               // 61
00132     ATTR_PARA_DROP,                                                                                     // 62
00133     ATTR_PARA_REGISTER,                                                                                 // 63
00134     ATTR_PARA_NUMRULE,                                                                                  // 64
00135     ATTR_PARA_SCRIPTSPACE,                                                                      // 65
00136     ATTR_PARA_HANGINGPUNCTUATION,                                                   // 66
00137     ATTR_PARA_FORBIDDEN_RULES,                                                      // 67
00138     ATTR_PARA_VERTALIGN,                                                                            // 68
00139     ATTR_PARA_SNAPTOGRID,                               // 69
00140     ATTR_PARA_CONNECT_BORDER,                           // 70
00141     ATTR_PARA_DUMMY5,                                                                           // 71
00142     ATTR_PARA_DUMMY6,                                                                           // 72
00143     ATTR_PARA_DUMMY7,                                                                           // 73
00144     ATTR_PARA_DUMMY8,                                                                           // 74
00145 
00146     ATTR_FRM_FILL_ORDER,                                // 75
00147     ATTR_FRM_FRM_SIZE,                                  // 76
00148     ATTR_FRM_PAPER_BIN,                                 // 77
00149     ATTR_FRM_LR_SPACE,                                  // 78
00150     ATTR_FRM_UL_SPACE,                                  // 79
00151     ATTR_FRM_PAGEDESC,                                  // 80
00152     ATTR_FRM_BREAK,                                     // 81
00153     ATTR_FRM_CNTNT,                                     // 82
00154     ATTR_FRM_HEADER,                                    // 83
00155     ATTR_FRM_FOOTER,                                    // 84
00156     ATTR_FRM_PRINT,                                     // 85
00157     ATTR_FRM_OPAQUE,                                    // 86
00158     ATTR_FRM_PROTECT,                                   // 87
00159     ATTR_FRM_SURROUND,                                  // 88
00160     ATTR_FRM_VERT_ORIENT,                               // 89
00161     ATTR_FRM_HORI_ORIENT,                               // 90
00162     ATTR_FRM_ANCHOR,                                    // 91
00163     ATTR_FRM_BACKGROUND,                                // 92
00164     ATTR_FRM_BOX,                                       // 93
00165     ATTR_FRM_SHADOW,                                    // 94
00166     ATTR_FRM_FRMMACRO,                                  // 95
00167     ATTR_FRM_COL,                                       // 96
00168     ATTR_FRM_KEEP,                                      // 97
00169     ATTR_FRM_URL,                                       // 98
00170     ATTR_FRM_EDIT_IN_READONLY,                          // 99
00171     ATTR_FRM_LAYOUT_SPLIT,                              // 100
00172     ATTR_FRM_CHAIN,                                     // 101
00173     ATTR_FRM_TEXTGRID,                                  // 102
00174     ATTR_FRM_LINENUMBER  ,                              // 103
00175     ATTR_FRM_FTN_AT_TXTEND,                             // 104
00176     ATTR_FRM_END_AT_TXTEND,                             // 105
00177     ATTR_FRM_COLUMNBALANCE,                             // 106
00178     ATTR_FRM_FRAMEDIR,                                  // 107
00179     ATTR_FRM_HEADER_FOOTER_EAT_SPACING,                 // 108
00180     ATTR_FRM_FRMATTR_DUMMY9,                        // 109
00181 
00182     ATTR_GRF_MIRRORGRF,                                         // 110
00183     ATTR_GRF_CROPGRF,                                 // 111
00184     ATTR_GRF_ROTATION,                                // 112
00185     ATTR_GRF_LUMINANCE,                               // 113
00186     ATTR_GRF_CONTRAST,                                // 114
00187     ATTR_GRF_CHANNELR,                                // 115
00188     ATTR_GRF_CHANNELG,                                // 116
00189     ATTR_GRF_CHANNELB,                                // 117
00190     ATTR_GRF_GAMMA,                                   // 118
00191     ATTR_GRF_INVERT,                                  // 119
00192     ATTR_GRF_TRANSPARENCY,                            // 120
00193     ATTR_GRF_DRAWMODE,                                // 121
00194     ATTR_GRF_DUMMY1,                                  // 122
00195     ATTR_GRF_DUMMY2,                                  // 123
00196     ATTR_GRF_DUMMY3,                                  // 124
00197     ATTR_GRF_DUMMY4,                                  // 125
00198     ATTR_GRF_DUMMY5,                                  // 126
00199 
00200     ATTR_BOX_FORMAT,                                            // 127
00201     ATTR_BOX_FORMULA,                                 // 128
00202     ATTR_BOX_VALUE,                                   // 129
00203 
00204     // other
00205     ATTR_SC_USERDEF,                                  // 130
00206     ATTR_SC_HYPHENATE,
00207     ATTR_SC_HORJUSTIFY,
00208     ATTR_SC_INDENT,
00209     ATTR_SC_VERJUSTIFY,
00210     ATTR_SC_ORIENTATION,
00211     ATTR_SC_ROTATE_VALUE,
00212     ATTR_SC_ROTATE_MODE,
00213     ATTR_SC_VERTICAL_ASIAN,
00214     ATTR_SC_WRITINGDIR,
00215     ATTR_SC_LINEBREAK,                               // 140
00216     ATTR_SC_MARGIN,
00217     ATTR_SC_MERGE,
00218     ATTR_SC_MERGE_FLAG,
00219     ATTR_SC_VALUE_FORMAT,
00220     ATTR_SC_LANGUAGE_FORMAT,
00221     ATTR_SC_BACKGROUND,
00222     ATTR_SC_PROTECTION,
00223     ATTR_SC_BORDER,
00224     ATTR_SC_BORDER_INNER,
00225     ATTR_SC_SHADOW,                                                                                                                                     // 150
00226     ATTR_SC_VALIDDATA,
00227     ATTR_SC_CONDITIONAL,
00228     ATTR_SC_PATTERN,
00229     ATTR_SC_PAGE,
00230     ATTR_SC_PAGE_PAPERTRAY,
00231     ATTR_SC_PAGE_SIZE,
00232     ATTR_SC_PAGE_MAXSIZE,
00233     ATTR_SC_PAGE_HORCENTER,
00234     ATTR_SC_PAGE_VERCENTER,
00235     ATTR_SC_PAGE_ON,
00236     ATTR_SC_PAGE_DYNAMIC,
00237     ATTR_SC_PAGE_SHARED,
00238     ATTR_SC_PAGE_NOTES,
00239     ATTR_SC_PAGE_GRID,
00240     ATTR_SC_PAGE_HEADERS,
00241     ATTR_SC_PAGE_CHARTS,
00242     ATTR_SC_PAGE_OBJECTS,
00243     ATTR_SC_PAGE_DRAWINGS,
00244     ATTR_SC_PAGE_TOPDOWN,
00245     ATTR_SC_PAGE_SCALE,
00246     ATTR_SC_PAGE_SCALETOPAGES,
00247     ATTR_SC_PAGE_FIRSTPAGENO,
00248     ATTR_SC_PAGE_PRINTAREA,
00249     ATTR_SC_PAGE_REPEATROW,
00250     ATTR_SC_PAGE_REPEATCOL,
00251     ATTR_SC_PAGE_PRINTTABLES,
00252     ATTR_SC_PAGE_HEADERLEFT,
00253     ATTR_SC_PAGE_FOOTERLEFT,
00254     ATTR_SC_PAGE_HEADERRIGHT,
00255     ATTR_SC_PAGE_FOOTERRIGHT,
00256     ATTR_SC_PAGE_HEADERSET,
00257     ATTR_SC_PAGE_FOOTERSET,
00258     ATTR_SC_PAGE_FORMULAS,
00259     ATTR_SC_PAGE_NULLVALS,
00260 
00261     ATTR_EE_PARA_XMLATTRIBS,
00262     ATTR_EE_PARA_ASIANCJKSPACING,
00263     ATTR_EE_PARA_NUMBULLET,
00264     ATTR_EE_PARA_BULLETSTATE,
00265     ATTR_EE_PARA_OUTLLR_SPACE,
00266     ATTR_EE_PARA_OUTLLEVEL,
00267     ATTR_EE_PARA_BULLET,
00268     ATTR_EE_CHR_SCALEW,
00269     ATTR_EE_CHR_RUBI_DUMMY,
00270     ATTR_EE_CHR_XMLATTRIBS,
00271     ATTR_EE_FEATURE_TAB,
00272     ATTR_EE_FEATURE_LINEBR,
00273     ATTR_EE_FEATURE_FIELD,
00274 
00275     ATTR_SCH_DATADESCR_DESCR,
00276     ATTR_SCH_DATADESCR_SHOW_SYM,
00277     ATTR_SCH_LEGEND_POS,
00278     ATTR_SCH_TEXT_ORIENT,
00279     ATTR_SCH_TEXT_ORDER,
00280 
00281     ATTR_SCH_X_AXIS_AUTO_MIN,
00282     ATTR_SCH_X_AXIS_MIN,
00283     ATTR_SCH_X_AXIS_AUTO_MAX,
00284     ATTR_SCH_X_AXIS_MAX,
00285     ATTR_SCH_X_AXIS_AUTO_STEP_MAIN,
00286     ATTR_SCH_X_AXIS_STEP_MAIN,
00287     ATTR_SCH_X_AXIS_AUTO_STEP_HELP,
00288     ATTR_SCH_X_AXIS_STEP_HELP,
00289     ATTR_SCH_X_AXIS_LOGARITHM,
00290     ATTR_SCH_X_AXIS_AUTO_ORIGIN,
00291     ATTR_SCH_X_AXIS_ORIGIN,
00292     ATTR_SCH_Y_AXIS_AUTO_MIN,
00293     ATTR_SCH_Y_AXIS_MIN,
00294     ATTR_SCH_Y_AXIS_AUTO_MAX,
00295     ATTR_SCH_Y_AXIS_MAX,
00296     ATTR_SCH_Y_AXIS_AUTO_STEP_MAIN,
00297     ATTR_SCH_Y_AXIS_STEP_MAIN,
00298     ATTR_SCH_Y_AXIS_AUTO_STEP_HELP,
00299     ATTR_SCH_Y_AXIS_STEP_HELP,
00300     ATTR_SCH_Y_AXIS_LOGARITHM,
00301     ATTR_SCH_Y_AXIS_AUTO_ORIGIN,
00302     ATTR_SCH_Y_AXIS_ORIGIN,
00303     ATTR_SCH_Z_AXIS_AUTO_MIN,
00304     ATTR_SCH_Z_AXIS_MIN,
00305     ATTR_SCH_Z_AXIS_AUTO_MAX,
00306     ATTR_SCH_Z_AXIS_MAX,
00307     ATTR_SCH_Z_AXIS_AUTO_STEP_MAIN,
00308     ATTR_SCH_Z_AXIS_STEP_MAIN,
00309     ATTR_SCH_Z_AXIS_AUTO_STEP_HELP,
00310     ATTR_SCH_Z_AXIS_STEP_HELP,
00311     ATTR_SCH_Z_AXIS_LOGARITHM,
00312     ATTR_SCH_Z_AXIS_AUTO_ORIGIN,
00313     ATTR_SCH_Z_AXIS_ORIGIN,
00314 
00315     ATTR_SCH_AXISTYPE,
00316     ATTR_SCH_DUMMY0,
00317     ATTR_SCH_DUMMY1,
00318     ATTR_SCH_DUMMY2,
00319     ATTR_SCH_DUMMY3,
00320     ATTR_SCH_DUMMY_END,
00321 
00322     ATTR_SCH_STAT_AVERAGE,
00323     ATTR_SCH_STAT_KIND_ERROR,
00324     ATTR_SCH_STAT_PERCENT,
00325     ATTR_SCH_STAT_BIGERROR,
00326     ATTR_SCH_STAT_CONSTPLUS,
00327     ATTR_SCH_STAT_CONSTMINUS,
00328     ATTR_SCH_STAT_REGRESSTYPE,
00329     ATTR_SCH_STAT_INDICATE,
00330     ATTR_SCH_TEXT_DEGREES,
00331     ATTR_SCH_TEXT_OVERLAP,
00332     ATTR_SCH_TEXT_DUMMY0,
00333     ATTR_SCH_TEXT_DUMMY1,
00334     ATTR_SCH_TEXT_DUMMY2,
00335     ATTR_SCH_TEXT_DUMMY3,
00336 
00337     ATTR_SCH_STYLE_DEEP,
00338     ATTR_SCH_STYLE_3D,
00339     ATTR_SCH_STYLE_VERTICAL,
00340     ATTR_SCH_STYLE_BASETYPE,
00341     ATTR_SCH_STYLE_LINES,
00342     ATTR_SCH_STYLE_PERCENT,
00343     ATTR_SCH_STYLE_STACKED,
00344     ATTR_SCH_STYLE_SPLINES,
00345     ATTR_SCH_STYLE_SYMBOL,
00346     ATTR_SCH_STYLE_SHAPE,
00347 
00348     ATTR_SCH_AXIS,
00349     ATTR_SCH_AXIS_AUTO_MIN,
00350     ATTR_SCH_AXIS_MIN,
00351     ATTR_SCH_AXIS_AUTO_MAX,
00352     ATTR_SCH_AXIS_MAX,
00353     ATTR_SCH_AXIS_AUTO_STEP_MAIN,
00354     ATTR_SCH_AXIS_STEP_MAIN,
00355     ATTR_SCH_AXIS_AUTO_STEP_HELP,
00356     ATTR_SCH_AXIS_STEP_HELP,
00357     ATTR_SCH_AXIS_LOGARITHM,
00358     ATTR_SCH_AXIS_AUTO_ORIGIN,
00359     ATTR_SCH_AXIS_ORIGIN,
00360 
00361     ATTR_SCH_AXIS_TICKS,
00362     ATTR_SCH_AXIS_NUMFMT,
00363     ATTR_SCH_AXIS_NUMFMTPERCENT,
00364     ATTR_SCH_AXIS_SHOWAXIS,
00365     ATTR_SCH_AXIS_SHOWDESCR,
00366     ATTR_SCH_AXIS_SHOWMAINGRID,
00367     ATTR_SCH_AXIS_SHOWHELPGRID,
00368     ATTR_SCH_AXIS_TOPDOWN,
00369     ATTR_SCH_AXIS_HELPTICKS,
00370 
00371     ATTR_SCH_AXIS_DUMMY0,
00372     ATTR_SCH_AXIS_DUMMY1,
00373     ATTR_SCH_AXIS_DUMMY2,
00374     ATTR_SCH_AXIS_DUMMY3,
00375     ATTR_SCH_BAR_OVERLAP,
00376     ATTR_SCH_BAR_GAPWIDTH,
00377 
00378     ATTR_SCH_SYMBOL_BRUSH,
00379     ATTR_SCH_STOCK_VOLUME,
00380     ATTR_SCH_STOCK_UPDOWN,
00381     ATTR_SCH_SYMBOL_SIZE,
00382     ATTR_SCH_USER_DEFINED_ATTR,
00383 
00384     XATTR_LINESTYLE,
00385     XATTR_LINEDASH,
00386     XATTR_LINEWIDTH,
00387     XATTR_LINECOLOR,
00388     XATTR_LINESTART,
00389     XATTR_LINEEND,
00390     XATTR_LINESTARTWIDTH,
00391     XATTR_LINEENDWIDTH,
00392     XATTR_LINESTARTCENTER,
00393     XATTR_LINEENDCENTER,
00394     XATTR_LINETRANSPARENCE,
00395     XATTR_LINEJOINT,
00396     XATTR_LINERESERVED2,
00397     XATTR_LINERESERVED3,
00398     XATTR_LINERESERVED4,
00399     XATTR_LINERESERVED5,
00400     XATTR_LINERESERVED_LAST,
00401     XATTR_SET_LINE,
00402     XATTR_FILLSTYLE,
00403     XATTR_FILLCOLOR,
00404     XATTR_FILLGRADIENT,
00405     XATTR_FILLHATCH,
00406     XATTR_FILLBITMAP,
00407     XATTR_FILLTRANSPARENCE,
00408     XATTR_GRADIENTSTEPCOUNT,
00409     XATTR_FILLBMP_TILE,
00410     XATTR_FILLBMP_POS,
00411     XATTR_FILLBMP_SIZEX,
00412     XATTR_FILLBMP_SIZEY,
00413     XATTR_FILLFLOATTRANSPARENCE,
00414     XATTR_FILLBMP_SIZELOG,
00415     XATTR_FILLBMP_TILEOFFSETX,
00416     XATTR_FILLBMP_TILEOFFSETY,
00417     XATTR_FILLBMP_STRETCH,
00418     XATTR_FILLBMP_POSOFFSETX,
00419     XATTR_FILLBMP_POSOFFSETY,
00420     XATTR_FILLBACKGROUND,
00421     XATTR_FILLRESERVED2,
00422     XATTR_FILLRESERVED3,
00423     XATTR_FILLRESERVED4,
00424     XATTR_FILLRESERVED5,
00425     XATTR_FILLRESERVED6,
00426     XATTR_FILLRESERVED7,
00427     XATTR_FILLRESERVED8,
00428     XATTR_FILLRESERVED10,
00429     XATTR_FILLRESERVED11,
00430     XATTR_FILLRESERVED_LAST,
00431     XATTR_SET_FILL,
00432     XATTR_FORMTXTSTYLE,
00433     XATTR_FORMTXTADJUST,
00434     XATTR_FORMTXTDISTANCE,
00435     XATTR_FORMTXTSTART,
00436     XATTR_FORMTXTMIRROR,
00437     XATTR_FORMTXTOUTLINE,
00438     XATTR_FORMTXTSHADOW,
00439     XATTR_FORMTXTSHDWCOLOR,
00440     XATTR_FORMTXTSHDWXVAL,
00441     XATTR_FORMTXTSHDWYVAL,
00442     XATTR_FORMTXTSTDFORM,
00443     XATTR_FORMTXTHIDEFORM,
00444     XATTR_FORMTXTSHDWTRANSP,
00445     XATTR_FTRESERVED2,
00446     XATTR_FTRESERVED3,
00447     XATTR_FTRESERVED4,
00448     XATTR_FTRESERVED5,
00449     XATTR_FTRESERVED_LAST,
00450     XATTR_SET_TEXT,
00451 
00452     // SDR
00453     SDRATTR_SHADOW,
00454     SDRATTR_SHADOWCOLOR,
00455     SDRATTR_SHADOWXDIST,
00456     SDRATTR_SHADOWYDIST,
00457     SDRATTR_SHADOWTRANSPARENCE,
00458     SDRATTR_SHADOW3D,
00459     SDRATTR_SHADOWPERSP,
00460     SDRATTR_SHADOWRESERVE1,
00461     SDRATTR_SHADOWRESERVE2,
00462     SDRATTR_SHADOWRESERVE3,
00463     SDRATTR_SHADOWRESERVE4,
00464     SDRATTR_SHADOWRESERVE5,
00465     SDRATTR_SET_SHADOW,
00466 
00467     SDRATTR_CAPTIONTYPE,
00468     SDRATTR_CAPTIONFIXEDANGLE,
00469     SDRATTR_CAPTIONANGLE,
00470     SDRATTR_CAPTIONGAP,
00471     SDRATTR_CAPTIONESCDIR,
00472     SDRATTR_CAPTIONESCISREL,
00473     SDRATTR_CAPTIONESCREL,
00474     SDRATTR_CAPTIONESCABS,
00475     SDRATTR_CAPTIONLINELEN,
00476     SDRATTR_CAPTIONFITLINELEN,
00477     SDRATTR_CAPTIONRESERVE1,
00478     SDRATTR_CAPTIONRESERVE2,
00479     SDRATTR_CAPTIONRESERVE3,
00480     SDRATTR_CAPTIONRESERVE4,
00481     SDRATTR_CAPTIONRESERVE5,
00482     SDRATTR_SET_CAPTION,
00483 
00484     SDRATTR_SET_OUTLINER,
00485 
00486     SDRATTR_ECKENRADIUS,
00487     SDRATTR_TEXT_MINFRAMEHEIGHT,
00488     SDRATTR_TEXT_AUTOGROWHEIGHT,
00489     SDRATTR_TEXT_FITTOSIZE,
00490     SDRATTR_TEXT_LEFTDIST,
00491     SDRATTR_TEXT_RIGHTDIST,
00492     SDRATTR_TEXT_UPPERDIST,
00493     SDRATTR_TEXT_LOWERDIST,
00494     SDRATTR_TEXT_VERTADJUST,
00495     SDRATTR_TEXT_MAXFRAMEHEIGHT,
00496     SDRATTR_TEXT_MINFRAMEWIDTH,
00497     SDRATTR_TEXT_MAXFRAMEWIDTH,
00498     SDRATTR_TEXT_AUTOGROWWIDTH,
00499     SDRATTR_TEXT_HORZADJUST,
00500     SDRATTR_TEXT_ANIKIND,
00501     SDRATTR_TEXT_ANIDIRECTION,
00502     SDRATTR_TEXT_ANISTARTINSIDE,
00503     SDRATTR_TEXT_ANISTOPINSIDE,
00504     SDRATTR_TEXT_ANICOUNT,
00505     SDRATTR_TEXT_ANIDELAY,
00506     SDRATTR_TEXT_ANIAMOUNT,
00507     SDRATTR_TEXT_CONTOURFRAME,
00508     SDRATTR_AUTOSHAPE_ADJUSTMENT,
00509     SDRATTR_XMLATTRIBUTES,
00510     SDRATTR_RESERVE15,
00511     SDRATTR_RESERVE16,
00512     SDRATTR_RESERVE17,
00513     SDRATTR_RESERVE18,
00514     SDRATTR_RESERVE19,
00515     SDRATTR_SET_MISC,
00516 
00517     SDRATTR_EDGEKIND,
00518     SDRATTR_EDGENODE1HORZDIST,
00519     SDRATTR_EDGENODE1VERTDIST,
00520     SDRATTR_EDGENODE2HORZDIST,
00521     SDRATTR_EDGENODE2VERTDIST,
00522     SDRATTR_EDGENODE1GLUEDIST,
00523     SDRATTR_EDGENODE2GLUEDIST,
00524     SDRATTR_EDGELINEDELTAANZ,
00525     SDRATTR_EDGELINE1DELTA,
00526     SDRATTR_EDGELINE2DELTA,
00527     SDRATTR_EDGELINE3DELTA,
00528     SDRATTR_EDGERESERVE02,
00529     SDRATTR_EDGERESERVE03,
00530     SDRATTR_EDGERESERVE04,
00531     SDRATTR_EDGERESERVE05,
00532     SDRATTR_EDGERESERVE06,
00533     SDRATTR_EDGERESERVE07,
00534     SDRATTR_EDGERESERVE08,
00535     SDRATTR_EDGERESERVE09,
00536     SDRATTR_SET_EDGE,
00537 
00538     SDRATTR_MEASUREKIND,
00539     SDRATTR_MEASURETEXTHPOS,
00540     SDRATTR_MEASURETEXTVPOS,
00541     SDRATTR_MEASURELINEDIST,
00542     SDRATTR_MEASUREHELPLINEOVERHANG,
00543     SDRATTR_MEASUREHELPLINEDIST,
00544     SDRATTR_MEASUREHELPLINE1LEN,
00545     SDRATTR_MEASUREHELPLINE2LEN,
00546     SDRATTR_MEASUREBELOWREFEDGE,
00547     SDRATTR_MEASURETEXTROTA90,
00548     SDRATTR_MEASURETEXTUPSIDEDOWN,
00549     SDRATTR_MEASUREOVERHANG,
00550     SDRATTR_MEASUREUNIT,
00551     SDRATTR_MEASURESCALE,
00552     SDRATTR_MEASURESHOWUNIT,
00553     SDRATTR_MEASUREFORMATSTRING,
00554     SDRATTR_MEASURETEXTAUTOANGLE,
00555     SDRATTR_MEASURETEXTAUTOANGLEVIEW,
00556     SDRATTR_MEASURETEXTISFIXEDANGLE,
00557     SDRATTR_MEASURETEXTFIXEDANGLE,
00558     SDRATTR_MEASUREDECIMALPLACES,
00559     SDRATTR_MEASURERESERVE05,
00560     SDRATTR_MEASURERESERVE06,
00561     SDRATTR_MEASURERESERVE07,
00562     SDRATTR_SET_MEASURE,
00563 
00564     SDRATTR_CIRCKIND,
00565     SDRATTR_CIRCSTARTANGLE,
00566     SDRATTR_CIRCENDANGLE,
00567     SDRATTR_CIRCRESERVE0,
00568     SDRATTR_CIRCRESERVE1,
00569     SDRATTR_CIRCRESERVE2,
00570     SDRATTR_CIRCRESERVE3,
00571     SDRATTR_SET_CIRC,
00572 
00573     SDRATTR_OBJMOVEPROTECT,
00574     SDRATTR_OBJSIZEPROTECT,
00575     SDRATTR_OBJPRINTABLE,
00576     SDRATTR_LAYERID,
00577     SDRATTR_LAYERNAME,
00578     SDRATTR_OBJECTNAME,
00579     SDRATTR_ALLPOSITIONX,
00580     SDRATTR_ALLPOSITIONY,
00581     SDRATTR_ALLSIZEWIDTH,
00582     SDRATTR_ALLSIZEHEIGHT,
00583     SDRATTR_ONEPOSITIONX,
00584     SDRATTR_ONEPOSITIONY,
00585     SDRATTR_ONESIZEWIDTH,
00586     SDRATTR_ONESIZEHEIGHT,
00587     SDRATTR_LOGICSIZEWIDTH,
00588     SDRATTR_LOGICSIZEHEIGHT,
00589     SDRATTR_ROTATEANGLE,
00590     SDRATTR_SHEARANGLE,
00591     SDRATTR_MOVEX,
00592     SDRATTR_MOVEY,
00593     SDRATTR_RESIZEXONE,
00594     SDRATTR_RESIZEYONE,
00595     SDRATTR_ROTATEONE,
00596     SDRATTR_HORZSHEARONE,
00597     SDRATTR_VERTSHEARONE,
00598     SDRATTR_RESIZEXALL,
00599     SDRATTR_RESIZEYALL,
00600     SDRATTR_ROTATEALL,
00601     SDRATTR_HORZSHEARALL,
00602     SDRATTR_VERTSHEARALL,
00603     SDRATTR_TRANSFORMREF1X,
00604     SDRATTR_TRANSFORMREF1Y,
00605     SDRATTR_TRANSFORMREF2X,
00606     SDRATTR_TRANSFORMREF2Y,
00607     SDRATTR_TEXTDIRECTION,
00608     SDRATTR_NOTPERSISTRESERVE2,
00609     SDRATTR_NOTPERSISTRESERVE3,
00610     SDRATTR_NOTPERSISTRESERVE4,
00611     SDRATTR_NOTPERSISTRESERVE5,
00612     SDRATTR_NOTPERSISTRESERVE6,
00613     SDRATTR_NOTPERSISTRESERVE7,
00614     SDRATTR_NOTPERSISTRESERVE8,
00615     SDRATTR_NOTPERSISTRESERVE9,
00616     SDRATTR_NOTPERSISTRESERVE10,
00617     SDRATTR_NOTPERSISTRESERVE11,
00618     SDRATTR_NOTPERSISTRESERVE12,
00619     SDRATTR_NOTPERSISTRESERVE13,
00620     SDRATTR_NOTPERSISTRESERVE14,
00621     SDRATTR_NOTPERSISTRESERVE15,
00622 
00623     SDRATTR_GRAFRED,
00624     SDRATTR_GRAFGREEN,
00625     SDRATTR_GRAFBLUE,
00626     SDRATTR_GRAFLUMINANCE,
00627     SDRATTR_GRAFCONTRAST,
00628     SDRATTR_GRAFGAMMA,
00629     SDRATTR_GRAFTRANSPARENCE,
00630     SDRATTR_GRAFINVERT,
00631     SDRATTR_GRAFMODE,
00632     SDRATTR_GRAFCROP,
00633     SDRATTR_GRAFRESERVE3,
00634     SDRATTR_GRAFRESERVE4,
00635     SDRATTR_GRAFRESERVE5,
00636     SDRATTR_GRAFRESERVE6,
00637     SDRATTR_SET_GRAF,
00638 
00639     SDRATTR_3DOBJ_PERCENT_DIAGONAL,
00640     SDRATTR_3DOBJ_BACKSCALE,
00641     SDRATTR_3DOBJ_DEPTH,
00642     SDRATTR_3DOBJ_HORZ_SEGS,
00643     SDRATTR_3DOBJ_VERT_SEGS,
00644     SDRATTR_3DOBJ_END_ANGLE,
00645     SDRATTR_3DOBJ_DOUBLE_SIDED,
00646     SDRATTR_3DOBJ_NORMALS_KIND,
00647     SDRATTR_3DOBJ_NORMALS_INVERT,
00648     SDRATTR_3DOBJ_TEXTURE_PROJ_X,
00649     SDRATTR_3DOBJ_TEXTURE_PROJ_Y,
00650     SDRATTR_3DOBJ_SHADOW_3D,
00651     SDRATTR_3DOBJ_MAT_COLOR,
00652     SDRATTR_3DOBJ_MAT_EMISSION,
00653     SDRATTR_3DOBJ_MAT_SPECULAR,
00654     SDRATTR_3DOBJ_MAT_SPECULAR_INTENSITY,
00655     SDRATTR_3DOBJ_TEXTURE_KIND,
00656     SDRATTR_3DOBJ_TEXTURE_MODE,
00657     SDRATTR_3DOBJ_TEXTURE_FILTER,
00658 
00659     SDRATTR_3DOBJ_SMOOTH_NORMALS,
00660     SDRATTR_3DOBJ_SMOOTH_LIDS,
00661     SDRATTR_3DOBJ_CHARACTER_MODE,
00662     SDRATTR_3DOBJ_CLOSE_FRONT,
00663     SDRATTR_3DOBJ_CLOSE_BACK,
00664 
00665     SDRATTR_3DOBJ_RESERVED_06,
00666     SDRATTR_3DOBJ_RESERVED_07,
00667     SDRATTR_3DOBJ_RESERVED_08,
00668     SDRATTR_3DOBJ_RESERVED_09,
00669     SDRATTR_3DOBJ_RESERVED_10,
00670     SDRATTR_3DOBJ_RESERVED_11,
00671     SDRATTR_3DOBJ_RESERVED_12,
00672     SDRATTR_3DOBJ_RESERVED_13,
00673     SDRATTR_3DOBJ_RESERVED_14,
00674     SDRATTR_3DOBJ_RESERVED_15,
00675     SDRATTR_3DOBJ_RESERVED_16,
00676     SDRATTR_3DOBJ_RESERVED_17,
00677     SDRATTR_3DOBJ_RESERVED_18,
00678     SDRATTR_3DOBJ_RESERVED_19,
00679     SDRATTR_3DOBJ_RESERVED_20,
00680 
00681     SDRATTR_3DSCENE_PERSPECTIVE,
00682     SDRATTR_3DSCENE_DISTANCE,
00683     SDRATTR_3DSCENE_FOCAL_LENGTH,
00684     SDRATTR_3DSCENE_TWO_SIDED_LIGHTING,
00685     SDRATTR_3DSCENE_LIGHTCOLOR_1,
00686     SDRATTR_3DSCENE_LIGHTCOLOR_2,
00687     SDRATTR_3DSCENE_LIGHTCOLOR_3,
00688     SDRATTR_3DSCENE_LIGHTCOLOR_4,
00689     SDRATTR_3DSCENE_LIGHTCOLOR_5,
00690     SDRATTR_3DSCENE_LIGHTCOLOR_6,
00691     SDRATTR_3DSCENE_LIGHTCOLOR_7,
00692     SDRATTR_3DSCENE_LIGHTCOLOR_8,
00693     SDRATTR_3DSCENE_AMBIENTCOLOR,
00694     SDRATTR_3DSCENE_LIGHTON_1,
00695     SDRATTR_3DSCENE_LIGHTON_2,
00696     SDRATTR_3DSCENE_LIGHTON_3,
00697     SDRATTR_3DSCENE_LIGHTON_4,
00698     SDRATTR_3DSCENE_LIGHTON_5,
00699     SDRATTR_3DSCENE_LIGHTON_6,
00700     SDRATTR_3DSCENE_LIGHTON_7,
00701     SDRATTR_3DSCENE_LIGHTON_8,
00702     SDRATTR_3DSCENE_LIGHTDIRECTION_1,
00703     SDRATTR_3DSCENE_LIGHTDIRECTION_2,
00704     SDRATTR_3DSCENE_LIGHTDIRECTION_3,
00705     SDRATTR_3DSCENE_LIGHTDIRECTION_4,
00706     SDRATTR_3DSCENE_LIGHTDIRECTION_5,
00707     SDRATTR_3DSCENE_LIGHTDIRECTION_6,
00708     SDRATTR_3DSCENE_LIGHTDIRECTION_7,
00709     SDRATTR_3DSCENE_LIGHTDIRECTION_8,
00710     SDRATTR_3DSCENE_SHADOW_SLANT,
00711     SDRATTR_3DSCENE_SHADE_MODE,
00712     SDRATTR_3DSCENE_RESERVED_01,
00713     SDRATTR_3DSCENE_RESERVED_02,
00714     SDRATTR_3DSCENE_RESERVED_03,
00715     SDRATTR_3DSCENE_RESERVED_04,
00716     SDRATTR_3DSCENE_RESERVED_05,
00717     SDRATTR_3DSCENE_RESERVED_06,
00718     SDRATTR_3DSCENE_RESERVED_07,
00719     SDRATTR_3DSCENE_RESERVED_08,
00720     SDRATTR_3DSCENE_RESERVED_09,
00721     SDRATTR_3DSCENE_RESERVED_10,
00722     SDRATTR_3DSCENE_RESERVED_11,
00723     SDRATTR_3DSCENE_RESERVED_12,
00724     SDRATTR_3DSCENE_RESERVED_13,
00725     SDRATTR_3DSCENE_RESERVED_14,
00726     SDRATTR_3DSCENE_RESERVED_15,
00727     SDRATTR_3DSCENE_RESERVED_16,
00728     SDRATTR_3DSCENE_RESERVED_17,
00729     SDRATTR_3DSCENE_RESERVED_18,
00730     SDRATTR_3DSCENE_RESERVED_19,
00731     SDRATTR_3DSCENE_RESERVED_20
00732   };
00733 
00735   virtual ~StarAttribute();
00737   Type getType() const
00738   {
00739     return m_type;
00740   }
00742   virtual shared_ptr<StarAttribute> create() const=0;
00744   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &document)=0;
00746   void addTo(StarState &state) const
00747   {
00748     std::set<StarAttribute const *> done;
00749     addTo(state, done);
00750   }
00752   bool send(STOFFListenerPtr listener, StarState &state) const
00753   {
00754     std::set<StarAttribute const *> done;
00755     return send(listener, state, done);
00756   }
00758   virtual void addTo(StarState &/*state*/, std::set<StarAttribute const *> &/*done*/) const
00759   {
00760   }
00762   virtual bool send(STOFFListenerPtr /*listener*/, StarState &/*state*/, std::set<StarAttribute const *> &/*done*/) const
00763   {
00764     return false;
00765   }
00767   std::string const &getDebugName() const
00768   {
00769     return m_debugName;
00770   }
00772   virtual void print(libstoff::DebugStream &o, std::set<StarAttribute const *> &done) const
00773   {
00774     if (done.find(this)!=done.end()) {
00775       o << m_debugName << ",";
00776       return;
00777     }
00778     done.insert(this);
00779     printData(o);
00780   }
00782   virtual void printData(libstoff::DebugStream &o) const
00783   {
00784     o << m_debugName << ",";
00785   }
00786 protected:
00788   StarAttribute(Type type, std::string const &debugName) : m_type(type), m_debugName(debugName)
00789   {
00790   }
00792   explicit StarAttribute(StarAttribute const &orig) : m_type(orig.m_type), m_debugName(orig.m_debugName)
00793   {
00794   }
00795 
00796   //
00797   // data
00798   //
00799 
00801   Type m_type;
00803   std::string m_debugName;
00804 
00805 private:
00806   StarAttribute &operator=(StarAttribute const &orig);
00807 };
00808 
00810 class StarAttributeBool : public StarAttribute
00811 {
00812 public:
00814   StarAttributeBool(Type type, std::string const &debugName, bool value) : StarAttribute(type, debugName), m_value(value)
00815   {
00816   }
00818   virtual shared_ptr<StarAttribute> create() const
00819   {
00820     return shared_ptr<StarAttribute>(new StarAttributeBool(*this));
00821   }
00823   virtual bool read(StarZone &zone, int ver, long endPos, StarObject &object);
00825   virtual void printData(libstoff::DebugStream &o) const
00826   {
00827     o << m_debugName;
00828     if (m_value) o << "=true";
00829     o << ",";
00830   }
00831 protected:
00833   StarAttributeBool(StarAttributeBool const &orig) : StarAttribute(orig), m_value(orig.m_value)
00834   {
00835   }
00836   // the bool value
00837   bool m_value;
00838 };
00839 
00841 class StarAttributeColor : public StarAttribute
00842 {
00843 public:
00845   StarAttributeColor(Type type, std::string const &debugName, STOFFColor const &value) : StarAttribute(type, debugName), m_value(value), m_defValue(value)
00846   {
00847   }
00849   virtual shared_ptr<StarAttribute> create() const
00850   {
00851     return shared_ptr<StarAttribute>(new StarAttributeColor(*this));
00852   }
00854   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &object);
00856   virtual void printData(libstoff::DebugStream &o) const
00857   {
00858     o << m_debugName << "[col=" << m_value << "],";
00859   }
00860 protected:
00862   StarAttributeColor(StarAttributeColor const &orig) : StarAttribute(orig), m_value(orig.m_value), m_defValue(orig.m_defValue)
00863   {
00864   }
00866   STOFFColor m_value;
00868   STOFFColor m_defValue;
00869 };
00870 
00872 class StarAttributeDouble : public StarAttribute
00873 {
00874 public:
00876   StarAttributeDouble(Type type, std::string const &debugName, double value) : StarAttribute(type, debugName), m_value(value)
00877   {
00878   }
00880   virtual shared_ptr<StarAttribute> create() const
00881   {
00882     return shared_ptr<StarAttribute>(new StarAttributeDouble(*this));
00883   }
00885   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &object);
00886 
00888   virtual void printData(libstoff::DebugStream &o) const
00889   {
00890     o << m_debugName;
00891     if (m_value<0 || m_value>0) o << "=" << m_value;
00892     o << ",";
00893   }
00894 protected:
00896   StarAttributeDouble(StarAttributeDouble const &orig) : StarAttribute(orig), m_value(orig.m_value)
00897   {
00898   }
00899   // the double value
00900   double m_value;
00901 };
00902 
00904 class StarAttributeInt : public StarAttribute
00905 {
00906 public:
00908   StarAttributeInt(Type type, std::string const &debugName, int intSize, int value) : StarAttribute(type, debugName), m_value(value), m_intSize(intSize)
00909   {
00910     if (intSize!=1 && intSize!=2 && intSize!=4) {
00911       STOFF_DEBUG_MSG(("StarAttributeInt: bad num size\n"));
00912       m_intSize=0;
00913     }
00914   }
00916   virtual shared_ptr<StarAttribute> create() const
00917   {
00918     return shared_ptr<StarAttribute>(new StarAttributeInt(*this));
00919   }
00921   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &object);
00923   virtual void printData(libstoff::DebugStream &o) const
00924   {
00925     o << m_debugName;
00926     if (m_value) o << "=" << m_value;
00927     o << ",";
00928   }
00929 
00930 protected:
00932   StarAttributeInt(StarAttributeInt const &orig) : StarAttribute(orig), m_value(orig.m_value), m_intSize(orig.m_intSize)
00933   {
00934   }
00935   // the int value
00936   int m_value;
00937   // number of byte 1,2,4
00938   int m_intSize;
00939 };
00940 
00942 class StarAttributeUInt : public StarAttribute
00943 {
00944 public:
00946   StarAttributeUInt(Type type, std::string const &debugName, int intSize, unsigned int value) : StarAttribute(type, debugName), m_value(value), m_intSize(intSize)
00947   {
00948     if (intSize!=1 && intSize!=2 && intSize!=4) {
00949       STOFF_DEBUG_MSG(("StarAttributeUInt: bad num size\n"));
00950       m_intSize=0;
00951     }
00952   }
00954   virtual shared_ptr<StarAttribute> create() const
00955   {
00956     return shared_ptr<StarAttribute>(new StarAttributeUInt(*this));
00957   }
00959   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &object);
00961   virtual void printData(libstoff::DebugStream &o) const
00962   {
00963     o << m_debugName;
00964     if (m_value) o << "=" << m_value;
00965     o << ",";
00966   }
00967 protected:
00969   StarAttributeUInt(StarAttributeUInt const &orig) : StarAttribute(orig), m_value(orig.m_value), m_intSize(orig.m_intSize)
00970   {
00971   }
00972   // the int value
00973   unsigned int m_value;
00974   // number of byte 1,2,4
00975   int m_intSize;
00976 };
00977 
00979 class StarAttributeVec2i : public StarAttribute
00980 {
00981 public:
00983   StarAttributeVec2i(Type type, std::string const &debugName, int intSize, STOFFVec2i value=STOFFVec2i(0,0)) : StarAttribute(type, debugName), m_value(value), m_intSize(intSize)
00984   {
00985     if (intSize!=1 && intSize!=2 && intSize!=4) {
00986       STOFF_DEBUG_MSG(("StarAttributeVec2i: bad num size\n"));
00987       m_intSize=0;
00988     }
00989   }
00991   virtual shared_ptr<StarAttribute> create() const
00992   {
00993     return shared_ptr<StarAttribute>(new StarAttributeVec2i(*this));
00994   }
00996   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &object);
00998   virtual void printData(libstoff::DebugStream &o) const
00999   {
01000     o << m_debugName;
01001     if (m_value!=STOFFVec2i(0,0)) o << "=" << m_value;
01002     o << ",";
01003   }
01004 
01005 protected:
01007   StarAttributeVec2i(StarAttributeVec2i const &orig) : StarAttribute(orig), m_value(orig.m_value), m_intSize(orig.m_intSize)
01008   {
01009   }
01010   // the int value
01011   STOFFVec2i m_value;
01012   // number of byte 1,2,4
01013   int m_intSize;
01014 };
01015 
01017 class StarAttributeItemSet : public StarAttribute
01018 {
01019 public:
01021   StarAttributeItemSet(Type type, std::string const &debugName, std::vector<STOFFVec2i> const &limits) :
01022     StarAttribute(type, debugName), m_limits(limits), m_itemSet()
01023   {
01024   }
01026   virtual shared_ptr<StarAttribute> create() const
01027   {
01028     return shared_ptr<StarAttribute>(new StarAttributeItemSet(*this));
01029   }
01031   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &object);
01033   virtual void print(libstoff::DebugStream &o, std::set<StarAttribute const *> &done) const;
01034 
01035 protected:
01037   virtual void addTo(StarState &state, std::set<StarAttribute const *> &done) const;
01039   virtual bool send(STOFFListenerPtr listener, StarState &state, std::set<StarAttribute const *> &done) const;
01040 
01042   StarAttributeItemSet(StarAttributeItemSet const &orig) : StarAttribute(orig), m_limits(orig.m_limits), m_itemSet()
01043   {
01044   }
01046   std::vector<STOFFVec2i> m_limits;
01048   StarItemSet m_itemSet;
01049 };
01050 
01052 class StarAttributeVoid : public StarAttribute
01053 {
01054 public:
01056   StarAttributeVoid(Type type, std::string const &debugName) : StarAttribute(type, debugName)
01057   {
01058   }
01060   virtual shared_ptr<StarAttribute> create() const
01061   {
01062     return shared_ptr<StarAttribute>(new StarAttributeVoid(*this));
01063   }
01065   virtual bool read(StarZone &zone, int vers, long endPos, StarObject &object);
01066 };
01067 
01073 class StarAttributeManager
01074 {
01075 public:
01077   StarAttributeManager();
01079   virtual ~StarAttributeManager();
01080 
01081 
01083   shared_ptr<StarAttribute> readAttribute(StarZone &zone, int which, int vers, long endPos, StarObject &document);
01085   shared_ptr<StarAttribute> getDefaultAttribute(int which);
01087   static shared_ptr<StarAttribute> getDummyAttribute(int type=-1);
01088 
01089 protected:
01090   //
01091   // data
01092   //
01093 private:
01095   shared_ptr<StarAttributeInternal::State> m_state;
01096 };
01097 #endif
01098 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: