LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/sc/source/filter/xml - xmlstyle.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 579 899 64.4 %
Date: 2013-07-09 Functions: 81 99 81.8 %
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             : #include "xmlstyle.hxx"
      21             : #include "xmlexprt.hxx"
      22             : #include "xmlimprt.hxx"
      23             : 
      24             : #include "XMLConverter.hxx"
      25             : #include "rangeutl.hxx"
      26             : #include "unonames.hxx"
      27             : 
      28             : #include <xmloff/xmlnmspe.hxx>
      29             : #include <xmloff/xmltypes.hxx>
      30             : #include <xmloff/families.hxx>
      31             : #include <xmloff/xmlnumfe.hxx>
      32             : #include <xmloff/xmlnumfi.hxx>
      33             : #include <xmloff/nmspmap.hxx>
      34             : #include <xmloff/attrlist.hxx>
      35             : #include <xmloff/contextid.hxx>
      36             : #include <xmloff/txtprmap.hxx>
      37             : #include <sax/tools/converter.hxx>
      38             : #include <com/sun/star/util/CellProtection.hpp>
      39             : #include <com/sun/star/table/CellOrientation.hpp>
      40             : #include <com/sun/star/table/CellVertJustify2.hpp>
      41             : #include <com/sun/star/table/CellHoriJustify.hpp>
      42             : #include <com/sun/star/table/CellJustifyMethod.hpp>
      43             : #include <com/sun/star/table/TableBorder.hpp>
      44             : #include <com/sun/star/table/BorderLine2.hpp>
      45             : #include <com/sun/star/sheet/XSheetConditionalEntries.hpp>
      46             : #include <com/sun/star/sheet/XSheetConditionalEntry.hpp>
      47             : #include <com/sun/star/sheet/XSheetCondition.hpp>
      48             : #include <com/sun/star/beans/XPropertyState.hpp>
      49             : #include <comphelper/extract.hxx>
      50             : 
      51             : #include <rtl/ustrbuf.hxx>
      52             : 
      53             : using namespace com::sun::star;
      54             : using namespace ::xmloff::token;
      55             : using namespace ::formula;
      56             : 
      57             : #define MAP(name,prefix,token,type,context)  { name, sizeof(name)-1, prefix, token, type, context, SvtSaveOptions::ODFVER_010 }
      58             : #define MAP_EXT(name,prefix,token,type,context)  { name, sizeof(name)-1, prefix, token, type, context, SvtSaveOptions::ODFVER_012_EXT_COMPAT }
      59             : #define MAP_END()   { NULL, 0, 0, XML_TOKEN_INVALID, 0, 0, SvtSaveOptions::ODFVER_010 }
      60             : 
      61             : const XMLPropertyMapEntry aXMLScCellStylesProperties[] =
      62             : {
      63             :     MAP( "AsianVerticalMode", XML_NAMESPACE_STYLE, XML_GLYPH_ORIENTATION_VERTICAL, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_VERTICAL, 0),
      64             :     MAP( "BottomBorder", XML_NAMESPACE_FO, XML_BORDER_BOTTOM, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_BOTTOMBORDER ),
      65             :     MAP( "BottomBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_BOTTOM, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_BOTTOMBORDERWIDTH ),
      66             :     MAP( "CellBackColor", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
      67             :     MAP( "CellProtection", XML_NAMESPACE_STYLE, XML_CELL_PROTECT, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_CELLPROTECTION|MID_FLAG_MERGE_PROPERTY, 0 ),
      68             :     MAP( "CellProtection", XML_NAMESPACE_STYLE, XML_PRINT_CONTENT, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_PRINTCONTENT|MID_FLAG_MERGE_PROPERTY, 0 ),
      69             :     MAP( "CellStyle", XML_NAMESPACE_STYLE, XML_STYLE, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_STRING, CTF_SC_CELLSTYLE ),
      70             :     MAP( "ConditionalFormatXML", XML_NAMESPACE_STYLE, XML_MAP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_IMPORT_MAP ),
      71             :     MAP( "ConditionalFormatXML", XML_NAMESPACE_STYLE, XML_MAP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_MAP ),
      72             :     MAP( "DiagonalBLTR", XML_NAMESPACE_STYLE, XML_DIAGONAL_BL_TR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_DIAGONALBLTR ),
      73             :     MAP( "DiagonalBLTR", XML_NAMESPACE_STYLE, XML_DIAGONAL_BL_TR_WIDTH, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALBLTRWIDTH ), // #i102690# for old files
      74             :     MAP( "DiagonalBLTR", XML_NAMESPACE_STYLE, XML_DIAGONAL_BL_TR_WIDTHS, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALBLTRWIDTHS ),
      75             :     MAP( "DiagonalTLBR", XML_NAMESPACE_STYLE, XML_DIAGONAL_TL_BR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_DIAGONALTLBR ),
      76             :     MAP( "DiagonalTLBR", XML_NAMESPACE_STYLE, XML_DIAGONAL_TL_BR_WIDTH, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALTLBRWIDTH ), // #i102690# for old files
      77             :     MAP( "DiagonalTLBR", XML_NAMESPACE_STYLE, XML_DIAGONAL_TL_BR_WIDTHS, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALTLBRWIDTHS ),
      78             :     MAP( "HoriJustify", XML_NAMESPACE_FO, XML_TEXT_ALIGN, XML_TYPE_PROP_PARAGRAPH|XML_SC_TYPE_HORIJUSTIFY|MID_FLAG_MERGE_PROPERTY, 0 ),
      79             :     MAP( "HoriJustify", XML_NAMESPACE_STYLE, XML_TEXT_ALIGN_SOURCE, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_HORIJUSTIFYSOURCE|MID_FLAG_MERGE_PROPERTY, 0 ),
      80             :     MAP( "HoriJustify", XML_NAMESPACE_STYLE, XML_REPEAT_CONTENT, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_HORIJUSTIFYREPEAT|MID_FLAG_MERGE_PROPERTY, 0 ),
      81             :     MAP_EXT( SC_UNONAME_HYPERLINK, XML_NAMESPACE_STYLE, XML_HYPERLINK, XML_TYPE_PROP_TABLE_CELL | XML_TYPE_STRING | MID_FLAG_ELEMENT_ITEM, CTF_SC_HYPERLINK ),
      82             :     MAP_EXT( SC_UNONAME_CELLHJUS_METHOD, XML_NAMESPACE_CSS3TEXT, XML_TEXT_JUSTIFY, XML_TYPE_PROP_PARAGRAPH|XML_SC_TYPE_HORIJUSTIFY_METHOD, 0 ),
      83             :     MAP( "IsCellBackgroundTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_ISTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
      84             :     MAP( "IsTextWrapped", XML_NAMESPACE_FO, XML_WRAP_OPTION, XML_TYPE_PROP_TABLE_CELL|XML_SC_ISTEXTWRAPPED, 0 ),
      85             :     MAP( "LeftBorder", XML_NAMESPACE_FO, XML_BORDER, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_ALLBORDER ),
      86             :     MAP( "LeftBorder", XML_NAMESPACE_FO, XML_BORDER_LEFT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_LEFTBORDER ),
      87             :     MAP( "LeftBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_ALLBORDERWIDTH ),
      88             :     MAP( "LeftBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_LEFT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_LEFTBORDERWIDTH ),
      89             :     MAP( "NumberFormat", XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_NUMBER|MID_FLAG_SPECIAL_ITEM, CTF_SC_NUMBERFORMAT),
      90             :     MAP( "Orientation", XML_NAMESPACE_STYLE, XML_DIRECTION, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_ORIENTATION, 0 ),
      91             :     MAP( "ParaBottomMargin", XML_NAMESPACE_FO, XML_PADDING, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_ALLPADDING ),
      92             :     MAP( "ParaBottomMargin", XML_NAMESPACE_FO, XML_PADDING_BOTTOM, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_BOTTOMPADDING ),
      93             :     MAP( "ParaIndent", XML_NAMESPACE_FO, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE16, 0 ),
      94             :     MAP( "ParaLeftMargin", XML_NAMESPACE_FO, XML_PADDING_LEFT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_LEFTPADDING ),
      95             :     MAP( "ParaRightMargin", XML_NAMESPACE_FO, XML_PADDING_RIGHT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_RIGHTPADDING ),
      96             :     MAP( "ParaTopMargin", XML_NAMESPACE_FO, XML_PADDING_TOP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_TOPPADDING ),
      97             :     MAP( "RightBorder", XML_NAMESPACE_FO, XML_BORDER_RIGHT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_RIGHTBORDER ),
      98             :     MAP( "RightBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_RIGHT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_RIGHTBORDERWIDTH ),
      99             :     MAP( "RotateAngle", XML_NAMESPACE_STYLE, XML_ROTATION_ANGLE, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_ROTATEANGLE, 0 ),
     100             :     MAP( "RotateReference", XML_NAMESPACE_STYLE, XML_ROTATION_ALIGN, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_ROTATEREFERENCE, 0),
     101             :     MAP( "ShadowFormat", XML_NAMESPACE_STYLE, XML_SHADOW, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_TEXT_SHADOW, 0 ),
     102             :     MAP( "ShrinkToFit", XML_NAMESPACE_STYLE, XML_SHRINK_TO_FIT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BOOL, 0 ),
     103             :     MAP( "StandardDecimals", XML_NAMESPACE_STYLE, XML_DECIMAL_PLACES, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_NUMBER16, 0 ),
     104             :     MAP( "TopBorder", XML_NAMESPACE_FO, XML_BORDER_TOP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_TOPBORDER ),
     105             :     MAP( "TopBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_TOP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_TOPBORDERWIDTH ),
     106             :     MAP( "UserDefinedAttributes", XML_NAMESPACE_TEXT, XML_XMLNS, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
     107             :     MAP( "ValidationXML", XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BUILDIN_CMP_ONLY, CTF_SC_VALIDATION ),
     108             :     MAP( "VertJustify", XML_NAMESPACE_STYLE, XML_VERTICAL_ALIGN, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_VERTJUSTIFY, 0),
     109             :     MAP_EXT( SC_UNONAME_CELLVJUS_METHOD, XML_NAMESPACE_STYLE, XML_VERTICAL_JUSTIFY, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_VERTJUSTIFY_METHOD, 0 ),
     110             :     MAP_END()
     111             : };
     112             : 
     113             : const XMLPropertyMapEntry aXMLScColumnStylesProperties[] =
     114             : {
     115             :     MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_COLUMN|XML_SC_TYPE_BREAKBEFORE, 0),
     116             :     MAP( "IsVisible", XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TYPE_PROP_TABLE_COLUMN|XML_SC_TYPE_EQUAL|MID_FLAG_SPECIAL_ITEM, CTF_SC_ISVISIBLE ),
     117             :     MAP( "Width", XML_NAMESPACE_STYLE, XML_COLUMN_WIDTH, XML_TYPE_PROP_TABLE_COLUMN|XML_TYPE_MEASURE, 0 ),
     118             :     MAP_END()
     119             : };
     120             : 
     121             : const XMLPropertyMapEntry aXMLScRowStylesImportProperties[] =
     122             : {
     123             :     // #i57867# Include background color (CellBackColor/IsCellBackgroundTransparent) for import only.
     124             :     // Import and export should use the same map, with MID_FLAG_NO_PROPERTY_EXPORT for the background entries,
     125             :     // but this doesn't work at the moment because SvXMLImportPropertyMapper compares MID_FLAG_NO_PROPERTY to 0.
     126             :     // If this is changed (not for 2.0.x), a single map can be used again.
     127             : 
     128             :     MAP( "CellBackColor", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
     129             :     MAP( "Height", XML_NAMESPACE_STYLE, XML_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_MEASURE, CTF_SC_ROWHEIGHT),
     130             :     MAP( "IsCellBackgroundTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_ISTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
     131             :     MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_ROW|XML_SC_TYPE_BREAKBEFORE, CTF_SC_ROWBREAKBEFORE),
     132             :     MAP( "OptimalHeight", XML_NAMESPACE_STYLE, XML_USE_OPTIMAL_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_BOOL, CTF_SC_ROWOPTIMALHEIGHT),
     133             :     MAP_END()
     134             : };
     135             : 
     136             : const XMLPropertyMapEntry aXMLScRowStylesProperties[] =
     137             : {
     138             :     MAP( "Height", XML_NAMESPACE_STYLE, XML_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_MEASURE, CTF_SC_ROWHEIGHT),
     139             :     MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_ROW|XML_SC_TYPE_BREAKBEFORE, CTF_SC_ROWBREAKBEFORE),
     140             :     MAP( "OptimalHeight", XML_NAMESPACE_STYLE, XML_USE_OPTIMAL_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_BOOL, CTF_SC_ROWOPTIMALHEIGHT),
     141             :     MAP_END()
     142             : };
     143             : 
     144             : const XMLPropertyMapEntry aXMLScFromXLSRowStylesProperties[] =
     145             : {
     146             :     MAP( "Height", XML_NAMESPACE_STYLE, XML_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_MEASURE, CTF_SC_ROWHEIGHT),
     147             :     MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_ROW|XML_SC_TYPE_BREAKBEFORE, CTF_SC_ROWBREAKBEFORE),
     148             :     MAP( "OptimalHeight", XML_NAMESPACE_STYLE, XML_USE_OPTIMAL_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_BOOL_FALSE, CTF_SC_ROWOPTIMALHEIGHT),
     149             :     MAP_END()
     150             : };
     151             : 
     152             : const XMLPropertyMapEntry aXMLScTableStylesImportProperties[] =
     153             : {
     154             :     // #i57869# Include background color (CellBackColor/IsCellBackgroundTransparent) for import only.
     155             :     // Import and export should use the same map, with MID_FLAG_NO_PROPERTY_EXPORT for the background entries,
     156             :     // but this doesn't work at the moment because SvXMLImportPropertyMapper compares MID_FLAG_NO_PROPERTY to 0.
     157             :     // If this is changed (not for 2.0.x), a single map can be used again.
     158             : 
     159             :     MAP( "CellBackColor", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
     160             :     MAP( "IsCellBackgroundTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_ISTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
     161             :     MAP( "IsVisible", XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TYPE_PROP_TABLE|XML_TYPE_BOOL, 0 ),
     162             :     MAP( "PageStyle", XML_NAMESPACE_STYLE, XML_MASTER_PAGE_NAME, XML_TYPE_PROP_TABLE|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_MASTERPAGENAME ),
     163             :     MAP( "TableLayout", XML_NAMESPACE_STYLE, XML_WRITING_MODE, XML_TYPE_PROP_TABLE|XML_TYPE_TEXT_WRITING_MODE, 0 ),
     164             :     MAP( "TabColor", XML_NAMESPACE_TABLE, XML_TAB_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORAUTO, 0 ),
     165             :     MAP_EXT( "TabColor", XML_NAMESPACE_TABLE_EXT, XML_TAB_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORAUTO, 0 ),
     166             :     MAP_END()
     167             : };
     168             : 
     169             : const XMLPropertyMapEntry aXMLScTableStylesProperties[] =
     170             : {
     171             :     MAP( "IsVisible", XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TYPE_PROP_TABLE|XML_TYPE_BOOL, 0 ),
     172             :     MAP( "PageStyle", XML_NAMESPACE_STYLE, XML_MASTER_PAGE_NAME, XML_TYPE_PROP_TABLE|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_MASTERPAGENAME ),
     173             :     MAP( "TableLayout", XML_NAMESPACE_STYLE, XML_WRITING_MODE, XML_TYPE_PROP_TABLE|XML_TYPE_TEXT_WRITING_MODE, 0 ),
     174             :     MAP_EXT( "TabColor", XML_NAMESPACE_TABLE_EXT, XML_TAB_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORAUTO, 0 ),
     175             :     MAP_END()
     176             : };
     177             : 
     178          34 : ScXMLCellExportPropertyMapper::ScXMLCellExportPropertyMapper(
     179             :             const UniReference< XMLPropertySetMapper >& rMapper )
     180          34 :             : SvXMLExportPropertyMapper(rMapper)
     181             : {
     182          34 : }
     183             : 
     184          68 : ScXMLCellExportPropertyMapper::~ScXMLCellExportPropertyMapper()
     185             : {
     186          68 : }
     187             : 
     188          79 : void ScXMLCellExportPropertyMapper::ContextFilter(
     189             :     ::std::vector< XMLPropertyState >& rProperties,
     190             :     uno::Reference< beans::XPropertySet > rPropSet ) const
     191             : {
     192          79 :     XMLPropertyState* pPadding = NULL;
     193          79 :     XMLPropertyState* pPadding_Bottom = NULL;
     194          79 :     XMLPropertyState* pPadding_Left = NULL;
     195          79 :     XMLPropertyState* pPadding_Right = NULL;
     196          79 :     XMLPropertyState* pPadding_Top = NULL;
     197             : 
     198          79 :     XMLPropertyState* pBorder = NULL;
     199          79 :     XMLPropertyState* pBorder_Bottom = NULL;
     200          79 :     XMLPropertyState* pBorder_Left = NULL;
     201          79 :     XMLPropertyState* pBorder_Right = NULL;
     202          79 :     XMLPropertyState* pBorder_Top = NULL;
     203          79 :     XMLPropertyState* pSWBorder = NULL;
     204          79 :     XMLPropertyState* pSWBorder_Bottom = NULL;
     205          79 :     XMLPropertyState* pSWBorder_Left = NULL;
     206          79 :     XMLPropertyState* pSWBorder_Right = NULL;
     207          79 :     XMLPropertyState* pSWBorder_Top = NULL;
     208             : 
     209          79 :     XMLPropertyState* pAllBorderWidthState = NULL;
     210          79 :     XMLPropertyState* pLeftBorderWidthState = NULL;
     211          79 :     XMLPropertyState* pRightBorderWidthState = NULL;
     212          79 :     XMLPropertyState* pTopBorderWidthState = NULL;
     213          79 :     XMLPropertyState* pBottomBorderWidthState = NULL;
     214          79 :     XMLPropertyState* pSWAllBorderWidthState = NULL;
     215          79 :     XMLPropertyState* pSWLeftBorderWidthState = NULL;
     216          79 :     XMLPropertyState* pSWRightBorderWidthState = NULL;
     217          79 :     XMLPropertyState* pSWTopBorderWidthState = NULL;
     218          79 :     XMLPropertyState* pSWBottomBorderWidthState = NULL;
     219          79 :     XMLPropertyState* pDiagonalTLBRWidthState = NULL;
     220          79 :     XMLPropertyState* pDiagonalBLTRWidthState = NULL;
     221             : 
     222          79 :     XMLPropertyState* pParaMarginLeft = NULL;
     223          79 :     XMLPropertyState* pParaMarginLeftRel = NULL;
     224          79 :     XMLPropertyState* pParaMarginRight = NULL;
     225          79 :     XMLPropertyState* pParaMarginRightRel = NULL;
     226          79 :     XMLPropertyState* pParaMarginTop = NULL;
     227          79 :     XMLPropertyState* pParaMarginTopRel = NULL;
     228          79 :     XMLPropertyState* pParaMarginBottom = NULL;
     229          79 :     XMLPropertyState* pParaMarginBottomRel = NULL;
     230             : 
     231          79 :     XMLPropertyState* pParaAdjust = NULL;
     232          79 :     XMLPropertyState* pParaAdjustLast = NULL;
     233             : 
     234          79 :     ::std::vector< XMLPropertyState >::iterator aEndIter(rProperties.end());
     235         652 :     for( ::std::vector< XMLPropertyState >::iterator aIter = rProperties.begin();
     236             :          aIter != aEndIter; ++aIter )
     237             :     {
     238         573 :         XMLPropertyState* propertie = &(*aIter);
     239         573 :         if (propertie->mnIndex != -1)
     240             :         {
     241         573 :             switch( getPropertySetMapper()->GetEntryContextId( propertie->mnIndex ) )
     242             :             {
     243           0 :                 case CTF_SC_ALLPADDING:         pPadding = propertie; break;
     244           0 :                 case CTF_SC_BOTTOMPADDING:      pPadding_Bottom = propertie; break;
     245           0 :                 case CTF_SC_LEFTPADDING:        pPadding_Left = propertie; break;
     246           0 :                 case CTF_SC_RIGHTPADDING:       pPadding_Right = propertie; break;
     247           0 :                 case CTF_SC_TOPPADDING:         pPadding_Top = propertie; break;
     248           1 :                 case CTF_SC_ALLBORDER:          pBorder = propertie; break;
     249           1 :                 case CTF_SC_LEFTBORDER:         pBorder_Left = propertie; break;
     250           1 :                 case CTF_SC_RIGHTBORDER:        pBorder_Right = propertie; break;
     251           1 :                 case CTF_SC_BOTTOMBORDER:       pBorder_Bottom = propertie; break;
     252           1 :                 case CTF_SC_TOPBORDER:          pBorder_Top = propertie; break;
     253           1 :                 case CTF_SC_ALLBORDERWIDTH:     pAllBorderWidthState = propertie; break;
     254           1 :                 case CTF_SC_LEFTBORDERWIDTH:    pLeftBorderWidthState = propertie; break;
     255           1 :                 case CTF_SC_RIGHTBORDERWIDTH:   pRightBorderWidthState = propertie; break;
     256           1 :                 case CTF_SC_TOPBORDERWIDTH:     pTopBorderWidthState = propertie; break;
     257           1 :                 case CTF_SC_BOTTOMBORDERWIDTH:  pBottomBorderWidthState = propertie; break;
     258           1 :                 case CTF_ALLBORDER:             pSWBorder = propertie; break;
     259           1 :                 case CTF_LEFTBORDER:            pSWBorder_Left = propertie; break;
     260           1 :                 case CTF_RIGHTBORDER:           pSWBorder_Right = propertie; break;
     261           1 :                 case CTF_BOTTOMBORDER:          pSWBorder_Bottom = propertie; break;
     262           1 :                 case CTF_TOPBORDER:             pSWBorder_Top = propertie; break;
     263           1 :                 case CTF_ALLBORDERWIDTH:        pSWAllBorderWidthState = propertie; break;
     264           1 :                 case CTF_LEFTBORDERWIDTH:       pSWLeftBorderWidthState = propertie; break;
     265           1 :                 case CTF_RIGHTBORDERWIDTH:      pSWRightBorderWidthState = propertie; break;
     266           1 :                 case CTF_TOPBORDERWIDTH:        pSWTopBorderWidthState = propertie; break;
     267           1 :                 case CTF_BOTTOMBORDERWIDTH:     pSWBottomBorderWidthState = propertie; break;
     268           1 :                 case CTF_SC_DIAGONALTLBR:       break; //old diagonal line attribute names without "s" are only read, not written
     269           1 :                 case CTF_SC_DIAGONALTLBRWIDTH:  pDiagonalTLBRWidthState = propertie; break;
     270           1 :                 case CTF_SC_DIAGONALBLTR:       break; //old diagonal line attribute names without "s" are only read, not written
     271           1 :                 case CTF_SC_DIAGONALBLTRWIDTH:  pDiagonalBLTRWidthState = propertie; break;
     272           9 :                 case CTF_SD_SHAPE_PARA_ADJUST:  pParaAdjust = propertie; break;
     273           9 :                 case CTF_PARA_ADJUSTLAST:       pParaAdjustLast = propertie; break;
     274           0 :                 case CTF_PARALEFTMARGIN:        pParaMarginLeft = propertie; break;
     275           0 :                 case CTF_PARALEFTMARGIN_REL:    pParaMarginLeftRel = propertie; break;
     276           0 :                 case CTF_PARARIGHTMARGIN:       pParaMarginRight = propertie; break;
     277           0 :                 case CTF_PARARIGHTMARGIN_REL:   pParaMarginRightRel = propertie; break;
     278           0 :                 case CTF_PARATOPMARGIN:         pParaMarginTop = propertie; break;
     279           0 :                 case CTF_PARATOPMARGIN_REL:     pParaMarginTopRel = propertie; break;
     280           0 :                 case CTF_PARABOTTOMMARGIN:      pParaMarginBottom = propertie; break;
     281           0 :                 case CTF_PARABOTTOMMARGIN_REL:  pParaMarginBottomRel = propertie; break;
     282             :             }
     283             :         }
     284             :     }
     285             : 
     286          79 :     if (pPadding && pPadding_Bottom && pPadding_Left && pPadding_Right && pPadding_Top)
     287             :     {
     288           0 :         sal_Int32 nBottom = 0, nTop = 0, nLeft = 0, nRight = 0;
     289           0 :         if ((pPadding_Bottom->maValue >>= nBottom) &&
     290           0 :             (pPadding_Left->maValue >>= nLeft) &&
     291           0 :             (pPadding_Right->maValue >>= nRight) &&
     292           0 :             (pPadding_Top->maValue >>= nTop))
     293             :         {
     294           0 :             if ((nBottom == nTop) && (nLeft == nRight) && (nTop == nLeft))
     295             :             {
     296           0 :                 pPadding_Bottom->mnIndex = -1;
     297           0 :                 pPadding_Bottom->maValue.clear();
     298           0 :                 pPadding_Left->mnIndex = -1;
     299           0 :                 pPadding_Left->maValue.clear();
     300           0 :                 pPadding_Right->mnIndex = -1;
     301           0 :                 pPadding_Right->maValue.clear();
     302           0 :                 pPadding_Top->mnIndex = -1;
     303           0 :                 pPadding_Top->maValue.clear();
     304             :             }
     305             :             else
     306             :             {
     307           0 :                 pPadding->mnIndex = -1;
     308           0 :                 pPadding->maValue.clear();
     309             :             }
     310             :         }
     311             :     }
     312          79 :     if( pBorder )
     313             :     {
     314           1 :         if( pBorder_Left && pBorder_Right && pBorder_Top && pBorder_Bottom )
     315             :         {
     316           1 :             table::BorderLine2 aLeft, aRight, aTop, aBottom;
     317             : 
     318           1 :             pBorder_Left->maValue >>= aLeft;
     319           1 :             pBorder_Right->maValue >>= aRight;
     320           1 :             pBorder_Top->maValue >>= aTop;
     321           1 :             pBorder_Bottom->maValue >>= aBottom;
     322           2 :             if( aLeft.Color == aRight.Color && aLeft.InnerLineWidth == aRight.InnerLineWidth &&
     323           3 :                 aLeft.OuterLineWidth == aRight.OuterLineWidth && aLeft.LineDistance == aRight.LineDistance &&
     324           3 :                 aLeft.Color == aTop.Color && aLeft.InnerLineWidth == aTop.InnerLineWidth &&
     325           3 :                 aLeft.OuterLineWidth == aTop.OuterLineWidth && aLeft.LineDistance == aTop.LineDistance &&
     326           3 :                 aLeft.Color == aBottom.Color && aLeft.InnerLineWidth == aBottom.InnerLineWidth &&
     327           3 :                 aLeft.OuterLineWidth == aBottom.OuterLineWidth && aLeft.LineDistance == aBottom.LineDistance &&
     328           3 :                 aLeft.LineStyle == aRight.LineStyle && aLeft.LineStyle == aTop.LineStyle &&
     329           3 :                 aLeft.LineStyle == aBottom.LineStyle && aLeft.LineWidth == aRight.LineWidth &&
     330           2 :                 aLeft.LineWidth == aTop.LineWidth && aLeft.LineWidth == aBottom.LineWidth )
     331             :             {
     332           1 :                 pBorder_Left->mnIndex = -1;
     333           1 :                 pBorder_Left->maValue.clear();
     334           1 :                 pBorder_Right->mnIndex = -1;
     335           1 :                 pBorder_Right->maValue.clear();
     336           1 :                 pBorder_Top->mnIndex = -1;
     337           1 :                 pBorder_Top->maValue.clear();
     338           1 :                 pBorder_Bottom->mnIndex = -1;
     339           1 :                 pBorder_Bottom->maValue.clear();
     340             :             }
     341             :             else
     342             :             {
     343           0 :                 pBorder->mnIndex = -1;
     344           0 :                 pBorder->maValue.clear();
     345           1 :             }
     346             :         }
     347             :         else
     348             :         {
     349           0 :             pBorder->mnIndex = -1;
     350           0 :             pBorder->maValue.clear();
     351             :         }
     352             :     }
     353          79 :     if( pAllBorderWidthState )
     354             :     {
     355           1 :         if( pLeftBorderWidthState && pRightBorderWidthState && pTopBorderWidthState && pBottomBorderWidthState )
     356             :         {
     357           1 :             table::BorderLine2 aLeft, aRight, aTop, aBottom;
     358             : 
     359           1 :             pLeftBorderWidthState->maValue >>= aLeft;
     360           1 :             pRightBorderWidthState->maValue >>= aRight;
     361           1 :             pTopBorderWidthState->maValue >>= aTop;
     362           1 :             pBottomBorderWidthState->maValue >>= aBottom;
     363           2 :             if( aLeft.InnerLineWidth == aRight.InnerLineWidth && aLeft.OuterLineWidth == aRight.OuterLineWidth &&
     364           3 :                 aLeft.LineDistance == aRight.LineDistance && aLeft.InnerLineWidth == aTop.InnerLineWidth &&
     365           3 :                 aLeft.OuterLineWidth == aTop.OuterLineWidth && aLeft.LineDistance == aTop.LineDistance &&
     366           3 :                 aLeft.InnerLineWidth == aBottom.InnerLineWidth && aLeft.OuterLineWidth == aBottom.OuterLineWidth &&
     367           3 :                 aLeft.LineDistance == aBottom.LineDistance && aLeft.LineWidth == aRight.LineWidth &&
     368           2 :                 aLeft.LineWidth == aTop.LineWidth && aLeft.LineWidth == aBottom.LineWidth )
     369             :             {
     370           1 :                 pLeftBorderWidthState->mnIndex = -1;
     371           1 :                 pLeftBorderWidthState->maValue.clear();
     372           1 :                 pRightBorderWidthState->mnIndex = -1;
     373           1 :                 pRightBorderWidthState->maValue.clear();
     374           1 :                 pTopBorderWidthState->mnIndex = -1;
     375           1 :                 pTopBorderWidthState->maValue.clear();
     376           1 :                 pBottomBorderWidthState->mnIndex = -1;
     377           1 :                 pBottomBorderWidthState->maValue.clear();
     378             :             }
     379             :             else
     380             :             {
     381           0 :                 pAllBorderWidthState->mnIndex = -1;
     382           0 :                 pAllBorderWidthState->maValue.clear();
     383           1 :             }
     384             :         }
     385             :         else
     386             :         {
     387           0 :             pAllBorderWidthState->mnIndex = -1;
     388           0 :             pAllBorderWidthState->maValue.clear();
     389             :         }
     390             :     }
     391             : 
     392          79 :     if (pParaAdjust)
     393             :     {
     394           9 :         pParaAdjust->mnIndex = -1;
     395           9 :         pParaAdjust->maValue.clear();
     396             :     }
     397          79 :     if (pParaAdjustLast)
     398             :     {
     399           9 :         pParaAdjustLast->mnIndex = -1;
     400           9 :         pParaAdjustLast->maValue.clear();
     401             :     }
     402          79 :     if (pSWBorder)
     403             :     {
     404           1 :         pSWBorder->mnIndex = -1;
     405           1 :         pSWBorder->maValue.clear();
     406             :     }
     407          79 :     if (pSWBorder_Left)
     408             :     {
     409           1 :         pSWBorder_Left->mnIndex = -1;
     410           1 :         pSWBorder_Left->maValue.clear();
     411             :     }
     412          79 :     if (pSWBorder_Right)
     413             :     {
     414           1 :         pSWBorder_Right->mnIndex = -1;
     415           1 :         pSWBorder_Right->maValue.clear();
     416             :     }
     417          79 :     if (pSWBorder_Bottom)
     418             :     {
     419           1 :         pSWBorder_Bottom->mnIndex = -1;
     420           1 :         pSWBorder_Bottom->maValue.clear();
     421             :     }
     422          79 :     if (pSWBorder_Top)
     423             :     {
     424           1 :         pSWBorder_Top->mnIndex = -1;
     425           1 :         pSWBorder_Top->maValue.clear();
     426             :     }
     427          79 :     if (pSWAllBorderWidthState)
     428             :     {
     429           1 :         pSWAllBorderWidthState->mnIndex = -1;
     430           1 :         pSWAllBorderWidthState->maValue.clear();
     431             :     }
     432          79 :     if (pSWLeftBorderWidthState)
     433             :     {
     434           1 :         pSWLeftBorderWidthState->mnIndex = -1;
     435           1 :         pSWLeftBorderWidthState->maValue.clear();
     436             :     }
     437          79 :     if (pSWRightBorderWidthState)
     438             :     {
     439           1 :         pSWRightBorderWidthState->mnIndex = -1;
     440           1 :         pSWRightBorderWidthState->maValue.clear();
     441             :     }
     442          79 :     if (pSWTopBorderWidthState)
     443             :     {
     444           1 :         pSWTopBorderWidthState->mnIndex = -1;
     445           1 :         pSWTopBorderWidthState->maValue.clear();
     446             :     }
     447          79 :     if (pSWBottomBorderWidthState)
     448             :     {
     449           1 :         pSWBottomBorderWidthState->mnIndex = -1;
     450           1 :         pSWBottomBorderWidthState->maValue.clear();
     451             :     }
     452             : 
     453          79 :     if (pParaMarginLeft)
     454             :     {
     455           0 :         pParaMarginLeft->mnIndex = -1;
     456           0 :         pParaMarginLeft->maValue.clear();
     457             :     }
     458          79 :     if (pParaMarginLeftRel)
     459             :     {
     460           0 :         pParaMarginLeftRel->mnIndex = -1;
     461           0 :         pParaMarginLeftRel->maValue.clear();
     462             :     }
     463          79 :     if (pParaMarginRight)
     464             :     {
     465           0 :         pParaMarginRight->mnIndex = -1;
     466           0 :         pParaMarginRight->maValue.clear();
     467             :     }
     468          79 :     if (pParaMarginRightRel)
     469             :     {
     470           0 :         pParaMarginRightRel->mnIndex = -1;
     471           0 :         pParaMarginRightRel->maValue.clear();
     472             :     }
     473          79 :     if (pParaMarginTop)
     474             :     {
     475           0 :         pParaMarginTop->mnIndex = -1;
     476           0 :         pParaMarginTop->maValue.clear();
     477             :     }
     478          79 :     if (pParaMarginTopRel)
     479             :     {
     480           0 :         pParaMarginTopRel->mnIndex = -1;
     481           0 :         pParaMarginTopRel->maValue.clear();
     482             :     }
     483          79 :     if (pParaMarginBottom)
     484             :     {
     485           0 :         pParaMarginBottom->mnIndex = -1;
     486           0 :         pParaMarginBottom->maValue.clear();
     487             :     }
     488          79 :     if (pParaMarginBottomRel)
     489             :     {
     490           0 :         pParaMarginBottomRel->mnIndex = -1;
     491           0 :         pParaMarginBottomRel->maValue.clear();
     492             :     }
     493             : 
     494             :     // #i102690# old diagonal line attribute names without "s" are only read, not written
     495          79 :     if (pDiagonalTLBRWidthState)
     496             :     {
     497           1 :         pDiagonalTLBRWidthState->mnIndex = -1;
     498           1 :         pDiagonalTLBRWidthState->maValue.clear();
     499             :     }
     500          79 :     if (pDiagonalBLTRWidthState)
     501             :     {
     502           1 :         pDiagonalBLTRWidthState->mnIndex = -1;
     503           1 :         pDiagonalBLTRWidthState->maValue.clear();
     504             :     }
     505             : 
     506          79 :     SvXMLExportPropertyMapper::ContextFilter(rProperties, rPropSet);
     507          79 : }
     508             : 
     509             : /** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
     510          45 : void ScXMLCellExportPropertyMapper::handleSpecialItem(
     511             :             SvXMLAttributeList& /* rAttrList */,
     512             :             const XMLPropertyState& /* rProperty */,
     513             :             const SvXMLUnitConverter& /* rUnitConverter */,
     514             :             const SvXMLNamespaceMap& /* rNamespaceMap */,
     515             :             const ::std::vector< XMLPropertyState > * /* pProperties */,
     516             :             sal_uInt32 /* nIdx */ ) const
     517             : {
     518             :     // the SpecialItem NumberFormat must not be handled by this method
     519             :     // the SpecialItem ConditionlaFormat must not be handled by this method
     520             :     // the SpecialItem CharBackColor must not be handled by this method
     521          45 : }
     522           0 : void ScXMLCellExportPropertyMapper::handleElementItem(
     523             :             SvXMLExport& rExport,
     524             :             const XMLPropertyState& rProperty,
     525             :             sal_uInt16 /* nFlags */,
     526             :             const ::std::vector< XMLPropertyState > * /* pProperties */,
     527             :             sal_uInt32 /* nIdx */) const
     528             : {
     529           0 :     sal_uInt32 nContextId = getPropertySetMapper()->GetEntryContextId( rProperty.mnIndex );
     530           0 :     OUString sURL;
     531           0 :     if ( ( nContextId == CTF_SC_HYPERLINK ) &&
     532           0 :         ( rProperty.maValue >>= sURL ) &&
     533           0 :         !sURL.isEmpty() )
     534             :     {
     535           0 :         rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sURL );
     536             :         rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE,
     537           0 :                                       XML_SIMPLE );
     538           0 :         sal_uInt32 nPropIndex = rProperty.mnIndex;
     539           0 :         sal_uInt16 nPrefix = getPropertySetMapper()->GetEntryNameSpace( nPropIndex );
     540           0 :         OUString sLocalName = getPropertySetMapper()->GetEntryXMLName( nPropIndex );
     541           0 :         SvXMLElementExport aElem( rExport, nPrefix, sLocalName, sal_True, sal_True );
     542           0 :     }
     543           0 : }
     544             : 
     545          34 : ScXMLRowExportPropertyMapper::ScXMLRowExportPropertyMapper(
     546             :             const UniReference< XMLPropertySetMapper >& rMapper )
     547          34 :             : SvXMLExportPropertyMapper(rMapper)
     548             : {
     549          34 : }
     550             : 
     551          68 : ScXMLRowExportPropertyMapper::~ScXMLRowExportPropertyMapper()
     552             : {
     553          68 : }
     554             : 
     555          13 : void ScXMLRowExportPropertyMapper::ContextFilter(
     556             :     ::std::vector< XMLPropertyState >& /* rProperties */,
     557             :     uno::Reference< beans::XPropertySet > /* rPropSet */ ) const
     558             : {
     559             :     //#108550#; don't filter the height, so other applications know the calculated height
     560          13 : }
     561             : 
     562          34 : ScXMLColumnExportPropertyMapper::ScXMLColumnExportPropertyMapper(
     563             :             const UniReference< XMLPropertySetMapper >& rMapper )
     564          34 :             : SvXMLExportPropertyMapper(rMapper)
     565             : {
     566          34 : }
     567             : 
     568          68 : ScXMLColumnExportPropertyMapper::~ScXMLColumnExportPropertyMapper()
     569             : {
     570          68 : }
     571             : 
     572             : /** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
     573           9 : void ScXMLColumnExportPropertyMapper::handleSpecialItem(
     574             :             SvXMLAttributeList& /* rAttrList */,
     575             :             const XMLPropertyState& /* rProperty */,
     576             :             const SvXMLUnitConverter& /* rUnitConverter */,
     577             :             const SvXMLNamespaceMap& /* rNamespaceMap */,
     578             :             const ::std::vector< XMLPropertyState > * /* pProperties */,
     579             :             sal_uInt32 /* nIdx */ ) const
     580             : {
     581             :     // the SpecialItem IsVisible must not be handled by this method
     582           9 : }
     583             : 
     584          34 : ScXMLTableExportPropertyMapper::ScXMLTableExportPropertyMapper(
     585             :             const UniReference< XMLPropertySetMapper >& rMapper )
     586          34 :             : SvXMLExportPropertyMapper(rMapper)
     587             : {
     588          34 : }
     589             : 
     590          68 : ScXMLTableExportPropertyMapper::~ScXMLTableExportPropertyMapper()
     591             : {
     592          68 : }
     593             : 
     594             : /** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
     595           8 : void ScXMLTableExportPropertyMapper::handleSpecialItem(
     596             :             SvXMLAttributeList& /* rAttrList */,
     597             :             const XMLPropertyState& /* rProperty */,
     598             :             const SvXMLUnitConverter& /* rUnitConverter */,
     599             :             const SvXMLNamespaceMap& /* rNamespaceMap */,
     600             :             const ::std::vector< XMLPropertyState > * /* pProperties */,
     601             :             sal_uInt32 /* nIdx */ ) const
     602             : {
     603             :     // the SpecialItem PageStyle must not be handled by this method
     604           8 : }
     605             : 
     606          63 : void ScXMLAutoStylePoolP::exportStyleAttributes(
     607             :             SvXMLAttributeList& rAttrList,
     608             :             sal_Int32 nFamily,
     609             :             const ::std::vector< XMLPropertyState >& rProperties,
     610             :             const SvXMLExportPropertyMapper& rPropExp
     611             :             , const SvXMLUnitConverter& rUnitConverter,
     612             :             const SvXMLNamespaceMap& rNamespaceMap
     613             :             ) const
     614             : {
     615          63 :     SvXMLAutoStylePoolP::exportStyleAttributes( rAttrList, nFamily, rProperties, rPropExp, rUnitConverter, rNamespaceMap );
     616          63 :     if (nFamily == XML_STYLE_FAMILY_TABLE_CELL)
     617             :     {
     618          14 :         ::std::vector< XMLPropertyState >::const_iterator i(rProperties.begin());
     619          14 :         ::std::vector< XMLPropertyState >::const_iterator endi(rProperties.end());
     620          70 :         while (i != endi)
     621             :         {
     622          42 :             UniReference< XMLPropertySetMapper > aPropMapper(rScXMLExport.GetCellStylesPropertySetMapper());
     623          42 :             sal_Int16 nContextID(aPropMapper->GetEntryContextId(i->mnIndex));
     624          42 :             switch (nContextID)
     625             :             {
     626             :                 case CTF_SC_NUMBERFORMAT :
     627             :                 {
     628           0 :                     sal_Int32 nNumberFormat = 0;
     629           0 :                     if (i->maValue >>= nNumberFormat)
     630             :                     {
     631           0 :                         OUString sAttrValue(rScXMLExport.getDataStyleName(nNumberFormat));
     632           0 :                         if (!sAttrValue.isEmpty())
     633             :                         {
     634           0 :                             GetExport().AddAttribute(
     635           0 :                                 aPropMapper->GetEntryNameSpace(i->mnIndex),
     636           0 :                                 aPropMapper->GetEntryXMLName(i->mnIndex),
     637           0 :                                 sAttrValue );
     638           0 :                         }
     639             :                     }
     640             :                 }
     641           0 :                 break;
     642             :             }
     643          42 :             ++i;
     644          42 :         }
     645             :     }
     646          49 :     else if (nFamily == XML_STYLE_FAMILY_TABLE_TABLE)
     647             :     {
     648           8 :         ::std::vector< XMLPropertyState >::const_iterator i(rProperties.begin());
     649           8 :         ::std::vector< XMLPropertyState >::const_iterator endi(rProperties.end());
     650          48 :         while(i != endi)
     651             :         {
     652          32 :             UniReference< XMLPropertySetMapper > aPropMapper(rScXMLExport.GetTableStylesPropertySetMapper());
     653          32 :             sal_Int16 nContextID(aPropMapper->GetEntryContextId(i->mnIndex));
     654          32 :             switch (nContextID)
     655             :             {
     656             :                 case CTF_SC_MASTERPAGENAME :
     657             :                 {
     658           8 :                     OUString sName;
     659           8 :                     if (i->maValue >>= sName)
     660             :                     {
     661           8 :                         GetExport().AddAttribute(
     662           8 :                             aPropMapper->GetEntryNameSpace(i->mnIndex),
     663           8 :                             aPropMapper->GetEntryXMLName(i->mnIndex),
     664          24 :                             GetExport().EncodeStyleName( sName ));
     665           8 :                     }
     666             :                 }
     667           8 :                 break;
     668             :             }
     669          32 :             ++i;
     670          32 :         }
     671             :     }
     672          63 : }
     673             : 
     674          63 : void ScXMLAutoStylePoolP::exportStyleContent(
     675             :         const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
     676             :         sal_Int32 nFamily,
     677             :         const std::vector< XMLPropertyState >& rProperties,
     678             :         const SvXMLExportPropertyMapper& rPropExp
     679             :         , const SvXMLUnitConverter& rUnitConverter,
     680             :         const SvXMLNamespaceMap& rNamespaceMap
     681             :         ) const
     682             : {
     683          63 :     SvXMLAutoStylePoolP::exportStyleContent( rHandler, nFamily, rProperties, rPropExp, rUnitConverter, rNamespaceMap );
     684          63 :     if (nFamily == XML_STYLE_FAMILY_TABLE_CELL)
     685             :     {
     686          14 :         sal_Bool bNotFound = sal_True;
     687          14 :         ::std::vector< XMLPropertyState >::const_iterator i(rProperties.begin());
     688          14 :         ::std::vector< XMLPropertyState >::const_iterator endi(rProperties.end());
     689          70 :         while ((i != endi) && bNotFound)
     690             :         {
     691          42 :             if (i->mnIndex != -1)
     692             :             {
     693          28 :                 sal_Int16 nContextID = rScXMLExport.GetCellStylesPropertySetMapper()->GetEntryContextId(i->mnIndex);
     694          28 :                 switch (nContextID)
     695             :                 {
     696             :                     case CTF_SC_MAP :
     697             :                     {
     698          14 :                         uno::Reference<container::XIndexAccess> xIndex( i->maValue, uno::UNO_QUERY );
     699          14 :                            if ( xIndex.is() )
     700             :                         {
     701          14 :                             sal_Int32 nConditionCount(xIndex->getCount());
     702          22 :                             for (sal_Int32 nCondition = 0; nCondition < nConditionCount; ++nCondition)
     703             :                             {
     704           8 :                                 uno::Reference <sheet::XSheetConditionalEntry> xSheetConditionalEntry(xIndex->getByIndex(nCondition), uno::UNO_QUERY);
     705           8 :                                 if (xSheetConditionalEntry.is())
     706             :                                 {
     707           8 :                                     OUString sStyleName(xSheetConditionalEntry->getStyleName());
     708          16 :                                     uno::Reference <sheet::XSheetCondition> xSheetCondition(xSheetConditionalEntry, uno::UNO_QUERY);
     709           8 :                                     if (xSheetCondition.is())
     710             :                                     {
     711           8 :                                         sheet::ConditionOperator aOperator = xSheetCondition->getOperator();
     712           8 :                                         if (aOperator != sheet::ConditionOperator_NONE)
     713             :                                         {
     714           0 :                                             if (aOperator == sheet::ConditionOperator_FORMULA)
     715             :                                             {
     716           0 :                                                 OUString sCondition("is-true-formula(");
     717           0 :                                                 sCondition += xSheetCondition->getFormula1();
     718           0 :                                                 sCondition += OUString(")");
     719           0 :                                                 rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_CONDITION, sCondition);
     720           0 :                                                 rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_APPLY_STYLE_NAME, rScXMLExport.EncodeStyleName( sStyleName ));
     721           0 :                                                 OUString sOUBaseAddress;
     722           0 :                                                 ScDocument* pDoc = rScXMLExport.GetDocument();
     723             :                                                 ScRangeStringConverter::GetStringFromAddress( sOUBaseAddress,
     724           0 :                                                     xSheetCondition->getSourcePosition(), pDoc, FormulaGrammar::CONV_OOO );
     725           0 :                                                 rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_BASE_CELL_ADDRESS, sOUBaseAddress);
     726           0 :                                                 SvXMLElementExport aMElem(rScXMLExport, XML_NAMESPACE_STYLE, XML_MAP, sal_True, sal_True);
     727             :                                             }
     728             :                                             else
     729             :                                             {
     730           0 :                                                 OUString sCondition;
     731           0 :                                                 if (aOperator == sheet::ConditionOperator_BETWEEN ||
     732             :                                                     aOperator == sheet::ConditionOperator_NOT_BETWEEN)
     733             :                                                 {
     734           0 :                                                     if (aOperator == sheet::ConditionOperator_BETWEEN)
     735           0 :                                                         sCondition = OUString("cell-content-is-between(");
     736             :                                                     else
     737           0 :                                                         sCondition = OUString("cell-content-is-not-between(");
     738           0 :                                                     sCondition += xSheetCondition->getFormula1();
     739           0 :                                                     sCondition += OUString(",");
     740           0 :                                                     sCondition += xSheetCondition->getFormula2();
     741           0 :                                                     sCondition += OUString(")");
     742             :                                                 }
     743             :                                                 else
     744             :                                                 {
     745           0 :                                                     sCondition = OUString("cell-content()");
     746           0 :                                                     switch (aOperator)
     747             :                                                     {
     748             :                                                         case sheet::ConditionOperator_LESS:
     749           0 :                                                             sCondition += OUString("<");
     750           0 :                                                         break;
     751             :                                                         case sheet::ConditionOperator_GREATER:
     752           0 :                                                             sCondition += OUString(">");
     753           0 :                                                         break;
     754             :                                                         case sheet::ConditionOperator_LESS_EQUAL:
     755           0 :                                                             sCondition += OUString("<=");
     756           0 :                                                         break;
     757             :                                                         case sheet::ConditionOperator_GREATER_EQUAL:
     758           0 :                                                             sCondition += OUString(">=");
     759           0 :                                                         break;
     760             :                                                         case sheet::ConditionOperator_EQUAL:
     761           0 :                                                             sCondition += OUString("=");
     762           0 :                                                         break;
     763             :                                                         case sheet::ConditionOperator_NOT_EQUAL:
     764           0 :                                                             sCondition += OUString("!=");
     765           0 :                                                         break;
     766             :                                                         default:
     767             :                                                         {
     768             :                                                             // added to avoid warnings
     769             :                                                         }
     770             :                                                     }
     771           0 :                                                     sCondition += xSheetCondition->getFormula1();
     772             :                                                 }
     773           0 :                                                 rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_CONDITION, sCondition);
     774           0 :                                                 rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_APPLY_STYLE_NAME, rScXMLExport.EncodeStyleName( sStyleName ));
     775           0 :                                                 OUString sOUBaseAddress;
     776             :                                                 ScRangeStringConverter::GetStringFromAddress( sOUBaseAddress,
     777           0 :                                                     xSheetCondition->getSourcePosition(), rScXMLExport.GetDocument(), FormulaGrammar::CONV_OOO );
     778           0 :                                                 rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_BASE_CELL_ADDRESS, sOUBaseAddress);
     779           0 :                                                 SvXMLElementExport aMElem(rScXMLExport, XML_NAMESPACE_STYLE, XML_MAP, sal_True, sal_True);
     780             :                                             }
     781             :                                         }
     782           8 :                                     }
     783             :                                 }
     784           8 :                             }
     785          14 :                         }
     786             :                     }
     787          14 :                     break;
     788             :                 }
     789             :             }
     790          42 :             ++i;
     791             :         }
     792             :     }
     793          63 : }
     794             : 
     795          34 : ScXMLAutoStylePoolP::ScXMLAutoStylePoolP(ScXMLExport& rTempScXMLExport):
     796             :     SvXMLAutoStylePoolP(rTempScXMLExport),
     797          34 :     rScXMLExport(rTempScXMLExport)
     798             : {
     799          34 : }
     800             : 
     801          68 : ScXMLAutoStylePoolP::~ScXMLAutoStylePoolP()
     802             : {
     803          68 : }
     804             : 
     805             : 
     806          48 : void ScXMLStyleExport::exportStyleAttributes(
     807             :         const ::com::sun::star::uno::Reference<
     808             :                 ::com::sun::star::style::XStyle > & rStyle )
     809             : {
     810          48 :     uno::Reference< beans::XPropertySet > xPropSet( rStyle, uno::UNO_QUERY );
     811          48 :     if (xPropSet.is())
     812             :     {
     813          48 :         uno::Reference< beans::XPropertySetInfo > xPropSetInfo(xPropSet->getPropertySetInfo());
     814          96 :         OUString sNumberFormat("NumberFormat");
     815          48 :         if( xPropSetInfo->hasPropertyByName( sNumberFormat ) )
     816             :         {
     817          48 :             uno::Reference< beans::XPropertyState > xPropState( xPropSet, uno::UNO_QUERY );
     818          96 :             if( xPropState.is() && (beans::PropertyState_DIRECT_VALUE ==
     819          48 :                     xPropState->getPropertyState( sNumberFormat )) )
     820             :             {
     821          17 :                 sal_Int32 nNumberFormat = 0;
     822          17 :                 if (xPropSet->getPropertyValue( sNumberFormat ) >>= nNumberFormat)
     823          17 :                     GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
     824          34 :                                                         GetExport().getDataStyleName(nNumberFormat) );
     825          48 :             }
     826          48 :         }
     827          48 :     }
     828          48 : }
     829             : 
     830          48 : void ScXMLStyleExport::exportStyleContent(
     831             :         const ::com::sun::star::uno::Reference<
     832             :                 ::com::sun::star::style::XStyle > & /* rStyle */ )
     833             : {
     834          48 : }
     835             : 
     836           8 : ScXMLStyleExport::ScXMLStyleExport(
     837             :         SvXMLExport& rExp,
     838             :         const OUString& rPoolStyleName,
     839             :         SvXMLAutoStylePoolP *pAutoStyleP )
     840           8 :     : XMLStyleExport(rExp, rPoolStyleName, pAutoStyleP)
     841             : {
     842           8 : }
     843             : 
     844           8 : ScXMLStyleExport::~ScXMLStyleExport()
     845             : {
     846           8 : }
     847             : 
     848         336 : XMLScPropHdlFactory::XMLScPropHdlFactory()
     849         336 :     : XMLPropertyHandlerFactory()
     850             : {
     851         336 : }
     852             : 
     853         672 : XMLScPropHdlFactory::~XMLScPropHdlFactory()
     854             : {
     855         672 : }
     856             : 
     857       20662 : const XMLPropertyHandler* XMLScPropHdlFactory::GetPropertyHandler( sal_Int32 nType ) const
     858             : {
     859       20662 :     nType &= MID_FLAG_MASK;
     860             : 
     861       20662 :     XMLPropertyHandler* pHdl((XMLPropertyHandler*)XMLPropertyHandlerFactory::GetPropertyHandler( nType ));
     862       20662 :     if(!pHdl)
     863             :     {
     864        5040 :         switch(nType)
     865             :         {
     866             :             case XML_SC_TYPE_CELLPROTECTION :
     867             :             {
     868         336 :                 pHdl = new XmlScPropHdl_CellProtection;
     869             :             }
     870         336 :             break;
     871             :             case XML_SC_TYPE_PRINTCONTENT :
     872             :             {
     873         336 :                 pHdl = new XmlScPropHdl_PrintContent;
     874             :             }
     875         336 :             break;
     876             :             case XML_SC_TYPE_HORIJUSTIFY_METHOD:
     877             :             case XML_SC_TYPE_VERTJUSTIFY_METHOD:
     878             :             {
     879         672 :                 pHdl = new XmlScPropHdl_JustifyMethod;
     880             :             }
     881         672 :             break;
     882             :             case XML_SC_TYPE_HORIJUSTIFY :
     883             :             {
     884         336 :                 pHdl = new XmlScPropHdl_HoriJustify;
     885             :             }
     886         336 :             break;
     887             :             case XML_SC_TYPE_HORIJUSTIFYSOURCE :
     888             :             {
     889         336 :                 pHdl = new XmlScPropHdl_HoriJustifySource;
     890             :             }
     891         336 :             break;
     892             :             case XML_SC_TYPE_HORIJUSTIFYREPEAT :
     893             :             {
     894         336 :                 pHdl = new XmlScPropHdl_HoriJustifyRepeat;
     895             :             }
     896         336 :             break;
     897             :             case XML_SC_TYPE_ORIENTATION :
     898             :             {
     899         336 :                 pHdl = new XmlScPropHdl_Orientation;
     900             :             }
     901         336 :             break;
     902             :             case XML_SC_TYPE_ROTATEANGLE :
     903             :             {
     904         336 :                 pHdl = new XmlScPropHdl_RotateAngle;
     905             :             }
     906         336 :             break;
     907             :             case XML_SC_TYPE_ROTATEREFERENCE :
     908             :             {
     909         336 :                 pHdl = new XmlScPropHdl_RotateReference;
     910             :             }
     911         336 :             break;
     912             :             case XML_SC_TYPE_VERTJUSTIFY :
     913             :             {
     914         336 :                 pHdl = new XmlScPropHdl_VertJustify;
     915             :             }
     916         336 :             break;
     917             :             case XML_SC_TYPE_BREAKBEFORE :
     918             :             {
     919         336 :                 pHdl = new XmlScPropHdl_BreakBefore;
     920             :             }
     921         336 :             break;
     922             :             case XML_SC_ISTEXTWRAPPED :
     923             :             {
     924         336 :                 pHdl = new XmlScPropHdl_IsTextWrapped;
     925             :             }
     926         336 :             break;
     927             :             case XML_SC_TYPE_EQUAL :
     928             :             {
     929         336 :                 pHdl = new XmlScPropHdl_IsEqual;
     930             :             }
     931         336 :             break;
     932             :             case XML_SC_TYPE_VERTICAL :
     933             :             {
     934         336 :                 pHdl = new XmlScPropHdl_Vertical;
     935             :             }
     936         336 :             break;
     937             :         }
     938             : 
     939        5040 :         if(pHdl)
     940        5040 :             PutHdlCache(nType, pHdl);
     941             :     }
     942             : 
     943       20662 :     return pHdl;
     944             : }
     945             : 
     946         672 : XmlScPropHdl_CellProtection::~XmlScPropHdl_CellProtection()
     947             : {
     948         672 : }
     949             : 
     950           0 : bool XmlScPropHdl_CellProtection::equals(
     951             :     const ::com::sun::star::uno::Any& r1,
     952             :     const ::com::sun::star::uno::Any& r2 ) const
     953             : {
     954           0 :     util::CellProtection aCellProtection1, aCellProtection2;
     955             : 
     956           0 :     if((r1 >>= aCellProtection1) && (r2 >>= aCellProtection2))
     957             :     {
     958           0 :         return ((aCellProtection1.IsHidden == aCellProtection2.IsHidden) &&
     959           0 :                 (aCellProtection1.IsLocked == aCellProtection2.IsLocked) &&
     960           0 :                 (aCellProtection1.IsFormulaHidden == aCellProtection2.IsFormulaHidden));
     961             :     }
     962           0 :     return false;
     963             : }
     964             : 
     965           3 : sal_Bool XmlScPropHdl_CellProtection::importXML(
     966             :     const OUString& rStrImpValue,
     967             :     ::com::sun::star::uno::Any& rValue,
     968             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
     969             : {
     970           3 :     sal_Bool bRetval(false);
     971             : 
     972           3 :     util::CellProtection aCellProtection;
     973           3 :     sal_Bool bDefault(false);
     974           3 :     if (!rValue.hasValue())
     975             :     {
     976           3 :         aCellProtection.IsHidden = false;
     977           3 :         aCellProtection.IsLocked = sal_True;
     978           3 :         aCellProtection.IsFormulaHidden = false;
     979           3 :         aCellProtection.IsPrintHidden = false;
     980           3 :         bDefault = sal_True;
     981             :     }
     982           3 :     if ((rValue >>= aCellProtection) || bDefault)
     983             :     {
     984           3 :         if (!IsXMLToken(rStrImpValue, XML_NONE))
     985             :         {
     986           3 :             if (!IsXMLToken(rStrImpValue, XML_HIDDEN_AND_PROTECTED))
     987             :             {
     988           3 :                 if (!IsXMLToken(rStrImpValue, XML_PROTECTED))
     989             :                 {
     990           0 :                     if (!IsXMLToken(rStrImpValue, XML_FORMULA_HIDDEN))
     991             :                     {
     992           0 :                         sal_Int16 i(0);
     993           0 :                         while (i < rStrImpValue.getLength() && rStrImpValue[i] != ' ')
     994           0 :                             ++i;
     995           0 :                         OUString sFirst(rStrImpValue.copy(0, i));
     996           0 :                         OUString sSecond(rStrImpValue.copy(i + 1));
     997           0 :                         aCellProtection.IsFormulaHidden = false;
     998           0 :                         aCellProtection.IsHidden = false;
     999           0 :                         aCellProtection.IsLocked = false;
    1000           0 :                         if ((IsXMLToken(sFirst, XML_PROTECTED)) || (IsXMLToken(sSecond, XML_PROTECTED)))
    1001           0 :                             aCellProtection.IsLocked = sal_True;
    1002           0 :                         if ((IsXMLToken(sFirst, XML_FORMULA_HIDDEN)) || (IsXMLToken(sSecond, XML_FORMULA_HIDDEN)))
    1003           0 :                             aCellProtection.IsFormulaHidden = sal_True;
    1004           0 :                         rValue <<= aCellProtection;
    1005           0 :                         bRetval = sal_True;
    1006             :                     }
    1007             :                     else
    1008             :                     {
    1009           0 :                         aCellProtection.IsFormulaHidden = sal_True;
    1010           0 :                         aCellProtection.IsHidden = false;
    1011           0 :                         aCellProtection.IsLocked = false;
    1012           0 :                         rValue <<= aCellProtection;
    1013           0 :                         bRetval = sal_True;
    1014             :                     }
    1015             :                 }
    1016             :                 else
    1017             :                 {
    1018           3 :                     aCellProtection.IsFormulaHidden = false;
    1019           3 :                     aCellProtection.IsHidden = false;
    1020           3 :                     aCellProtection.IsLocked = sal_True;
    1021           3 :                     rValue <<= aCellProtection;
    1022           3 :                     bRetval = sal_True;
    1023             :                 }
    1024             :             }
    1025             :             else
    1026             :             {
    1027           0 :                 aCellProtection.IsFormulaHidden = sal_True;
    1028           0 :                 aCellProtection.IsHidden = sal_True;
    1029           0 :                 aCellProtection.IsLocked = sal_True;
    1030           0 :                 rValue <<= aCellProtection;
    1031           0 :                 bRetval = sal_True;
    1032             :             }
    1033             :         }
    1034             :         else
    1035             :         {
    1036           0 :             aCellProtection.IsFormulaHidden = false;
    1037           0 :             aCellProtection.IsHidden = false;
    1038           0 :             aCellProtection.IsLocked = false;
    1039           0 :             rValue <<= aCellProtection;
    1040           0 :             bRetval = sal_True;
    1041             :         }
    1042             :     }
    1043             : 
    1044           3 :     return bRetval;
    1045             : }
    1046             : 
    1047           1 : sal_Bool XmlScPropHdl_CellProtection::exportXML(
    1048             :     OUString& rStrExpValue,
    1049             :     const ::com::sun::star::uno::Any& rValue,
    1050             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1051             : {
    1052           1 :     sal_Bool bRetval(false);
    1053           1 :     util::CellProtection aCellProtection;
    1054             : 
    1055           1 :     if(rValue >>= aCellProtection)
    1056             :     {
    1057           1 :         if (!(aCellProtection.IsFormulaHidden || aCellProtection.IsHidden || aCellProtection.IsLocked))
    1058             :         {
    1059           0 :             rStrExpValue = GetXMLToken(XML_NONE);
    1060           0 :             bRetval = sal_True;
    1061             :         }
    1062           1 :         else if (aCellProtection.IsHidden)
    1063             :         {
    1064             :             // #i105964# "Hide all" implies "Protected" in the UI, so it must be saved as "hidden-and-protected"
    1065             :             // even if "IsLocked" is not set in the CellProtection struct.
    1066           0 :             rStrExpValue = GetXMLToken(XML_HIDDEN_AND_PROTECTED);
    1067           0 :             bRetval = sal_True;
    1068             :         }
    1069           1 :         else if (aCellProtection.IsLocked && !(aCellProtection.IsFormulaHidden || aCellProtection.IsHidden))
    1070             :         {
    1071           1 :             rStrExpValue = GetXMLToken(XML_PROTECTED);
    1072           1 :             bRetval = sal_True;
    1073             :         }
    1074           0 :         else if (aCellProtection.IsFormulaHidden && !(aCellProtection.IsLocked || aCellProtection.IsHidden))
    1075             :         {
    1076           0 :             rStrExpValue = GetXMLToken(XML_FORMULA_HIDDEN);
    1077           0 :             bRetval = sal_True;
    1078             :         }
    1079           0 :         else if (aCellProtection.IsFormulaHidden && aCellProtection.IsLocked)
    1080             :         {
    1081           0 :             rStrExpValue = GetXMLToken(XML_PROTECTED);
    1082           0 :             rStrExpValue += OUString(" ");
    1083           0 :             rStrExpValue += GetXMLToken(XML_FORMULA_HIDDEN);
    1084           0 :             bRetval = sal_True;
    1085             :         }
    1086             :     }
    1087             : 
    1088           1 :     return bRetval;
    1089             : }
    1090             : 
    1091         672 : XmlScPropHdl_PrintContent::~XmlScPropHdl_PrintContent()
    1092             : {
    1093         672 : }
    1094             : 
    1095           0 : bool XmlScPropHdl_PrintContent::equals(
    1096             :     const ::com::sun::star::uno::Any& r1,
    1097             :     const ::com::sun::star::uno::Any& r2 ) const
    1098             : {
    1099           0 :     util::CellProtection aCellProtection1, aCellProtection2;
    1100             : 
    1101           0 :     if((r1 >>= aCellProtection1) && (r2 >>= aCellProtection2))
    1102             :     {
    1103           0 :         return (aCellProtection1.IsPrintHidden == aCellProtection2.IsPrintHidden);
    1104             :     }
    1105           0 :     return false;
    1106             : }
    1107             : 
    1108           3 : sal_Bool XmlScPropHdl_PrintContent::importXML(
    1109             :     const OUString& rStrImpValue,
    1110             :     ::com::sun::star::uno::Any& rValue,
    1111             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1112             : {
    1113           3 :     sal_Bool bRetval(false);
    1114           3 :     util::CellProtection aCellProtection;
    1115           3 :     sal_Bool bDefault(false);
    1116           3 :     if (!rValue.hasValue())
    1117             :     {
    1118           0 :         aCellProtection.IsHidden = false;
    1119           0 :         aCellProtection.IsLocked = sal_True;
    1120           0 :         aCellProtection.IsFormulaHidden = false;
    1121           0 :         aCellProtection.IsPrintHidden = false;
    1122           0 :         bDefault = sal_True;
    1123             :     }
    1124           3 :     if ((rValue >>= aCellProtection) || bDefault)
    1125             :     {
    1126           3 :         bool bValue(false);
    1127           3 :         if (::sax::Converter::convertBool(bValue, rStrImpValue))
    1128             :         {
    1129           3 :             aCellProtection.IsPrintHidden = !bValue;
    1130           3 :             rValue <<= aCellProtection;
    1131           3 :             bRetval = sal_True;
    1132             :         }
    1133             :     }
    1134             : 
    1135           3 :     return bRetval;
    1136             : }
    1137             : 
    1138           1 : sal_Bool XmlScPropHdl_PrintContent::exportXML(
    1139             :     OUString& rStrExpValue,
    1140             :     const ::com::sun::star::uno::Any& rValue,
    1141             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1142             : {
    1143           1 :     sal_Bool bRetval(false);
    1144             : 
    1145           1 :     util::CellProtection aCellProtection;
    1146           1 :     if(rValue >>= aCellProtection)
    1147             :     {
    1148           1 :         OUStringBuffer sValue;
    1149           1 :         ::sax::Converter::convertBool(sValue, !aCellProtection.IsPrintHidden);
    1150           1 :         rStrExpValue = sValue.makeStringAndClear();
    1151           1 :         bRetval = sal_True;
    1152             :     }
    1153             : 
    1154           1 :     return bRetval;
    1155             : }
    1156             : 
    1157             : 
    1158        1344 : XmlScPropHdl_JustifyMethod::~XmlScPropHdl_JustifyMethod()
    1159             : {
    1160        1344 : }
    1161             : 
    1162           0 : bool XmlScPropHdl_JustifyMethod::equals(
    1163             :     const ::com::sun::star::uno::Any& r1,
    1164             :     const ::com::sun::star::uno::Any& r2 ) const
    1165             : {
    1166           0 :     sal_Int32 nVal1(0), nVal2(0);
    1167             : 
    1168           0 :     if((r1 >>= nVal1) && (r2 >>= nVal2))
    1169           0 :         return (nVal1 == nVal2);
    1170           0 :     return false;
    1171             : }
    1172             : 
    1173           8 : sal_Bool XmlScPropHdl_JustifyMethod::importXML(
    1174             :     const OUString& rStrImpValue,
    1175             :     ::com::sun::star::uno::Any& rValue,
    1176             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1177             : {
    1178           8 :     bool bRetval = false;
    1179             : 
    1180           8 :     sal_Int32 nValue = table::CellJustifyMethod::AUTO;
    1181           8 :     if (IsXMLToken(rStrImpValue, XML_AUTO))
    1182             :     {
    1183           8 :         nValue = table::CellJustifyMethod::AUTO;
    1184           8 :         rValue <<= nValue;
    1185           8 :         bRetval = true;
    1186             :     }
    1187           0 :     else if (IsXMLToken(rStrImpValue, XML_DISTRIBUTE))
    1188             :     {
    1189           0 :         nValue = table::CellJustifyMethod::DISTRIBUTE;
    1190           0 :         rValue <<= nValue;
    1191           0 :         bRetval = true;
    1192             :     }
    1193             :     else
    1194           0 :         bRetval = true;
    1195             : 
    1196           8 :     return bRetval;
    1197             : }
    1198             : 
    1199           2 : sal_Bool XmlScPropHdl_JustifyMethod::exportXML(
    1200             :     OUString& rStrExpValue,
    1201             :     const ::com::sun::star::uno::Any& rValue,
    1202             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1203             : {
    1204           2 :     sal_Int32 nVal(0);
    1205           2 :     bool bRetval = false;
    1206             : 
    1207           2 :     if (rValue >>= nVal)
    1208             :     {
    1209           2 :         switch (nVal)
    1210             :         {
    1211             :             case table::CellJustifyMethod::AUTO:
    1212             :             {
    1213           2 :                 rStrExpValue = GetXMLToken(XML_AUTO);
    1214           2 :                 bRetval = true;
    1215             :             }
    1216           2 :             break;
    1217             :             case table::CellJustifyMethod::DISTRIBUTE:
    1218             :             {
    1219           0 :                 rStrExpValue = GetXMLToken(XML_DISTRIBUTE);
    1220           0 :                 bRetval = true;
    1221             :             }
    1222           0 :             break;
    1223             :             default:
    1224             :             {
    1225             :                 // added to avoid warnings
    1226             :             }
    1227             :         }
    1228             :     }
    1229           2 :     return bRetval;
    1230             : }
    1231             : 
    1232         672 : XmlScPropHdl_HoriJustify::~XmlScPropHdl_HoriJustify()
    1233             : {
    1234         672 : }
    1235             : 
    1236           0 : bool XmlScPropHdl_HoriJustify::equals(
    1237             :     const ::com::sun::star::uno::Any& r1,
    1238             :     const ::com::sun::star::uno::Any& r2 ) const
    1239             : {
    1240             :     table::CellHoriJustify aHoriJustify1, aHoriJustify2;
    1241             : 
    1242           0 :     if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
    1243           0 :         return (aHoriJustify1 == aHoriJustify2);
    1244           0 :     return false;
    1245             : }
    1246             : 
    1247          86 : sal_Bool XmlScPropHdl_HoriJustify::importXML(
    1248             :     const OUString& rStrImpValue,
    1249             :     ::com::sun::star::uno::Any& rValue,
    1250             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1251             : {
    1252          86 :     sal_Bool bRetval(false);
    1253             : 
    1254          86 :     table::CellHoriJustify nValue = table::CellHoriJustify_LEFT;
    1255          86 :     rValue >>= nValue;
    1256          86 :     if (nValue != table::CellHoriJustify_REPEAT)
    1257             :     {
    1258          86 :         if (IsXMLToken(rStrImpValue, XML_START))
    1259             :         {
    1260           6 :              nValue = table::CellHoriJustify_LEFT;
    1261           6 :             rValue <<= nValue;
    1262           6 :             bRetval = sal_True;
    1263             :         }
    1264          80 :         else if (IsXMLToken(rStrImpValue, XML_END))
    1265             :         {
    1266           1 :              nValue = table::CellHoriJustify_RIGHT;
    1267           1 :             rValue <<= nValue;
    1268           1 :             bRetval = sal_True;
    1269             :         }
    1270          79 :         else if (IsXMLToken(rStrImpValue, XML_CENTER))
    1271             :         {
    1272          78 :              nValue = table::CellHoriJustify_CENTER;
    1273          78 :             rValue <<= nValue;
    1274          78 :             bRetval = sal_True;
    1275             :         }
    1276           1 :         else if (IsXMLToken(rStrImpValue, XML_JUSTIFY))
    1277             :         {
    1278           1 :              nValue = table::CellHoriJustify_BLOCK;
    1279           1 :             rValue <<= nValue;
    1280           1 :             bRetval = sal_True;
    1281             :         }
    1282             :     }
    1283             :     else
    1284           0 :         bRetval = sal_True;
    1285             : 
    1286          86 :     return bRetval;
    1287             : }
    1288             : 
    1289           9 : sal_Bool XmlScPropHdl_HoriJustify::exportXML(
    1290             :     OUString& rStrExpValue,
    1291             :     const ::com::sun::star::uno::Any& rValue,
    1292             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1293             : {
    1294             :     table::CellHoriJustify nVal;
    1295           9 :     sal_Bool bRetval(false);
    1296             : 
    1297           9 :     if(rValue >>= nVal)
    1298             :     {
    1299           9 :         switch (nVal)
    1300             :         {
    1301             :             case table::CellHoriJustify_REPEAT:
    1302             :             case table::CellHoriJustify_LEFT:
    1303             :             {
    1304           0 :                 rStrExpValue = GetXMLToken(XML_START);
    1305           0 :                 bRetval = sal_True;
    1306             :             }
    1307           0 :             break;
    1308             :             case table::CellHoriJustify_RIGHT:
    1309             :             {
    1310           0 :                 rStrExpValue = GetXMLToken(XML_END);
    1311           0 :                 bRetval = sal_True;
    1312             :             }
    1313           0 :             break;
    1314             :             case table::CellHoriJustify_CENTER:
    1315             :             {
    1316           8 :                 rStrExpValue = GetXMLToken(XML_CENTER);
    1317           8 :                 bRetval = sal_True;
    1318             :             }
    1319           8 :             break;
    1320             :             case table::CellHoriJustify_BLOCK:
    1321             :             {
    1322           0 :                 rStrExpValue = GetXMLToken(XML_JUSTIFY);
    1323           0 :                 bRetval = sal_True;
    1324             :             }
    1325           0 :             break;
    1326             :             default:
    1327             :             {
    1328             :                 // added to avoid warnings
    1329             :             }
    1330             :         }
    1331             :     }
    1332             : 
    1333           9 :     return bRetval;
    1334             : }
    1335             : 
    1336         672 : XmlScPropHdl_HoriJustifySource::~XmlScPropHdl_HoriJustifySource()
    1337             : {
    1338         672 : }
    1339             : 
    1340           0 : bool XmlScPropHdl_HoriJustifySource::equals(
    1341             :     const ::com::sun::star::uno::Any& r1,
    1342             :     const ::com::sun::star::uno::Any& r2 ) const
    1343             : {
    1344             :     table::CellHoriJustify aHoriJustify1, aHoriJustify2;
    1345             : 
    1346           0 :     if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
    1347           0 :         return (aHoriJustify1 == aHoriJustify2);
    1348           0 :     return false;
    1349             : }
    1350             : 
    1351          90 : sal_Bool XmlScPropHdl_HoriJustifySource::importXML(
    1352             :     const OUString& rStrImpValue,
    1353             :     ::com::sun::star::uno::Any& rValue,
    1354             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1355             : {
    1356          90 :     sal_Bool bRetval(false);
    1357             : 
    1358          90 :     if (IsXMLToken(rStrImpValue, XML_FIX))
    1359             :     {
    1360          86 :         bRetval = sal_True;
    1361             :     }
    1362           4 :     else if (IsXMLToken(rStrImpValue, XML_VALUE_TYPE))
    1363             :     {
    1364           4 :         table::CellHoriJustify nValue(table::CellHoriJustify_STANDARD);
    1365           4 :         rValue <<= nValue;
    1366           4 :         bRetval = sal_True;
    1367             :     }
    1368             : 
    1369          90 :     return bRetval;
    1370             : }
    1371             : 
    1372           9 : sal_Bool XmlScPropHdl_HoriJustifySource::exportXML(
    1373             :     OUString& rStrExpValue,
    1374             :     const ::com::sun::star::uno::Any& rValue,
    1375             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1376             : {
    1377             :     table::CellHoriJustify nVal;
    1378           9 :     sal_Bool bRetval(false);
    1379             : 
    1380           9 :     if(rValue >>= nVal)
    1381             :     {
    1382           9 :         if (nVal == table::CellHoriJustify_STANDARD)
    1383             :         {
    1384           1 :             rStrExpValue = GetXMLToken(XML_VALUE_TYPE);
    1385           1 :             bRetval = sal_True;
    1386             :         }
    1387             :         else
    1388             :         {
    1389           8 :             rStrExpValue = GetXMLToken(XML_FIX);
    1390           8 :             bRetval = sal_True;
    1391             :         }
    1392             :     }
    1393             : 
    1394           9 :     return bRetval;
    1395             : }
    1396             : 
    1397         672 : XmlScPropHdl_HoriJustifyRepeat::~XmlScPropHdl_HoriJustifyRepeat()
    1398             : {
    1399         672 : }
    1400             : 
    1401           0 : bool XmlScPropHdl_HoriJustifyRepeat::equals(
    1402             :     const ::com::sun::star::uno::Any& r1,
    1403             :     const ::com::sun::star::uno::Any& r2 ) const
    1404             : {
    1405             :     table::CellHoriJustify aHoriJustify1, aHoriJustify2;
    1406             : 
    1407           0 :     if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
    1408           0 :         return (aHoriJustify1 == aHoriJustify2);
    1409           0 :     return false;
    1410             : }
    1411             : 
    1412          84 : sal_Bool XmlScPropHdl_HoriJustifyRepeat::importXML(
    1413             :     const OUString& rStrImpValue,
    1414             :     ::com::sun::star::uno::Any& rValue,
    1415             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1416             : {
    1417          84 :     sal_Bool bRetval(false);
    1418             : 
    1419          84 :     if (IsXMLToken(rStrImpValue, XML_FALSE))
    1420             :     {
    1421          84 :         bRetval = sal_True;
    1422             :     }
    1423           0 :     else if (IsXMLToken(rStrImpValue, XML_TRUE))
    1424             :     {
    1425           0 :         table::CellHoriJustify nValue = table::CellHoriJustify_REPEAT;
    1426           0 :         rValue <<= nValue;
    1427           0 :         bRetval = sal_True;
    1428             :     }
    1429             : 
    1430          84 :     return bRetval;
    1431             : }
    1432             : 
    1433           9 : sal_Bool XmlScPropHdl_HoriJustifyRepeat::exportXML(
    1434             :     OUString& rStrExpValue,
    1435             :     const ::com::sun::star::uno::Any& rValue,
    1436             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1437             : {
    1438             :     table::CellHoriJustify nVal;
    1439           9 :     sal_Bool bRetval(false);
    1440             : 
    1441           9 :     if(rValue >>= nVal)
    1442             :     {
    1443           9 :         if (nVal == table::CellHoriJustify_REPEAT)
    1444             :         {
    1445           0 :             rStrExpValue = GetXMLToken(XML_TRUE);
    1446           0 :             bRetval = sal_True;
    1447             :         }
    1448             :         else
    1449             :         {
    1450           9 :             rStrExpValue = GetXMLToken(XML_FALSE);
    1451           9 :             bRetval = sal_True;
    1452             :         }
    1453             :     }
    1454             : 
    1455           9 :     return bRetval;
    1456             : }
    1457             : 
    1458         672 : XmlScPropHdl_Orientation::~XmlScPropHdl_Orientation()
    1459             : {
    1460         672 : }
    1461             : 
    1462           0 : bool XmlScPropHdl_Orientation::equals(
    1463             :     const ::com::sun::star::uno::Any& r1,
    1464             :     const ::com::sun::star::uno::Any& r2 ) const
    1465             : {
    1466             :     table::CellOrientation aOrientation1, aOrientation2;
    1467             : 
    1468           0 :     if((r1 >>= aOrientation1) && (r2 >>= aOrientation2))
    1469           0 :         return (aOrientation1 == aOrientation2);
    1470           0 :     return false;
    1471             : }
    1472             : 
    1473          11 : sal_Bool XmlScPropHdl_Orientation::importXML(
    1474             :     const OUString& rStrImpValue,
    1475             :     ::com::sun::star::uno::Any& rValue,
    1476             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1477             : {
    1478          11 :     sal_Bool bRetval(false);
    1479             : 
    1480             :     table::CellOrientation nValue;
    1481          11 :     if (IsXMLToken(rStrImpValue, XML_LTR))
    1482             :     {
    1483          11 :         nValue = table::CellOrientation_STANDARD;
    1484          11 :         rValue <<= nValue;
    1485          11 :         bRetval = sal_True;
    1486             :     }
    1487           0 :     else if (IsXMLToken(rStrImpValue, XML_TTB))
    1488             :     {
    1489           0 :         nValue = table::CellOrientation_STACKED;
    1490           0 :         rValue <<= nValue;
    1491           0 :         bRetval = sal_True;
    1492             :     }
    1493             : 
    1494          11 :     return bRetval;
    1495             : }
    1496             : 
    1497           1 : sal_Bool XmlScPropHdl_Orientation::exportXML(
    1498             :     OUString& rStrExpValue,
    1499             :     const ::com::sun::star::uno::Any& rValue,
    1500             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1501             : {
    1502             :     table::CellOrientation nVal;
    1503           1 :     sal_Bool bRetval(false);
    1504             : 
    1505           1 :     if(rValue >>= nVal)
    1506             :     {
    1507           1 :         switch (nVal)
    1508             :         {
    1509             :             case table::CellOrientation_STACKED :
    1510             :             {
    1511           0 :                 rStrExpValue = GetXMLToken(XML_TTB);
    1512           0 :                 bRetval = sal_True;
    1513             :             }
    1514           0 :             break;
    1515             :             default:
    1516             :             {
    1517           1 :                 rStrExpValue = GetXMLToken(XML_LTR);
    1518           1 :                 bRetval = sal_True;
    1519             :             }
    1520           1 :             break;
    1521             :         }
    1522             :     }
    1523             : 
    1524           1 :     return bRetval;
    1525             : }
    1526             : 
    1527         672 : XmlScPropHdl_RotateAngle::~XmlScPropHdl_RotateAngle()
    1528             : {
    1529         672 : }
    1530             : 
    1531           0 : bool XmlScPropHdl_RotateAngle::equals(
    1532             :     const ::com::sun::star::uno::Any& r1,
    1533             :     const ::com::sun::star::uno::Any& r2 ) const
    1534             : {
    1535           0 :     sal_Int32 aAngle1 = 0, aAngle2 = 0;
    1536             : 
    1537           0 :     if((r1 >>= aAngle1) && (r2 >>= aAngle2))
    1538           0 :         return (aAngle1 == aAngle2);
    1539           0 :     return false;
    1540             : }
    1541             : 
    1542          78 : sal_Bool XmlScPropHdl_RotateAngle::importXML(
    1543             :     const OUString& rStrImpValue,
    1544             :     ::com::sun::star::uno::Any& rValue,
    1545             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1546             : {
    1547          78 :     sal_Bool bRetval(false);
    1548             : 
    1549             :     sal_Int32 nValue;
    1550          78 :     if (::sax::Converter::convertNumber(nValue, rStrImpValue))
    1551             :     {
    1552          78 :         nValue *= 100;
    1553          78 :         rValue <<= nValue;
    1554          78 :         bRetval = sal_True;
    1555             :     }
    1556             : 
    1557          78 :     return bRetval;
    1558             : }
    1559             : 
    1560           9 : sal_Bool XmlScPropHdl_RotateAngle::exportXML(
    1561             :     OUString& rStrExpValue,
    1562             :     const ::com::sun::star::uno::Any& rValue,
    1563             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1564             : {
    1565           9 :     sal_Int32 nVal = 0;
    1566           9 :     sal_Bool bRetval(false);
    1567             : 
    1568           9 :     if(rValue >>= nVal)
    1569             :     {
    1570           9 :         OUStringBuffer sValue;
    1571           9 :         ::sax::Converter::convertNumber(sValue, sal_Int32(nVal / 100));
    1572           9 :         rStrExpValue = sValue.makeStringAndClear();
    1573           9 :         bRetval = sal_True;
    1574             :     }
    1575             : 
    1576           9 :     return bRetval;
    1577             : }
    1578             : 
    1579         672 : XmlScPropHdl_RotateReference::~XmlScPropHdl_RotateReference()
    1580             : {
    1581         672 : }
    1582             : 
    1583           0 : bool XmlScPropHdl_RotateReference::equals(
    1584             :     const ::com::sun::star::uno::Any& r1,
    1585             :     const ::com::sun::star::uno::Any& r2 ) const
    1586             : {
    1587           0 :     sal_Int32 aReference1(0), aReference2(0);
    1588             : 
    1589           0 :     if((r1 >>= aReference1) && (r2 >>= aReference2))
    1590           0 :         return (aReference1 == aReference2);
    1591           0 :     return false;
    1592             : }
    1593             : 
    1594           4 : sal_Bool XmlScPropHdl_RotateReference::importXML(
    1595             :     const OUString& rStrImpValue,
    1596             :     ::com::sun::star::uno::Any& rValue,
    1597             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1598             : {
    1599           4 :     sal_Bool bRetval(false);
    1600             : 
    1601             :     sal_Int32 nValue;
    1602           4 :     if (IsXMLToken(rStrImpValue, XML_NONE))
    1603             :     {
    1604           4 :         nValue = table::CellVertJustify2::STANDARD;
    1605           4 :         rValue <<= nValue;
    1606           4 :         bRetval = sal_True;
    1607             :     }
    1608           0 :     else if (IsXMLToken(rStrImpValue, XML_BOTTOM))
    1609             :     {
    1610           0 :         nValue = table::CellVertJustify2::BOTTOM;
    1611           0 :         rValue <<= nValue;
    1612           0 :         bRetval = sal_True;
    1613             :     }
    1614           0 :     else if (IsXMLToken(rStrImpValue, XML_TOP))
    1615             :     {
    1616           0 :         nValue = table::CellVertJustify2::TOP;
    1617           0 :         rValue <<= nValue;
    1618           0 :         bRetval = sal_True;
    1619             :     }
    1620           0 :     else if (IsXMLToken(rStrImpValue, XML_CENTER))
    1621             :     {
    1622           0 :         nValue = table::CellVertJustify2::CENTER;
    1623           0 :         rValue <<= nValue;
    1624           0 :         bRetval = sal_True;
    1625             :     }
    1626             : 
    1627           4 :     return bRetval;
    1628             : }
    1629             : 
    1630           1 : sal_Bool XmlScPropHdl_RotateReference::exportXML(
    1631             :     OUString& rStrExpValue,
    1632             :     const ::com::sun::star::uno::Any& rValue,
    1633             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1634             : {
    1635           1 :     sal_Int32 nVal(0);
    1636           1 :     sal_Bool bRetval(false);
    1637             : 
    1638           1 :     if(rValue >>= nVal)
    1639             :     {
    1640           1 :         switch (nVal)
    1641             :         {
    1642             :             case table::CellVertJustify2::BOTTOM :
    1643             :             {
    1644           0 :                 rStrExpValue = GetXMLToken(XML_BOTTOM);
    1645           0 :                 bRetval = sal_True;
    1646             :             }
    1647           0 :             break;
    1648             :             case table::CellVertJustify2::CENTER :
    1649             :             {
    1650           0 :                 rStrExpValue = GetXMLToken(XML_CENTER);
    1651           0 :                 bRetval = sal_True;
    1652             :             }
    1653           0 :             break;
    1654             :             case table::CellVertJustify2::STANDARD :
    1655             :             {
    1656           1 :                 rStrExpValue = GetXMLToken(XML_NONE);
    1657           1 :                 bRetval = sal_True;
    1658             :             }
    1659           1 :             break;
    1660             :             case table::CellVertJustify2::TOP :
    1661             :             {
    1662           0 :                 rStrExpValue = GetXMLToken(XML_TOP);
    1663           0 :                 bRetval = sal_True;
    1664             :             }
    1665           0 :             break;
    1666             :             default:
    1667             :             {
    1668             :                 // added to avoid warnings
    1669             :             }
    1670             :         }
    1671             :     }
    1672             : 
    1673           1 :     return bRetval;
    1674             : }
    1675             : 
    1676         672 : XmlScPropHdl_VertJustify::~XmlScPropHdl_VertJustify()
    1677             : {
    1678         672 : }
    1679             : 
    1680           0 : bool XmlScPropHdl_VertJustify::equals(
    1681             :     const ::com::sun::star::uno::Any& r1,
    1682             :     const ::com::sun::star::uno::Any& r2 ) const
    1683             : {
    1684           0 :     sal_Int32 aReference1(0), aReference2(0);
    1685             : 
    1686           0 :     if((r1 >>= aReference1) && (r2 >>= aReference2))
    1687           0 :         return (aReference1 == aReference2);
    1688           0 :     return false;
    1689             : }
    1690             : 
    1691           6 : sal_Bool XmlScPropHdl_VertJustify::importXML(
    1692             :     const OUString& rStrImpValue,
    1693             :     ::com::sun::star::uno::Any& rValue,
    1694             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1695             : {
    1696           6 :     sal_Bool bRetval(false);
    1697             : 
    1698             :     sal_Int32 nValue;
    1699           6 :     if (IsXMLToken(rStrImpValue, XML_AUTOMATIC))
    1700             :     {
    1701           0 :         nValue = table::CellVertJustify2::STANDARD;
    1702           0 :         rValue <<= nValue;
    1703           0 :         bRetval = sal_True;
    1704             :     }
    1705           6 :     else if (IsXMLToken(rStrImpValue, XML_BOTTOM))
    1706             :     {
    1707           3 :         nValue = table::CellVertJustify2::BOTTOM;
    1708           3 :         rValue <<= nValue;
    1709           3 :         bRetval = sal_True;
    1710             :     }
    1711           3 :     else if (IsXMLToken(rStrImpValue, XML_TOP))
    1712             :     {
    1713           2 :         nValue = table::CellVertJustify2::TOP;
    1714           2 :         rValue <<= nValue;
    1715           2 :         bRetval = sal_True;
    1716             :     }
    1717           1 :     else if (IsXMLToken(rStrImpValue, XML_MIDDLE))
    1718             :     {
    1719           1 :         nValue = table::CellVertJustify2::CENTER;
    1720           1 :         rValue <<= nValue;
    1721           1 :         bRetval = sal_True;
    1722             :     }
    1723           0 :     else if (IsXMLToken(rStrImpValue, XML_JUSTIFY))
    1724             :     {
    1725           0 :         nValue = table::CellVertJustify2::BLOCK;
    1726           0 :         rValue <<= nValue;
    1727           0 :         bRetval = sal_True;
    1728             :     }
    1729             : 
    1730           6 :     return bRetval;
    1731             : }
    1732             : 
    1733           1 : sal_Bool XmlScPropHdl_VertJustify::exportXML(
    1734             :     OUString& rStrExpValue,
    1735             :     const ::com::sun::star::uno::Any& rValue,
    1736             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1737             : {
    1738           1 :     sal_Int32 nVal(0);
    1739           1 :     sal_Bool bRetval(false);
    1740             : 
    1741           1 :     if(rValue >>= nVal)
    1742             :     {
    1743           1 :         switch (nVal)
    1744             :         {
    1745             :             case table::CellVertJustify2::BOTTOM :
    1746             :             {
    1747           1 :                 rStrExpValue = GetXMLToken(XML_BOTTOM);
    1748           1 :                 bRetval = sal_True;
    1749             :             }
    1750           1 :             break;
    1751             :             case table::CellVertJustify2::CENTER :
    1752             :             {
    1753           0 :                 rStrExpValue = GetXMLToken(XML_MIDDLE);
    1754           0 :                 bRetval = sal_True;
    1755             :             }
    1756           0 :             break;
    1757             :             case table::CellVertJustify2::STANDARD :
    1758             :             {
    1759           0 :                 rStrExpValue = GetXMLToken(XML_AUTOMATIC);
    1760           0 :                 bRetval = sal_True;
    1761             :             }
    1762           0 :             break;
    1763             :             case table::CellVertJustify2::TOP :
    1764             :             {
    1765           0 :                 rStrExpValue = GetXMLToken(XML_TOP);
    1766           0 :                 bRetval = sal_True;
    1767             :             }
    1768           0 :             break;
    1769             :             case table::CellVertJustify2::BLOCK :
    1770             :             {
    1771           0 :                 rStrExpValue = GetXMLToken(XML_JUSTIFY);
    1772           0 :                 bRetval = sal_True;
    1773             :             }
    1774           0 :             break;
    1775             :             default:
    1776             :             {
    1777             :                 // added to avoid warnings
    1778             :             }
    1779             :         }
    1780             :     }
    1781             : 
    1782           1 :     return bRetval;
    1783             : }
    1784             : 
    1785         672 : XmlScPropHdl_BreakBefore::~XmlScPropHdl_BreakBefore()
    1786             : {
    1787         672 : }
    1788             : 
    1789           4 : bool XmlScPropHdl_BreakBefore::equals(
    1790             :     const ::com::sun::star::uno::Any& r1,
    1791             :     const ::com::sun::star::uno::Any& r2 ) const
    1792             : {
    1793           4 :     sal_Bool aBreak1 = 0, aBreak2 = 0;
    1794             : 
    1795           4 :     if((r1 >>= aBreak1) && (r2 >>= aBreak2))
    1796           4 :         return (aBreak1 == aBreak2);
    1797           0 :     return false;
    1798             : }
    1799             : 
    1800         260 : sal_Bool XmlScPropHdl_BreakBefore::importXML(
    1801             :     const OUString& rStrImpValue,
    1802             :     ::com::sun::star::uno::Any& rValue,
    1803             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1804             : {
    1805         260 :     sal_Bool bRetval(false);
    1806             : 
    1807             :     sal_Bool bValue;
    1808         260 :     if (IsXMLToken(rStrImpValue, XML_AUTO))
    1809             :     {
    1810         260 :         bValue = false;
    1811         260 :         rValue = ::cppu::bool2any(bValue);
    1812         260 :         bRetval = sal_True;
    1813             :     }
    1814           0 :     else if (IsXMLToken(rStrImpValue, XML_PAGE))
    1815             :     {
    1816           0 :         bValue = sal_True;
    1817           0 :         rValue = ::cppu::bool2any(bValue);
    1818           0 :         bRetval = sal_True;
    1819             :     }
    1820             : 
    1821         260 :     return bRetval;
    1822             : }
    1823             : 
    1824          20 : sal_Bool XmlScPropHdl_BreakBefore::exportXML(
    1825             :     OUString& rStrExpValue,
    1826             :     const ::com::sun::star::uno::Any& rValue,
    1827             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1828             : {
    1829          20 :     sal_Bool bRetval(false);
    1830             : 
    1831          20 :     if(::cppu::any2bool(rValue))
    1832             :     {
    1833           0 :         rStrExpValue = GetXMLToken(XML_PAGE);
    1834           0 :         bRetval = sal_True;
    1835             :     }
    1836             :     else
    1837             :     {
    1838          20 :         rStrExpValue = GetXMLToken(XML_AUTO);
    1839          20 :         bRetval = sal_True;
    1840             :     }
    1841             : 
    1842          20 :     return bRetval;
    1843             : }
    1844             : 
    1845         672 : XmlScPropHdl_IsTextWrapped::~XmlScPropHdl_IsTextWrapped()
    1846             : {
    1847         672 : }
    1848             : 
    1849           0 : bool XmlScPropHdl_IsTextWrapped::equals(
    1850             :     const ::com::sun::star::uno::Any& r1,
    1851             :     const ::com::sun::star::uno::Any& r2 ) const
    1852             : {
    1853           0 :     return (::cppu::any2bool(r1) == ::cppu::any2bool(r2));
    1854             : }
    1855             : 
    1856           3 : sal_Bool XmlScPropHdl_IsTextWrapped::importXML(
    1857             :     const OUString& rStrImpValue,
    1858             :     ::com::sun::star::uno::Any& rValue,
    1859             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1860             : {
    1861           3 :     sal_Bool bRetval(false);
    1862             : 
    1863           3 :     if (IsXMLToken(rStrImpValue, XML_WRAP))
    1864             :     {
    1865           0 :         rValue = ::cppu::bool2any(sal_True);
    1866           0 :         bRetval = sal_True;
    1867             :     }
    1868           3 :     else if (IsXMLToken(rStrImpValue, XML_NO_WRAP))
    1869             :     {
    1870           3 :         rValue = ::cppu::bool2any(false);
    1871           3 :         bRetval = sal_True;
    1872             :     }
    1873             : 
    1874           3 :     return bRetval;
    1875             : }
    1876             : 
    1877           1 : sal_Bool XmlScPropHdl_IsTextWrapped::exportXML(
    1878             :     OUString& rStrExpValue,
    1879             :     const ::com::sun::star::uno::Any& rValue,
    1880             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1881             : {
    1882           1 :     sal_Bool bRetval(false);
    1883             : 
    1884           1 :     if (::cppu::any2bool(rValue))
    1885             :     {
    1886           0 :         rStrExpValue = GetXMLToken(XML_WRAP);
    1887           0 :         bRetval = sal_True;
    1888             :     }
    1889             :     else
    1890             :     {
    1891           1 :         rStrExpValue = GetXMLToken(XML_NO_WRAP);
    1892           1 :         bRetval = sal_True;
    1893             :     }
    1894             : 
    1895           1 :     return bRetval;
    1896             : }
    1897             : 
    1898           0 : sal_Bool XmlScPropHdl_IsEqual::importXML( const OUString& /* rStrImpValue */,
    1899             :     ::com::sun::star::uno::Any& /* rValue */,
    1900             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1901             : {
    1902             :     OSL_FAIL("should never be called");
    1903           0 :     return false;
    1904             : }
    1905             : 
    1906           0 : sal_Bool XmlScPropHdl_IsEqual::exportXML( OUString& /* rStrExpValue */,
    1907             :     const ::com::sun::star::uno::Any& /* rValue */,
    1908             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1909             : {
    1910             :     OSL_FAIL("should never be called");
    1911           0 :     return false;
    1912             : }
    1913             : 
    1914         672 : XmlScPropHdl_Vertical::~XmlScPropHdl_Vertical()
    1915             : {
    1916         672 : }
    1917             : 
    1918           0 : bool XmlScPropHdl_Vertical::equals(
    1919             :     const ::com::sun::star::uno::Any& r1,
    1920             :     const ::com::sun::star::uno::Any& r2 ) const
    1921             : {
    1922           0 :     return (::cppu::any2bool(r1) == ::cppu::any2bool(r2));
    1923             : }
    1924             : 
    1925           0 : sal_Bool XmlScPropHdl_Vertical::importXML(
    1926             :     const OUString& rStrImpValue,
    1927             :     ::com::sun::star::uno::Any& rValue,
    1928             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1929             : {
    1930           0 :     sal_Bool bRetval(false);
    1931             : 
    1932           0 :     if (IsXMLToken(rStrImpValue, XML_AUTO))
    1933             :     {
    1934           0 :         rValue = ::cppu::bool2any(sal_True);
    1935           0 :         bRetval = sal_True;
    1936             :     }
    1937           0 :     else if (IsXMLToken(rStrImpValue, XML_0))
    1938             :     {
    1939           0 :         rValue = ::cppu::bool2any(false);
    1940           0 :         bRetval = sal_True;
    1941             :     }
    1942             : 
    1943           0 :     return bRetval;
    1944             : }
    1945             : 
    1946           0 : sal_Bool XmlScPropHdl_Vertical::exportXML(
    1947             :     OUString& rStrExpValue,
    1948             :     const ::com::sun::star::uno::Any& rValue,
    1949             :     const SvXMLUnitConverter& /* rUnitConverter */ ) const
    1950             : {
    1951           0 :     sal_Bool bRetval(false);
    1952             : 
    1953           0 :     if (::cppu::any2bool(rValue))
    1954             :     {
    1955           0 :         rStrExpValue = GetXMLToken(XML_AUTO);
    1956           0 :         bRetval = sal_True;
    1957             :     }
    1958             :     else
    1959             :     {
    1960           0 :         rStrExpValue = GetXMLToken(XML_0);
    1961           0 :         bRetval = sal_True;
    1962             :     }
    1963             : 
    1964           0 :     return bRetval;
    1965             : }
    1966             : 
    1967             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10