Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include <com/sun/star/xml/sax/SAXParseException.hpp>
30 : : #include <com/sun/star/xml/sax/SAXException.hpp>
31 : : #include <com/sun/star/xml/sax/XDocumentHandler.hpp>
32 : : #include <com/sun/star/xml/sax/XAttributeList.hpp>
33 : : #include <rtl/ustrbuf.hxx>
34 : : #include <sax/tools/converter.hxx>
35 : : #include <xmloff/nmspmap.hxx>
36 : : #include <xmloff/xmltoken.hxx>
37 : : #include "xmloff/xmlnmspe.hxx"
38 : : #include "PropType.hxx"
39 : : #include "DeepTContext.hxx"
40 : : #include "ProcAttrTContext.hxx"
41 : : #include "TransformerBase.hxx"
42 : : #include "TransformerActions.hxx"
43 : : #include "ActionMapTypesOASIS.hxx"
44 : : #include "MutableAttrList.hxx"
45 : : #include "PropertyActionsOASIS.hxx"
46 : : #include "StyleOASISTContext.hxx"
47 : : #include <xmloff/xmluconv.hxx>
48 : :
49 : : using ::rtl::OUString;
50 : : using namespace ::xmloff::token;
51 : : using namespace ::com::sun::star::uno;
52 : : using namespace ::com::sun::star::xml::sax;
53 : : //------------------------------------------------------------------------------
54 : :
55 : : static sal_uInt16 aAttrActionMaps[XML_PROP_TYPE_END] =
56 : : {
57 : : PROP_OASIS_GRAPHIC_ATTR_ACTIONS,
58 : : PROP_OASIS_DRAWING_PAGE_ATTR_ACTIONS, // DRAWING_PAGE
59 : : PROP_OASIS_PAGE_LAYOUT_ATTR_ACTIONS,
60 : : PROP_OASIS_HEADER_FOOTER_ATTR_ACTIONS,
61 : : PROP_OASIS_TEXT_ATTR_ACTIONS,
62 : : PROP_OASIS_PARAGRAPH_ATTR_ACTIONS,
63 : : MAX_OASIS_PROP_ACTIONS, // RUBY
64 : : PROP_OASIS_SECTION_ATTR_ACTIONS,
65 : : PROP_OASIS_TABLE_ATTR_ACTIONS,
66 : : PROP_OASIS_TABLE_COLUMN_ATTR_ACTIONS,
67 : : PROP_OASIS_TABLE_ROW_ATTR_ACTIONS,
68 : : PROP_OASIS_TABLE_CELL_ATTR_ACTIONS,
69 : : PROP_OASIS_LIST_LEVEL_ATTR_ACTIONS,
70 : : PROP_OASIS_CHART_ATTR_ACTIONS
71 : : };
72 : :
73 : : //------------------------------------------------------------------------------
74 : :
75 : : class XMLPropertiesTContext_Impl : public XMLPersElemContentTContext
76 : : {
77 : : ::com::sun::star::uno::Reference<
78 : : ::com::sun::star::xml::sax::XAttributeList > m_xAttrList;
79 : :
80 : : XMLPropType m_ePropType;
81 : : sal_Bool m_bControlStyle;
82 : : ::rtl::OUString m_aStyleFamily;
83 : :
84 : : public:
85 : :
86 : 344 : void SetQNameAndPropType( const ::rtl::OUString& rQName,
87 : : XMLPropType ePropType )
88 : : {
89 : 344 : m_ePropType = ePropType;
90 : 344 : XMLTransformerContext::SetQName( rQName );
91 : 344 : };
92 : :
93 : : TYPEINFO();
94 : :
95 : : XMLPropertiesTContext_Impl( XMLTransformerBase& rTransformer,
96 : : const ::rtl::OUString& rQName,
97 : : XMLPropType eP,
98 : : const ::rtl::OUString& rStyleFamily,
99 : : sal_Bool _bControlStyle = sal_False );
100 : :
101 : : virtual ~XMLPropertiesTContext_Impl();
102 : :
103 : : virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
104 : :
105 : : virtual void Export();
106 : :
107 : : static XMLPropType GetPropType( const OUString& rLocalName );
108 : :
109 : : static OUString MergeUnderline( XMLTokenEnum eUnderline,
110 : : sal_Bool bBold, sal_Bool bDouble );
111 : : static OUString MergeLineThrough( XMLTokenEnum eLineThrough,
112 : : sal_Bool bBold, sal_Bool bDouble,
113 : : sal_Unicode c );
114 : : };
115 : :
116 [ # # ][ # # ]: 0 : TYPEINIT1( XMLPropertiesTContext_Impl, XMLPersElemContentTContext );
117 : :
118 : 440 : XMLPropertiesTContext_Impl::XMLPropertiesTContext_Impl(
119 : : XMLTransformerBase& rImp, const OUString& rQName, XMLPropType eP,
120 : : const ::rtl::OUString& rStyleFamily, sal_Bool _bControlStyle ) :
121 : : XMLPersElemContentTContext( rImp, rQName, XML_NAMESPACE_STYLE,
122 : : XML_PROPERTIES),
123 : : m_ePropType( eP ),
124 : : m_bControlStyle( _bControlStyle ),
125 : 440 : m_aStyleFamily( rStyleFamily )
126 : : {
127 : 440 : }
128 : :
129 : 440 : XMLPropertiesTContext_Impl::~XMLPropertiesTContext_Impl()
130 : : {
131 [ - + ]: 880 : }
132 : :
133 : 784 : void XMLPropertiesTContext_Impl::StartElement(
134 : : const Reference< XAttributeList >& rAttrList )
135 : : {
136 : 784 : XMLTransformerActions *pActions = 0;
137 : 784 : sal_uInt16 nActionMap = aAttrActionMaps[m_ePropType];
138 [ + - ]: 784 : if( nActionMap < MAX_OASIS_PROP_ACTIONS )
139 : : {
140 : 784 : pActions = GetTransformer().GetUserDefinedActions( nActionMap );
141 : : OSL_ENSURE( pActions, "go no actions" );
142 : : }
143 : :
144 [ + - ]: 784 : if( pActions )
145 : : {
146 : 784 : XMLMutableAttributeList *pAttrList = 0;
147 [ + + ]: 784 : if( !m_xAttrList.is() )
148 : : {
149 [ + - ]: 440 : pAttrList = new XMLMutableAttributeList();
150 [ + - ][ + - ]: 440 : m_xAttrList = pAttrList;
151 : : }
152 : : else
153 : : {
154 : : pAttrList =
155 [ + - ][ + - ]: 344 : static_cast< XMLMutableAttributeList * >( m_xAttrList.get() );
156 : : }
157 : :
158 : 784 : XMLTokenEnum eUnderline = XML_TOKEN_END;
159 : 784 : sal_Bool bBoldUnderline = sal_False, bDoubleUnderline = sal_False;
160 : 784 : XMLTokenEnum eLineThrough = XML_TOKEN_END;
161 : 784 : sal_Bool bBoldLineThrough = sal_False, bDoubleLineThrough = sal_False;
162 : 784 : sal_Unicode cLineThroughChar = 0;
163 : :
164 : 784 : bool bIntervalMinorFound = false;
165 : 784 : double fIntervalMajor = 0.0;
166 : 784 : sal_Int32 nIntervalMinorDivisor = 0;
167 : :
168 : : // #i25616#
169 : 784 : OUString aOpacityValueRemember;
170 : 784 : OUString aImageOpacityValueRemember;
171 : :
172 [ + - ][ + - ]: 784 : sal_Int16 nAttrCount = rAttrList.is() ? rAttrList->getLength() : 0;
[ + - ]
173 [ + + ]: 3578 : for( sal_Int16 i=0; i < nAttrCount; i++ )
174 : : {
175 [ + - ][ + - ]: 2794 : const OUString& rAttrName = rAttrList->getNameByIndex( i );
176 [ + - ][ + - ]: 2794 : const OUString& rAttrValue = rAttrList->getValueByIndex( i );
177 : 2794 : OUString aLocalName;
178 : : sal_uInt16 nPrefix =
179 : 2794 : GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
180 [ + - ]: 2794 : &aLocalName );
181 : :
182 : 2794 : XMLTransformerActions::key_type aKey( nPrefix, aLocalName );
183 : : XMLTransformerActions::const_iterator aIter =
184 [ + - ]: 2794 : pActions->find( aKey );
185 [ + + ][ + - ]: 2794 : if( !(aIter == pActions->end() ) )
186 : : {
187 [ + - ][ + - : 1302 : switch( (*aIter).second.m_nActionType )
+ + + + -
- - - + +
- + - - +
- - - - -
- - - - +
- - + - -
- - ]
188 : : {
189 : : case XML_ATACTION_REMOVE:
190 : 28 : break;
191 : : case XML_ATACTION_COPY:
192 [ # # ]: 0 : pAttrList->AddAttribute( rAttrName, rAttrValue );
193 : 0 : break;
194 : : case XML_ATACTION_RENAME:
195 : : {
196 : : OUString aNewAttrQName(
197 : 12 : GetTransformer().GetNamespaceMap().GetQNameByKey(
198 [ + - ]: 12 : (*aIter).second.GetQNamePrefixFromParam1(),
199 : : ::xmloff::token::GetXMLToken(
200 [ + - ]: 24 : (*aIter).second.GetQNameTokenFromParam1()) ) );
[ + - + - ]
201 [ + - ]: 12 : pAttrList->AddAttribute( aNewAttrQName, rAttrValue );
202 : : }
203 : 12 : break;
204 : : case XML_ATACTION_IN2INCH:
205 : : {
206 : 1160 : OUString aAttrValue( rAttrValue );
207 : : XMLTransformerBase::ReplaceSingleInWithInch(
208 [ + - ]: 1160 : aAttrValue );
209 [ + - ]: 1160 : pAttrList->AddAttribute( rAttrName, aAttrValue );
210 : : }
211 : 1160 : break;
212 : : case XML_ATACTION_INS2INCHS:
213 : : {
214 : 18 : OUString aAttrValue( rAttrValue );
215 : : XMLTransformerBase::ReplaceInWithInch(
216 [ + - ]: 18 : aAttrValue );
217 [ + - ]: 18 : pAttrList->AddAttribute( rAttrName, aAttrValue );
218 : : }
219 : 18 : break;
220 : : case XML_ATACTION_DECODE_STYLE_NAME_REF:
221 : : {
222 : 18 : OUString aAttrValue( rAttrValue );
223 [ + - ]: 18 : GetTransformer().DecodeStyleName(aAttrValue);
224 [ + - ]: 18 : pAttrList->AddAttribute( rAttrName, aAttrValue );
225 : : }
226 : 18 : break;
227 : : case XML_ATACTION_RENAME_DECODE_STYLE_NAME_REF:
228 : : {
229 : : OUString aNewAttrQName(
230 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
231 [ # # ]: 0 : (*aIter).second.GetQNamePrefixFromParam1(),
232 : : ::xmloff::token::GetXMLToken(
233 [ # # ]: 0 : (*aIter).second.GetQNameTokenFromParam1()) ) );
[ # # # # ]
234 : 0 : OUString aAttrValue( rAttrValue );
235 [ # # ]: 0 : GetTransformer().DecodeStyleName(aAttrValue);
236 [ # # ]: 0 : pAttrList->AddAttribute( aNewAttrQName, aAttrValue );
237 : : }
238 : 0 : break;
239 : : case XML_ATACTION_NEG_PERCENT:
240 : : {
241 : 0 : OUString aAttrValue( rAttrValue );
242 [ # # ]: 0 : GetTransformer().NegPercent(aAttrValue);
243 [ # # ]: 0 : pAttrList->AddAttribute( rAttrName, aAttrValue );
244 : : }
245 : 0 : break;
246 : : case XML_ATACTION_RENAME_NEG_PERCENT:
247 : : {
248 : : OUString aNewAttrQName(
249 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
250 [ # # ]: 0 : (*aIter).second.GetQNamePrefixFromParam1(),
251 : : ::xmloff::token::GetXMLToken(
252 [ # # ]: 0 : (*aIter).second.GetQNameTokenFromParam1()) ) );
[ # # # # ]
253 : 0 : OUString aAttrValue( rAttrValue );
254 [ # # ]: 0 : GetTransformer().NegPercent(aAttrValue);
255 [ # # ]: 0 : pAttrList->AddAttribute( aNewAttrQName, aAttrValue );
256 : : }
257 : 0 : break;
258 : : case XML_OPTACTION_LINE_MODE:
259 : : {
260 : : sal_Bool bWordMode =
261 [ # # ]: 0 : IsXMLToken( rAttrValue, XML_SKIP_WHITE_SPACE );
262 : : OUString aAttrQName(
263 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
264 : : XML_NAMESPACE_FO,
265 [ # # # # ]: 0 : GetXMLToken( XML_SCORE_SPACES ) ) );
266 : : sal_Int16 nIndex =
267 [ # # ]: 0 : pAttrList->GetIndexByName( aAttrQName );
268 [ # # ]: 0 : if( -1 != nIndex )
269 : : {
270 [ # # ]: 0 : if( bWordMode )
271 : : {
272 : : const OUString& rOldValue =
273 [ # # ]: 0 : pAttrList->getValueByIndex( nIndex );
274 [ # # ][ # # ]: 0 : if( !IsXMLToken( rOldValue, XML_TRUE ) )
275 : : {
276 : : pAttrList->SetValueByIndex( nIndex,
277 [ # # ][ # # ]: 0 : GetXMLToken( XML_TRUE ) );
278 : 0 : }
279 : : }
280 : : }
281 : : else
282 : : {
283 : : OUString aAttrValue( GetXMLToken( bWordMode
284 : : ? XML_FALSE
285 [ # # ][ # # ]: 0 : : XML_TRUE ) );
286 [ # # ]: 0 : pAttrList->AddAttribute( aAttrQName, aAttrValue );
287 : 0 : }
288 : : }
289 : 0 : break;
290 : : case XML_OPTACTION_KEEP_WITH_NEXT:
291 : : {
292 : : OUString aAttrValue( GetXMLToken(
293 [ + - ]: 4 : IsXMLToken( rAttrValue, XML_ALWAYS )
294 : : ? XML_TRUE
295 [ + - ][ + - ]: 4 : : XML_FALSE) );
296 [ + - ]: 4 : pAttrList->AddAttribute( rAttrName, aAttrValue );
297 : : }
298 : 4 : break;
299 : : case XML_OPTACTION_UNDERLINE_WIDTH:
300 [ + - ][ - + ]: 2 : if( IsXMLToken( rAttrValue, XML_BOLD ) )
301 : 0 : bBoldUnderline = sal_True;
302 : 2 : break;
303 : : case XML_OPTACTION_UNDERLINE_TYPE:
304 [ # # ][ # # ]: 0 : if( IsXMLToken( rAttrValue, XML_DOUBLE ) )
305 : 0 : bDoubleUnderline = sal_True;
306 : 0 : break;
307 : : case XML_OPTACTION_UNDERLINE_STYLE:
308 [ + - ]: 16 : eUnderline = GetTransformer().GetToken( rAttrValue );
309 : 16 : break;
310 : : case XML_OPTACTION_LINETHROUGH_WIDTH:
311 [ # # ][ # # ]: 0 : if( IsXMLToken( rAttrValue, XML_BOLD ) )
312 : 0 : bBoldLineThrough = sal_True;
313 : 0 : break;
314 : : case XML_OPTACTION_LINETHROUGH_TYPE:
315 [ # # ][ # # ]: 0 : if( IsXMLToken( rAttrValue, XML_DOUBLE ) )
316 : 0 : bDoubleLineThrough = sal_True;
317 : 0 : break;
318 : : case XML_OPTACTION_LINETHROUGH_STYLE:
319 [ + - ]: 14 : eLineThrough = GetTransformer().GetToken( rAttrValue );
320 : 14 : break;
321 : : case XML_OPTACTION_LINETHROUGH_TEXT:
322 [ # # ]: 0 : if( !rAttrValue.isEmpty() )
323 : 0 : cLineThroughChar = rAttrValue[0];
324 : 0 : break;
325 : : case XML_OPTACTION_INTERPOLATION:
326 : : {
327 : : // 0: none
328 : 0 : sal_Int32 nSplineType = 0;
329 [ # # ][ # # ]: 0 : if( IsXMLToken( rAttrValue, XML_CUBIC_SPLINE ))
330 : 0 : nSplineType = 1;
331 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_B_SPLINE ))
332 : 0 : nSplineType = 2;
333 : :
334 : : pAttrList->AddAttribute(
335 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
336 : : XML_NAMESPACE_CHART,
337 [ # # ]: 0 : GetXMLToken( XML_SPLINES )),
338 [ # # ][ # # ]: 0 : OUString::valueOf( nSplineType ));
339 : : }
340 : 0 : break;
341 : : case XML_OPTACTION_INTERVAL_MAJOR:
342 [ # # ]: 0 : pAttrList->AddAttribute( rAttrName, rAttrValue );
343 [ # # ]: 0 : ::sax::Converter::convertDouble(fIntervalMajor, rAttrValue);
344 : 0 : break;
345 : : case XML_OPTACTION_INTERVAL_MINOR_DIVISOR:
346 [ # # ]: 0 : ::sax::Converter::convertNumber(nIntervalMinorDivisor, rAttrValue);
347 : 0 : bIntervalMinorFound = true;
348 : 0 : break;
349 : : case XML_OPTACTION_SYMBOL_TYPE:
350 : : {
351 : : // if symbol_type is "named-symbol" the "symbol"
352 : : // property is set in the action XML_OPTACTION_SYMBOL_NAME
353 : 0 : sal_Int32 nSymbolType = 0;
354 [ # # ][ # # ]: 0 : if( IsXMLToken( rAttrValue, XML_NONE ))
355 : 0 : nSymbolType = -3;
356 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_AUTOMATIC ))
357 : 0 : nSymbolType = -2;
358 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_IMAGE ))
359 : 0 : nSymbolType = -1;
360 : :
361 [ # # ]: 0 : if( nSymbolType < 0 )
362 : : pAttrList->AddAttribute(
363 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
364 : : XML_NAMESPACE_CHART,
365 [ # # ]: 0 : GetXMLToken( XML_SYMBOL )),
366 [ # # ][ # # ]: 0 : OUString::valueOf( nSymbolType ));
367 : : }
368 : 0 : break;
369 : : case XML_OPTACTION_SYMBOL_NAME:
370 : : {
371 : : // assume "symbol-type" == "named-symbol"
372 : 0 : sal_Int32 nSymbolType = -3; // NONE
373 : : // "square" just has an awkward token-name
374 [ # # ][ # # ]: 0 : if( IsXMLToken( rAttrValue, XML_GRADIENTSTYLE_SQUARE ))
375 : 0 : nSymbolType = 0;
376 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_DIAMOND ))
377 : 0 : nSymbolType = 1;
378 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_ARROW_DOWN ))
379 : 0 : nSymbolType = 2;
380 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_ARROW_UP ))
381 : 0 : nSymbolType = 3;
382 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_ARROW_RIGHT ))
383 : 0 : nSymbolType = 4;
384 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_ARROW_LEFT ))
385 : 0 : nSymbolType = 5;
386 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_BOW_TIE ))
387 : 0 : nSymbolType = 6;
388 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_HOURGLASS ))
389 : 0 : nSymbolType = 7;
390 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_CIRCLE ))
391 : 0 : nSymbolType = 8;
392 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_STAR ))
393 : 0 : nSymbolType = 9;
394 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_X ))
395 : 0 : nSymbolType = 10;
396 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_PLUS ))
397 : 0 : nSymbolType = 11;
398 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_ASTERISK ))
399 : 0 : nSymbolType = 12;
400 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_HORIZONTAL_BAR ))
401 : 0 : nSymbolType = 13;
402 [ # # ][ # # ]: 0 : else if( IsXMLToken( rAttrValue, XML_VERTICAL_BAR ))
403 : 0 : nSymbolType = 14;
404 : :
405 [ # # ]: 0 : if( nSymbolType >= 0 )
406 : : pAttrList->AddAttribute(
407 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
408 : : XML_NAMESPACE_CHART,
409 [ # # ]: 0 : GetXMLToken( XML_SYMBOL )),
410 [ # # ][ # # ]: 0 : OUString::valueOf( nSymbolType ));
411 : : }
412 : 0 : break;
413 : : // #i25616#
414 : : case XML_OPTACTION_OPACITY:
415 : 0 : aOpacityValueRemember = rAttrValue;
416 [ # # ]: 0 : GetTransformer().NegPercent(aOpacityValueRemember);
417 : 0 : break;
418 : :
419 : : // #i25616#
420 : : case XML_OPTACTION_IMAGE_OPACITY:
421 : 0 : aImageOpacityValueRemember = rAttrValue;
422 [ # # ]: 0 : GetTransformer().NegPercent(aImageOpacityValueRemember);
423 : 0 : break;
424 : :
425 : : case XML_OPTACTION_KEEP_TOGETHER:
426 : : pAttrList->AddAttribute(
427 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
428 [ # # ]: 0 : XML_NAMESPACE_STYLE,GetXMLToken(XML_BREAK_INSIDE)),
429 : : GetXMLToken(
430 [ # # ]: 0 : IsXMLToken( rAttrValue, XML_ALWAYS )
431 : : ? XML_COLUMNSPLIT_AVOID
432 [ # # ]: 0 : : XML_COLUMNSPLIT_AUTO ) );
[ # # # # ]
[ # # ]
433 : 0 : break;
434 : :
435 : : case XML_OPTACTION_CONTROL_TEXT_ALIGN:
436 [ - + ]: 28 : if ( m_bControlStyle )
437 : : {
438 : : OUString aNewAttrQName(
439 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
440 : : XML_NAMESPACE_STYLE,
441 : : ::xmloff::token::GetXMLToken(
442 [ # # # # ]: 0 : XML_TEXT_ALIGN ) ) );
443 [ # # ]: 0 : pAttrList->AddAttribute( aNewAttrQName, rAttrValue );
444 : : }
445 : : else
446 : : {
447 : : OUString aNewAttrQName(
448 : 28 : GetTransformer().GetNamespaceMap().GetQNameByKey(
449 : : XML_NAMESPACE_FO,
450 : : ::xmloff::token::GetXMLToken(
451 [ + - + - ]: 56 : XML_TEXT_ALIGN ) ) );
452 [ + - ]: 28 : pAttrList->AddAttribute( aNewAttrQName, rAttrValue );
453 : : }
454 : 28 : break;
455 : :
456 : : case XML_OPTACTION_DRAW_WRITING_MODE:
457 [ # # ][ # # ]: 0 : if( IsXMLToken( m_aStyleFamily, XML_GRAPHICS ) )
458 : : {
459 : : pAttrList->AddAttribute(
460 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
461 : : XML_NAMESPACE_DRAW,
462 [ # # # # ]: 0 : GetXMLToken( XML_WRITING_MODE ) ), rAttrValue );
[ # # ]
463 : : }
464 [ # # ]: 0 : pAttrList->AddAttribute( rAttrName, rAttrValue );
465 : 0 : break;
466 : :
467 : : case XML_ATACTION_CAPTION_ESCAPE_OASIS:
468 : : {
469 : 0 : OUString aAttrValue( rAttrValue );
470 [ # # ]: 0 : if( aAttrValue.indexOf( sal_Unicode('%') ) != -1 )
471 : : {
472 : 0 : sal_Int32 nValue = 0;
473 [ # # ]: 0 : ::sax::Converter::convertPercent(nValue, rAttrValue);
474 [ # # ]: 0 : if( nValue )
475 : : {
476 : 0 : nValue *= 100;
477 : 0 : rtl::OUStringBuffer aOut;
478 [ # # ]: 0 : ::sax::Converter::convertPercent(aOut, nValue);
479 [ # # ]: 0 : aAttrValue = aOut.makeStringAndClear();
480 : : }
481 : : }
482 : : else
483 : : {
484 [ # # ]: 0 : XMLTransformerBase::ReplaceSingleInWithInch( aAttrValue );
485 : : }
486 : :
487 [ # # ]: 0 : pAttrList->AddAttribute( rAttrName, aAttrValue );
488 : : }
489 : 0 : break;
490 : :
491 : : case XML_ATACTION_DECODE_PROTECT:
492 : : {
493 [ + - ]: 2 : pAttrList->AddAttribute( rAttrName, rAttrValue );
494 : :
495 [ + - ][ + - ]: 2 : if( rAttrValue.indexOf( GetXMLToken( XML_SIZE ) ) != -1 )
496 : 2 : pAttrList->AddAttribute( GetTransformer().GetNamespaceMap().GetQNameByKey(
497 : : XML_NAMESPACE_DRAW,
498 [ + - ]: 4 : GetXMLToken( XML_SIZE_PROTECT )), GetXMLToken( XML_TRUE ) );
[ + - + - ]
[ + - ]
499 : :
500 [ + - ][ - + ]: 2 : if( rAttrValue.indexOf( GetXMLToken( XML_POSITION ) ) != -1 )
501 : 0 : pAttrList->AddAttribute( GetTransformer().GetNamespaceMap().GetQNameByKey(
502 : : XML_NAMESPACE_DRAW,
503 [ # # ]: 0 : GetXMLToken( XML_MOVE_PROTECT )), GetXMLToken( XML_TRUE ) );
[ # # # # ]
[ # # ]
504 : : }
505 : 2 : break;
506 : :
507 : : case XML_ATACTION_DRAW_MIRROR_OASIS: // renames style:mirror to draw:mirror and adapts values
508 : : {
509 : : // keep original for writer graphic objects
510 : : // Adapts attribute values (#i49139#)
511 : 0 : OUString aNewAttrValue;
512 [ # # ]: 0 : SvXMLTokenEnumerator aTokenEnum( rAttrValue );
513 : 0 : OUString aToken;
514 [ # # ][ # # ]: 0 : while( aTokenEnum.getNextToken( aToken ) )
515 : : {
516 [ # # ]: 0 : if ( !aNewAttrValue.isEmpty() )
517 : : {
518 : 0 : aNewAttrValue += rtl::OUString(" " );
519 : : }
520 : :
521 [ # # ][ # # ]: 0 : if ( IsXMLToken( aToken, XML_HORIZONTAL_ON_EVEN ) )
522 : : {
523 [ # # ]: 0 : aNewAttrValue += GetXMLToken( XML_HORIZONTAL_ON_LEFT_PAGES );
524 : : }
525 [ # # ][ # # ]: 0 : else if ( IsXMLToken( aToken, XML_HORIZONTAL_ON_ODD ) )
526 : : {
527 [ # # ]: 0 : aNewAttrValue += GetXMLToken( XML_HORIZONTAL_ON_RIGHT_PAGES );
528 : : }
529 : : else
530 : : {
531 : 0 : aNewAttrValue += aToken;
532 : : }
533 : : }
534 [ # # ]: 0 : pAttrList->AddAttribute( rAttrName, aNewAttrValue );
535 : :
536 : : // create old draw:mirror for drawing graphic objects
537 [ # # ][ # # ]: 0 : OUString aAttrValue( GetXMLToken( IsXMLToken( rAttrValue, XML_HORIZONTAL ) ? XML_TRUE : XML_FALSE ) );
[ # # ]
538 : 0 : pAttrList->AddAttribute( GetTransformer().GetNamespaceMap().GetQNameByKey(
539 : : XML_NAMESPACE_DRAW,
540 [ # # ]: 0 : GetXMLToken( XML_MIRROR )), aAttrValue );
[ # # # # ]
541 : : }
542 : 0 : break;
543 : : case XML_ATACTION_GAMMA_OASIS: // converts percentage value to double
544 : : {
545 : : sal_Int32 nValue;
546 [ # # ]: 0 : ::sax::Converter::convertPercent( nValue, rAttrValue );
547 : 0 : const double fValue = ((double)nValue) / 100.0;
548 [ # # ]: 0 : pAttrList->AddAttribute( rAttrName, OUString::valueOf( fValue ) );
549 : : }
550 : 0 : break;
551 : : case XML_ATACTION_OPACITY_FIX:
552 : : {
553 : : sal_Int32 nValue;
554 [ # # ]: 0 : if( rAttrValue.indexOf( sal_Unicode('%') ) != -1 )
555 : : {
556 [ # # ]: 0 : ::sax::Converter::convertPercent(nValue, rAttrValue);
557 : : }
558 : : else
559 : : {
560 : 0 : nValue = sal_Int32( rAttrValue.toDouble() * 100.0 );
561 : : }
562 : 0 : nValue = 100 - nValue;
563 : :
564 : 0 : rtl::OUStringBuffer aOut;
565 [ # # ]: 0 : ::sax::Converter::convertPercent(aOut, nValue);
566 [ # # ][ # # ]: 0 : pAttrList->AddAttribute( rAttrName, aOut.makeStringAndClear() );
567 : : }
568 : 0 : break;
569 : : default:
570 : : OSL_ENSURE( !this, "unknown action" );
571 : 1302 : break;
572 : : }
573 : : }
574 : : else
575 : : {
576 [ + - ]: 1492 : pAttrList->AddAttribute( rAttrName, rAttrValue );
577 : : }
578 : 2794 : }
579 [ + + ]: 784 : if( XML_TOKEN_END != eUnderline )
580 : : pAttrList->AddAttribute(
581 : 16 : GetTransformer().GetNamespaceMap().GetQNameByKey(
582 : : XML_NAMESPACE_STYLE,
583 [ + - ]: 16 : GetXMLToken( XML_TEXT_UNDERLINE ) ),
584 : : MergeUnderline( eUnderline, bBoldUnderline,
585 [ + - + - ]: 32 : bDoubleUnderline ) );
[ + - ]
586 [ + + ]: 784 : if( XML_TOKEN_END != eLineThrough )
587 : : pAttrList->AddAttribute(
588 : 14 : GetTransformer().GetNamespaceMap().GetQNameByKey(
589 : : XML_NAMESPACE_STYLE,
590 [ + - ]: 14 : GetXMLToken( XML_TEXT_CROSSING_OUT ) ),
591 : : MergeLineThrough( eLineThrough, bBoldLineThrough,
592 [ + - + - ]: 28 : bDoubleLineThrough, cLineThroughChar ) );
[ + - ]
593 [ - + ]: 784 : if( bIntervalMinorFound )
594 : : {
595 : 0 : double fIntervalMinor = 0.0;
596 [ # # ]: 0 : if( nIntervalMinorDivisor != 0)
597 : 0 : fIntervalMinor = fIntervalMajor / static_cast< double >( nIntervalMinorDivisor );
598 : :
599 : 0 : ::rtl::OUStringBuffer aBuf;
600 [ # # ]: 0 : ::sax::Converter::convertDouble( aBuf, fIntervalMinor );
601 : : pAttrList->AddAttribute(
602 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
603 : : XML_NAMESPACE_CHART,
604 [ # # ]: 0 : GetXMLToken( XML_INTERVAL_MINOR )),
605 [ # # # # ]: 0 : aBuf.makeStringAndClear());
[ # # ]
606 : : }
607 : :
608 : : // #i25616#
609 [ + - ][ - + ]: 784 : if(!aOpacityValueRemember.isEmpty() || !aImageOpacityValueRemember.isEmpty())
[ - + ]
610 : : {
611 : : pAttrList->AddAttribute(
612 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
613 : : XML_NAMESPACE_DRAW,
614 [ # # ]: 0 : GetXMLToken( XML_TRANSPARENCY ) ),
615 : 0 : !aImageOpacityValueRemember.isEmpty()
616 [ # # ][ # # ]: 0 : ? aImageOpacityValueRemember : aOpacityValueRemember );
[ # # ]
617 : 784 : }
618 : : }
619 : : else
620 : : {
621 [ # # ]: 0 : if( !m_xAttrList.is() )
622 : : {
623 [ # # ][ # # ]: 0 : m_xAttrList = new XMLMutableAttributeList( rAttrList, sal_True );
624 : : }
625 : : else
626 : : {
627 : 0 : static_cast< XMLMutableAttributeList * >( m_xAttrList.get() )
628 [ # # ]: 0 : ->AppendAttributeList( rAttrList );
629 : : }
630 : : }
631 : 784 : }
632 : :
633 : 440 : void XMLPropertiesTContext_Impl::Export()
634 : : {
635 : 440 : OUString aNewQName( GetTransformer().GetNamespaceMap().GetQNameByKey(
636 : : XML_NAMESPACE_STYLE,
637 [ + - + - ]: 880 : ::xmloff::token::GetXMLToken( XML_PROPERTIES ) ) );
638 [ + - ]: 440 : GetTransformer().GetDocHandler()->startElement( GetExportQName(),
639 [ + - ]: 440 : m_xAttrList );
640 [ + - ]: 440 : ExportContent();
641 [ + - ][ + - ]: 440 : GetTransformer().GetDocHandler()->endElement( GetExportQName() );
642 : 440 : }
643 : :
644 : 802 : XMLPropType XMLPropertiesTContext_Impl::GetPropType( const OUString& rLocalName )
645 : : {
646 : 802 : XMLPropType eProp = XML_PROP_TYPE_END;
647 [ + + ]: 802 : if( IsXMLToken( rLocalName, XML_GRAPHIC_PROPERTIES ) )
648 : 130 : eProp = XML_PROP_TYPE_GRAPHIC;
649 [ + + ]: 672 : else if( IsXMLToken( rLocalName, XML_DRAWING_PAGE_PROPERTIES ) )
650 : 12 : eProp = XML_PROP_TYPE_DRAWING_PAGE;
651 [ + + ]: 660 : else if( IsXMLToken( rLocalName, XML_PAGE_LAYOUT_PROPERTIES ) )
652 : 16 : eProp = XML_PROP_TYPE_PAGE_LAYOUT;
653 [ + + ]: 644 : else if( IsXMLToken( rLocalName, XML_HEADER_FOOTER_PROPERTIES ) )
654 : 8 : eProp = XML_PROP_TYPE_HEADER_FOOTER;
655 [ + + ]: 636 : else if( IsXMLToken( rLocalName, XML_TEXT_PROPERTIES ) )
656 : 290 : eProp = XML_PROP_TYPE_TEXT;
657 [ + + ]: 346 : else if( IsXMLToken( rLocalName, XML_PARAGRAPH_PROPERTIES ) )
658 : 110 : eProp = XML_PROP_TYPE_PARAGRAPH;
659 [ - + ]: 236 : else if( IsXMLToken( rLocalName, XML_RUBY_PROPERTIES ) )
660 : 0 : eProp = XML_PROP_TYPE_RUBY;
661 [ - + ]: 236 : else if( IsXMLToken( rLocalName, XML_SECTION_PROPERTIES ) )
662 : 0 : eProp = XML_PROP_TYPE_SECTION;
663 [ + + ]: 236 : else if( IsXMLToken( rLocalName, XML_TABLE_PROPERTIES ) )
664 : 6 : eProp = XML_PROP_TYPE_TABLE;
665 [ + + ]: 230 : else if( IsXMLToken( rLocalName, XML_TABLE_COLUMN_PROPERTIES ) )
666 : 2 : eProp = XML_PROP_TYPE_TABLE_COLUMN;
667 [ + + ]: 228 : else if( IsXMLToken( rLocalName, XML_TABLE_ROW_PROPERTIES ) )
668 : 6 : eProp = XML_PROP_TYPE_TABLE_ROW;
669 [ + + ]: 222 : else if( IsXMLToken( rLocalName, XML_TABLE_CELL_PROPERTIES ) )
670 : 4 : eProp = XML_PROP_TYPE_TABLE_CELL;
671 [ + + ]: 218 : else if( IsXMLToken( rLocalName, XML_LIST_LEVEL_PROPERTIES ) )
672 : 200 : eProp = XML_PROP_TYPE_LIST_LEVEL;
673 [ - + ]: 18 : else if( IsXMLToken( rLocalName, XML_CHART_PROPERTIES ) )
674 : 0 : eProp = XML_PROP_TYPE_CHART;
675 : :
676 : 802 : return eProp;
677 : : }
678 : :
679 : 16 : OUString XMLPropertiesTContext_Impl::MergeUnderline(
680 : : XMLTokenEnum eUnderline, sal_Bool bBold, sal_Bool bDouble )
681 : : {
682 [ - + ]: 16 : if( bDouble )
683 : : {
684 [ # # ]: 0 : switch( eUnderline )
685 : : {
686 : : case XML_WAVE:
687 : 0 : eUnderline = XML_DOUBLE_WAVE;
688 : 0 : break;
689 : : default:
690 : 0 : eUnderline = XML_DOUBLE;
691 : 0 : break;
692 : : }
693 : : }
694 [ - + ]: 16 : else if( bBold )
695 : : {
696 [ # # # # : 0 : switch( eUnderline )
# # # # ]
697 : : {
698 : : case XML_NONE:
699 : : case XML_SOLID:
700 : 0 : eUnderline = XML_BOLD;
701 : 0 : break;
702 : : case XML_DOTTED:
703 : 0 : eUnderline = XML_BOLD_DOTTED;
704 : 0 : break;
705 : : case XML_DASH:
706 : 0 : eUnderline = XML_BOLD_DASH;
707 : 0 : break;
708 : : case XML_LONG_DASH:
709 : 0 : eUnderline = XML_BOLD_LONG_DASH;
710 : 0 : break;
711 : : case XML_DOT_DASH:
712 : 0 : eUnderline = XML_BOLD_DOT_DASH;
713 : 0 : break;
714 : : case XML_DOT_DOT_DASH:
715 : 0 : eUnderline = XML_BOLD_DOT_DOT_DASH;
716 : 0 : break;
717 : : case XML_WAVE:
718 : 0 : eUnderline = XML_BOLD_WAVE;
719 : 0 : break;
720 : : default:
721 : : OSL_FAIL( "xmloff::XMLPropertiesTContext_Impl::MergeUnderline(), missing underline case!" );
722 : 0 : break;
723 : : }
724 : : }
725 : : else
726 : : {
727 [ + + - ]: 16 : switch( eUnderline )
728 : : {
729 : : case XML_SOLID:
730 : 2 : eUnderline = XML_SINGLE;
731 : 2 : break;
732 : : case XML_NONE:
733 : 14 : eUnderline = XML_NONE;
734 : 14 : break;
735 : : default:
736 : : OSL_FAIL( "xmloff::XMLPropertiesTContext_Impl::MergeUnderline(), missing underline case!" );
737 : 0 : break;
738 : : }
739 : : }
740 : :
741 : 16 : return GetXMLToken( eUnderline );
742 : : }
743 : :
744 : 14 : OUString XMLPropertiesTContext_Impl::MergeLineThrough(
745 : : XMLTokenEnum eLineThrough, sal_Bool bBold, sal_Bool bDouble,
746 : : sal_Unicode c )
747 : : {
748 [ - + ]: 14 : if( c )
749 [ # # ]: 0 : eLineThrough = c=='/' ? XML_SLASH : XML_uX;
750 [ - + ]: 14 : else if( bDouble )
751 : 0 : eLineThrough = XML_DOUBLE_LINE;
752 [ - + ]: 14 : else if( bBold )
753 : 0 : eLineThrough = XML_THICK_LINE;
754 [ - + ]: 14 : else if( XML_NONE != eLineThrough )
755 : 0 : eLineThrough = XML_SINGLE_LINE;
756 : :
757 : 14 : return GetXMLToken( eLineThrough );
758 : : }
759 : :
760 : : //------------------------------------------------------------------------------
761 : :
762 [ # # ][ # # ]: 0 : TYPEINIT1( XMLStyleOASISTContext, XMLPersElemContentTContext );
763 : :
764 : 468 : XMLStyleOASISTContext::XMLStyleOASISTContext( XMLTransformerBase& rImp,
765 : : const OUString& rQName,
766 : : sal_Bool bPersistent ) :
767 : : XMLPersElemContentTContext ( rImp, rQName ),
768 : : m_bPersistent( bPersistent ),
769 : 468 : m_bControlStyle( false )
770 : : {
771 : 468 : }
772 : :
773 : 16 : XMLStyleOASISTContext::XMLStyleOASISTContext(
774 : : XMLTransformerBase& rImp,
775 : : const OUString& rQName,
776 : : sal_uInt16 nPrefix,
777 : : ::xmloff::token::XMLTokenEnum eToken,
778 : : sal_Bool bPersistent ) :
779 : : XMLPersElemContentTContext( rImp, rQName, nPrefix, eToken ),
780 : 16 : m_bPersistent( bPersistent )
781 : : {
782 : 16 : }
783 : :
784 [ + - ]: 484 : XMLStyleOASISTContext::~XMLStyleOASISTContext()
785 : : {
786 [ - + ]: 968 : }
787 : :
788 : 974 : XMLTransformerContext *XMLStyleOASISTContext::CreateChildContext(
789 : : sal_uInt16 nPrefix,
790 : : const OUString& rLocalName,
791 : : const OUString& rQName,
792 : : const Reference< XAttributeList >& rAttrList )
793 : : {
794 : 974 : XMLTransformerContext *pContext = 0;
795 : :
796 [ + + ]: 974 : if( XML_NAMESPACE_STYLE == nPrefix )
797 : : {
798 : : XMLPropType ePropType =
799 : 802 : XMLPropertiesTContext_Impl::GetPropType( rLocalName );
800 [ + + ]: 802 : if( XML_PROP_TYPE_END != ePropType )
801 : : {
802 : : // if no properties context exist start a new one.
803 [ + + ]: 784 : if( !m_xPropContext.is() )
804 : : m_xPropContext = new XMLPropertiesTContext_Impl(
805 [ + - ]: 440 : GetTransformer(), rQName, ePropType, m_aStyleFamily, m_bControlStyle );
806 : : else
807 : 344 : m_xPropContext->SetQNameAndPropType( rQName, ePropType );
808 : 784 : pContext = m_xPropContext.get();
809 : : }
810 : : }
811 [ + + ]: 974 : if( !pContext )
812 : : {
813 : : // if a properties context exist close it
814 [ + + ][ + - ]: 190 : if( m_xPropContext.is() && !m_bPersistent )
[ + + ]
815 : : {
816 : 10 : m_xPropContext->Export();
817 : 10 : m_xPropContext = 0;
818 : : }
819 : :
820 : : pContext = m_bPersistent
821 : : ? XMLPersElemContentTContext::CreateChildContext(
822 : 120 : nPrefix, rLocalName, rQName, rAttrList )
823 : : : XMLTransformerContext::CreateChildContext(
824 [ + + ]: 190 : nPrefix, rLocalName, rQName, rAttrList );
825 : : }
826 : :
827 : 974 : return pContext;
828 : : }
829 : :
830 : 484 : void XMLStyleOASISTContext::StartElement(
831 : : const Reference< XAttributeList >& rAttrList )
832 : : {
833 : : XMLTransformerActions *pActions =
834 [ + - ]: 484 : GetTransformer().GetUserDefinedActions( OASIS_STYLE_ACTIONS );
835 : : OSL_ENSURE( pActions, "go no actions" );
836 : :
837 : 484 : Reference< XAttributeList > xAttrList( rAttrList );
838 : 484 : XMLMutableAttributeList *pMutableAttrList = 0;
839 [ + - ][ + - ]: 484 : sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
[ + - ]
840 : 484 : sal_Int16 nFamilyAttr = -1;
841 : 484 : m_bControlStyle = sal_False;
842 : :
843 [ + + ]: 1552 : for( sal_Int16 i=0; i < nAttrCount; i++ )
844 : : {
845 [ + - ][ + - ]: 1068 : const OUString& rAttrName = xAttrList->getNameByIndex( i );
846 : 1068 : OUString aLocalName;
847 : : sal_uInt16 nPrefix =
848 : 1068 : GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
849 [ + - ]: 1068 : &aLocalName );
850 : 1068 : XMLTransformerActions::key_type aKey( nPrefix, aLocalName );
851 : : XMLTransformerActions::const_iterator aIter =
852 [ + - ]: 1068 : pActions->find( aKey );
853 [ + + ][ + - ]: 1068 : if( !(aIter == pActions->end() ) )
854 : : {
855 [ + + ]: 624 : if( !pMutableAttrList )
856 : : {
857 : : pMutableAttrList =
858 [ + - ]: 268 : new XMLMutableAttributeList( xAttrList );
859 [ + - ][ + - ]: 268 : xAttrList = pMutableAttrList;
860 : : }
861 [ + - ][ + - ]: 624 : const OUString& rAttrValue = xAttrList->getValueByIndex( i );
862 [ + - ][ + + : 624 : switch( (*aIter).second.m_nActionType )
+ + - - -
- ]
863 : : {
864 : : case XML_ATACTION_STYLE_FAMILY:
865 [ + - ][ + + ]: 224 : if( IsXMLToken( rAttrValue, XML_GRAPHIC ) )
866 : : {
867 [ + - ]: 106 : m_aStyleFamily = GetXMLToken( XML_GRAPHICS ) ;
868 [ + - ]: 106 : pMutableAttrList->SetValueByIndex( i, m_aStyleFamily );
869 : : }
870 : : else
871 : : {
872 : 118 : m_aStyleFamily = rAttrValue;
873 : :
874 [ + + ][ + - ]: 118 : if( IsXMLToken( rAttrValue, XML_PARAGRAPH ) )
875 : 36 : nFamilyAttr = i;
876 : : }
877 : :
878 : 224 : break;
879 : : case XML_ATACTION_STYLE_DISPLAY_NAME:
880 : : case XML_ATACTION_REMOVE:
881 [ + - ]: 4 : pMutableAttrList->RemoveAttributeByIndex( i );
882 : 4 : --i;
883 : 4 : --nAttrCount;
884 : 4 : break;
885 : : case XML_ATACTION_DECODE_STYLE_NAME:
886 : 244 : m_bControlStyle = 0 == rAttrValue.compareToAscii( "ctrl", 4 );
887 : : case XML_ATACTION_DECODE_STYLE_NAME_REF:
888 : : {
889 : 396 : OUString aAttrValue( rAttrValue );
890 [ + + ][ + - ]: 396 : if( GetTransformer().DecodeStyleName(aAttrValue) )
891 [ + - ]: 396 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
892 : : }
893 : 396 : break;
894 : : case XML_ATACTION_IN2INCH:
895 : : {
896 : 0 : OUString aAttrValue( rAttrValue );
897 [ # # ]: 0 : if( XMLTransformerBase::ReplaceSingleInWithInch(
898 [ # # ]: 0 : aAttrValue ) )
899 [ # # ]: 0 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
900 : : }
901 : 0 : break;
902 : : case XML_ATACTION_NEG_PERCENT:
903 : : {
904 : 0 : OUString aAttrValue( rAttrValue );
905 [ # # ][ # # ]: 0 : if( GetTransformer().NegPercent(aAttrValue) )
906 [ # # ]: 0 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
907 : : }
908 : 0 : break;
909 : : case XML_ATACTION_URI_OASIS:
910 : : {
911 : 0 : OUString aAttrValue( rAttrValue );
912 [ # # ]: 0 : if( GetTransformer().ConvertURIToOOo( aAttrValue,
913 [ # # # # ]: 0 : static_cast< sal_Bool >((*aIter).second.m_nParam1)))
914 [ # # ]: 0 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
915 : : }
916 : 0 : break;
917 : : default:
918 : : OSL_ENSURE( !this, "unknown action" );
919 : 0 : break;
920 : 624 : }
921 : : }
922 : 1068 : }
923 : :
924 [ - + ][ # # ]: 484 : if( m_bControlStyle && nFamilyAttr != -1 )
925 [ # # ][ # # ]: 0 : pMutableAttrList->SetValueByIndex( nFamilyAttr, GetXMLToken( XML_CONTROL ) );
926 : :
927 : :
928 [ + + ]: 484 : if( m_bPersistent )
929 [ + - ]: 132 : XMLPersElemContentTContext::StartElement( xAttrList );
930 : : else
931 [ + - ]: 352 : GetTransformer().GetDocHandler()->startElement( GetExportQName(),
932 [ + - ]: 484 : xAttrList );
933 : 484 : }
934 : :
935 : 484 : void XMLStyleOASISTContext::EndElement()
936 : : {
937 [ + + ]: 484 : if( m_bPersistent )
938 : : {
939 : 132 : XMLPersElemContentTContext::EndElement();
940 : : }
941 : : else
942 : : {
943 : : // if a properties context exist close it
944 [ + + ]: 352 : if( m_xPropContext.is() )
945 : : {
946 : 310 : m_xPropContext->Export();
947 : 310 : m_xPropContext = 0;
948 : : }
949 : 352 : GetTransformer().GetDocHandler()->endElement( GetExportQName() );
950 : : }
951 : 484 : }
952 : :
953 : 0 : void XMLStyleOASISTContext::Characters( const OUString& )
954 : : {
955 : : // element content only:
956 : 0 : }
957 : :
958 : 132 : void XMLStyleOASISTContext::ExportContent()
959 : : {
960 [ + + ]: 132 : if( m_xPropContext.is() )
961 : 120 : m_xPropContext->Export();
962 : 132 : XMLPersElemContentTContext::ExportContent();
963 : 132 : }
964 : :
965 : 132 : sal_Bool XMLStyleOASISTContext::IsPersistent() const
966 : : {
967 : 132 : return m_bPersistent;
968 : : }
969 : :
970 : 86 : XMLTransformerActions *XMLStyleOASISTContext::CreateTransformerActions(
971 : : sal_uInt16 nType )
972 : : {
973 : 86 : XMLTransformerActionInit *pInit = 0;
974 : :
975 [ + + + + : 86 : switch( nType )
+ + - + +
+ + + -
- ]
976 : : {
977 : : case PROP_OASIS_GRAPHIC_ATTR_ACTIONS:
978 : 12 : pInit = aGraphicPropertyOASISAttrActionTable;
979 : 12 : break;
980 : : case PROP_OASIS_DRAWING_PAGE_ATTR_ACTIONS:
981 : 8 : pInit = aDrawingPagePropertyOASISAttrActionTable;
982 : 8 : break;
983 : : case PROP_OASIS_PAGE_LAYOUT_ATTR_ACTIONS:
984 : 12 : pInit = aPageLayoutPropertyOASISAttrActionTable;
985 : 12 : break;
986 : : case PROP_OASIS_HEADER_FOOTER_ATTR_ACTIONS:
987 : 2 : pInit = aHeaderFooterPropertyOASISAttrActionTable;
988 : 2 : break;
989 : : case PROP_OASIS_TEXT_ATTR_ACTIONS:
990 : 14 : pInit = aTextPropertyOASISAttrActionTable;
991 : 14 : break;
992 : : case PROP_OASIS_PARAGRAPH_ATTR_ACTIONS:
993 : 12 : pInit = aParagraphPropertyOASISAttrActionTable;
994 : 12 : break;
995 : : case PROP_OASIS_SECTION_ATTR_ACTIONS:
996 : 0 : pInit = aSectionPropertyOASISAttrActionTable;
997 : 0 : break;
998 : : case PROP_OASIS_TABLE_ATTR_ACTIONS:
999 : 6 : pInit = aTablePropertyOASISAttrActionTable;
1000 : 6 : break;
1001 : : case PROP_OASIS_TABLE_COLUMN_ATTR_ACTIONS:
1002 : 2 : pInit = aTableColumnPropertyOASISAttrActionTable;
1003 : 2 : break;
1004 : : case PROP_OASIS_TABLE_ROW_ATTR_ACTIONS:
1005 : 6 : pInit = aTableRowPropertyOASISAttrActionTable;
1006 : 6 : break;
1007 : : case PROP_OASIS_TABLE_CELL_ATTR_ACTIONS:
1008 : 2 : pInit = aTableCellPropertyOASISAttrActionTable;
1009 : 2 : break;
1010 : : case PROP_OASIS_LIST_LEVEL_ATTR_ACTIONS:
1011 : 10 : pInit = aListLevelPropertyOASISAttrActionTable;
1012 : 10 : break;
1013 : : case PROP_OASIS_CHART_ATTR_ACTIONS:
1014 : 0 : pInit = aChartPropertyOASISAttrActionTable;
1015 : 0 : break;
1016 : : }
1017 : :
1018 : 86 : XMLTransformerActions *pActions = 0;
1019 [ + - ]: 86 : if( pInit )
1020 [ + - ]: 86 : pActions = new XMLTransformerActions( pInit );
1021 : :
1022 : 86 : return pActions;
1023 : : }
1024 : :
1025 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|