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 : :
34 : : #include <sax/tools/converter.hxx>
35 : :
36 : : #include <xmloff/nmspmap.hxx>
37 : : #include <xmloff/xmltoken.hxx>
38 : : #include "xmloff/xmlnmspe.hxx"
39 : : #include "PropType.hxx"
40 : : #include "DeepTContext.hxx"
41 : : #include "RenameElemTContext.hxx"
42 : : #include "ProcAttrTContext.hxx"
43 : : #include "ActionMapTypesOOo.hxx"
44 : : #include "MutableAttrList.hxx"
45 : : #include "TransformerActions.hxx"
46 : : #include "PropertyActionsOOo.hxx"
47 : : #include "TransformerBase.hxx"
48 : :
49 : : #include "StyleOOoTContext.hxx"
50 : : #include <xmloff/xmluconv.hxx>
51 : : #include <rtl/ustrbuf.hxx>
52 : : #include <rtl/math.hxx>
53 : :
54 : : using ::rtl::OUString;
55 : : using namespace ::xmloff::token;
56 : : using namespace ::com::sun::star::uno;
57 : : using namespace ::com::sun::star::xml::sax;
58 : :
59 : : const sal_uInt16 MAX_PROP_TYPES = 4;
60 : : #define ENTRY4(a,b,c,d) \
61 : : { XML_PROP_TYPE_##a, XML_PROP_TYPE_##b, \
62 : : XML_PROP_TYPE_##c, XML_PROP_TYPE_##d }
63 : : #define ENTRY3(a,b,c) \
64 : : { XML_PROP_TYPE_##a, XML_PROP_TYPE_##b, \
65 : : XML_PROP_TYPE_##c, XML_PROP_TYPE_END }
66 : : #define ENTRY2(a,b) \
67 : : { XML_PROP_TYPE_##a, XML_PROP_TYPE_##b, \
68 : : XML_PROP_TYPE_END, XML_PROP_TYPE_END }
69 : : #define ENTRY1(a) \
70 : : { XML_PROP_TYPE_##a, XML_PROP_TYPE_##END, \
71 : : XML_PROP_TYPE_END, XML_PROP_TYPE_END }
72 : :
73 : : static XMLPropType aPropTypes[XML_FAMILY_TYPE_END][MAX_PROP_TYPES] =
74 : : {
75 : : ENTRY3( GRAPHIC, PARAGRAPH, TEXT ), // XML_FAMILY_TYPE_GRAPHIC,
76 : : ENTRY3( GRAPHIC, PARAGRAPH, TEXT ), // XML_FAMILY_TYPE_PRESENTATION,
77 : : ENTRY1( DRAWING_PAGE ), // XML_FAMILY_TYPE_DRAWING_PAGE,
78 : : ENTRY1( END ), // XML_FAMILY_TYPE_MASTER_PAGE
79 : : ENTRY1( PAGE_LAYOUT ), // XML_FAMILY_TYPE_PAGE_LAYOUT,
80 : : ENTRY1( HEADER_FOOTER ), // XML_FAMILY_TYPE_HEADER_FOOTER
81 : : ENTRY1( TEXT ), // XML_FAMILY_TYPE_TEXT,
82 : : ENTRY2( PARAGRAPH, TEXT ), // XML_FAMILY_TYPE_PARAGRAPH,
83 : : ENTRY1( RUBY ), //XML_FAMILY_TYPE_RUBY,
84 : : ENTRY1( SECTION ), // XML_FAMILY_TYPE_SECTION,
85 : : ENTRY1( TABLE ), // XML_FAMILY_TYPE_TABLE,
86 : : ENTRY1( TABLE_COLUMN ), // XML_FAMILY_TYPE_TABLE_COLUMN,
87 : : ENTRY1( TABLE_ROW ), // XML_FAMILY_TYPE_TABLE_ROW,
88 : : ENTRY3( TABLE_CELL, PARAGRAPH, TEXT ), // XML_FAMILY_TYPE_TABLE_CELL,
89 : : ENTRY1( LIST_LEVEL ), // XML_FAMILY_TYPE_LIST,
90 : : ENTRY4( CHART, GRAPHIC, PARAGRAPH, TEXT ), // XML_FAMILY_TYPE_CHART,
91 : : ENTRY1( TEXT ), // XML_FAMILY_TYPE_DATA,
92 : : ENTRY1( END ), // XML_FAMILY_TYPE_GRADIENT,
93 : : ENTRY1( END ), // XML_FAMILY_TYPE_HATCH,
94 : : ENTRY1( END ), // XML_FAMILY_TYPE_FILL_IMAGE,
95 : : ENTRY1( END ), // XML_FAMILY_TYPE_STROKE_DASH,
96 : : ENTRY1( END ), // XML_FAMILY_TYPE_MARKER,
97 : : ENTRY1( END ) // XML_FAMILY_TYPE_PRESENTATION_PAGE_LAYOUT,
98 : : };
99 : :
100 : : static XMLTokenEnum aPropTokens[XML_PROP_TYPE_END] =
101 : : {
102 : : XML_GRAPHIC_PROPERTIES,
103 : : XML_DRAWING_PAGE_PROPERTIES,
104 : : XML_PAGE_LAYOUT_PROPERTIES,
105 : : XML_HEADER_FOOTER_PROPERTIES,
106 : : XML_TEXT_PROPERTIES,
107 : : XML_PARAGRAPH_PROPERTIES,
108 : : XML_RUBY_PROPERTIES,
109 : : XML_SECTION_PROPERTIES,
110 : : XML_TABLE_PROPERTIES,
111 : : XML_TABLE_COLUMN_PROPERTIES,
112 : : XML_TABLE_ROW_PROPERTIES,
113 : : XML_TABLE_CELL_PROPERTIES,
114 : : XML_LIST_LEVEL_PROPERTIES,
115 : : XML_CHART_PROPERTIES
116 : : };
117 : :
118 : : static sal_uInt16 aAttrActionMaps[XML_PROP_TYPE_END] =
119 : : {
120 : : PROP_OOO_GRAPHIC_ATTR_ACTIONS,
121 : : PROP_OOO_DRAWING_PAGE_ATTR_ACTIONS, // DRAWING_PAGE
122 : : PROP_OOO_PAGE_LAYOUT_ATTR_ACTIONS,
123 : : PROP_OOO_HEADER_FOOTER_ATTR_ACTIONS,
124 : : PROP_OOO_TEXT_ATTR_ACTIONS,
125 : : PROP_OOO_PARAGRAPH_ATTR_ACTIONS,
126 : : MAX_OOO_PROP_ACTIONS, // RUBY
127 : : PROP_OOO_SECTION_ATTR_ACTIONS,
128 : : PROP_OOO_TABLE_ATTR_ACTIONS,
129 : : PROP_OOO_TABLE_COLUMN_ATTR_ACTIONS,
130 : : PROP_OOO_TABLE_ROW_ATTR_ACTIONS,
131 : : PROP_OOO_TABLE_CELL_ATTR_ACTIONS,
132 : : PROP_OOO_LIST_LEVEL_ATTR_ACTIONS,
133 : : PROP_OOO_CHART_ATTR_ACTIONS
134 : : };
135 : :
136 : : static sal_uInt16 aElemActionMaps[XML_PROP_TYPE_END] =
137 : : {
138 : : PROP_OOO_GRAPHIC_ELEM_ACTIONS,
139 : : MAX_OOO_PROP_ACTIONS,
140 : : MAX_OOO_PROP_ACTIONS,
141 : : MAX_OOO_PROP_ACTIONS,
142 : : PROP_OOO_TEXT_ELEM_ACTIONS,
143 : : PROP_OOO_PARAGRAPH_ELEM_ACTIONS,
144 : : MAX_OOO_PROP_ACTIONS,
145 : : MAX_OOO_PROP_ACTIONS,
146 : : MAX_OOO_PROP_ACTIONS,
147 : : MAX_OOO_PROP_ACTIONS,
148 : : MAX_OOO_PROP_ACTIONS,
149 : : PROP_OOO_TABLE_CELL_ELEM_ACTIONS,
150 : : MAX_OOO_PROP_ACTIONS,
151 : : PROP_OOO_CHART_ELEM_ACTIONS
152 : : };
153 : :
154 : :
155 : : //------------------------------------------------------------------------------
156 : :
157 : : class XMLTypedPropertiesOOoTContext_Impl : public XMLPersElemContentTContext
158 : : {
159 : : ::com::sun::star::uno::Reference<
160 : : ::com::sun::star::xml::sax::XAttributeList > m_xAttrList;
161 : :
162 : : public:
163 : :
164 : : TYPEINFO();
165 : :
166 : : XMLTypedPropertiesOOoTContext_Impl( XMLTransformerBase& rTransformer,
167 : : const ::rtl::OUString& rQName );
168 : :
169 : : virtual ~XMLTypedPropertiesOOoTContext_Impl();
170 : :
171 : : using XMLPersAttrListTContext::AddAttribute;
172 : : void AddAttribute( const ::rtl::OUString &sName ,
173 : : const ::rtl::OUString &sValue );
174 : : void AddAttribute( sal_uInt16 nPrefix, XMLTokenEnum eToken,
175 : : const ::rtl::OUString &sValue );
176 : :
177 : : virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& rAttrList );
178 : :
179 : : virtual void Export();
180 : : };
181 : :
182 [ # # ][ # # ]: 0 : TYPEINIT1( XMLTypedPropertiesOOoTContext_Impl, XMLPersElemContentTContext );
183 : :
184 : 887 : XMLTypedPropertiesOOoTContext_Impl::XMLTypedPropertiesOOoTContext_Impl(
185 : : XMLTransformerBase& rImp,
186 : : const OUString& rQName ) :
187 : : XMLPersElemContentTContext( rImp, rQName ),
188 [ + - ][ + - ]: 887 : m_xAttrList( new XMLMutableAttributeList() )
[ + - ]
189 : : {
190 : 887 : }
191 : :
192 : 887 : XMLTypedPropertiesOOoTContext_Impl::~XMLTypedPropertiesOOoTContext_Impl()
193 : : {
194 [ - + ]: 1774 : }
195 : :
196 : 4406 : void XMLTypedPropertiesOOoTContext_Impl::AddAttribute(
197 : : const ::rtl::OUString &sName ,
198 : : const ::rtl::OUString &sValue )
199 : : {
200 : 4406 : static_cast< XMLMutableAttributeList * >( m_xAttrList.get() )
201 [ + - ]: 4406 : ->AddAttribute( sName, sValue );
202 : 4406 : }
203 : :
204 : 90 : void XMLTypedPropertiesOOoTContext_Impl::AddAttribute(
205 : : sal_uInt16 nPrefix, XMLTokenEnum eToken,
206 : : const ::rtl::OUString &sValue )
207 : : {
208 : : OUString sName(
209 : 90 : GetTransformer().GetNamespaceMap().GetQNameByKey(
210 [ + - + - ]: 180 : nPrefix, ::xmloff::token::GetXMLToken( eToken ) ) );
211 [ + - ]: 90 : static_cast< XMLMutableAttributeList * >( m_xAttrList.get() )
212 [ + - ][ + - ]: 90 : ->AddAttribute( sName, sValue );
213 : 90 : }
214 : :
215 : 0 : void XMLTypedPropertiesOOoTContext_Impl::StartElement(
216 : : const Reference< XAttributeList >& )
217 : : {
218 : : // empty, ignore even the attribute list
219 : 0 : }
220 : :
221 : 887 : void XMLTypedPropertiesOOoTContext_Impl::Export()
222 : : {
223 [ - + ][ # # ]: 887 : if( m_xAttrList->getLength() || HasElementContent() )
[ + - ]
224 : : {
225 : 887 : GetTransformer().GetDocHandler()->startElement( GetQName(), m_xAttrList );
226 : 887 : ExportContent();
227 : 887 : GetTransformer().GetDocHandler()->endElement( GetQName() );
228 : : }
229 : 887 : }
230 : :
231 : : //------------------------------------------------------------------------------
232 : :
233 : : class XMLPropertiesOOoTContext_Impl : public XMLTransformerContext
234 : : {
235 : : ::rtl::Reference < XMLTypedPropertiesOOoTContext_Impl >
236 : : m_aPropContexts[MAX_PROP_TYPES];
237 : :
238 : : typedef XMLPropType XMLPropTypes[MAX_PROP_TYPES];
239 : :
240 : : XMLPropTypes m_aPropTypes;
241 : :
242 : : sal_Bool m_bPersistent;
243 : :
244 : : XMLTypedPropertiesOOoTContext_Impl *GetPropContextAndAction(
245 : : TransformerAction_Impl& rAction,
246 : : sal_uInt16 nPrefix, const OUString& rLocalName,
247 : : sal_Bool bElem );
248 : :
249 : : XMLTypedPropertiesOOoTContext_Impl *GetPropContext(
250 : : XMLPropType eType );
251 : :
252 : :
253 : : public:
254 : :
255 : : TYPEINFO();
256 : :
257 : : XMLPropertiesOOoTContext_Impl( XMLTransformerBase& rTransformer,
258 : : const ::rtl::OUString& rQName,
259 : : XMLPropTypes& rTypes,
260 : : sal_Bool bPersistent );
261 : :
262 : : virtual ~XMLPropertiesOOoTContext_Impl();
263 : :
264 : : XMLTransformerContext *CreateChildContext(
265 : : sal_uInt16 nPrefix,
266 : : const OUString& rLocalName,
267 : : const OUString& rQName,
268 : : const Reference< XAttributeList >& rAttrList );
269 : :
270 : : virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& rAttrList );
271 : :
272 : : virtual void EndElement();
273 : :
274 : : virtual void Characters( const ::rtl::OUString& rChars );
275 : :
276 : : virtual void Export();
277 : :
278 : : virtual sal_Bool IsPersistent() const;
279 : : };
280 : :
281 [ # # ][ # # ]: 0 : TYPEINIT1( XMLPropertiesOOoTContext_Impl, XMLTransformerContext );
282 : :
283 : : XMLTypedPropertiesOOoTContext_Impl
284 : 115 : *XMLPropertiesOOoTContext_Impl::GetPropContext(
285 : : XMLPropType eType )
286 : : {
287 : 115 : sal_uInt16 nIndex = MAX_PROP_TYPES;
288 [ + - ]: 230 : for( sal_uInt16 i=0; i< MAX_PROP_TYPES; i++ )
289 : : {
290 [ + + ]: 230 : if( m_aPropTypes[i] == eType )
291 : : {
292 : 115 : nIndex = i;
293 : 115 : break;
294 : : }
295 : : }
296 [ - + ]: 115 : if( MAX_PROP_TYPES == nIndex )
297 : 0 : return 0;
298 : :
299 [ + + ]: 115 : if( !m_aPropContexts[nIndex].is() )
300 : : {
301 : 53 : m_aPropContexts[nIndex] =
302 : : new XMLTypedPropertiesOOoTContext_Impl(
303 : 53 : GetTransformer(),
304 : 53 : GetTransformer().GetNamespaceMap().GetQNameByKey(
305 : : XML_NAMESPACE_STYLE,
306 : : ::xmloff::token::GetXMLToken(
307 [ + - ][ + - ]: 106 : aPropTokens[m_aPropTypes[nIndex]] ) ));
[ + - ]
308 : : }
309 : :
310 : 115 : return m_aPropContexts[nIndex].get();
311 : : }
312 : :
313 : :
314 : : XMLTypedPropertiesOOoTContext_Impl
315 : 4500 : *XMLPropertiesOOoTContext_Impl::GetPropContextAndAction(
316 : : TransformerAction_Impl& rAction,
317 : : sal_uInt16 nPrefix, const OUString& rLocalName,
318 : : sal_Bool bElem )
319 : : {
320 : 4500 : rAction.m_nActionType = XML_ATACTION_COPY;
321 : 4500 : sal_uInt16 nIndex = 0;
322 : :
323 : 4500 : XMLTransformerActions::key_type aKey( nPrefix, rLocalName );
324 : 4500 : sal_uInt16 i=0;
325 [ + - ][ + + ]: 8826 : while( i < MAX_PROP_TYPES && XML_PROP_TYPE_END!=m_aPropTypes[i])
[ + + ]
326 : : {
327 : : sal_uInt16 nActionMap =
328 [ + + ]: 8170 : (bElem ? aElemActionMaps : aAttrActionMaps)[m_aPropTypes[i]];
329 [ + + ]: 8170 : if( nActionMap < MAX_OOO_PROP_ACTIONS )
330 : : {
331 : : XMLTransformerActions *pActions =
332 [ + - ]: 8106 : GetTransformer().GetUserDefinedActions( nActionMap );
333 : : OSL_ENSURE( pActions, "go no actions" );
334 [ + - ]: 8106 : if( pActions )
335 : : {
336 : : XMLTransformerActions::const_iterator aIter =
337 [ + - ]: 8106 : pActions->find( aKey );
338 : :
339 [ + + ][ + - ]: 8106 : if( !(aIter == pActions->end()) )
340 : : {
341 [ + - ]: 3844 : rAction = (*aIter).second;
342 : 8106 : nIndex = i;
343 : : break;
344 : : }
345 : : }
346 : : }
347 : 4326 : ++i;
348 : : }
349 : :
350 : : #ifdef DBG_UTIL
351 : : if( !( XML_NAMESPACE_NONE == nPrefix ||
352 : : (XML_NAMESPACE_UNKNOWN_FLAG & nPrefix) ||
353 : : XML_PROP_TYPE_END==m_aPropTypes[1] ||
354 : : (i<MAX_PROP_TYPES && XML_PROP_TYPE_END!=m_aPropTypes[i]) ) )
355 : : {
356 : : ::rtl::OString aTmp("Didnt't find property: ");
357 : : const ::rtl::OUString& rPrefix =
358 : : GetTransformer().GetNamespaceMap().GetPrefixByKey( nPrefix );
359 : : aTmp += ::rtl::OString( rPrefix.getStr(), rPrefix.getLength(),
360 : : RTL_TEXTENCODING_ASCII_US );
361 : : aTmp += ::rtl::OString::valueOf( ':' );
362 : : aTmp += ::rtl::OString( rLocalName.getStr(), rLocalName.getLength(),
363 : : RTL_TEXTENCODING_ASCII_US );
364 : : aTmp += ::rtl::OString(", assuming <style:");
365 : : const ::rtl::OUString& rName =
366 : : ::xmloff::token::GetXMLToken( aPropTokens[m_aPropTypes[0]] );
367 : : aTmp += ::rtl::OString( rName.getStr(), rName.getLength(),
368 : : RTL_TEXTENCODING_ASCII_US );
369 : : aTmp += ::rtl::OString::valueOf( '>' );
370 : :
371 : : OSL_FAIL(aTmp.getStr());
372 : : }
373 : : #endif
374 : :
375 [ + + ]: 4500 : if( !m_aPropContexts[nIndex].is() )
376 : : {
377 : 834 : m_aPropContexts[nIndex] =
378 : : new XMLTypedPropertiesOOoTContext_Impl(
379 : 834 : GetTransformer(),
380 : 834 : GetTransformer().GetNamespaceMap().GetQNameByKey(
381 : : XML_NAMESPACE_STYLE,
382 : : ::xmloff::token::GetXMLToken(
383 [ + - + - ]: 1668 : aPropTokens[m_aPropTypes[nIndex]] ) ));
[ + - ][ + - ]
[ + - ]
384 : : }
385 : :
386 : 4500 : return m_aPropContexts[nIndex].get();
387 : : }
388 : :
389 : 610 : XMLPropertiesOOoTContext_Impl::XMLPropertiesOOoTContext_Impl(
390 : : XMLTransformerBase& rImp,
391 : : const OUString& rQName,
392 : : XMLPropTypes& rTypes,
393 : : sal_Bool bPersistent ) :
394 : : XMLTransformerContext( rImp, rQName ),
395 [ + + ]: 3050 : m_bPersistent( bPersistent )
396 : : {
397 [ + + ]: 3050 : for( sal_uInt16 i=0; i < MAX_PROP_TYPES; ++i )
398 : : {
399 : : // remember the types that belong to the attribute and element lists
400 : 2440 : m_aPropTypes[i] = rTypes[i];
401 : : }
402 : 610 : }
403 : :
404 [ + - ]: 3050 : XMLPropertiesOOoTContext_Impl::~XMLPropertiesOOoTContext_Impl()
405 : : {
406 [ + - ][ + + ]: 4270 : }
[ - + ]
407 : :
408 : 90 : XMLTransformerContext *XMLPropertiesOOoTContext_Impl::CreateChildContext(
409 : : sal_uInt16 nPrefix,
410 : : const OUString& rLocalName,
411 : : const OUString& rQName,
412 : : const Reference< XAttributeList >& rAttrList )
413 : : {
414 : 90 : TransformerAction_Impl aAction;
415 [ + - ]: 90 : return GetPropContextAndAction( aAction, nPrefix, rLocalName, sal_True )
416 [ + - ]: 90 : ->CreateChildContext( nPrefix, rLocalName, rQName, rAttrList );
417 : : }
418 : :
419 : :
420 : 610 : void XMLPropertiesOOoTContext_Impl::StartElement(
421 : : const Reference< XAttributeList >& rAttrList )
422 : : {
423 : 610 : Reference< XAttributeList > xAttrList( rAttrList );
424 : :
425 : 610 : XMLTypedPropertiesOOoTContext_Impl * pIntervalMinorDivisorContext = 0;
426 : 610 : double fIntervalMajor = 0.0;
427 : 610 : double fIntervalMinor = 0.0;
428 : 610 : sal_Bool bMoveProtect = sal_False;
429 : 610 : sal_Bool bSizeProtect = sal_False;
430 : 610 : OUString aProtectAttrValue;
431 : 610 : XMLTypedPropertiesOOoTContext_Impl * pProtectContext = 0;
432 : :
433 : : /* Attribute <style:mirror> has to be priority over attribute <style:draw>.
434 : : The filter from OpenDocument file format to OpenOffice.org file format
435 : : produces styles with both attributes. (#i49139#)
436 : : */
437 : 610 : sal_Bool bExistStyleMirror( sal_False );
438 : 610 : OUString aStyleMirrorAttrValue;
439 : 610 : sal_Bool bExistDrawMirror( sal_False );
440 : 610 : OUString aDrawMirrorAttrValue;
441 : 610 : XMLTypedPropertiesOOoTContext_Impl* pMirrorContext( 0L );
442 : :
443 [ + - ][ + - ]: 610 : sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
[ + - ]
444 [ + + ]: 5020 : for( sal_Int16 i=0; i < nAttrCount; i++ )
445 : : {
446 [ + - ][ + - ]: 4410 : const OUString sAttrName = xAttrList->getNameByIndex( i );
447 [ + - ][ + - ]: 4410 : const OUString sAttrValue = xAttrList->getValueByIndex( i );
448 : 4410 : OUString aLocalName;
449 : : sal_uInt16 nPrefix =
450 : 4410 : GetTransformer().GetNamespaceMap().GetKeyByAttrName( sAttrName,
451 [ + - ]: 4410 : &aLocalName );
452 : 4410 : TransformerAction_Impl aAction;
453 : : XMLTypedPropertiesOOoTContext_Impl *pContext =
454 [ + - ]: 4410 : GetPropContextAndAction( aAction, nPrefix, aLocalName, sal_False );
455 [ + + + + : 4410 : switch( aAction.m_nActionType )
+ + - - +
+ + - + +
+ + - - +
- + - - -
+ + + - +
- - ]
456 : : {
457 : : case XML_ATACTION_REMOVE:
458 : 32 : break;
459 : : case XML_ATACTION_COPY:
460 [ + - ]: 2738 : pContext->AddAttribute( sAttrName, sAttrValue );
461 : 2738 : break;
462 : : case XML_ATACTION_COPY_DUPLICATE:
463 : : {
464 [ + - ]: 7 : pContext->AddAttribute( sAttrName, sAttrValue );
465 : : XMLTypedPropertiesOOoTContext_Impl *pContext2 =
466 [ + - ]: 7 : GetPropContext( (XMLPropType)aAction.m_nParam1 );
467 [ + - ]: 7 : if( pContext2 )
468 [ + - ]: 7 : pContext2->AddAttribute( sAttrName, sAttrValue );
469 : : }
470 : 7 : break;
471 : : case XML_ATACTION_RENAME:
472 : : {
473 : 48 : pContext->AddAttribute( aAction.GetQNamePrefixFromParam1(),
474 : : aAction.GetQNameTokenFromParam1(),
475 [ + - ]: 96 : sAttrValue );
476 : : }
477 : 48 : break;
478 : : case XML_ATACTION_ENCODE_STYLE_NAME_REF:
479 : : {
480 : 54 : OUString aAttrValue( sAttrValue );
481 [ + - ]: 54 : GetTransformer().EncodeStyleName(aAttrValue);
482 [ + - ]: 54 : pContext->AddAttribute( sAttrName, aAttrValue );
483 : : }
484 : 54 : break;
485 : : case XML_ATACTION_RENAME_ENCODE_STYLE_NAME_REF:
486 : : {
487 : 32 : OUString aAttrValue( sAttrValue );
488 [ + - ]: 32 : GetTransformer().EncodeStyleName(aAttrValue);
489 : 32 : pContext->AddAttribute( aAction.GetQNamePrefixFromParam1(),
490 : : aAction.GetQNameTokenFromParam1(),
491 [ + - ]: 64 : aAttrValue );
492 : : }
493 : 32 : break;
494 : : case XML_ATACTION_NEG_PERCENT:
495 : : {
496 : 0 : OUString aAttrValue( sAttrValue );
497 [ # # ]: 0 : GetTransformer().NegPercent(aAttrValue);
498 [ # # ]: 0 : pContext->AddAttribute( sAttrName, aAttrValue );
499 : : }
500 : 0 : break;
501 : : case XML_ATACTION_RENAME_NEG_PERCENT:
502 : : {
503 : 0 : OUString aAttrValue( sAttrValue );
504 [ # # ]: 0 : GetTransformer().NegPercent(aAttrValue);
505 : 0 : pContext->AddAttribute( aAction.GetQNamePrefixFromParam1(),
506 : : aAction.GetQNameTokenFromParam1(),
507 [ # # ]: 0 : aAttrValue );
508 : : }
509 : 0 : break;
510 : : case XML_ATACTION_INCH2IN:
511 : : {
512 : 1286 : OUString aAttrValue( sAttrValue );
513 [ + - ]: 1286 : XMLTransformerBase::ReplaceSingleInchWithIn( aAttrValue );
514 [ + - ]: 1286 : pContext->AddAttribute( sAttrName, aAttrValue );
515 : : }
516 : 1286 : break;
517 : : case XML_ATACTION_INCH2IN_DUPLICATE:
518 : : {
519 : 108 : OUString aAttrValue( sAttrValue );
520 [ + - ]: 108 : XMLTransformerBase::ReplaceSingleInchWithIn( aAttrValue );
521 [ + - ]: 108 : pContext->AddAttribute( sAttrName, aAttrValue );
522 : : XMLTypedPropertiesOOoTContext_Impl *pContext2 =
523 [ + - ]: 108 : GetPropContext( (XMLPropType)aAction.m_nParam1 );
524 [ + - ]: 108 : if( pContext2 )
525 [ + - ]: 108 : pContext2->AddAttribute( sAttrName, aAttrValue );
526 : : }
527 : 108 : break;
528 : : case XML_ATACTION_INCHS2INS:
529 : : {
530 : 34 : OUString aAttrValue( sAttrValue );
531 [ + - ]: 34 : XMLTransformerBase::ReplaceInchWithIn( aAttrValue );
532 [ + - ]: 34 : pContext->AddAttribute( sAttrName, aAttrValue );
533 : : }
534 : 34 : break;
535 : : case XML_PTACTION_LINE_MODE:
536 : : {
537 : : OUString aAttrValue( GetXMLToken(
538 [ # # ]: 0 : IsXMLToken( sAttrValue, XML_TRUE )
539 : : ? XML_CONTINUOUS
540 [ # # ][ # # ]: 0 : : XML_SKIP_WHITE_SPACE) );
541 : : OUString aAttrQName(
542 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
543 : : XML_NAMESPACE_STYLE,
544 [ # # # # ]: 0 : GetXMLToken( XML_TEXT_UNDERLINE_MODE ) ) );
545 [ # # ]: 0 : pContext->AddAttribute( aAttrQName, aAttrValue );
546 : :
547 : : aAttrQName =
548 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
549 : : XML_NAMESPACE_STYLE,
550 [ # # # # ]: 0 : GetXMLToken( XML_TEXT_LINE_THROUGH_MODE ) );
551 [ # # ]: 0 : pContext->AddAttribute( aAttrQName, aAttrValue );
552 : : }
553 : 0 : break;
554 : : case XML_PTACTION_KEEP_WITH_NEXT:
555 : : {
556 : : OUString aAttrValue( GetXMLToken(
557 [ + - ]: 6 : IsXMLToken( sAttrValue, XML_TRUE )
558 : : ? XML_ALWAYS
559 [ + - ][ + - ]: 6 : : XML_AUTO) );
560 [ + - ]: 6 : pContext->AddAttribute( sAttrName, aAttrValue );
561 : : }
562 : 6 : break;
563 : : case XML_PTACTION_UNDERLINE:
564 : : {
565 [ + - ]: 21 : XMLTokenEnum eToken = GetTransformer().GetToken( sAttrValue );
566 : 21 : sal_Bool bBold = sal_False, bDouble = sal_False;
567 [ + - - - : 21 : switch( eToken )
- - - - -
- + - ]
568 : : {
569 : : case XML_SINGLE:
570 : 8 : eToken = XML_SOLID;
571 : 8 : break;
572 : : case XML_DOUBLE:
573 : 0 : eToken = XML_SOLID;
574 : 0 : bDouble = sal_True;
575 : 0 : break;
576 : : case XML_BOLD:
577 : 0 : eToken = XML_SOLID;
578 : 0 : bBold = sal_True;
579 : 0 : break;
580 : : case XML_BOLD_DOTTED:
581 : 0 : eToken = XML_DOTTED;
582 : 0 : bBold = sal_True;
583 : 0 : break;
584 : : case XML_BOLD_DASH:
585 : 0 : eToken = XML_DASH;
586 : 0 : bBold = sal_True;
587 : 0 : break;
588 : : case XML_BOLD_LONG_DASH:
589 : 0 : eToken = XML_LONG_DASH;
590 : 0 : bBold = sal_True;
591 : 0 : break;
592 : : case XML_BOLD_DOT_DASH:
593 : 0 : eToken = XML_DOT_DASH;
594 : 0 : bBold = sal_True;
595 : 0 : break;
596 : : case XML_BOLD_DOT_DOT_DASH:
597 : 0 : eToken = XML_DOT_DOT_DASH;
598 : 0 : bBold = sal_True;
599 : 0 : break;
600 : : case XML_BOLD_WAVE:
601 : 0 : eToken = XML_WAVE;
602 : 0 : bBold = sal_True;
603 : 0 : break;
604 : : case XML_DOUBLE_WAVE:
605 : 0 : eToken = XML_WAVE;
606 : 0 : bDouble = sal_True;
607 : 0 : break;
608 : : case XML_NONE:
609 : 13 : eToken = XML_NONE;
610 : 13 : bDouble = sal_False;
611 : 13 : break;
612 : : default:
613 : : OSL_FAIL( "xmloff::XMLPropertiesOOoTContext_Impl::StartElement(), unknown underline token!" );
614 : 0 : break;
615 : : }
616 : : pContext->AddAttribute(
617 : 21 : GetTransformer().GetNamespaceMap().GetQNameByKey(
618 : : XML_NAMESPACE_STYLE,
619 [ + - ]: 21 : GetXMLToken( XML_TEXT_UNDERLINE_STYLE ) ),
620 : : eToken != XML_TOKEN_END ? GetXMLToken( eToken )
621 [ + - ][ + - ]: 42 : : sAttrValue );
[ + - ][ + - ]
622 [ - + ]: 21 : if( bDouble )
623 : : pContext->AddAttribute(
624 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
625 : : XML_NAMESPACE_STYLE,
626 [ # # ]: 0 : GetXMLToken( XML_TEXT_UNDERLINE_TYPE ) ),
627 [ # # # # ]: 0 : GetXMLToken( XML_DOUBLE ) );
[ # # ]
628 [ - + ]: 21 : if( bBold )
629 : : pContext->AddAttribute(
630 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
631 : : XML_NAMESPACE_STYLE,
632 [ # # ]: 0 : GetXMLToken( XML_TEXT_UNDERLINE_WIDTH ) ),
633 [ # # # # ]: 0 : GetXMLToken( XML_BOLD ) );
[ # # ]
634 : : }
635 : 21 : break;
636 : : case XML_PTACTION_LINETHROUGH:
637 : : {
638 [ + - ]: 13 : XMLTokenEnum eToken = GetTransformer().GetToken( sAttrValue );
639 : 13 : sal_Bool bBold = sal_False, bDouble = sal_False;
640 : 13 : sal_Unicode c = 0;
641 [ - - - - : 13 : switch( eToken )
- + ]
642 : : {
643 : : case XML_SINGLE_LINE:
644 : 0 : eToken = XML_SOLID;
645 : 0 : break;
646 : : case XML_DOUBLE_LINE:
647 : 0 : eToken = XML_SOLID;
648 : 0 : bDouble = sal_True;
649 : 0 : break;
650 : : case XML_THICK_LINE:
651 : 0 : eToken = XML_SOLID;
652 : 0 : bBold = sal_True;
653 : 0 : break;
654 : : case XML_SLASH:
655 : 0 : eToken = XML_SOLID;
656 : 0 : c = '/';
657 : 0 : break;
658 : : case XML_uX:
659 : 0 : eToken = XML_SOLID;
660 : 0 : c = 'X';
661 : 0 : break;
662 : : default:
663 : 13 : break;
664 : : }
665 : : pContext->AddAttribute(
666 : 13 : GetTransformer().GetNamespaceMap().GetQNameByKey(
667 : : XML_NAMESPACE_STYLE,
668 [ + - ]: 13 : GetXMLToken( XML_TEXT_LINE_THROUGH_STYLE ) ),
669 : : eToken != XML_TOKEN_END ? GetXMLToken( eToken )
670 [ + - ][ + - ]: 26 : : sAttrValue );
[ + - ][ + - ]
671 [ - + ]: 13 : if( bDouble )
672 : : pContext->AddAttribute(
673 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
674 : : XML_NAMESPACE_STYLE,
675 [ # # ]: 0 : GetXMLToken( XML_TEXT_LINE_THROUGH_TYPE ) ),
676 [ # # # # ]: 0 : GetXMLToken( XML_DOUBLE ) );
[ # # ]
677 [ - + ]: 13 : if( bBold )
678 : : pContext->AddAttribute(
679 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
680 : : XML_NAMESPACE_STYLE,
681 [ # # ]: 0 : GetXMLToken( XML_TEXT_LINE_THROUGH_WIDTH ) ),
682 [ # # # # ]: 0 : GetXMLToken( XML_BOLD ) );
[ # # ]
683 [ - + ]: 13 : if( c )
684 : : pContext->AddAttribute(
685 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
686 : : XML_NAMESPACE_STYLE,
687 [ # # ]: 0 : GetXMLToken( XML_TEXT_LINE_THROUGH_TEXT ) ),
688 [ # # ][ # # ]: 0 : OUString::valueOf( c ) );
689 : : }
690 : 13 : break;
691 : : case XML_PTACTION_SPLINES:
692 : : {
693 : 6 : sal_Int32 nSplineType = sAttrValue.toInt32();
694 : 6 : OUString aNewAttrName = GetTransformer().GetNamespaceMap().GetQNameByKey(
695 [ + - + - ]: 12 : XML_NAMESPACE_CHART, GetXMLToken( XML_INTERPOLATION ) );
696 : :
697 [ + - - - ]: 6 : switch( nSplineType )
698 : : {
699 : : // straight lines
700 : : case 0:
701 : : pContext->AddAttribute(
702 [ + - ][ + - ]: 6 : aNewAttrName, GetXMLToken( XML_NONE ));
703 : 6 : break;
704 : : // cubic spline
705 : : case 1:
706 : : pContext->AddAttribute(
707 [ # # ][ # # ]: 0 : aNewAttrName, GetXMLToken( XML_CUBIC_SPLINE ));
708 : 0 : break;
709 : : // B-spline
710 : : case 2:
711 : : pContext->AddAttribute(
712 [ # # ][ # # ]: 0 : aNewAttrName, GetXMLToken( XML_B_SPLINE ));
713 : 0 : break;
714 : :
715 : : default:
716 : : OSL_FAIL( "invalid spline type" );
717 : : pContext->AddAttribute(
718 [ # # ][ # # ]: 0 : aNewAttrName, GetXMLToken( XML_NONE ));
719 : 0 : break;
720 : 6 : }
721 : : }
722 : 6 : break;
723 : : case XML_PTACTION_INTERVAL_MAJOR:
724 [ # # ]: 0 : pContext->AddAttribute( sAttrName, sAttrValue );
725 [ # # ]: 0 : ::sax::Converter::convertDouble( fIntervalMajor, sAttrValue );
726 : 0 : break;
727 : : case XML_PTACTION_INTERVAL_MINOR:
728 [ # # ]: 0 : ::sax::Converter::convertDouble( fIntervalMinor, sAttrValue );
729 : 0 : pIntervalMinorDivisorContext = pContext;
730 : 0 : break;
731 : : case XML_PTACTION_SYMBOL:
732 : : {
733 : 6 : sal_Int32 nSymbolType = sAttrValue.toInt32();
734 : 6 : OUString aNewAttrName = GetTransformer().GetNamespaceMap().GetQNameByKey(
735 [ + - + - ]: 12 : XML_NAMESPACE_CHART, GetXMLToken( XML_SYMBOL_TYPE ) );
736 : :
737 [ - + ]: 6 : if( nSymbolType >= 0 )
738 : : {
739 [ # # ][ # # ]: 0 : pContext->AddAttribute( aNewAttrName, GetXMLToken( XML_NAMED_SYMBOL ));
740 : 0 : enum XMLTokenEnum eToken = XML_TOKEN_INVALID;
741 [ # # # # : 0 : switch( nSymbolType )
# # # # #
# # # # #
# # ]
742 : : {
743 : : // SYMBOL0
744 : : case 0:
745 : : // "square" has an awkward token name
746 : 0 : eToken = XML_GRADIENTSTYLE_SQUARE;
747 : 0 : break;
748 : : // SYMBOL1
749 : : case 1:
750 : 0 : eToken = XML_DIAMOND;
751 : 0 : break;
752 : : // SYMBOL2
753 : : case 2:
754 : 0 : eToken = XML_ARROW_DOWN;
755 : 0 : break;
756 : : // SYMBOL3
757 : : case 3:
758 : 0 : eToken = XML_ARROW_UP;
759 : 0 : break;
760 : : // SYMBOL4
761 : : case 4:
762 : 0 : eToken = XML_ARROW_RIGHT;
763 : 0 : break;
764 : : // SYMBOL5
765 : : case 5:
766 : 0 : eToken = XML_ARROW_LEFT;
767 : 0 : break;
768 : : // SYMBOL6
769 : : case 6:
770 : 0 : eToken = XML_BOW_TIE;
771 : 0 : break;
772 : : // SYMBOL7
773 : : case 7:
774 : 0 : eToken = XML_HOURGLASS;
775 : 0 : break;
776 : : case 8:
777 : 0 : eToken = XML_CIRCLE;
778 : 0 : break;
779 : : case 9:
780 : 0 : eToken = XML_STAR;
781 : 0 : break;
782 : : case 10:
783 : 0 : eToken = XML_X;
784 : 0 : break;
785 : : case 11:
786 : 0 : eToken = XML_PLUS;
787 : 0 : break;
788 : : case 12:
789 : 0 : eToken = XML_ASTERISK;
790 : 0 : break;
791 : : case 13:
792 : 0 : eToken = XML_HORIZONTAL_BAR;
793 : 0 : break;
794 : : case 14:
795 : 0 : eToken = XML_VERTICAL_BAR;
796 : 0 : break;
797 : : default:
798 : : OSL_FAIL( "invalid named symbol" );
799 : 0 : break;
800 : : }
801 : :
802 [ # # ]: 0 : if( eToken != XML_TOKEN_INVALID )
803 : : {
804 : 0 : pContext->AddAttribute( GetTransformer().GetNamespaceMap().GetQNameByKey(
805 [ # # ]: 0 : XML_NAMESPACE_CHART, GetXMLToken( XML_SYMBOL_NAME )),
806 [ # # # # ]: 0 : GetXMLToken( eToken ));
[ # # ]
807 : : }
808 : : }
809 : : else
810 : : {
811 [ + - - - ]: 6 : switch( nSymbolType )
812 : : {
813 : : // NONE
814 : : case -3:
815 : : pContext->AddAttribute(
816 [ + - ][ + - ]: 6 : aNewAttrName, GetXMLToken( XML_NONE ));
817 : 6 : break;
818 : : // AUTO
819 : : case -2:
820 : : pContext->AddAttribute(
821 [ # # ][ # # ]: 0 : aNewAttrName, GetXMLToken( XML_AUTOMATIC ));
822 : 0 : break;
823 : : // BITMAPURL
824 : : case -1:
825 : : pContext->AddAttribute(
826 [ # # ][ # # ]: 0 : aNewAttrName, GetXMLToken( XML_IMAGE ));
827 : 0 : break;
828 : : default:
829 : : OSL_FAIL( "invalid symbol type" );
830 : : pContext->AddAttribute(
831 [ # # ][ # # ]: 0 : aNewAttrName, GetXMLToken( XML_NONE ));
832 : 0 : break;
833 : : }
834 : 6 : }
835 : : }
836 : 6 : break;
837 : : case XML_PTACTION_SYMBOL_IMAGE_NAME:
838 : : {
839 : : // create an xlink:href element for URI attribute
840 : : XMLPersAttrListTContext *pSymbolImageContext = new XMLPersAttrListTContext(
841 : 0 : GetTransformer(), GetTransformer().GetNamespaceMap().GetQNameByKey(
842 [ # # # # ]: 0 : XML_NAMESPACE_CHART, GetXMLToken( XML_SYMBOL_IMAGE )));
[ # # ][ # # ]
843 : :
844 : 0 : OUString aAttrValue( sAttrValue );
845 [ # # ][ # # ]: 0 : if( GetTransformer().ConvertURIToOASIS( aAttrValue, sal_True ))
846 : : {
847 [ # # ]: 0 : pSymbolImageContext->AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, aAttrValue );
848 [ # # ]: 0 : pContext->AddContent( pSymbolImageContext );
849 : 0 : }
850 : : }
851 : 0 : break;
852 : :
853 : : // #i25616#
854 : : case XML_PTACTION_TRANSPARENCY :
855 : : {
856 : 5 : OUString aAttrValue( sAttrValue );
857 [ + - ]: 5 : GetTransformer().NegPercent(aAttrValue);
858 : : pContext->AddAttribute( XML_NAMESPACE_DRAW,
859 : : XML_OPACITY,
860 [ + - ]: 5 : aAttrValue );
861 : : pContext->AddAttribute( XML_NAMESPACE_DRAW,
862 : : XML_IMAGE_OPACITY,
863 [ + - ]: 5 : aAttrValue );
864 : : }
865 : 5 : break;
866 : :
867 : : case XML_PTACTION_BREAK_INSIDE:
868 : : {
869 : : pContext->AddAttribute(
870 : : XML_NAMESPACE_FO, XML_KEEP_TOGETHER,
871 : : GetXMLToken(
872 [ # # ]: 0 : IsXMLToken( sAttrValue, XML_COLUMNSPLIT_AVOID )
873 : : ? XML_ALWAYS
874 [ # # ][ # # ]: 0 : : XML_AUTO ) );
[ # # ]
875 : : }
876 : 0 : break;
877 : : case XML_ATACTION_CAPTION_ESCAPE_OOO:
878 : : {
879 : 0 : OUString aAttrValue( sAttrValue );
880 [ # # ]: 0 : if( aAttrValue.indexOf( sal_Unicode('%') ) != -1 )
881 : : {
882 : 0 : sal_Int32 nValue = 0;
883 [ # # ]: 0 : ::sax::Converter::convertPercent( nValue, sAttrValue );
884 [ # # ]: 0 : if( nValue )
885 : : {
886 : 0 : nValue /= 100;
887 : 0 : rtl::OUStringBuffer aOut;
888 [ # # ]: 0 : ::sax::Converter::convertPercent( aOut, nValue );
889 [ # # ]: 0 : aAttrValue = aOut.makeStringAndClear();
890 : : }
891 : : }
892 : : else
893 : : {
894 [ # # ]: 0 : XMLTransformerBase::ReplaceSingleInchWithIn( aAttrValue );
895 : : }
896 : :
897 [ # # ]: 0 : pContext->AddAttribute( sAttrName, aAttrValue );
898 : : }
899 : 0 : break;
900 : : case XML_ATACTION_MOVE_PROTECT:
901 [ # # ]: 0 : bMoveProtect = IsXMLToken( sAttrValue, XML_TRUE );
902 : 0 : pProtectContext = pContext;
903 : 0 : break;
904 : : case XML_ATACTION_SIZE_PROTECT:
905 [ + - ]: 2 : bSizeProtect = IsXMLToken( sAttrValue, XML_TRUE );
906 : 2 : pProtectContext = pContext;
907 : 2 : break;
908 : : case XML_ATACTION_PROTECT:
909 : 2 : aProtectAttrValue = sAttrValue;
910 : 2 : pProtectContext = pContext;
911 : 2 : break;
912 : : case XML_ATACTION_DRAW_MIRROR_OOO: // renames draw:mirror to style:mirror and adapts values
913 : : {
914 : : // OpenDocument file format: attribute value of <style:mirror> wrong (#i49139#)
915 : : aDrawMirrorAttrValue =
916 [ + - ]: 5 : GetXMLToken( IsXMLToken( sAttrValue, XML_TRUE )
917 [ - + ][ + - ]: 5 : ? XML_HORIZONTAL : XML_NONE );
918 : 5 : bExistDrawMirror = sal_True;
919 : 5 : pMirrorContext = pContext;
920 : : }
921 : 5 : break;
922 : : // OpenDocument file format: attribute value of <style:mirror> wrong (#i49139#)
923 : : case XML_ATACTION_STYLE_MIRROR_OOO: // adapts style:mirror values
924 : : {
925 [ # # ]: 0 : SvXMLTokenEnumerator aTokenEnum( sAttrValue );
926 : 0 : OUString aToken;
927 [ # # ][ # # ]: 0 : while( aTokenEnum.getNextToken( aToken ) )
928 : : {
929 [ # # ]: 0 : if ( !aStyleMirrorAttrValue.isEmpty() )
930 : : {
931 : 0 : aStyleMirrorAttrValue += rtl::OUString(" " );
932 : : }
933 : :
934 [ # # ][ # # ]: 0 : if ( IsXMLToken( aToken, XML_HORIZONTAL_ON_LEFT_PAGES ) )
935 : : {
936 [ # # ]: 0 : aStyleMirrorAttrValue += GetXMLToken( XML_HORIZONTAL_ON_EVEN );
937 : : }
938 [ # # ][ # # ]: 0 : else if ( IsXMLToken( aToken, XML_HORIZONTAL_ON_RIGHT_PAGES ) )
939 : : {
940 [ # # ]: 0 : aStyleMirrorAttrValue += GetXMLToken( XML_HORIZONTAL_ON_ODD );
941 : : }
942 : : else
943 : : {
944 : 0 : aStyleMirrorAttrValue += aToken;
945 : : }
946 : : }
947 : 0 : bExistStyleMirror = sal_True;
948 : 0 : pMirrorContext = pContext;
949 : : }
950 : 0 : break;
951 : : case XML_ATACTION_GAMMA_OOO: // converts double value to percentage
952 : : {
953 : 5 : double fValue = sAttrValue.toDouble();
954 [ + - ]: 5 : sal_Int32 nValue = (sal_Int32)((fValue * 100.0) + ( fValue > 0 ? 0.5 : - 0.5 ) );
955 : :
956 : 5 : rtl::OUStringBuffer aOut;
957 [ + - ]: 5 : ::sax::Converter::convertPercent( aOut, nValue );
958 [ + - ]: 5 : OUString aAttrValue( aOut.makeStringAndClear() );
959 [ + - ]: 5 : pContext->AddAttribute( sAttrName, aAttrValue );
960 : : }
961 : 5 : break;
962 : : case XML_ATACTION_OPACITY_FIX:
963 : : {
964 : : sal_Int32 nValue;
965 [ # # ]: 0 : if( sAttrValue.indexOf( sal_Unicode('%') ) != -1 )
966 : : {
967 [ # # ]: 0 : ::sax::Converter::convertPercent( nValue, sAttrValue );
968 : : }
969 : : else
970 : : {
971 : 0 : nValue = sal_Int32( sAttrValue.toDouble() * 100.0 );
972 : : }
973 : 0 : nValue = 100 - nValue;
974 : :
975 : 0 : rtl::OUStringBuffer aOut;
976 [ # # ]: 0 : ::sax::Converter::convertPercent( aOut, nValue );
977 [ # # ][ # # ]: 0 : pContext->AddAttribute( sAttrName, aOut.makeStringAndClear() );
978 : : }
979 : 0 : break;
980 : : default:
981 : : OSL_ENSURE( !this, "unknown action" );
982 : 0 : break;
983 : : }
984 : 4410 : }
985 : :
986 : : // OpenDocument file format: attribute value of <style:mirror> wrong (#i49139#)
987 [ - + ]: 610 : if ( bExistStyleMirror )
988 : : {
989 : : pMirrorContext->AddAttribute(
990 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
991 [ # # ]: 0 : XML_NAMESPACE_STYLE, GetXMLToken( XML_MIRROR ) ),
992 [ # # ][ # # ]: 0 : aStyleMirrorAttrValue);
993 : : }
994 [ + + ]: 610 : else if ( bExistDrawMirror )
995 : : {
996 : : pMirrorContext->AddAttribute(
997 : 5 : GetTransformer().GetNamespaceMap().GetQNameByKey(
998 [ + - ]: 5 : XML_NAMESPACE_STYLE, GetXMLToken( XML_MIRROR ) ),
999 [ + - ][ + - ]: 5 : aDrawMirrorAttrValue);
1000 : : }
1001 : :
1002 [ + - ][ + + ]: 610 : if( bMoveProtect || bSizeProtect || !aProtectAttrValue.isEmpty() )
[ - + ][ + + ]
1003 : : {
1004 [ + - ][ + - ]: 2 : if( (bMoveProtect ||bSizeProtect) && IsXMLToken( aProtectAttrValue, XML_NONE ) )
[ + - ][ - + ]
[ - + ]
1005 : 0 : aProtectAttrValue = OUString();
1006 : :
1007 [ + - ]: 2 : const OUString& rPosition = GetXMLToken( XML_POSITION );
1008 [ - + ][ # # ]: 2 : if( bMoveProtect && -1 == aProtectAttrValue.indexOf( rPosition ) )
[ - + ]
1009 : : {
1010 [ # # ]: 0 : if( !aProtectAttrValue.isEmpty() )
1011 : 0 : aProtectAttrValue += OUString::valueOf( sal_Unicode( ' ' ) );
1012 : 0 : aProtectAttrValue += rPosition;
1013 : : }
1014 : :
1015 [ + - ]: 2 : const OUString& rSize = GetXMLToken( XML_SIZE );
1016 [ + - ][ - + ]: 2 : if( bSizeProtect && -1 == aProtectAttrValue.indexOf( rSize ) )
[ - + ]
1017 : : {
1018 [ # # ]: 0 : if( !aProtectAttrValue.isEmpty() )
1019 : 0 : aProtectAttrValue += OUString::valueOf( sal_Unicode( ' ' ) );
1020 : 0 : aProtectAttrValue += rSize;
1021 : : }
1022 : :
1023 [ + - ][ + - ]: 2 : pProtectContext->AddAttribute( GetTransformer().GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_STYLE, GetXMLToken( XML_PROTECT ) ), aProtectAttrValue );
[ + - ]
1024 : : }
1025 : :
1026 [ - + ]: 610 : if( pIntervalMinorDivisorContext )
1027 : : {
1028 [ # # ]: 0 : if( fIntervalMinor != 0.0 )
1029 : : {
1030 : : sal_Int32 nIntervalMinorDivisor = static_cast< sal_Int32 >(
1031 : 0 : ::rtl::math::round( fIntervalMajor / fIntervalMinor ));
1032 : :
1033 : 0 : ::rtl::OUStringBuffer aBuf;
1034 [ # # ]: 0 : ::sax::Converter::convertNumber( aBuf, nIntervalMinorDivisor );
1035 : : pIntervalMinorDivisorContext->AddAttribute(
1036 : 0 : GetTransformer().GetNamespaceMap().GetQNameByKey(
1037 : : XML_NAMESPACE_CHART,
1038 [ # # ]: 0 : GetXMLToken( XML_INTERVAL_MINOR_DIVISOR )),
1039 [ # # # # ]: 0 : aBuf.makeStringAndClear());
[ # # ]
1040 : : }
1041 : 610 : }
1042 : 610 : }
1043 : :
1044 : 610 : void XMLPropertiesOOoTContext_Impl::EndElement()
1045 : : {
1046 [ + + ]: 610 : if( !m_bPersistent )
1047 : 510 : Export();
1048 : 610 : }
1049 : :
1050 : 0 : void XMLPropertiesOOoTContext_Impl::Characters( const OUString& )
1051 : : {
1052 : : // ignore them
1053 : 0 : }
1054 : :
1055 : 610 : void XMLPropertiesOOoTContext_Impl::Export()
1056 : : {
1057 : :
1058 [ + + ]: 3050 : for( sal_uInt16 i=0; i < MAX_PROP_TYPES; i++ )
1059 : : {
1060 [ + + ]: 2440 : if( m_aPropContexts[i].is() )
1061 : 887 : m_aPropContexts[i]->Export();
1062 : : }
1063 : 610 : }
1064 : :
1065 : 0 : sal_Bool XMLPropertiesOOoTContext_Impl::IsPersistent() const
1066 : : {
1067 : 0 : return m_bPersistent;
1068 : : }
1069 : :
1070 : :
1071 : : //------------------------------------------------------------------------------
1072 : :
1073 [ # # ][ # # ]: 0 : TYPEINIT1( XMLStyleOOoTContext, XMLPersElemContentTContext );
1074 : :
1075 : 725 : XMLStyleOOoTContext::XMLStyleOOoTContext( XMLTransformerBase& rImp,
1076 : : const OUString& rQName,
1077 : : XMLFamilyType eT,
1078 : : sal_Bool bPersistent ) :
1079 : : XMLPersElemContentTContext( rImp, rQName ),
1080 : : m_eFamily( eT ),
1081 : 725 : m_bPersistent( bPersistent )
1082 : : {
1083 : 725 : }
1084 : :
1085 : 44 : XMLStyleOOoTContext::XMLStyleOOoTContext(
1086 : : XMLTransformerBase& rImp,
1087 : : const OUString& rQName,
1088 : : XMLFamilyType eT,
1089 : : sal_uInt16 nPrefix,
1090 : : ::xmloff::token::XMLTokenEnum eToken,
1091 : : sal_Bool bPersistent ) :
1092 : : XMLPersElemContentTContext( rImp, rQName, nPrefix, eToken ),
1093 : : m_eFamily( eT ),
1094 : 44 : m_bPersistent( bPersistent )
1095 : : {
1096 : 44 : }
1097 : :
1098 : 769 : XMLStyleOOoTContext::~XMLStyleOOoTContext()
1099 : : {
1100 [ - + ]: 1538 : }
1101 : :
1102 : 872 : XMLTransformerContext *XMLStyleOOoTContext::CreateChildContext(
1103 : : sal_uInt16 nPrefix,
1104 : : const OUString& rLocalName,
1105 : : const OUString& rQName,
1106 : : const Reference< XAttributeList >& rAttrList )
1107 : : {
1108 : 872 : XMLTransformerContext *pContext = 0;
1109 : :
1110 [ + + + + ]: 1538 : if( XML_NAMESPACE_STYLE == nPrefix &&
[ + + ]
1111 : 666 : IsXMLToken( rLocalName, XML_PROPERTIES ) )
1112 : : {
1113 [ - + ]: 610 : if( aPropTypes[m_eFamily][0] == XML_PROP_TYPE_END )
1114 : : {
1115 : : OSL_ENSURE( !this, "unexpected properties element" );
1116 : : pContext = m_bPersistent
1117 : : ? XMLPersElemContentTContext::CreateChildContext(
1118 : 0 : nPrefix, rLocalName, rQName, rAttrList )
1119 : : : XMLTransformerContext::CreateChildContext(
1120 [ # # ]: 0 : nPrefix, rLocalName, rQName, rAttrList );
1121 : : }
1122 [ + + ]: 610 : else if( aPropTypes[m_eFamily][1] == XML_PROP_TYPE_END )
1123 : : {
1124 : : sal_uInt16 nActionMap =
1125 : 311 : aAttrActionMaps[aPropTypes[m_eFamily][0]];
1126 [ + - ]: 311 : if( nActionMap < MAX_OOO_PROP_ACTIONS )
1127 : : {
1128 : : pContext = new XMLPropertiesOOoTContext_Impl(
1129 : 311 : GetTransformer(), rQName,
1130 [ + - ]: 311 : aPropTypes[m_eFamily], m_bPersistent );
1131 : : }
1132 : : else
1133 : : {
1134 [ # # ]: 0 : if( m_bPersistent )
1135 : : pContext = new XMLPersElemContentTContext(
1136 : 0 : GetTransformer(), rQName,
1137 : : XML_NAMESPACE_STYLE,
1138 [ # # ]: 0 : aPropTokens[aPropTypes[m_eFamily][0]] );
1139 : : else
1140 : : pContext = new XMLRenameElemTransformerContext(
1141 : 0 : GetTransformer(), rQName,
1142 : : XML_NAMESPACE_STYLE,
1143 [ # # ]: 0 : aPropTokens[aPropTypes[m_eFamily][0]] );
1144 : : }
1145 : : }
1146 : : else
1147 : : {
1148 : : pContext = new XMLPropertiesOOoTContext_Impl(
1149 : 299 : GetTransformer(), rQName,
1150 [ + - ]: 299 : aPropTypes[m_eFamily], m_bPersistent);
1151 : : }
1152 : :
1153 [ + + ]: 610 : if( m_bPersistent )
1154 : 100 : AddContent( pContext );
1155 : : }
1156 : : else
1157 : : {
1158 : : pContext = m_bPersistent
1159 : : ? XMLPersElemContentTContext::CreateChildContext(
1160 : 100 : nPrefix, rLocalName, rQName, rAttrList )
1161 : : : XMLTransformerContext::CreateChildContext(
1162 [ + + ]: 262 : nPrefix, rLocalName, rQName, rAttrList );
1163 : : }
1164 : :
1165 : 872 : return pContext;
1166 : : }
1167 : :
1168 : 769 : void XMLStyleOOoTContext::StartElement(
1169 : : const Reference< XAttributeList >& rAttrList )
1170 : : {
1171 : : XMLTransformerActions *pActions =
1172 [ + - ]: 769 : GetTransformer().GetUserDefinedActions( OOO_STYLE_ACTIONS );
1173 : : OSL_ENSURE( pActions, "go no actions" );
1174 : :
1175 : 769 : Reference< XAttributeList > xAttrList( rAttrList );
1176 : 769 : XMLMutableAttributeList *pMutableAttrList = 0;
1177 [ + - ][ + - ]: 769 : sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
[ + - ]
1178 [ + + ]: 2610 : for( sal_Int16 i=0; i < nAttrCount; i++ )
1179 : : {
1180 [ + - ][ + - ]: 1841 : const OUString sAttrName = xAttrList->getNameByIndex( i );
1181 : 1841 : OUString aLocalName;
1182 : : sal_uInt16 nPrefix =
1183 : 1841 : GetTransformer().GetNamespaceMap().GetKeyByAttrName( sAttrName,
1184 [ + - ]: 1841 : &aLocalName );
1185 : 1841 : XMLTransformerActions::key_type aKey( nPrefix, aLocalName );
1186 : : XMLTransformerActions::const_iterator aIter =
1187 [ + - ]: 1841 : pActions->find( aKey );
1188 [ + + ][ + - ]: 1841 : if( !(aIter == pActions->end() ) )
1189 : : {
1190 [ + + ]: 1125 : if( !pMutableAttrList )
1191 : : {
1192 : : pMutableAttrList =
1193 [ + - ]: 521 : new XMLMutableAttributeList( xAttrList );
1194 [ + - ][ + - ]: 521 : xAttrList = pMutableAttrList;
1195 : : }
1196 [ + - ][ + - ]: 1125 : const OUString sAttrValue = xAttrList->getValueByIndex( i );
1197 [ + - ][ + + : 1125 : switch( (*aIter).second.m_nActionType )
+ + + +
- ]
1198 : : {
1199 : : case XML_ATACTION_STYLE_FAMILY:
1200 : : {
1201 : 403 : sal_Bool bControl = sal_False;
1202 [ + + ]: 403 : if( XML_FAMILY_TYPE_END == m_eFamily )
1203 : : {
1204 [ + - ][ + + ]: 382 : if( IsXMLToken( sAttrValue, XML_GRAPHICS ) )
1205 : 96 : m_eFamily = XML_FAMILY_TYPE_GRAPHIC;
1206 [ + - ][ + + ]: 286 : else if( IsXMLToken( sAttrValue, XML_PRESENTATION ) )
1207 : 40 : m_eFamily = XML_FAMILY_TYPE_PRESENTATION;
1208 [ + - ][ + + ]: 246 : else if( IsXMLToken( sAttrValue, XML_DRAWING_PAGE ) )
1209 : 12 : m_eFamily = XML_FAMILY_TYPE_DRAWING_PAGE;
1210 [ + - ][ + + ]: 234 : else if( IsXMLToken( sAttrValue, XML_TEXT) )
1211 : 4 : m_eFamily = XML_FAMILY_TYPE_TEXT;
1212 [ + - ][ + + ]: 230 : else if( IsXMLToken( sAttrValue, XML_PARAGRAPH) )
1213 : 67 : m_eFamily = XML_FAMILY_TYPE_PARAGRAPH;
1214 [ + - ][ - + ]: 163 : else if( IsXMLToken( sAttrValue, XML_RUBY) )
1215 : 0 : m_eFamily = XML_FAMILY_TYPE_RUBY;
1216 [ + - ][ - + ]: 163 : else if( IsXMLToken( sAttrValue, XML_SECTION) )
1217 : 0 : m_eFamily = XML_FAMILY_TYPE_SECTION;
1218 [ + - ][ + + ]: 163 : else if( IsXMLToken( sAttrValue, XML_TABLE) )
1219 : 14 : m_eFamily = XML_FAMILY_TYPE_TABLE;
1220 [ + - ][ + + ]: 149 : else if( IsXMLToken( sAttrValue, XML_TABLE_COLUMN) )
1221 : 8 : m_eFamily = XML_FAMILY_TYPE_TABLE_COLUMN;
1222 [ + - ][ + + ]: 141 : else if( IsXMLToken( sAttrValue, XML_TABLE_ROW) )
1223 : 14 : m_eFamily = XML_FAMILY_TYPE_TABLE_ROW;
1224 [ + - ][ + + ]: 127 : else if( IsXMLToken( sAttrValue, XML_TABLE_CELL) )
1225 : 49 : m_eFamily = XML_FAMILY_TYPE_TABLE_CELL;
1226 [ + - ][ + - ]: 78 : else if( IsXMLToken( sAttrValue, XML_CHART) )
1227 : 78 : m_eFamily = XML_FAMILY_TYPE_CHART;
1228 [ # # ][ # # ]: 0 : else if( IsXMLToken( sAttrValue, XML_CONTROL) )
1229 : : {
1230 : 0 : m_eFamily = XML_FAMILY_TYPE_PARAGRAPH;
1231 : 0 : bControl = sal_True;
1232 : : }
1233 : : }
1234 [ + + ]: 403 : if( XML_FAMILY_TYPE_GRAPHIC == m_eFamily )
1235 : : {
1236 : : pMutableAttrList->SetValueByIndex( i,
1237 [ + - ][ + - ]: 96 : GetXMLToken( XML_GRAPHIC ) );
1238 : : }
1239 [ - + ]: 307 : else if( bControl )
1240 : : {
1241 : : pMutableAttrList->SetValueByIndex( i,
1242 [ # # ][ # # ]: 0 : GetXMLToken( XML_PARAGRAPH ) );
1243 : : }
1244 : : }
1245 : 403 : break;
1246 : : case XML_ATACTION_INCH2IN:
1247 : : {
1248 : 12 : OUString aAttrValue( sAttrValue );
1249 [ - + ]: 12 : if( XMLTransformerBase::ReplaceSingleInchWithIn(
1250 [ + - ]: 12 : aAttrValue ) )
1251 [ # # ]: 12 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
1252 : : }
1253 : 12 : break;
1254 : : case XML_ATACTION_ENCODE_STYLE_NAME:
1255 : : {
1256 : 479 : OUString aAttrValue( sAttrValue );
1257 [ + + ][ + - ]: 479 : if( GetTransformer().EncodeStyleName(aAttrValue) )
1258 : : {
1259 [ + - ]: 63 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
1260 : : OUString aNewAttrQName(
1261 : 63 : GetTransformer().GetNamespaceMap().
1262 : : GetQNameByKey(
1263 : : nPrefix, ::xmloff::token::GetXMLToken(
1264 [ + - + - ]: 126 : XML_DISPLAY_NAME ) ) );
1265 : : pMutableAttrList->AddAttribute( aNewAttrQName,
1266 [ + - ]: 63 : sAttrValue );
1267 : 479 : }
1268 : : }
1269 : 479 : break;
1270 : : case XML_ATACTION_ENCODE_STYLE_NAME_REF:
1271 : : {
1272 : 191 : OUString aAttrValue( sAttrValue );
1273 [ + + ][ + - ]: 191 : if( GetTransformer().EncodeStyleName(aAttrValue) )
1274 [ + - ]: 191 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
1275 : : }
1276 : 191 : break;
1277 : : case XML_ATACTION_NEG_PERCENT:
1278 : : {
1279 : 28 : OUString aAttrValue( sAttrValue );
1280 [ + - ][ + - ]: 28 : if( GetTransformer().NegPercent(aAttrValue) )
1281 [ + - ]: 28 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
1282 : : }
1283 : 28 : break;
1284 : : case XML_ATACTION_URI_OOO:
1285 : : {
1286 : 12 : OUString aAttrValue( sAttrValue );
1287 [ + - ]: 24 : if( GetTransformer().ConvertURIToOASIS( aAttrValue,
1288 [ + - + - ]: 24 : static_cast< sal_Bool >((*aIter).second.m_nParam1)))
1289 [ + - ]: 12 : pMutableAttrList->SetValueByIndex( i, aAttrValue );
1290 : : }
1291 : 12 : break;
1292 : : default:
1293 : : OSL_ENSURE( !this, "unknown action" );
1294 : 0 : break;
1295 : 1125 : }
1296 : : }
1297 : 1841 : }
1298 [ - + ]: 769 : if( XML_FAMILY_TYPE_END == m_eFamily )
1299 : 0 : m_eFamily = XML_FAMILY_TYPE_TEXT;
1300 [ + + ]: 769 : if( m_bPersistent )
1301 [ + - ]: 110 : XMLPersElemContentTContext::StartElement( xAttrList );
1302 : : else
1303 [ + - ]: 659 : GetTransformer().GetDocHandler()->startElement( GetExportQName(),
1304 [ + - ]: 769 : xAttrList );
1305 : 769 : }
1306 : :
1307 : 769 : void XMLStyleOOoTContext::EndElement()
1308 : : {
1309 [ + + ]: 769 : if( m_bPersistent )
1310 : 110 : XMLPersElemContentTContext::EndElement();
1311 : : else
1312 : 659 : GetTransformer().GetDocHandler()->endElement( GetExportQName() );
1313 : 769 : }
1314 : :
1315 : 16 : void XMLStyleOOoTContext::Characters( const OUString& )
1316 : : {
1317 : : // element content only:
1318 : 16 : }
1319 : :
1320 : 110 : sal_Bool XMLStyleOOoTContext::IsPersistent() const
1321 : : {
1322 : 110 : return m_bPersistent;
1323 : : }
1324 : :
1325 : 218 : XMLTransformerActions *XMLStyleOOoTContext::CreateTransformerActions(
1326 : : sal_uInt16 nType )
1327 : : {
1328 : 218 : XMLTransformerActionInit *pInit = 0;
1329 : :
1330 [ + + + + : 218 : switch( nType )
+ + - + +
- + + + +
- + + -
- ]
1331 : : {
1332 : : case PROP_OOO_GRAPHIC_ATTR_ACTIONS:
1333 : 32 : pInit = aGraphicPropertyOOoAttrActionTable;
1334 : 32 : break;
1335 : : case PROP_OOO_GRAPHIC_ELEM_ACTIONS:
1336 : 16 : pInit = aGraphicPropertyOOoElemActionTable;
1337 : 16 : break;
1338 : : case PROP_OOO_DRAWING_PAGE_ATTR_ACTIONS:
1339 : 6 : pInit = aDrawingPagePropertyOOoAttrActionTable;
1340 : 6 : break;
1341 : : case PROP_OOO_PAGE_LAYOUT_ATTR_ACTIONS:
1342 : 18 : pInit = aPageLayoutPropertyOOoAttrActionTable;
1343 : 18 : break;
1344 : : case PROP_OOO_HEADER_FOOTER_ATTR_ACTIONS:
1345 : 8 : pInit = aHeaderFooterPropertyOOoAttrActionTable;
1346 : 8 : break;
1347 : : case PROP_OOO_TEXT_ATTR_ACTIONS:
1348 : 28 : pInit = aTextPropertyOOoAttrActionTable;
1349 : 28 : break;
1350 : : case PROP_OOO_TEXT_ELEM_ACTIONS:
1351 : 0 : pInit = aTextPropertyOOoElemActionTable;
1352 : 0 : break;
1353 : : case PROP_OOO_PARAGRAPH_ATTR_ACTIONS:
1354 : 35 : pInit = aParagraphPropertyOOoAttrActionTable;
1355 : 35 : break;
1356 : : case PROP_OOO_PARAGRAPH_ELEM_ACTIONS:
1357 : 16 : pInit = aParagraphPropertyOOoElemActionTable;
1358 : 16 : break;
1359 : : case PROP_OOO_SECTION_ATTR_ACTIONS:
1360 : 0 : pInit = aSectionPropertyOOoAttrActionTable;
1361 : 0 : break;
1362 : : case PROP_OOO_TABLE_ATTR_ACTIONS:
1363 : 14 : pInit = aTablePropertyOOoAttrActionTable;
1364 : 14 : break;
1365 : : case PROP_OOO_TABLE_COLUMN_ATTR_ACTIONS:
1366 : 8 : pInit = aTableColumnPropertyOOoAttrActionTable;
1367 : 8 : break;
1368 : : case PROP_OOO_TABLE_ROW_ATTR_ACTIONS:
1369 : 14 : pInit = aTableRowPropertyOOoAttrActionTable;
1370 : 14 : break;
1371 : : case PROP_OOO_TABLE_CELL_ATTR_ACTIONS:
1372 : 9 : pInit = aTableCellPropertyOOoAttrActionTable;
1373 : 9 : break;
1374 : : case PROP_OOO_TABLE_CELL_ELEM_ACTIONS:
1375 : 0 : pInit = aTableCellPropertyOOoElemActionTable;
1376 : 0 : break;
1377 : : case PROP_OOO_LIST_LEVEL_ATTR_ACTIONS:
1378 : 8 : pInit = aListLevelPropertyOOoAttrActionTable;
1379 : 8 : break;
1380 : : case PROP_OOO_CHART_ATTR_ACTIONS:
1381 : 6 : pInit = aChartPropertyOOoAttrActionTable;
1382 : 6 : break;
1383 : : case PROP_OOO_CHART_ELEM_ACTIONS:
1384 : 0 : pInit = aChartPropertyOOoElemActionTable;
1385 : 0 : break;
1386 : : }
1387 : :
1388 : 218 : XMLTransformerActions *pActions = 0;
1389 [ + - ]: 218 : if( pInit )
1390 [ + - ]: 218 : pActions = new XMLTransformerActions( pInit );
1391 : :
1392 : 218 : return pActions;
1393 : : }
1394 : :
1395 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|