LCOV - code coverage report
Current view: top level - sc/source/filter/inc - stylesbuffer.hxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 33 35 94.3 %
Date: 2015-06-13 12:38:46 Functions: 47 55 85.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef INCLUDED_SC_SOURCE_FILTER_INC_STYLESBUFFER_HXX
      21             : #define INCLUDED_SC_SOURCE_FILTER_INC_STYLESBUFFER_HXX
      22             : 
      23             : #include <com/sun/star/awt/FontDescriptor.hpp>
      24             : #include <com/sun/star/table/CellHoriJustify.hpp>
      25             : #include <com/sun/star/table/CellOrientation.hpp>
      26             : #include <com/sun/star/table/CellVertJustify2.hpp>
      27             : #include <com/sun/star/table/BorderLine2.hpp>
      28             : #include <com/sun/star/util/CellProtection.hpp>
      29             : #include <oox/drawingml/color.hxx>
      30             : #include <oox/helper/graphichelper.hxx>
      31             : #include <oox/helper/refmap.hxx>
      32             : #include <oox/helper/refvector.hxx>
      33             : #include "numberformatsbuffer.hxx"
      34             : #include "patattr.hxx"
      35             : #include "stlsheet.hxx"
      36             : #include <editeng/svxenum.hxx>
      37             : #include <editeng/frmdir.hxx>
      38             : #include "attarray.hxx"
      39             : #include <list>
      40             : 
      41             : class ScMarkData;
      42             : namespace com { namespace sun { namespace star {
      43             :     namespace awt { struct FontDescrtiptor; }
      44             : } } }
      45             : 
      46             : namespace oox { class PropertySet; }
      47             : 
      48             : namespace oox {
      49             : namespace xls {
      50             : 
      51             : const sal_Int32 OOX_COLOR_WINDOWTEXT3       = 24;       /// System window text color (BIFF3-BIFF4).
      52             : const sal_Int32 OOX_COLOR_WINDOWBACK3       = 25;       /// System window background color (BIFF3-BIFF4).
      53             : const sal_Int32 OOX_COLOR_WINDOWTEXT        = 64;       /// System window text color (BIFF5+).
      54             : const sal_Int32 OOX_COLOR_WINDOWBACK        = 65;       /// System window background color (BIFF5+).
      55             : const sal_Int32 OOX_COLOR_BUTTONBACK        = 67;       /// System button background color (face color).
      56             : const sal_Int32 OOX_COLOR_CHWINDOWTEXT      = 77;       /// System window text color (BIFF8 charts).
      57             : const sal_Int32 OOX_COLOR_CHWINDOWBACK      = 78;       /// System window background color (BIFF8 charts).
      58             : const sal_Int32 OOX_COLOR_CHBORDERAUTO      = 79;       /// Automatic frame border (BIFF8 charts).
      59             : const sal_Int32 OOX_COLOR_NOTEBACK          = 80;       /// Note background color.
      60             : const sal_Int32 OOX_COLOR_NOTETEXT          = 81;       /// Note text color.
      61             : const sal_Int32 OOX_COLOR_FONTAUTO          = 0x7FFF;   /// Font auto color (system window text color).
      62             : 
      63             : const sal_Int16 API_LINE_NONE               = 0;
      64             : const sal_Int16 API_LINE_HAIR               = 1;
      65             : const sal_Int16 API_LINE_THIN               = 15;
      66             : const sal_Int16 API_LINE_MEDIUM             = 35;
      67             : const sal_Int16 API_LINE_THICK              = 50;
      68             : 
      69             : const sal_Int16 API_ESCAPE_NONE             = 0;        /// No escapement.
      70             : const sal_Int16 API_ESCAPE_SUPERSCRIPT      = 101;      /// Superscript: raise characters automatically (magic value 101).
      71             : const sal_Int16 API_ESCAPE_SUBSCRIPT        = -101;     /// Subscript: lower characters automatically (magic value -101).
      72             : 
      73             : const sal_Int8 API_ESCAPEHEIGHT_NONE        = 100;      /// Relative character height if not escaped.
      74             : const sal_Int8 API_ESCAPEHEIGHT_DEFAULT     = 58;       /// Relative character height if escaped.
      75             : 
      76             : /** Special implementation of the GraphicHelper for Excel palette and scheme
      77             :     colors.
      78             :  */
      79         290 : class ExcelGraphicHelper : public GraphicHelper, public WorkbookHelper
      80             : {
      81             : public:
      82             :     explicit            ExcelGraphicHelper( const WorkbookHelper& rHelper );
      83             : 
      84             :     /** Derived classes may implement to resolve a scheme color from the passed XML token identifier. */
      85             :     virtual sal_Int32   getSchemeColor( sal_Int32 nToken ) const SAL_OVERRIDE;
      86             :     /** Derived classes may implement to resolve a palette index to an RGB color. */
      87             :     virtual sal_Int32   getPaletteColor( sal_Int32 nPaletteIdx ) const SAL_OVERRIDE;
      88             : };
      89             : 
      90        5974 : class Color : public ::oox::drawingml::Color
      91             : {
      92             : public:
      93             :     /** Sets the color to automatic. */
      94             :     void                setAuto();
      95             :     /** Sets the color to the passed RGB value. */
      96             :     void                setRgb( sal_Int32 nRgbValue, double fTint = 0.0 );
      97             :     /** Sets the color to the passed theme index. */
      98             :     void                setTheme( sal_Int32 nThemeIdx, double fTint = 0.0 );
      99             :     /** Sets the color to the passed palette index. */
     100             :     void                setIndexed( sal_Int32 nPaletteIdx, double fTint = 0.0 );
     101             : 
     102             :     /** Imports the color from the passed attribute list. */
     103             :     void                importColor( const AttributeList& rAttribs );
     104             : 
     105             :     /** Imports a 64-bit color from the passed binary stream. */
     106             :     void                importColor( SequenceInputStream& rStrm );
     107             :     /** Imports a 32-bit palette color identifier from the passed BIFF12 stream. */
     108             :     void                importColorId( SequenceInputStream& rStrm );
     109             : 
     110             :     /** Returns true, if the color is set to automatic. */
     111         269 :     inline bool         isAuto() const { return isPlaceHolder(); }
     112             : };
     113             : 
     114             : SequenceInputStream& operator>>( SequenceInputStream& rStrm, Color& orColor );
     115             : 
     116             : /** Stores all colors of the color palette. */
     117         145 : class ColorPalette : public WorkbookHelper
     118             : {
     119             : public:
     120             :     /** Constructs the color palette with predefined color values. */
     121             :     explicit            ColorPalette( const WorkbookHelper& rHelper );
     122             : 
     123             :     /** Appends a new color from the passed attributes. */
     124             :     void                importPaletteColor( const AttributeList& rAttribs );
     125             :     /** Appends a new color from the passed RGBCOLOR record. */
     126             :     void                importPaletteColor( SequenceInputStream& rStrm );
     127             : 
     128             :     /** Rturns the RGB value of the color with the passed index. */
     129             :     sal_Int32           getColor( sal_Int32 nPaletteIdx ) const;
     130             : 
     131             : private:
     132             :     /** Appends the passed color. */
     133             :     void                appendColor( sal_Int32 nRGBValue );
     134             : 
     135             : private:
     136             :     ::std::vector< sal_Int32 > maColors;    /// List of RGB values.
     137             :     size_t              mnAppendIndex;      /// Index to append a new color.
     138             : };
     139             : 
     140             : /** Contains all XML font attributes, e.g. from a font or rPr element. */
     141        1370 : struct FontModel
     142             : {
     143             :     OUString     maName;             /// Font name.
     144             :     Color               maColor;            /// Font color.
     145             :     sal_Int32           mnScheme;           /// Major/minor scheme font.
     146             :     sal_Int32           mnFamily;           /// Font family.
     147             :     sal_Int32           mnCharSet;          /// Windows font character set.
     148             :     double              mfHeight;           /// Font height in points.
     149             :     sal_Int32           mnUnderline;        /// Underline style.
     150             :     sal_Int32           mnEscapement;       /// Escapement style.
     151             :     bool                mbBold;             /// True = bold characters.
     152             :     bool                mbItalic;           /// True = italic characters.
     153             :     bool                mbStrikeout;        /// True = Strike out characters.
     154             :     bool                mbOutline;          /// True = outlined characters.
     155             :     bool                mbShadow;           /// True = shadowed chgaracters.
     156             : 
     157             :     explicit            FontModel();
     158             : 
     159             :     void                setBiff12Scheme( sal_uInt8 nScheme );
     160             :     void                setBiffHeight( sal_uInt16 nHeight );
     161             :     void                setBiffWeight( sal_uInt16 nWeight );
     162             :     void                setBiffUnderline( sal_uInt16 nUnderline );
     163             :     void                setBiffEscapement( sal_uInt16 nEscapement );
     164             : };
     165             : 
     166             : /** Enumerates different types of API font property sets. */
     167             : enum FontPropertyType
     168             : {
     169             :     FONT_PROPTYPE_CELL,             /// Font properties in a spreadsheet cell (table::Cell service).
     170             :     FONT_PROPTYPE_TEXT              /// Font properties in a text object (text::Text service).
     171             : };
     172             : 
     173             : /** Contains used flags for all API font attributes. */
     174             : struct ApiFontUsedFlags
     175             : {
     176             :     bool                mbNameUsed;         /// True = font name/family/char set are used.
     177             :     bool                mbColorUsed;        /// True = font color is used.
     178             :     bool                mbSchemeUsed;       /// True = font scheme is used.
     179             :     bool                mbHeightUsed;       /// True = font height is used.
     180             :     bool                mbUnderlineUsed;    /// True = underline style is used.
     181             :     bool                mbEscapementUsed;   /// True = escapement style is used.
     182             :     bool                mbWeightUsed;       /// True = font weight (boldness) is used.
     183             :     bool                mbPostureUsed;      /// True = font posture (italic) is used.
     184             :     bool                mbStrikeoutUsed;    /// True = strike out style is used.
     185             :     bool                mbOutlineUsed;      /// True = outline style is used.
     186             :     bool                mbShadowUsed;       /// True = shadow style is used.
     187             : 
     188             :     explicit            ApiFontUsedFlags( bool bAllUsed );
     189             : };
     190             : 
     191             : /** Contains API font name, family, and charset for a script type. */
     192        2829 : struct ApiScriptFontName
     193             : {
     194             :     OUString     maName;             /// Font name.
     195             :     sal_Int16           mnFamily;           /// Font family.
     196             :     sal_Int16           mnTextEnc;          /// Font text encoding.
     197             : 
     198             :     explicit            ApiScriptFontName();
     199             : };
     200             : 
     201             : /** Contains all API font attributes. */
     202         497 : struct ApiFontData
     203             : {
     204             :     typedef ::com::sun::star::awt::FontDescriptor ApiFontDescriptor;
     205             : 
     206             :     ApiScriptFontName   maLatinFont;        /// Font name for latin scripts.
     207             :     ApiScriptFontName   maAsianFont;        /// Font name for east-asian scripts.
     208             :     ApiScriptFontName   maCmplxFont;        /// Font name for complex scripts.
     209             :     ApiFontDescriptor   maDesc;             /// Font descriptor (height in twips, weight in %).
     210             :     sal_Int32           mnColor;            /// Font color.
     211             :     sal_Int16           mnEscapement;       /// Escapement style.
     212             :     sal_Int8            mnEscapeHeight;     /// Escapement font height.
     213             :     bool                mbOutline;          /// True = outlined characters.
     214             :     bool                mbShadow;           /// True = shadowed chgaracters.
     215             : 
     216             :     explicit            ApiFontData();
     217             : };
     218             : 
     219         908 : class Font : public WorkbookHelper
     220             : {
     221             : public:
     222             :     explicit            Font( const WorkbookHelper& rHelper, bool bDxf );
     223             :     explicit            Font( const WorkbookHelper& rHelper, const FontModel& rModel );
     224             : 
     225             :     /** Sets font formatting attributes for the passed element. */
     226             :     void                importAttribs( sal_Int32 nElement, const AttributeList& rAttribs );
     227             : 
     228             :     /** Imports the FONT record from the passed stream. */
     229             :     void                importFont( SequenceInputStream& rStrm );
     230             :     /** Imports the font name from a DXF record. */
     231             :     void                importDxfName( SequenceInputStream& rStrm );
     232             :     /** Imports the font color from a DXF record. */
     233             :     void                importDxfColor( SequenceInputStream& rStrm );
     234             :     /** Imports the font scheme from a DXF record. */
     235             :     void                importDxfScheme( SequenceInputStream& rStrm );
     236             :     /** Imports the font height from a DXF record. */
     237             :     void                importDxfHeight( SequenceInputStream& rStrm );
     238             :     /** Imports the font weight from a DXF record. */
     239             :     void                importDxfWeight( SequenceInputStream& rStrm );
     240             :     /** Imports the font underline style from a DXF record. */
     241             :     void                importDxfUnderline( SequenceInputStream& rStrm );
     242             :     /** Imports the font escapement style from a DXF record. */
     243             :     void                importDxfEscapement( SequenceInputStream& rStrm );
     244             :     /** Imports a font style flag from a DXF record. */
     245             :     void                importDxfFlag( sal_Int32 nElement, SequenceInputStream& rStrm );
     246             : 
     247             :     /** Returns the font model structure. This function can be called before
     248             :         finalizeImport() has been called. */
     249          86 :     inline const FontModel& getModel() const { return maModel; }
     250             : 
     251             :     /** Final processing after import of all style settings. */
     252             :     void                finalizeImport();
     253             : 
     254             :     /** Returns an API font descriptor with own font information. */
     255         145 :     const ::com::sun::star::awt::FontDescriptor& getFontDescriptor() const { return maApiData.maDesc;}
     256             :     /** Returns true, if the font requires rich text formatting in Calc.
     257             :         @descr  Example: Font escapement is a cell attribute in Excel, but Calc
     258             :         needs an rich text cell for this attribute. */
     259             :     bool                needsRichTextFormat() const;
     260             : 
     261             :     void                fillToItemSet( SfxItemSet& rItemSet, bool bEditEngineText, bool bSkipPoolDefs = false ) const;
     262             :     /** Writes all font attributes to the passed property map. */
     263             :     void                writeToPropertyMap(
     264             :                             PropertyMap& rPropMap,
     265             :                             FontPropertyType ePropType ) const;
     266             :     /** Writes all font attributes to the passed property set. */
     267             :     void                writeToPropertySet(
     268             :                             PropertySet& rPropSet,
     269             :                             FontPropertyType ePropType ) const;
     270             : 
     271             : private:
     272             :     FontModel           maModel;
     273             :     ApiFontData         maApiData;
     274             :     ApiFontUsedFlags    maUsedFlags;
     275             :     bool                mbDxf;
     276             : };
     277             : 
     278             : typedef std::shared_ptr< Font > FontRef;
     279             : 
     280             : /** Contains all XML cell alignment attributes, e.g. from an alignment element. */
     281             : struct AlignmentModel
     282             : {
     283             :     sal_Int32           mnHorAlign;         /// Horizontal alignment.
     284             :     sal_Int32           mnVerAlign;         /// Vertical alignment.
     285             :     sal_Int32           mnTextDir;          /// CTL text direction.
     286             :     sal_Int32           mnRotation;         /// Text rotation angle.
     287             :     sal_Int32           mnIndent;           /// Indentation.
     288             :     bool                mbWrapText;         /// True = multi-line text.
     289             :     bool                mbShrink;           /// True = shrink to fit cell size.
     290             :     bool                mbJustLastLine;     /// True = justify last line in block text.
     291             : 
     292             :     explicit            AlignmentModel();
     293             : 
     294             :     /** Sets horizontal alignment from the passed BIFF data. */
     295             :     void                setBiffHorAlign( sal_uInt8 nHorAlign );
     296             :     /** Sets vertical alignment from the passed BIFF data. */
     297             :     void                setBiffVerAlign( sal_uInt8 nVerAlign );
     298             : };
     299             : 
     300             : /** Contains all API cell alignment attributes. */
     301             : struct ApiAlignmentData
     302             : {
     303             :     typedef ::com::sun::star::table::CellHoriJustify ApiCellHoriJustify;
     304             :     typedef ::com::sun::star::table::CellOrientation ApiCellOrientation;
     305             : 
     306             :     ApiCellHoriJustify  meHorJustify;       /// Horizontal alignment.
     307             :     sal_Int32           mnHorJustifyMethod;
     308             :     sal_Int32           mnVerJustify;       /// Vertical alignment.
     309             :     sal_Int32           mnVerJustifyMethod;
     310             :     ApiCellOrientation  meOrientation;      /// Normal or stacked text.
     311             :     sal_Int32           mnRotation;         /// Text rotation angle.
     312             :     sal_Int16           mnWritingMode;      /// CTL text direction.
     313             :     sal_Int16           mnIndent;           /// Indentation.
     314             :     bool                mbWrapText;         /// True = multi-line text.
     315             :     bool                mbShrink;           /// True = shrink to fit cell size.
     316             : 
     317             :     explicit            ApiAlignmentData();
     318             : };
     319             : 
     320             : bool operator==( const ApiAlignmentData& rLeft, const ApiAlignmentData& rRight );
     321             : 
     322        1598 : class Alignment : public WorkbookHelper
     323             : {
     324             : public:
     325             :     explicit            Alignment( const WorkbookHelper& rHelper );
     326             : 
     327             :     /** Sets all attributes from the alignment element. */
     328             :     void                importAlignment( const AttributeList& rAttribs );
     329             : 
     330             :     /** Sets the alignment attributes from the passed BIFF12 XF record data. */
     331             :     void                setBiff12Data( sal_uInt32 nFlags );
     332             : 
     333             :     /** Final processing after import of all style settings. */
     334             :     void                finalizeImport();
     335             : 
     336             :     /** Returns the alignment model structure. */
     337        4240 :     inline const AlignmentModel& getModel() const { return maModel; }
     338             :     /** Returns the converted API alignment data struct. */
     339         713 :     inline const ApiAlignmentData& getApiData() const { return maApiData; }
     340             : 
     341             :     void                fillToItemSet( SfxItemSet& rItemSet, bool bSkipPoolDefs = false ) const;
     342             :     /** Writes all alignment attributes to the passed property map. */
     343             :     void                writeToPropertyMap( PropertyMap& rPropMap ) const;
     344             : 
     345             : private:
     346             :     ::SvxCellHorJustify GetScHorAlign() const;
     347             :     ::SvxCellVerJustify GetScVerAlign() const;
     348             :     ::SvxFrameDirection GetScFrameDir() const;
     349             :     AlignmentModel      maModel;            /// Alignment model data.
     350             :     ApiAlignmentData    maApiData;          /// Alignment data converted to API constants.
     351             : };
     352             : 
     353             : typedef std::shared_ptr< Alignment > AlignmentRef;
     354             : 
     355             : /** Contains all XML cell protection attributes, e.g. from a protection element. */
     356             : struct ProtectionModel
     357             : {
     358             :     bool                mbLocked;           /// True = locked against editing.
     359             :     bool                mbHidden;           /// True = formula is hidden.
     360             : 
     361             :     explicit            ProtectionModel();
     362             : };
     363             : 
     364             : /** Contains all API cell protection attributes. */
     365             : struct ApiProtectionData
     366             : {
     367             :     typedef ::com::sun::star::util::CellProtection ApiCellProtection;
     368             : 
     369             :     ApiCellProtection   maCellProt;
     370             : 
     371             :     explicit            ApiProtectionData();
     372             : };
     373             : 
     374             : bool operator==( const ApiProtectionData& rLeft, const ApiProtectionData& rRight );
     375             : 
     376        1598 : class Protection : public WorkbookHelper
     377             : {
     378             : public:
     379             :     explicit            Protection( const WorkbookHelper& rHelper );
     380             : 
     381             :     /** Sets all attributes from the protection element. */
     382             :     void                importProtection( const AttributeList& rAttribs );
     383             : 
     384             :     /** Sets the protection attributes from the passed BIFF12 XF record data. */
     385             :     void                setBiff12Data( sal_uInt32 nFlags );
     386             : 
     387             :     /** Final processing after import of all style settings. */
     388             :     void                finalizeImport();
     389             : 
     390             :     /** Returns the protection model structure. */
     391             :     inline const ProtectionModel& getModel() const { return maModel; }
     392             :     /** Returns the converted API protection data struct. */
     393         318 :     inline const ApiProtectionData& getApiData() const { return maApiData; }
     394             : 
     395             :     /** Writes all protection attributes to the passed property map. */
     396             :     void                writeToPropertyMap( PropertyMap& rPropMap ) const;
     397             :     void                fillToItemSet( SfxItemSet& rItemSet, bool bSkipPoolDefs = false ) const;
     398             : private:
     399             :     ProtectionModel     maModel;            /// Protection model data.
     400             :     ApiProtectionData   maApiData;          /// Protection data converted to API constants.
     401             : };
     402             : 
     403             : typedef std::shared_ptr< Protection > ProtectionRef;
     404             : 
     405             : /** Contains XML attributes of a single border line. */
     406        1030 : struct BorderLineModel
     407             : {
     408             :     Color               maColor;            /// Borderline color.
     409             :     sal_Int32           mnStyle;            /// Border line style.
     410             :     bool                mbUsed;             /// True = line format used.
     411             : 
     412             :     explicit            BorderLineModel( bool bDxf );
     413             : 
     414             :     /** Sets the passed BIFF line style. */
     415             :     void                setBiffStyle( sal_Int32 nLineStyle );
     416             : };
     417             : 
     418             : /** Contains XML attributes of a complete cell border. */
     419         206 : struct BorderModel
     420             : {
     421             :     BorderLineModel     maLeft;             /// Left line format.
     422             :     BorderLineModel     maRight;            /// Right line format.
     423             :     BorderLineModel     maTop;              /// Top line format.
     424             :     BorderLineModel     maBottom;           /// Bottom line format.
     425             :     BorderLineModel     maDiagonal;         /// Diagonal line format.
     426             :     bool                mbDiagTLtoBR;       /// True = top-left to bottom-right on.
     427             :     bool                mbDiagBLtoTR;       /// True = bottom-left to top-right on.
     428             : 
     429             :     explicit            BorderModel( bool bDxf );
     430             : };
     431             : 
     432             : /** Contains API attributes of a complete cell border. */
     433             : struct ApiBorderData
     434             : {
     435             :     typedef ::com::sun::star::table::BorderLine2     ApiBorderLine;
     436             : 
     437             :     ApiBorderLine       maLeft;             /// Left line format
     438             :     ApiBorderLine       maRight;            /// Right line format
     439             :     ApiBorderLine       maTop;              /// Top line format
     440             :     ApiBorderLine       maBottom;           /// Bottom line format
     441             :     ApiBorderLine       maTLtoBR;           /// Diagonal top-left to bottom-right line format.
     442             :     ApiBorderLine       maBLtoTR;           /// Diagonal bottom-left to top-right line format.
     443             :     bool                mbBorderUsed;       /// True = left/right/top/bottom line format used.
     444             :     bool                mbDiagUsed;         /// True = diagonal line format used.
     445             : 
     446             :     explicit            ApiBorderData();
     447             : 
     448             :     /** Returns true, if any of the outer border lines is visible. */
     449             :     bool                hasAnyOuterBorder() const;
     450             : };
     451             : 
     452             : bool operator==( const ApiBorderData& rLeft, const ApiBorderData& rRight );
     453             : 
     454         412 : class Border : public WorkbookHelper
     455             : {
     456             : public:
     457             :     explicit            Border( const WorkbookHelper& rHelper, bool bDxf );
     458             : 
     459             :     /** Sets global border attributes from the border element. */
     460             :     void                importBorder( const AttributeList& rAttribs );
     461             :     /** Sets border attributes for the border line with the passed element identifier. */
     462             :     void                importStyle( sal_Int32 nElement, const AttributeList& rAttribs );
     463             :     /** Sets color attributes for the border line with the passed element identifier. */
     464             :     void                importColor( sal_Int32 nElement, const AttributeList& rAttribs );
     465             : 
     466             :     /** Imports the BORDER record from the passed stream. */
     467             :     void                importBorder( SequenceInputStream& rStrm );
     468             :     /** Imports a border from a DXF record from the passed stream. */
     469             :     void                importDxfBorder( sal_Int32 nElement, SequenceInputStream& rStrm );
     470             : 
     471             :     /** Final processing after import of all style settings. */
     472             :     void                finalizeImport( bool bRTL );
     473             : 
     474             :     /** Returns the border model structure. */
     475             :     inline const BorderModel& getModel() const { return maModel; }
     476             :     /** Returns the converted API border data struct. */
     477           1 :     inline const ApiBorderData& getApiData() const { return maApiData; }
     478             : 
     479             :     void fillToItemSet( SfxItemSet& rItemSet, bool bSkipPoolDefs = false ) const;
     480             : 
     481             :     /** Writes all border attributes to the passed property map. */
     482             :     void                writeToPropertyMap( PropertyMap& rPropMap ) const;
     483             : 
     484             :     bool                hasBorder() const;
     485             : 
     486             : private:
     487             :     /** Returns the border line struct specified by the passed XML token identifier. */
     488             :     BorderLineModel*    getBorderLine( sal_Int32 nElement );
     489             : 
     490             :     /** Converts border line data to an API struct, returns true, if the line is marked as used. */
     491             :     bool                convertBorderLine(
     492             :                             ::com::sun::star::table::BorderLine2& rBorderLine,
     493             :                             const BorderLineModel& rModel );
     494             : 
     495             : private:
     496             :     BorderModel         maModel;
     497             :     ApiBorderData       maApiData;
     498             :     bool                mbDxf;
     499             : };
     500             : 
     501             : typedef std::shared_ptr< Border > BorderRef;
     502             : 
     503             : /** Contains XML pattern fill attributes from the patternFill element. */
     504         294 : struct PatternFillModel
     505             : {
     506             :     Color               maPatternColor;     /// Pattern foreground color.
     507             :     Color               maFillColor;        /// Background fill color.
     508             :     sal_Int32           mnPattern;          /// Pattern identifier (e.g. solid).
     509             :     bool                mbPattColorUsed;    /// True = pattern foreground color used.
     510             :     bool                mbFillColorUsed;    /// True = background fill color used.
     511             :     bool                mbPatternUsed;      /// True = pattern used.
     512             : 
     513             :     explicit            PatternFillModel( bool bDxf );
     514             : 
     515             :     /** Sets the passed BIFF pattern identifier. */
     516             :     void                setBiffPattern( sal_Int32 nPattern );
     517             : };
     518             : 
     519             : /** Contains XML gradient fill attributes from the gradientFill element. */
     520           0 : struct GradientFillModel
     521             : {
     522             :     typedef ::std::map< double, Color > ColorMap;
     523             : 
     524             :     sal_Int32           mnType;             /// Gradient type, linear or path.
     525             :     double              mfAngle;            /// Rotation angle for type linear.
     526             :     double              mfLeft;             /// Left convergence for type path.
     527             :     double              mfRight;            /// Right convergence for type path.
     528             :     double              mfTop;              /// Top convergence for type path.
     529             :     double              mfBottom;           /// Bottom convergence for type path.
     530             :     ColorMap            maColors;           /// Gradient colors.
     531             : 
     532             :     explicit            GradientFillModel();
     533             : 
     534             :     /** Reads BIFF12 gradient settings from a FILL or DXF record. */
     535             :     void                readGradient( SequenceInputStream& rStrm );
     536             :     /** Reads BIFF12 gradient stop settings from a FILL or DXF record. */
     537             :     void                readGradientStop( SequenceInputStream& rStrm, bool bDxf );
     538             : };
     539             : 
     540             : /** Contains API fill attributes. */
     541             : struct ApiSolidFillData
     542             : {
     543             :     sal_Int32           mnColor;            /// Fill color.
     544             :     bool                mbTransparent;      /// True = transparent area.
     545             :     bool                mbUsed;             /// True = fill data is valid.
     546             : 
     547             :     explicit            ApiSolidFillData();
     548             : };
     549             : 
     550             : bool operator==( const ApiSolidFillData& rLeft, const ApiSolidFillData& rRight );
     551             : 
     552             : /** Contains cell fill attributes, either a pattern fill or a gradient fill. */
     553         588 : class Fill : public WorkbookHelper
     554             : {
     555             : public:
     556             :     explicit            Fill( const WorkbookHelper& rHelper, bool bDxf );
     557             : 
     558             :     /** Sets attributes of a patternFill element. */
     559             :     void                importPatternFill( const AttributeList& rAttribs );
     560             :     /** Sets the pattern color from the fgColor element. */
     561             :     void                importFgColor( const AttributeList& rAttribs );
     562             :     /** Sets the background color from the bgColor element. */
     563             :     void                importBgColor( const AttributeList& rAttribs );
     564             :     /** Sets attributes of a gradientFill element. */
     565             :     void                importGradientFill( const AttributeList& rAttribs );
     566             :     /** Sets a color from the color element in a gradient fill. */
     567             :     void                importColor( const AttributeList& rAttribs, double fPosition );
     568             : 
     569             :     /** Imports the FILL record from the passed stream. */
     570             :     void                importFill( SequenceInputStream& rStrm );
     571             :     /** Imports the fill pattern from a DXF record. */
     572             :     void                importDxfPattern( SequenceInputStream& rStrm );
     573             :     /** Imports the pattern color from a DXF record. */
     574             :     void                importDxfFgColor( SequenceInputStream& rStrm );
     575             :     /** Imports the background color from a DXF record. */
     576             :     void                importDxfBgColor( SequenceInputStream& rStrm );
     577             :     /** Imports gradient settings from a DXF record. */
     578             :     void                importDxfGradient( SequenceInputStream& rStrm );
     579             :     /** Imports gradient stop settings from a DXF record. */
     580             :     void                importDxfStop( SequenceInputStream& rStrm );
     581             : 
     582             :     /** Final processing after import of all style settings. */
     583             :     void                finalizeImport();
     584             : 
     585             :     /** Returns the fill pattern model structure, if extant. */
     586             :     inline const PatternFillModel* getPatternModel() const { return mxPatternModel.get(); }
     587             :     /** Returns the fill gradient model structure, if extant. */
     588             :     inline const GradientFillModel* getGradientModel() const { return mxGradientModel.get(); }
     589             :     /** Returns the converted API fill data struct. */
     590           0 :     inline const ApiSolidFillData& getApiData() const { return maApiData; }
     591             : 
     592             :     void                fillToItemSet( SfxItemSet& rItemSet, bool bSkipPoolDefs = false ) const;
     593             :     /** Writes all fill attributes to the passed property map. */
     594             :     void                writeToPropertyMap( PropertyMap& rPropMap ) const;
     595             : 
     596             : private:
     597             :     typedef std::shared_ptr< PatternFillModel >   PatternModelRef;
     598             :     typedef std::shared_ptr< GradientFillModel >  GradientModelRef;
     599             : 
     600             :     PatternModelRef     mxPatternModel;
     601             :     GradientModelRef    mxGradientModel;
     602             :     ApiSolidFillData    maApiData;
     603             :     bool                mbDxf;
     604             : };
     605             : 
     606             : typedef std::shared_ptr< Fill > FillRef;
     607             : 
     608             : /** Contains all data for a cell format or cell style. */
     609             : struct XfModel
     610             : {
     611             :     sal_Int32           mnStyleXfId;        /// Index to parent style XF.
     612             :     sal_Int32           mnFontId;           /// Index to font data list.
     613             :     sal_Int32           mnNumFmtId;         /// Index to number format list.
     614             :     sal_Int32           mnBorderId;         /// Index to list of cell borders.
     615             :     sal_Int32           mnFillId;           /// Index to list of cell areas.
     616             :     bool                mbCellXf;           /// True = cell XF, false = style XF.
     617             :     bool                mbFontUsed;         /// True = font index used.
     618             :     bool                mbNumFmtUsed;       /// True = number format used.
     619             :     bool                mbAlignUsed;        /// True = alignment used.
     620             :     bool                mbProtUsed;         /// True = cell protection used.
     621             :     bool                mbBorderUsed;       /// True = border data used.
     622             :     bool                mbAreaUsed;         /// True = area data used.
     623             : 
     624             :     explicit            XfModel();
     625             : };
     626             : 
     627             : bool operator==( const XfModel& rXfModel1,  const XfModel& rXfModel2 );
     628             : 
     629             : /** Represents a cell format or a cell style (called XF, extended format).
     630             : 
     631             :     This class stores the type (cell/style), the index to the parent style (if
     632             :     it is a cell format) and all "attribute used" flags, which reflect the
     633             :     state of specific attribute groups (true = user has changed the attributes)
     634             :     and all formatting data.
     635             :  */
     636        3196 : class Xf : public WorkbookHelper
     637             : {
     638             :     friend bool operator==( const Xf& rXf1,  const Xf& rXf2 );
     639             : public:
     640         293 :     struct AttrList
     641             :     {
     642             :         std::list<ScAttrEntry> maAttrs;
     643             :         bool mbLatinNumFmtOnly;
     644             : 
     645             :         AttrList();
     646             :     };
     647             : 
     648             :     explicit            Xf( const WorkbookHelper& rHelper );
     649             : 
     650             :     /** Sets all attributes from the xf element. */
     651             :     void                importXf( const AttributeList& rAttribs, bool bCellXf );
     652             :     /** Sets all attributes from the alignment element. */
     653             :     void                importAlignment( const AttributeList& rAttribs );
     654             :     /** Sets all attributes from the protection element. */
     655             :     void                importProtection( const AttributeList& rAttribs );
     656             : 
     657             :     /** Imports the XF record from the passed stream. */
     658             :     void                importXf( SequenceInputStream& rStrm, bool bCellXf );
     659             : 
     660             :     /** Final processing after import of all style settings. */
     661             :     void                finalizeImport();
     662             : 
     663             :     /** Returns true, if the XF is a cell XF, and false, if it is a style XF. */
     664        1243 :     inline bool         isCellXf() const { return maModel.mbCellXf; }
     665             : 
     666             :     /** Returns the referred font object. */
     667             :     FontRef             getFont() const;
     668             :     /** Returns the alignment data of this style. */
     669        4240 :     inline const Alignment& getAlignment() const { return maAlignment; }
     670             :     /** Returns the cell protection data of this style. */
     671             :     inline const Protection& getProtection() const { return maProtection; }
     672             : 
     673             :     void applyPatternToAttrList(
     674             :         AttrList& rAttrs, SCROW nRow1, SCROW nRow2, sal_Int32 nForceScNumFmt );
     675             : 
     676             :     /** Writes all formatting attributes to the passed property map. */
     677             :     void                writeToPropertyMap( PropertyMap& rPropMap ) const;
     678             :     /** Writes all formatting attributes to the passed property set. */
     679             :     void                writeToPropertySet( PropertySet& rPropSet ) const;
     680             : 
     681             :     void writeToDoc( ScDocumentImport& rDoc, const css::table::CellRangeAddress& rRange ) const;
     682             : 
     683             :     const ::ScPatternAttr& createPattern( bool bSkipPoolDefs = false );
     684             : 
     685             : private:
     686             :     typedef ::std::unique_ptr< ::ScPatternAttr > ScPatternAttrPtr;
     687             : 
     688             :     ScPatternAttrPtr    mpPattern;          /// Calc item set.
     689             :     sal_uLong           mnScNumFmt;         /// Calc number format.
     690             : 
     691             :     XfModel             maModel;            /// Cell XF or style XF model data.
     692             :     Alignment           maAlignment;        /// Cell alignment data.
     693             :     Protection          maProtection;       /// Cell protection data.
     694             :     sal_Int32           meRotationRef;      /// Rotation reference dependent on border.
     695             :     ::ScStyleSheet*       mpStyleSheet;       /// Calc cell style sheet.
     696             : };
     697             : 
     698             : bool operator==( const Xf& rXf1,  const Xf& rXf2 );
     699             : 
     700             : typedef std::shared_ptr< Xf > XfRef;
     701             : 
     702          80 : class Dxf : public WorkbookHelper
     703             : {
     704             : public:
     705             :     explicit            Dxf( const WorkbookHelper& rHelper );
     706             : 
     707             :     /** Creates a new empty font object. */
     708             :     FontRef             createFont( bool bAlwaysNew = true );
     709             :     /** Creates a new empty border object. */
     710             :     BorderRef           createBorder( bool bAlwaysNew = true );
     711             :     /** Creates a new empty fill object. */
     712             :     FillRef             createFill( bool bAlwaysNew = true );
     713             : 
     714             :     /** Inserts a new number format code. */
     715             :     void                importNumFmt( const AttributeList& rAttribs );
     716             : 
     717             :     /** Imports the DXF record from the passed stream. */
     718             :     void                importDxf( SequenceInputStream& rStrm );
     719             : 
     720             :     /** Final processing after import of all style settings. */
     721             :     void                finalizeImport();
     722             : 
     723             :     void fillToItemSet( SfxItemSet& rSet ) const;
     724             : 
     725             : private:
     726             :     FontRef             mxFont;             /// Font data.
     727             :     NumberFormatRef     mxNumFmt;           /// Number format data.
     728             :     AlignmentRef        mxAlignment;        /// Alignment data.
     729             :     ProtectionRef       mxProtection;       /// Protection data.
     730             :     BorderRef           mxBorder;           /// Border data.
     731             :     FillRef             mxFill;             /// Fill data.
     732             : };
     733             : 
     734             : typedef std::shared_ptr< Dxf > DxfRef;
     735             : 
     736             : /** Contains attributes of a cell style, e.g. from the cellStyle element. */
     737         461 : struct CellStyleModel
     738             : {
     739             :     OUString     maName;             /// Cell style name.
     740             :     sal_Int32           mnXfId;             /// Formatting for this cell style.
     741             :     sal_Int32           mnBuiltinId;        /// Identifier for builtin styles.
     742             :     sal_Int32           mnLevel;            /// Level for builtin column/row styles.
     743             :     bool                mbBuiltin;          /// True = builtin style.
     744             :     bool                mbCustom;           /// True = customized builtin style.
     745             :     bool                mbHidden;           /// True = style not visible in GUI.
     746             : 
     747             :     explicit            CellStyleModel();
     748             : 
     749             :     /** Returns true, if this style is a builtin style. */
     750             :     bool                isBuiltin() const;
     751             :     /** Returns true, if this style represents the default document cell style. */
     752             :     bool                isDefaultStyle() const;
     753             : };
     754             : 
     755         922 : class CellStyle : public WorkbookHelper
     756             : {
     757             : public:
     758             :     explicit            CellStyle( const WorkbookHelper& rHelper );
     759             : 
     760             :     /** Imports passed attributes from the cellStyle element. */
     761             :     void                importCellStyle( const AttributeList& rAttribs );
     762             :     /** Imports style settings from a CELLSTYLE record. */
     763             :     void                importCellStyle( SequenceInputStream& rStrm );
     764             : 
     765             :     /** Creates the style sheet in the document described by this cell style object. */
     766             :     void                createCellStyle();
     767             :     /** Stores tha passed final style name and creates the cell style, if it is
     768             :         user-defined or modified built-in. */
     769             :     void                finalizeImport( const OUString& rFinalName );
     770             : 
     771             :     /** Returns the cell style model structure. */
     772        1156 :     inline const CellStyleModel& getModel() const { return maModel; }
     773             :     /** Returns the final style name used in the document. */
     774        1355 :     inline const OUString& getFinalStyleName() const { return maFinalName; }
     775         944 :     inline ::ScStyleSheet* getStyleSheet() { return mpStyleSheet; }
     776             : private:
     777             :     CellStyleModel      maModel;
     778             :     OUString     maFinalName;        /// Final style name used in API.
     779             :     bool                mbCreated;          /// True = style sheet created.
     780             :     ::ScStyleSheet*     mpStyleSheet;       /// Calc cell style sheet.
     781             : 
     782             : };
     783             : 
     784             : typedef std::shared_ptr< CellStyle > CellStyleRef;
     785             : 
     786         145 : class CellStyleBuffer : public WorkbookHelper
     787             : {
     788             : public:
     789             :     explicit            CellStyleBuffer( const WorkbookHelper& rHelper );
     790             : 
     791             :     /** Appends and returns a new named cell style object. */
     792             :     CellStyleRef        importCellStyle( const AttributeList& rAttribs );
     793             :     /** Imports the CELLSTYLE record from the passed stream. */
     794             :     CellStyleRef        importCellStyle( SequenceInputStream& rStrm );
     795             : 
     796             :     /** Final processing after import of all style settings. */
     797             :     void                finalizeImport();
     798             : 
     799             :     /** Returns the XF identifier associated to the default cell style. */
     800             :     sal_Int32           getDefaultXfId() const;
     801             :     /** Returns the default style sheet for unused cells. */
     802             :     OUString     getDefaultStyleName() const;
     803             :     /** Creates the style sheet described by the style XF with the passed identifier. */
     804             :     OUString     createCellStyle( sal_Int32 nXfId ) const;
     805             :     ::ScStyleSheet*     getCellStyleSheet( sal_Int32 nXfId ) const;
     806             : 
     807             : private:
     808             :     /** Inserts the passed cell style object into the internal maps. */
     809             :     void                insertCellStyle( CellStyleRef xCellStyle );
     810             :     /** Creates the style sheet described by the passed cell style object. */
     811             :     static OUString     createCellStyle( const CellStyleRef& rxCellStyle );
     812             :     static ::ScStyleSheet* getCellStyleSheet( const CellStyleRef& rxCellStyle );
     813             : 
     814             : private:
     815             :     typedef RefVector< CellStyle >          CellStyleVector;
     816             :     typedef RefMap< sal_Int32, CellStyle >  CellStyleXfIdMap;
     817             : 
     818             :     CellStyleVector     maBuiltinStyles;    /// All built-in cell styles.
     819             :     CellStyleVector     maUserStyles;       /// All user defined cell styles.
     820             :     CellStyleXfIdMap    maStylesByXf;       /// All cell styles, mapped by XF identifier.
     821             :     CellStyleRef        mxDefStyle;         /// Default cell style.
     822             : };
     823             : 
     824             : struct AutoFormatModel
     825             : {
     826             :     sal_Int32           mnAutoFormatId;     /// Index of predefined autoformatting.
     827             :     bool                mbApplyNumFmt;      /// True = apply number format from autoformatting.
     828             :     bool                mbApplyFont;        /// True = apply font from autoformatting.
     829             :     bool                mbApplyAlignment;   /// True = apply alignment from autoformatting.
     830             :     bool                mbApplyBorder;      /// True = apply border from autoformatting.
     831             :     bool                mbApplyFill;        /// True = apply fill from autoformatting.
     832             :     bool                mbApplyProtection;  /// True = apply protection from autoformatting.
     833             : 
     834             :     explicit            AutoFormatModel();
     835             : };
     836             : 
     837         290 : class StylesBuffer : public WorkbookHelper
     838             : {
     839             : public:
     840             :     explicit            StylesBuffer( const WorkbookHelper& rHelper );
     841             : 
     842             :     /** Creates a new empty font object.
     843             :         @param opnFontId  (out-param) The identifier of the new font object. */
     844             :     FontRef             createFont( sal_Int32* opnFontId = 0 );
     845             :     /** Creates a number format. */
     846             :     NumberFormatRef     createNumFmt( sal_Int32 nNumFmtId, const OUString& rFmtCode );
     847             :     sal_Int32           nextFreeNumFmtId();
     848             :     /** Creates a new empty border object.
     849             :         @param opnBorderId  (out-param) The identifier of the new border object. */
     850             :     BorderRef           createBorder( sal_Int32* opnBorderId = 0 );
     851             :     /** Creates a new empty fill object.
     852             :         @param opnFillId  (out-param) The identifier of the new fill object. */
     853             :     FillRef             createFill( sal_Int32* opnFillId = 0 );
     854             :     /** Creates a new empty cell formatting object.
     855             :         @param opnXfId  (out-param) The identifier of the new XF object. */
     856             :     XfRef               createCellXf( sal_Int32* opnXfId = 0 );
     857             :     /** Creates a new empty style formatting object.
     858             :         @param opnXfId  (out-param) The identifier of the new XF object. */
     859             :     XfRef               createStyleXf( sal_Int32* opnXfId = 0 );
     860             :     /** Creates a new empty differential formatting object.
     861             :         @param opnDxfId  (out-param) The identifier of the new DXF object. */
     862             :     DxfRef              createDxf( sal_Int32* opnDxfId = 0 );
     863             : 
     864             :     /** Appends a new color to the color palette. */
     865             :     void                importPaletteColor( const AttributeList& rAttribs );
     866             :     /** Inserts a new number format code. */
     867             :     NumberFormatRef     importNumFmt( const AttributeList& rAttribs );
     868             :     /** Appends and returns a new named cell style object. */
     869             :     CellStyleRef        importCellStyle( const AttributeList& rAttribs );
     870             : 
     871             :     /** Appends a new color to the color palette. */
     872             :     void                importPaletteColor( SequenceInputStream& rStrm );
     873             :     /** Imports the NUMFMT record from the passed stream. */
     874             :     void                importNumFmt( SequenceInputStream& rStrm );
     875             :     /** Imports the CELLSTYLE record from the passed stream. */
     876             :     void                importCellStyle( SequenceInputStream& rStrm );
     877             : 
     878             :     /** Final processing after import of all style settings. */
     879             :     void                finalizeImport();
     880             : 
     881             :     /** Returns the palette color with the specified index. */
     882             :     sal_Int32           getPaletteColor( sal_Int32 nIndex ) const;
     883             :     /** Returns the specified font object. */
     884             :     FontRef             getFont( sal_Int32 nFontId ) const;
     885             :     /** Returns the specified border object. */
     886             :     BorderRef           getBorder( sal_Int32 nBorderId ) const;
     887             :     /** Returns the specified cell format object. */
     888             :     XfRef               getCellXf( sal_Int32 nXfId ) const;
     889             :     /** Returns the specified style format object. */
     890             :     XfRef               getStyleXf( sal_Int32 nXfId ) const;
     891             : 
     892             :     /** Returns the font object of the specified cell XF. */
     893             :     FontRef             getFontFromCellXf( sal_Int32 nXfId ) const;
     894             :     /** Returns the default application font (used in the "Normal" cell style). */
     895             :     FontRef             getDefaultFont() const;
     896             :     /** Returns the model of the default application font (used in the "Normal" cell style). */
     897             :     const FontModel&    getDefaultFontModel() const;
     898             : 
     899             :     /** Returns true, if the specified borders are equal. */
     900             :     bool                equalBorders( sal_Int32 nBorderId1, sal_Int32 nBorderId2 ) const;
     901             :     /** Returns true, if the specified fills are equal. */
     902             :     bool                equalFills( sal_Int32 nFillId1, sal_Int32 nFillId2 ) const;
     903             : 
     904             :     /** Returns the default style sheet for unused cells. */
     905             :     OUString     getDefaultStyleName() const;
     906             :     /** Creates the style sheet described by the style XF with the passed identifier. */
     907             :     OUString     createCellStyle( sal_Int32 nXfId ) const;
     908             :     ::ScStyleSheet*     getCellStyleSheet( sal_Int32 nXfId ) const;
     909             :     /** Creates the style sheet described by the DXF with the passed identifier. */
     910             :     OUString     createDxfStyle( sal_Int32 nDxfId ) const;
     911             : 
     912             :     void                writeFontToItemSet( SfxItemSet& rItemSet, sal_Int32 nFontId, bool bSkipPoolDefs = false ) const;
     913             :     /** Writes the font attributes of the specified font data to the passed property map. */
     914             :     void                writeFontToPropertyMap( PropertyMap& rPropMap, sal_Int32 nFontId ) const;
     915             :     sal_uLong           writeNumFmtToItemSet( SfxItemSet& rItemSet, sal_Int32 nNumFmtId, bool bSkipPoolDefs = false ) const;
     916             :     /** Writes the specified number format to the passed property map. */
     917             :     void                writeNumFmtToPropertyMap( PropertyMap& rPropMap, sal_Int32 nNumFmtId ) const;
     918             :     void                writeBorderToItemSet( SfxItemSet& rItemSet, sal_Int32 nBorderId, bool bSkipPoolDefs = false ) const;
     919             :     /** Writes the border attributes of the specified border data to the passed property map. */
     920             :     void                writeBorderToPropertyMap( PropertyMap& rPropMap, sal_Int32 nBorderId ) const;
     921             :     /** Writes the fill attributes of the specified fill data to the passed property map. */
     922             :     void                writeFillToItemSet( SfxItemSet& rItemSet, sal_Int32 nFillId, bool bSkipPoolDefs = false ) const;
     923             :     void                writeFillToPropertyMap( PropertyMap& rPropMap, sal_Int32 nFillId ) const;
     924             : 
     925             :     /** Writes the cell formatting attributes of the specified XF to the passed property set. */
     926             :     void                writeCellXfToPropertySet( PropertySet& rPropSet, sal_Int32 nXfId ) const;
     927             :     void writeCellXfToDoc( ScDocumentImport& rDoc, const css::table::CellRangeAddress& rRange, sal_Int32 nXfId ) const;
     928             : 
     929             :     bool                hasBorder( sal_Int32 nBorderId ) const;
     930             : private:
     931             :     typedef RefVector< Font >                           FontVector;
     932             :     typedef RefVector< Border >                         BorderVector;
     933             :     typedef RefVector< Fill >                           FillVector;
     934             :     typedef RefVector< Xf >                             XfVector;
     935             :     typedef RefVector< Dxf >                            DxfVector;
     936             :     typedef ::std::map< sal_Int32, OUString >    DxfStyleMap;
     937             : 
     938             :     ColorPalette        maPalette;          /// Color palette.
     939             :     FontVector          maFonts;            /// List of font objects.
     940             :     NumberFormatsBuffer maNumFmts;          /// List of all number format codes.
     941             :     BorderVector        maBorders;          /// List of cell border objects.
     942             :     FillVector          maFills;            /// List of cell area fill objects.
     943             :     XfVector            maCellXfs;          /// List of cell formats.
     944             :     XfVector            maStyleXfs;         /// List of cell styles.
     945             :     CellStyleBuffer     maCellStyles;       /// All built-in and user defined cell styles.
     946             :     DxfVector           maDxfs;             /// List of differential cell styles.
     947             :     mutable DxfStyleMap maDxfStyles;        /// Maps DXF identifiers to Calc style sheet names.
     948             : };
     949             : 
     950             : } // namespace xls
     951             : } // namespace oox
     952             : 
     953             : #endif
     954             : 
     955             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11