| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef OOX_XLS_STYLESBUFFER_HXX |
| #define OOX_XLS_STYLESBUFFER_HXX |
| |
| #include <com/sun/star/awt/FontDescriptor.hpp> |
| #include <com/sun/star/table/CellHoriJustify.hpp> |
| #include <com/sun/star/table/CellOrientation.hpp> |
| #include <com/sun/star/table/CellVertJustify.hpp> |
| #include <com/sun/star/table/TableBorder.hpp> |
| #include <com/sun/star/util/CellProtection.hpp> |
| #include "oox/drawingml/color.hxx" |
| #include "oox/helper/graphichelper.hxx" |
| #include "oox/helper/refmap.hxx" |
| #include "oox/helper/refvector.hxx" |
| #include "oox/xls/numberformatsbuffer.hxx" |
| |
| namespace com { namespace sun { namespace star { |
| namespace awt { struct FontDescrtiptor; } |
| } } } |
| |
| namespace oox { class PropertySet; } |
| |
| namespace oox { |
| namespace xls { |
| |
| // ============================================================================ |
| |
| const sal_Int32 OOX_COLOR_WINDOWTEXT3 = 24; /// System window text color (BIFF3-BIFF4). |
| const sal_Int32 OOX_COLOR_WINDOWBACK3 = 25; /// System window background color (BIFF3-BIFF4). |
| const sal_Int32 OOX_COLOR_WINDOWTEXT = 64; /// System window text color (BIFF5+). |
| const sal_Int32 OOX_COLOR_WINDOWBACK = 65; /// System window background color (BIFF5+). |
| const sal_Int32 OOX_COLOR_BUTTONBACK = 67; /// System button background color (face color). |
| const sal_Int32 OOX_COLOR_CHWINDOWTEXT = 77; /// System window text color (BIFF8 charts). |
| const sal_Int32 OOX_COLOR_CHWINDOWBACK = 78; /// System window background color (BIFF8 charts). |
| const sal_Int32 OOX_COLOR_CHBORDERAUTO = 79; /// Automatic frame border (BIFF8 charts). |
| const sal_Int32 OOX_COLOR_NOTEBACK = 80; /// Note background color. |
| const sal_Int32 OOX_COLOR_NOTETEXT = 81; /// Note text color. |
| const sal_Int32 OOX_COLOR_FONTAUTO = 0x7FFF; /// Font auto color (system window text color). |
| |
| // ---------------------------------------------------------------------------- |
| |
| const sal_Int16 API_LINE_NONE = 0; |
| const sal_Int16 API_LINE_HAIR = 2; |
| const sal_Int16 API_LINE_THIN = 35; |
| const sal_Int16 API_LINE_MEDIUM = 88; |
| const sal_Int16 API_LINE_THICK = 141; |
| |
| const sal_Int16 API_ESCAPE_NONE = 0; /// No escapement. |
| const sal_Int16 API_ESCAPE_SUPERSCRIPT = 101; /// Superscript: raise characters automatically (magic value 101). |
| const sal_Int16 API_ESCAPE_SUBSCRIPT = -101; /// Subscript: lower characters automatically (magic value -101). |
| |
| const sal_Int8 API_ESCAPEHEIGHT_NONE = 100; /// Relative character height if not escaped. |
| const sal_Int8 API_ESCAPEHEIGHT_DEFAULT = 58; /// Relative character height if escaped. |
| |
| // ============================================================================ |
| |
| /** Special implementation of the GraphicHelper for Excel palette and scheme |
| colors. |
| */ |
| class ExcelGraphicHelper : public GraphicHelper, public WorkbookHelper |
| { |
| public: |
| explicit ExcelGraphicHelper( const WorkbookHelper& rHelper ); |
| |
| /** Derived classes may implement to resolve a scheme color from the passed XML token identifier. */ |
| virtual sal_Int32 getSchemeColor( sal_Int32 nToken ) const; |
| /** Derived classes may implement to resolve a palette index to an RGB color. */ |
| virtual sal_Int32 getPaletteColor( sal_Int32 nPaletteIdx ) const; |
| }; |
| |
| // ============================================================================ |
| |
| class Color : public ::oox::drawingml::Color |
| { |
| public: |
| /** Sets the color to automatic. */ |
| void setAuto(); |
| /** Sets the color to the passed RGB value. */ |
| void setRgb( sal_Int32 nRgbValue, double fTint = 0.0 ); |
| /** Sets the color to the passed theme index. */ |
| void setTheme( sal_Int32 nThemeIdx, double fTint = 0.0 ); |
| /** Sets the color to the passed palette index. */ |
| void setIndexed( sal_Int32 nPaletteIdx, double fTint = 0.0 ); |
| |
| /** Imports the color from the passed attribute list. */ |
| void importColor( const AttributeList& rAttribs ); |
| |
| /** Imports a 64-bit color from the passed binary stream. */ |
| void importColor( SequenceInputStream& rStrm ); |
| /** Imports a 32-bit palette color identifier from the passed BIFF12 stream. */ |
| void importColorId( SequenceInputStream& rStrm ); |
| /** Imports a 32-bit RGBA color value from the passed BIFF12 stream. */ |
| void importColorRgb( SequenceInputStream& rStrm ); |
| |
| /** Imports an 8-bit or 16-bit palette color identifier from the passed BIFF stream. */ |
| void importColorId( BiffInputStream& rStrm, bool b16Bit = true ); |
| /** Imports a 32-bit RGBA color value from the passed BIFF stream. */ |
| void importColorRgb( BiffInputStream& rStrm ); |
| |
| /** Returns true, if the color is set to automatic. */ |
| inline bool isAuto() const { return isPlaceHolder(); } |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| SequenceInputStream& operator>>( SequenceInputStream& rStrm, Color& orColor ); |
| |
| // ============================================================================ |
| |
| /** Stores all colors of the color palette. */ |
| class ColorPalette : public WorkbookHelper |
| { |
| public: |
| /** Constructs the color palette with predefined color values. */ |
| explicit ColorPalette( const WorkbookHelper& rHelper ); |
| |
| /** Appends a new color from the passed attributes. */ |
| void importPaletteColor( const AttributeList& rAttribs ); |
| /** Appends a new color from the passed RGBCOLOR record. */ |
| void importPaletteColor( SequenceInputStream& rStrm ); |
| /** Imports the PALETTE record from the passed stream. */ |
| void importPalette( BiffInputStream& rStrm ); |
| /** Imports a color palette from a UNO sequence in the passed any. */ |
| void importPalette( const ::com::sun::star::uno::Any& rPalette ); |
| |
| /** Rturns the RGB value of the color with the passed index. */ |
| sal_Int32 getColor( sal_Int32 nPaletteIdx ) const; |
| |
| private: |
| /** Appends the passed color. */ |
| void appendColor( sal_Int32 nRGBValue ); |
| |
| private: |
| ::std::vector< sal_Int32 > maColors; /// List of RGB values. |
| size_t mnAppendIndex; /// Index to append a new color. |
| }; |
| |
| // ============================================================================ |
| |
| /** Contains all XML font attributes, e.g. from a font or rPr element. */ |
| struct FontModel |
| { |
| ::rtl::OUString maName; /// Font name. |
| Color maColor; /// Font color. |
| sal_Int32 mnScheme; /// Major/minor scheme font. |
| sal_Int32 mnFamily; /// Font family. |
| sal_Int32 mnCharSet; /// Windows font character set. |
| double mfHeight; /// Font height in points. |
| sal_Int32 mnUnderline; /// Underline style. |
| sal_Int32 mnEscapement; /// Escapement style. |
| bool mbBold; /// True = bold characters. |
| bool mbItalic; /// True = italic characters. |
| bool mbStrikeout; /// True = Strike out characters. |
| bool mbOutline; /// True = outlined characters. |
| bool mbShadow; /// True = shadowed chgaracters. |
| |
| explicit FontModel(); |
| |
| void setBiff12Scheme( sal_uInt8 nScheme ); |
| void setBiffHeight( sal_uInt16 nHeight ); |
| void setBiffWeight( sal_uInt16 nWeight ); |
| void setBiffUnderline( sal_uInt16 nUnderline ); |
| void setBiffEscapement( sal_uInt16 nEscapement ); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Enumerates different types of API font property sets. */ |
| enum FontPropertyType |
| { |
| FONT_PROPTYPE_CELL, /// Font properties in a spreadsheet cell (table::Cell service). |
| FONT_PROPTYPE_TEXT /// Font properties in a text object (text::Text service). |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains used flags for all API font attributes. */ |
| struct ApiFontUsedFlags |
| { |
| bool mbNameUsed; /// True = font name/family/char set are used. |
| bool mbColorUsed; /// True = font color is used. |
| bool mbSchemeUsed; /// True = font scheme is used. |
| bool mbHeightUsed; /// True = font height is used. |
| bool mbUnderlineUsed; /// True = underline style is used. |
| bool mbEscapementUsed; /// True = escapement style is used. |
| bool mbWeightUsed; /// True = font weight (boldness) is used. |
| bool mbPostureUsed; /// True = font posture (italic) is used. |
| bool mbStrikeoutUsed; /// True = strike out style is used. |
| bool mbOutlineUsed; /// True = outline style is used. |
| bool mbShadowUsed; /// True = shadow style is used. |
| |
| explicit ApiFontUsedFlags( bool bAllUsed ); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains API font name, family, and charset for a script type. */ |
| struct ApiScriptFontName |
| { |
| ::rtl::OUString maName; /// Font name. |
| sal_Int16 mnFamily; /// Font family. |
| sal_Int16 mnTextEnc; /// Font text encoding. |
| |
| explicit ApiScriptFontName(); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains all API font attributes. */ |
| struct ApiFontData |
| { |
| typedef ::com::sun::star::awt::FontDescriptor ApiFontDescriptor; |
| |
| ApiScriptFontName maLatinFont; /// Font name for latin scripts. |
| ApiScriptFontName maAsianFont; /// Font name for east-asian scripts. |
| ApiScriptFontName maCmplxFont; /// Font name for complex scripts. |
| ApiFontDescriptor maDesc; /// Font descriptor (height in twips, weight in %). |
| sal_Int32 mnColor; /// Font color. |
| sal_Int16 mnEscapement; /// Escapement style. |
| sal_Int8 mnEscapeHeight; /// Escapement font height. |
| bool mbOutline; /// True = outlined characters. |
| bool mbShadow; /// True = shadowed chgaracters. |
| |
| explicit ApiFontData(); |
| }; |
| |
| // ============================================================================ |
| |
| class Font : public WorkbookHelper |
| { |
| public: |
| explicit Font( const WorkbookHelper& rHelper, bool bDxf ); |
| explicit Font( const WorkbookHelper& rHelper, const FontModel& rModel ); |
| |
| /** Sets font formatting attributes for the passed element. */ |
| void importAttribs( sal_Int32 nElement, const AttributeList& rAttribs ); |
| |
| /** Imports the FONT record from the passed stream. */ |
| void importFont( SequenceInputStream& rStrm ); |
| /** Imports the font name from a DXF record. */ |
| void importDxfName( SequenceInputStream& rStrm ); |
| /** Imports the font color from a DXF record. */ |
| void importDxfColor( SequenceInputStream& rStrm ); |
| /** Imports the font scheme from a DXF record. */ |
| void importDxfScheme( SequenceInputStream& rStrm ); |
| /** Imports the font height from a DXF record. */ |
| void importDxfHeight( SequenceInputStream& rStrm ); |
| /** Imports the font weight from a DXF record. */ |
| void importDxfWeight( SequenceInputStream& rStrm ); |
| /** Imports the font underline style from a DXF record. */ |
| void importDxfUnderline( SequenceInputStream& rStrm ); |
| /** Imports the font escapement style from a DXF record. */ |
| void importDxfEscapement( SequenceInputStream& rStrm ); |
| /** Imports a font style flag from a DXF record. */ |
| void importDxfFlag( sal_Int32 nElement, SequenceInputStream& rStrm ); |
| |
| /** Imports the FONT record from the passed stream. */ |
| void importFont( BiffInputStream& rStrm ); |
| /** Imports the FONTCOLOR record from the passed stream. */ |
| void importFontColor( BiffInputStream& rStrm ); |
| /** Sets the font attributes from the font block of a CFRULE record. */ |
| void importCfRule( BiffInputStream& rStrm ); |
| |
| /** Returns the font model structure. This function can be called before |
| finalizeImport() has been called. */ |
| inline const FontModel& getModel() const { return maModel; } |
| /** Returns the text encoding for strings used with this font. This |
| function can be called before finalizeImport() has been called. */ |
| rtl_TextEncoding getFontEncoding() const; |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns an API font descriptor with own font information. */ |
| const ::com::sun::star::awt::FontDescriptor& getFontDescriptor() const; |
| /** Returns true, if the font requires rich text formatting in Calc. |
| @descr Example: Font escapement is a cell attribute in Excel, but Calc |
| needs an rich text cell for this attribute. */ |
| bool needsRichTextFormat() const; |
| |
| /** Writes all font attributes to the passed property map. */ |
| void writeToPropertyMap( |
| PropertyMap& rPropMap, |
| FontPropertyType ePropType ) const; |
| /** Writes all font attributes to the passed property set. */ |
| void writeToPropertySet( |
| PropertySet& rPropSet, |
| FontPropertyType ePropType ) const; |
| |
| private: |
| /** Reads and sets height and flags. */ |
| void importFontData2( BiffInputStream& rStrm ); |
| /** Reads and sets weight, escapement, underline, family, charset (BIFF5+). */ |
| void importFontData5( BiffInputStream& rStrm ); |
| |
| /** Reads and sets a byte string as font name. */ |
| void importFontName2( BiffInputStream& rStrm ); |
| /** Reads and sets a Unicode string as font name. */ |
| void importFontName8( BiffInputStream& rStrm ); |
| |
| private: |
| FontModel maModel; |
| ApiFontData maApiData; |
| ApiFontUsedFlags maUsedFlags; |
| bool mbDxf; |
| }; |
| |
| typedef ::boost::shared_ptr< Font > FontRef; |
| |
| // ============================================================================ |
| |
| /** Contains all XML cell alignment attributes, e.g. from an alignment element. */ |
| struct AlignmentModel |
| { |
| sal_Int32 mnHorAlign; /// Horizontal alignment. |
| sal_Int32 mnVerAlign; /// Vertical alignment. |
| sal_Int32 mnTextDir; /// CTL text direction. |
| sal_Int32 mnRotation; /// Text rotation angle. |
| sal_Int32 mnIndent; /// Indentation. |
| bool mbWrapText; /// True = multi-line text. |
| bool mbShrink; /// True = shrink to fit cell size. |
| bool mbJustLastLine; /// True = justify last line in block text. |
| |
| explicit AlignmentModel(); |
| |
| /** Sets horizontal alignment from the passed BIFF data. */ |
| void setBiffHorAlign( sal_uInt8 nHorAlign ); |
| /** Sets vertical alignment from the passed BIFF data. */ |
| void setBiffVerAlign( sal_uInt8 nVerAlign ); |
| /** Sets rotation from the passed BIFF text orientation. */ |
| void setBiffTextOrient( sal_uInt8 nTextOrient ); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains all API cell alignment attributes. */ |
| struct ApiAlignmentData |
| { |
| typedef ::com::sun::star::table::CellHoriJustify ApiCellHoriJustify; |
| typedef ::com::sun::star::table::CellVertJustify ApiCellVertJustify; |
| typedef ::com::sun::star::table::CellOrientation ApiCellOrientation; |
| |
| ApiCellHoriJustify meHorJustify; /// Horizontal alignment. |
| ApiCellVertJustify meVerJustify; /// Vertical alignment. |
| ApiCellOrientation meOrientation; /// Normal or stacked text. |
| sal_Int32 mnRotation; /// Text rotation angle. |
| sal_Int16 mnWritingMode; /// CTL text direction. |
| sal_Int16 mnIndent; /// Indentation. |
| bool mbWrapText; /// True = multi-line text. |
| bool mbShrink; /// True = shrink to fit cell size. |
| |
| explicit ApiAlignmentData(); |
| }; |
| |
| bool operator==( const ApiAlignmentData& rLeft, const ApiAlignmentData& rRight ); |
| |
| // ============================================================================ |
| |
| class Alignment : public WorkbookHelper |
| { |
| public: |
| explicit Alignment( const WorkbookHelper& rHelper ); |
| |
| /** Sets all attributes from the alignment element. */ |
| void importAlignment( const AttributeList& rAttribs ); |
| |
| /** Sets the alignment attributes from the passed BIFF12 XF record data. */ |
| void setBiff12Data( sal_uInt32 nFlags ); |
| /** Sets the alignment attributes from the passed BIFF2 XF record data. */ |
| void setBiff2Data( sal_uInt8 nFlags ); |
| /** Sets the alignment attributes from the passed BIFF3 XF record data. */ |
| void setBiff3Data( sal_uInt16 nAlign ); |
| /** Sets the alignment attributes from the passed BIFF4 XF record data. */ |
| void setBiff4Data( sal_uInt16 nAlign ); |
| /** Sets the alignment attributes from the passed BIFF5 XF record data. */ |
| void setBiff5Data( sal_uInt16 nAlign ); |
| /** Sets the alignment attributes from the passed BIFF8 XF record data. */ |
| void setBiff8Data( sal_uInt16 nAlign, sal_uInt16 nMiscAttrib ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns the alignment model structure. */ |
| inline const AlignmentModel& getModel() const { return maModel; } |
| /** Returns the converted API alignment data struct. */ |
| inline const ApiAlignmentData& getApiData() const { return maApiData; } |
| |
| /** Writes all alignment attributes to the passed property map. */ |
| void writeToPropertyMap( PropertyMap& rPropMap ) const; |
| |
| private: |
| AlignmentModel maModel; /// Alignment model data. |
| ApiAlignmentData maApiData; /// Alignment data converted to API constants. |
| }; |
| |
| typedef ::boost::shared_ptr< Alignment > AlignmentRef; |
| |
| // ============================================================================ |
| |
| /** Contains all XML cell protection attributes, e.g. from a protection element. */ |
| struct ProtectionModel |
| { |
| bool mbLocked; /// True = locked against editing. |
| bool mbHidden; /// True = formula is hidden. |
| |
| explicit ProtectionModel(); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains all API cell protection attributes. */ |
| struct ApiProtectionData |
| { |
| typedef ::com::sun::star::util::CellProtection ApiCellProtection; |
| |
| ApiCellProtection maCellProt; |
| |
| explicit ApiProtectionData(); |
| }; |
| |
| bool operator==( const ApiProtectionData& rLeft, const ApiProtectionData& rRight ); |
| |
| // ============================================================================ |
| |
| class Protection : public WorkbookHelper |
| { |
| public: |
| explicit Protection( const WorkbookHelper& rHelper ); |
| |
| /** Sets all attributes from the protection element. */ |
| void importProtection( const AttributeList& rAttribs ); |
| |
| /** Sets the protection attributes from the passed BIFF12 XF record data. */ |
| void setBiff12Data( sal_uInt32 nFlags ); |
| /** Sets the protection attributes from the passed BIFF2 XF record data. */ |
| void setBiff2Data( sal_uInt8 nNumFmt ); |
| /** Sets the protection attributes from the passed BIFF3-BIFF8 XF record data. */ |
| void setBiff3Data( sal_uInt16 nProt ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns the protection model structure. */ |
| inline const ProtectionModel& getModel() const { return maModel; } |
| /** Returns the converted API protection data struct. */ |
| inline const ApiProtectionData& getApiData() const { return maApiData; } |
| |
| /** Writes all protection attributes to the passed property map. */ |
| void writeToPropertyMap( PropertyMap& rPropMap ) const; |
| |
| private: |
| ProtectionModel maModel; /// Protection model data. |
| ApiProtectionData maApiData; /// Protection data converted to API constants. |
| }; |
| |
| typedef ::boost::shared_ptr< Protection > ProtectionRef; |
| |
| // ============================================================================ |
| |
| /** Contains XML attributes of a single border line. */ |
| struct BorderLineModel |
| { |
| Color maColor; /// Borderline color. |
| sal_Int32 mnStyle; /// Border line style. |
| bool mbUsed; /// True = line format used. |
| |
| explicit BorderLineModel( bool bDxf ); |
| |
| /** Sets the passed BIFF line style. */ |
| void setBiffStyle( sal_Int32 nLineStyle ); |
| /** Sets line style and line color from the passed BIFF data. */ |
| void setBiffData( sal_uInt8 nLineStyle, sal_uInt16 nLineColor ); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains XML attributes of a complete cell border. */ |
| struct BorderModel |
| { |
| BorderLineModel maLeft; /// Left line format. |
| BorderLineModel maRight; /// Right line format. |
| BorderLineModel maTop; /// Top line format. |
| BorderLineModel maBottom; /// Bottom line format. |
| BorderLineModel maDiagonal; /// Diagonal line format. |
| bool mbDiagTLtoBR; /// True = top-left to bottom-right on. |
| bool mbDiagBLtoTR; /// True = bottom-left to top-right on. |
| |
| explicit BorderModel( bool bDxf ); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains API attributes of a complete cell border. */ |
| struct ApiBorderData |
| { |
| typedef ::com::sun::star::table::TableBorder ApiTableBorder; |
| typedef ::com::sun::star::table::BorderLine ApiBorderLine; |
| |
| ApiTableBorder maBorder; /// Left/right/top/bottom line format. |
| ApiBorderLine maTLtoBR; /// Diagonal top-left to bottom-right line format. |
| ApiBorderLine maBLtoTR; /// Diagonal bottom-left to top-right line format. |
| bool mbBorderUsed; /// True = left/right/top/bottom line format used. |
| bool mbDiagUsed; /// True = diagonal line format used. |
| |
| explicit ApiBorderData(); |
| |
| /** Returns true, if any of the outer border lines is visible. */ |
| bool hasAnyOuterBorder() const; |
| }; |
| |
| bool operator==( const ApiBorderData& rLeft, const ApiBorderData& rRight ); |
| |
| // ============================================================================ |
| |
| class Border : public WorkbookHelper |
| { |
| public: |
| explicit Border( const WorkbookHelper& rHelper, bool bDxf ); |
| |
| /** Sets global border attributes from the border element. */ |
| void importBorder( const AttributeList& rAttribs ); |
| /** Sets border attributes for the border line with the passed element identifier. */ |
| void importStyle( sal_Int32 nElement, const AttributeList& rAttribs ); |
| /** Sets color attributes for the border line with the passed element identifier. */ |
| void importColor( sal_Int32 nElement, const AttributeList& rAttribs ); |
| |
| /** Imports the BORDER record from the passed stream. */ |
| void importBorder( SequenceInputStream& rStrm ); |
| /** Imports a border from a DXF record from the passed stream. */ |
| void importDxfBorder( sal_Int32 nElement, SequenceInputStream& rStrm ); |
| |
| /** Sets the border attributes from the passed BIFF2 XF record data. */ |
| void setBiff2Data( sal_uInt8 nFlags ); |
| /** Sets the border attributes from the passed BIFF3/BIFF4 XF record data. */ |
| void setBiff3Data( sal_uInt32 nBorder ); |
| /** Sets the border attributes from the passed BIFF5 XF record data. */ |
| void setBiff5Data( sal_uInt32 nBorder, sal_uInt32 nArea ); |
| /** Sets the border attributes from the passed BIFF8 XF record data. */ |
| void setBiff8Data( sal_uInt32 nBorder1, sal_uInt32 nBorder2 ); |
| /** Sets the border attributes from the border block of a CFRULE record. */ |
| void importCfRule( BiffInputStream& rStrm, sal_uInt32 nFlags ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns the border model structure. */ |
| inline const BorderModel& getModel() const { return maModel; } |
| /** Returns the converted API border data struct. */ |
| inline const ApiBorderData& getApiData() const { return maApiData; } |
| |
| /** Writes all border attributes to the passed property map. */ |
| void writeToPropertyMap( PropertyMap& rPropMap ) const; |
| |
| private: |
| /** Returns the border line struct specified by the passed XML token identifier. */ |
| BorderLineModel* getBorderLine( sal_Int32 nElement ); |
| |
| /** Converts border line data to an API struct, returns true, if the line is marked as used. */ |
| bool convertBorderLine( |
| ::com::sun::star::table::BorderLine& rBorderLine, |
| const BorderLineModel& rModel ); |
| |
| private: |
| BorderModel maModel; |
| ApiBorderData maApiData; |
| bool mbDxf; |
| }; |
| |
| typedef ::boost::shared_ptr< Border > BorderRef; |
| |
| // ============================================================================ |
| |
| /** Contains XML pattern fill attributes from the patternFill element. */ |
| struct PatternFillModel |
| { |
| Color maPatternColor; /// Pattern foreground color. |
| Color maFillColor; /// Background fill color. |
| sal_Int32 mnPattern; /// Pattern identifier (e.g. solid). |
| bool mbPattColorUsed; /// True = pattern foreground color used. |
| bool mbFillColorUsed; /// True = background fill color used. |
| bool mbPatternUsed; /// True = pattern used. |
| |
| explicit PatternFillModel( bool bDxf ); |
| |
| /** Sets the passed BIFF pattern identifier. */ |
| void setBiffPattern( sal_Int32 nPattern ); |
| /** Sets the pattern and pattern colors from the passed BIFF data. */ |
| void setBiffData( sal_uInt16 nPatternColor, sal_uInt16 nFillColor, sal_uInt8 nPattern ); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains XML gradient fill attributes from the gradientFill element. */ |
| struct GradientFillModel |
| { |
| typedef ::std::map< double, Color > ColorMap; |
| |
| sal_Int32 mnType; /// Gradient type, linear or path. |
| double mfAngle; /// Rotation angle for type linear. |
| double mfLeft; /// Left convergence for type path. |
| double mfRight; /// Right convergence for type path. |
| double mfTop; /// Top convergence for type path. |
| double mfBottom; /// Bottom convergence for type path. |
| ColorMap maColors; /// Gradient colors. |
| |
| explicit GradientFillModel(); |
| |
| /** Reads BIFF12 gradient settings from a FILL or DXF record. */ |
| void readGradient( SequenceInputStream& rStrm ); |
| /** Reads BIFF12 gradient stop settings from a FILL or DXF record. */ |
| void readGradientStop( SequenceInputStream& rStrm, bool bDxf ); |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** Contains API fill attributes. */ |
| struct ApiSolidFillData |
| { |
| sal_Int32 mnColor; /// Fill color. |
| bool mbTransparent; /// True = transparent area. |
| bool mbUsed; /// True = fill data is valid. |
| |
| explicit ApiSolidFillData(); |
| }; |
| |
| bool operator==( const ApiSolidFillData& rLeft, const ApiSolidFillData& rRight ); |
| |
| // ============================================================================ |
| |
| /** Contains cell fill attributes, either a pattern fill or a gradient fill. */ |
| class Fill : public WorkbookHelper |
| { |
| public: |
| explicit Fill( const WorkbookHelper& rHelper, bool bDxf ); |
| |
| /** Sets attributes of a patternFill element. */ |
| void importPatternFill( const AttributeList& rAttribs ); |
| /** Sets the pattern color from the fgColor element. */ |
| void importFgColor( const AttributeList& rAttribs ); |
| /** Sets the background color from the bgColor element. */ |
| void importBgColor( const AttributeList& rAttribs ); |
| /** Sets attributes of a gradientFill element. */ |
| void importGradientFill( const AttributeList& rAttribs ); |
| /** Sets a color from the color element in a gradient fill. */ |
| void importColor( const AttributeList& rAttribs, double fPosition ); |
| |
| /** Imports the FILL record from the passed stream. */ |
| void importFill( SequenceInputStream& rStrm ); |
| /** Imports the fill pattern from a DXF record. */ |
| void importDxfPattern( SequenceInputStream& rStrm ); |
| /** Imports the pattern color from a DXF record. */ |
| void importDxfFgColor( SequenceInputStream& rStrm ); |
| /** Imports the background color from a DXF record. */ |
| void importDxfBgColor( SequenceInputStream& rStrm ); |
| /** Imports gradient settings from a DXF record. */ |
| void importDxfGradient( SequenceInputStream& rStrm ); |
| /** Imports gradient stop settings from a DXF record. */ |
| void importDxfStop( SequenceInputStream& rStrm ); |
| |
| /** Sets the fill attributes from the passed BIFF2 XF record data. */ |
| void setBiff2Data( sal_uInt8 nFlags ); |
| /** Sets the fill attributes from the passed BIFF3/BIFF4 XF record data. */ |
| void setBiff3Data( sal_uInt16 nArea ); |
| /** Sets the fill attributes from the passed BIFF5 XF record data. */ |
| void setBiff5Data( sal_uInt32 nArea ); |
| /** Sets the fill attributes from the passed BIFF8 XF record data. */ |
| void setBiff8Data( sal_uInt32 nBorder2, sal_uInt16 nArea ); |
| /** Sets the fill attributes from the fill block of a CFRULE record. */ |
| void importCfRule( BiffInputStream& rStrm, sal_uInt32 nFlags ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns the fill pattern model structure, if extant. */ |
| inline const PatternFillModel* getPatternModel() const { return mxPatternModel.get(); } |
| /** Returns the fill gradient model structure, if extant. */ |
| inline const GradientFillModel* getGradientModel() const { return mxGradientModel.get(); } |
| /** Returns the converted API fill data struct. */ |
| inline const ApiSolidFillData& getApiData() const { return maApiData; } |
| |
| /** Writes all fill attributes to the passed property map. */ |
| void writeToPropertyMap( PropertyMap& rPropMap ) const; |
| |
| private: |
| typedef ::boost::shared_ptr< PatternFillModel > PatternModelRef; |
| typedef ::boost::shared_ptr< GradientFillModel > GradientModelRef; |
| |
| PatternModelRef mxPatternModel; |
| GradientModelRef mxGradientModel; |
| ApiSolidFillData maApiData; |
| bool mbDxf; |
| }; |
| |
| typedef ::boost::shared_ptr< Fill > FillRef; |
| |
| // ============================================================================ |
| |
| /** Contains all data for a cell format or cell style. */ |
| struct XfModel |
| { |
| sal_Int32 mnStyleXfId; /// Index to parent style XF. |
| sal_Int32 mnFontId; /// Index to font data list. |
| sal_Int32 mnNumFmtId; /// Index to number format list. |
| sal_Int32 mnBorderId; /// Index to list of cell borders. |
| sal_Int32 mnFillId; /// Index to list of cell areas. |
| bool mbCellXf; /// True = cell XF, false = style XF. |
| bool mbFontUsed; /// True = font index used. |
| bool mbNumFmtUsed; /// True = number format used. |
| bool mbAlignUsed; /// True = alignment used. |
| bool mbProtUsed; /// True = cell protection used. |
| bool mbBorderUsed; /// True = border data used. |
| bool mbAreaUsed; /// True = area data used. |
| |
| explicit XfModel(); |
| }; |
| |
| // ============================================================================ |
| |
| /** Represents a cell format or a cell style (called XF, extended format). |
| |
| This class stores the type (cell/style), the index to the parent style (if |
| it is a cell format) and all "attribute used" flags, which reflect the |
| state of specific attribute groups (true = user has changed the attributes) |
| and all formatting data. |
| */ |
| class Xf : public WorkbookHelper |
| { |
| public: |
| explicit Xf( const WorkbookHelper& rHelper ); |
| |
| /** Sets all "attribute used" flags to the passed state. */ |
| void setAllUsedFlags( bool bUsed ); |
| |
| /** Sets all attributes from the xf element. */ |
| void importXf( const AttributeList& rAttribs, bool bCellXf ); |
| /** Sets all attributes from the alignment element. */ |
| void importAlignment( const AttributeList& rAttribs ); |
| /** Sets all attributes from the protection element. */ |
| void importProtection( const AttributeList& rAttribs ); |
| |
| /** Imports the XF record from the passed stream. */ |
| void importXf( SequenceInputStream& rStrm, bool bCellXf ); |
| |
| /** Imports the XF record from the passed stream. */ |
| void importXf( BiffInputStream& rStrm ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns true, if the XF is a cell XF, and false, if it is a style XF. */ |
| inline bool isCellXf() const { return maModel.mbCellXf; } |
| |
| /** Returns the referred font object. */ |
| FontRef getFont() const; |
| /** Returns the alignment data of this style. */ |
| inline const Alignment& getAlignment() const { return maAlignment; } |
| /** Returns the cell protection data of this style. */ |
| inline const Protection& getProtection() const { return maProtection; } |
| /** Returns true, if any "attribute used" flags are ste in this XF. */ |
| bool hasAnyUsedFlags() const; |
| |
| /** Writes all formatting attributes to the passed property map. */ |
| void writeToPropertyMap( PropertyMap& rPropMap ) const; |
| /** Writes all formatting attributes to the passed property set. */ |
| void writeToPropertySet( PropertySet& rPropSet ) const; |
| |
| /** Converts formatting information from BIFF2 cell record data directly. */ |
| static void writeBiff2CellFormatToPropertySet( |
| const WorkbookHelper& rHelper, PropertySet& rPropSet, |
| sal_uInt8 nFlags1, sal_uInt8 nFlags2, sal_uInt8 nFlags3 ); |
| |
| private: |
| /** Sets 'attribute used' flags from the passed BIFF bit field. */ |
| void setBiffUsedFlags( sal_uInt8 nUsedFlags ); |
| |
| private: |
| XfModel maModel; /// Cell XF or style XF model data. |
| Alignment maAlignment; /// Cell alignment data. |
| Protection maProtection; /// Cell protection data. |
| ::com::sun::star::table::CellVertJustify |
| meRotationRef; /// Rotation reference dependent on border. |
| }; |
| |
| typedef ::boost::shared_ptr< Xf > XfRef; |
| |
| // ============================================================================ |
| |
| class Dxf : public WorkbookHelper |
| { |
| public: |
| explicit Dxf( const WorkbookHelper& rHelper ); |
| |
| /** Creates a new empty font object. */ |
| FontRef createFont( bool bAlwaysNew = true ); |
| /** Creates a new empty border object. */ |
| BorderRef createBorder( bool bAlwaysNew = true ); |
| /** Creates a new empty fill object. */ |
| FillRef createFill( bool bAlwaysNew = true ); |
| |
| /** Inserts a new number format code. */ |
| void importNumFmt( const AttributeList& rAttribs ); |
| /** Sets all attributes from the alignment element. */ |
| void importAlignment( const AttributeList& rAttribs ); |
| /** Sets all attributes from the protection element. */ |
| void importProtection( const AttributeList& rAttribs ); |
| |
| /** Imports the DXF record from the passed stream. */ |
| void importDxf( SequenceInputStream& rStrm ); |
| |
| /** Imports font, border, and fill settings from the CFRULE record. */ |
| void importCfRule( BiffInputStream& rStrm, sal_uInt32 nFlags ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Writes all formatting attributes to the passed property map. */ |
| void writeToPropertyMap( PropertyMap& rPropMap ) const; |
| /** Writes all formatting attributes to the passed property set. */ |
| void writeToPropertySet( PropertySet& rPropSet ) const; |
| |
| private: |
| FontRef mxFont; /// Font data. |
| NumberFormatRef mxNumFmt; /// Number format data. |
| AlignmentRef mxAlignment; /// Alignment data. |
| ProtectionRef mxProtection; /// Protection data. |
| BorderRef mxBorder; /// Border data. |
| FillRef mxFill; /// Fill data. |
| }; |
| |
| typedef ::boost::shared_ptr< Dxf > DxfRef; |
| |
| // ============================================================================ |
| |
| /** Contains attributes of a cell style, e.g. from the cellStyle element. */ |
| struct CellStyleModel |
| { |
| ::rtl::OUString maName; /// Cell style name. |
| sal_Int32 mnXfId; /// Formatting for this cell style. |
| sal_Int32 mnBuiltinId; /// Identifier for builtin styles. |
| sal_Int32 mnLevel; /// Level for builtin column/row styles. |
| bool mbBuiltin; /// True = builtin style. |
| bool mbCustom; /// True = customized builtin style. |
| bool mbHidden; /// True = style not visible in GUI. |
| |
| explicit CellStyleModel(); |
| |
| /** Returns true, if this style is a builtin style. */ |
| bool isBuiltin() const; |
| /** Returns true, if this style represents the default document cell style. */ |
| bool isDefaultStyle() const; |
| }; |
| |
| // ============================================================================ |
| |
| class CellStyle : public WorkbookHelper |
| { |
| public: |
| explicit CellStyle( const WorkbookHelper& rHelper ); |
| |
| /** Imports passed attributes from the cellStyle element. */ |
| void importCellStyle( const AttributeList& rAttribs ); |
| /** Imports style settings from a CELLSTYLE record. */ |
| void importCellStyle( SequenceInputStream& rStrm ); |
| /** Imports style settings from a STYLE record. */ |
| void importStyle( BiffInputStream& rStrm ); |
| |
| /** Creates the style sheet in the document described by this cell style object. */ |
| void createCellStyle(); |
| /** Stores tha passed final style name and creates the cell style, if it is |
| user-defined or modified built-in. */ |
| void finalizeImport( const ::rtl::OUString& rFinalName ); |
| |
| /** Returns the cell style model structure. */ |
| inline const CellStyleModel& getModel() const { return maModel; } |
| /** Returns the final style name used in the document. */ |
| inline const ::rtl::OUString& getFinalStyleName() const { return maFinalName; } |
| |
| private: |
| CellStyleModel maModel; |
| ::rtl::OUString maFinalName; /// Final style name used in API. |
| bool mbCreated; /// True = style sheet created. |
| }; |
| |
| typedef ::boost::shared_ptr< CellStyle > CellStyleRef; |
| |
| // ============================================================================ |
| |
| class CellStyleBuffer : public WorkbookHelper |
| { |
| public: |
| explicit CellStyleBuffer( const WorkbookHelper& rHelper ); |
| |
| /** Appends and returns a new named cell style object. */ |
| CellStyleRef importCellStyle( const AttributeList& rAttribs ); |
| /** Imports the CELLSTYLE record from the passed stream. */ |
| CellStyleRef importCellStyle( SequenceInputStream& rStrm ); |
| /** Imports the STYLE record from the passed stream. */ |
| CellStyleRef importStyle( BiffInputStream& rStrm ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns the XF identifier associated to the default cell style. */ |
| sal_Int32 getDefaultXfId() const; |
| /** Returns the default style sheet for unused cells. */ |
| ::rtl::OUString getDefaultStyleName() const; |
| /** Creates the style sheet described by the style XF with the passed identifier. */ |
| ::rtl::OUString createCellStyle( sal_Int32 nXfId ) const; |
| |
| private: |
| /** Inserts the passed cell style object into the internal maps. */ |
| void insertCellStyle( CellStyleRef xCellStyle ); |
| /** Creates the style sheet described by the passed cell style object. */ |
| ::rtl::OUString createCellStyle( const CellStyleRef& rxCellStyle ) const; |
| |
| private: |
| typedef RefVector< CellStyle > CellStyleVector; |
| typedef RefMap< sal_Int32, CellStyle > CellStyleXfIdMap; |
| |
| CellStyleVector maBuiltinStyles; /// All built-in cell styles. |
| CellStyleVector maUserStyles; /// All user defined cell styles. |
| CellStyleXfIdMap maStylesByXf; /// All cell styles, mapped by XF identifier. |
| CellStyleRef mxDefStyle; /// Default cell style. |
| }; |
| |
| // ============================================================================ |
| |
| struct AutoFormatModel |
| { |
| sal_Int32 mnAutoFormatId; /// Index of predefined autoformatting. |
| bool mbApplyNumFmt; /// True = apply number format from autoformatting. |
| bool mbApplyFont; /// True = apply font from autoformatting. |
| bool mbApplyAlignment; /// True = apply alignment from autoformatting. |
| bool mbApplyBorder; /// True = apply border from autoformatting. |
| bool mbApplyFill; /// True = apply fill from autoformatting. |
| bool mbApplyProtection; /// True = apply protection from autoformatting. |
| |
| explicit AutoFormatModel(); |
| }; |
| |
| // ============================================================================ |
| |
| class StylesBuffer : public WorkbookHelper |
| { |
| public: |
| explicit StylesBuffer( const WorkbookHelper& rHelper ); |
| |
| /** Creates a new empty font object. |
| @param opnFontId (out-param) The identifier of the new font object. */ |
| FontRef createFont( sal_Int32* opnFontId = 0 ); |
| /** Creates a number format. */ |
| NumberFormatRef createNumFmt( sal_Int32 nNumFmtId, const ::rtl::OUString& rFmtCode ); |
| /** Creates a new empty border object. |
| @param opnBorderId (out-param) The identifier of the new border object. */ |
| BorderRef createBorder( sal_Int32* opnBorderId = 0 ); |
| /** Creates a new empty fill object. |
| @param opnFillId (out-param) The identifier of the new fill object. */ |
| FillRef createFill( sal_Int32* opnFillId = 0 ); |
| /** Creates a new empty cell formatting object. |
| @param opnXfId (out-param) The identifier of the new XF object. */ |
| XfRef createCellXf( sal_Int32* opnXfId = 0 ); |
| /** Creates a new empty style formatting object. |
| @param opnXfId (out-param) The identifier of the new XF object. */ |
| XfRef createStyleXf( sal_Int32* opnXfId = 0 ); |
| /** Creates a new empty differential formatting object. |
| @param opnDxfId (out-param) The identifier of the new DXF object. */ |
| DxfRef createDxf( sal_Int32* opnDxfId = 0 ); |
| |
| /** Appends a new color to the color palette. */ |
| void importPaletteColor( const AttributeList& rAttribs ); |
| /** Inserts a new number format code. */ |
| NumberFormatRef importNumFmt( const AttributeList& rAttribs ); |
| /** Appends and returns a new named cell style object. */ |
| CellStyleRef importCellStyle( const AttributeList& rAttribs ); |
| |
| /** Appends a new color to the color palette. */ |
| void importPaletteColor( SequenceInputStream& rStrm ); |
| /** Imports the NUMFMT record from the passed stream. */ |
| void importNumFmt( SequenceInputStream& rStrm ); |
| /** Imports the CELLSTYLE record from the passed stream. */ |
| void importCellStyle( SequenceInputStream& rStrm ); |
| |
| /** Imports the PALETTE record from the passed stream. */ |
| void importPalette( BiffInputStream& rStrm ); |
| /** Imports the FONT record from the passed stream. */ |
| void importFont( BiffInputStream& rStrm ); |
| /** Imports the FONTCOLOR record from the passed stream. */ |
| void importFontColor( BiffInputStream& rStrm ); |
| /** Imports the FORMAT record from the passed stream. */ |
| void importFormat( BiffInputStream& rStrm ); |
| /** Imports the XF record from the passed stream. */ |
| void importXf( BiffInputStream& rStrm ); |
| /** Imports the STYLE record from the passed stream. */ |
| void importStyle( BiffInputStream& rStrm ); |
| |
| /** Imports a color palette from a UNO sequence in the passed any. */ |
| void importPalette( const ::com::sun::star::uno::Any& rPalette ); |
| |
| /** Final processing after import of all style settings. */ |
| void finalizeImport(); |
| |
| /** Returns the palette color with the specified index. */ |
| sal_Int32 getPaletteColor( sal_Int32 nIndex ) const; |
| /** Returns the specified font object. */ |
| FontRef getFont( sal_Int32 nFontId ) const; |
| /** Returns the specified border object. */ |
| BorderRef getBorder( sal_Int32 nBorderId ) const; |
| /** Returns the specified cell format object. */ |
| XfRef getCellXf( sal_Int32 nXfId ) const; |
| /** Returns the specified style format object. */ |
| XfRef getStyleXf( sal_Int32 nXfId ) const; |
| /** Returns the specified diferential cell format object. */ |
| DxfRef getDxf( sal_Int32 nDxfId ) const; |
| |
| /** Returns the font object of the specified cell XF. */ |
| FontRef getFontFromCellXf( sal_Int32 nXfId ) const; |
| /** Returns the default application font (used in the "Normal" cell style). */ |
| FontRef getDefaultFont() const; |
| /** Returns the model of the default application font (used in the "Normal" cell style). */ |
| const FontModel& getDefaultFontModel() const; |
| |
| /** Returns true, if the specified borders are equal. */ |
| bool equalBorders( sal_Int32 nBorderId1, sal_Int32 nBorderId2 ) const; |
| /** Returns true, if the specified fills are equal. */ |
| bool equalFills( sal_Int32 nFillId1, sal_Int32 nFillId2 ) const; |
| |
| /** Returns the default style sheet for unused cells. */ |
| ::rtl::OUString getDefaultStyleName() const; |
| /** Creates the style sheet described by the style XF with the passed identifier. */ |
| ::rtl::OUString createCellStyle( sal_Int32 nXfId ) const; |
| /** Creates the style sheet described by the DXF with the passed identifier. */ |
| ::rtl::OUString createDxfStyle( sal_Int32 nDxfId ) const; |
| |
| /** Writes the font attributes of the specified font data to the passed property map. */ |
| void writeFontToPropertyMap( PropertyMap& rPropMap, sal_Int32 nFontId ) const; |
| /** Writes the specified number format to the passed property map. */ |
| void writeNumFmtToPropertyMap( PropertyMap& rPropMap, sal_Int32 nNumFmtId ) const; |
| /** Writes the border attributes of the specified border data to the passed property map. */ |
| void writeBorderToPropertyMap( PropertyMap& rPropMap, sal_Int32 nBorderId ) const; |
| /** Writes the fill attributes of the specified fill data to the passed property map. */ |
| void writeFillToPropertyMap( PropertyMap& rPropMap, sal_Int32 nFillId ) const; |
| /** Writes the cell formatting attributes of the specified XF to the passed property map. */ |
| void writeCellXfToPropertyMap( PropertyMap& rPropMap, sal_Int32 nXfId ) const; |
| /** Writes the cell formatting attributes of the specified style XF to the passed property map. */ |
| void writeStyleXfToPropertyMap( PropertyMap& rPropMap, sal_Int32 nXfId ) const; |
| |
| /** Writes the cell formatting attributes of the specified XF to the passed property set. */ |
| void writeCellXfToPropertySet( PropertySet& rPropSet, sal_Int32 nXfId ) const; |
| /** Writes the cell formatting attributes of the specified style XF to the passed property set. */ |
| void writeStyleXfToPropertySet( PropertySet& rPropSet, sal_Int32 nXfId ) const; |
| |
| private: |
| typedef RefVector< Font > FontVector; |
| typedef RefVector< Border > BorderVector; |
| typedef RefVector< Fill > FillVector; |
| typedef RefVector< Xf > XfVector; |
| typedef RefVector< Dxf > DxfVector; |
| typedef ::std::map< sal_Int32, ::rtl::OUString > DxfStyleMap; |
| |
| ColorPalette maPalette; /// Color palette. |
| FontVector maFonts; /// List of font objects. |
| NumberFormatsBuffer maNumFmts; /// List of all number format codes. |
| BorderVector maBorders; /// List of cell border objects. |
| FillVector maFills; /// List of cell area fill objects. |
| XfVector maCellXfs; /// List of cell formats. |
| XfVector maStyleXfs; /// List of cell styles. |
| CellStyleBuffer maCellStyles; /// All built-in and user defined cell styles. |
| DxfVector maDxfs; /// List of differential cell styles. |
| mutable DxfStyleMap maDxfStyles; /// Maps DXF identifiers to Calc style sheet names. |
| }; |
| |
| // ============================================================================ |
| |
| } // namespace xls |
| } // namespace oox |
| |
| #endif |