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