1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #include <com/sun/star/xml/sax/SAXParseException.hpp>
21 #include <com/sun/star/xml/sax/SAXException.hpp>
22 #include <com/sun/star/xml/sax/XDocumentHandler.hpp>
23 #include <com/sun/star/xml/sax/XAttributeList.hpp>
25 #include <sax/tools/converter.hxx>
27 #include <xmloff/nmspmap.hxx>
28 #include <xmloff/xmltoken.hxx>
29 #include "xmloff/xmlnmspe.hxx"
30 #include "PropType.hxx"
31 #include "DeepTContext.hxx"
32 #include "RenameElemTContext.hxx"
33 #include "ProcAttrTContext.hxx"
34 #include "ActionMapTypesOOo.hxx"
35 #include "MutableAttrList.hxx"
36 #include "TransformerActions.hxx"
37 #include "PropertyActionsOOo.hxx"
38 #include "TransformerBase.hxx"
40 #include "StyleOOoTContext.hxx"
41 #include <xmloff/xmluconv.hxx>
42 #include <rtl/ustrbuf.hxx>
43 #include <rtl/math.hxx>
45 using ::rtl::OUString
;
46 using namespace ::xmloff::token
;
47 using namespace ::com::sun::star::uno
;
48 using namespace ::com::sun::star::xml::sax
;
50 const sal_uInt16 MAX_PROP_TYPES
= 4;
51 #define ENTRY4(a,b,c,d) \
52 { XML_PROP_TYPE_##a, XML_PROP_TYPE_##b, \
53 XML_PROP_TYPE_##c, XML_PROP_TYPE_##d }
54 #define ENTRY3(a,b,c) \
55 { XML_PROP_TYPE_##a, XML_PROP_TYPE_##b, \
56 XML_PROP_TYPE_##c, XML_PROP_TYPE_END }
58 { XML_PROP_TYPE_##a, XML_PROP_TYPE_##b, \
59 XML_PROP_TYPE_END, XML_PROP_TYPE_END }
61 { XML_PROP_TYPE_##a, XML_PROP_TYPE_##END, \
62 XML_PROP_TYPE_END, XML_PROP_TYPE_END }
64 static XMLPropType aPropTypes
[XML_FAMILY_TYPE_END
][MAX_PROP_TYPES
] =
66 ENTRY3( GRAPHIC
, PARAGRAPH
, TEXT
), // XML_FAMILY_TYPE_GRAPHIC,
67 ENTRY3( GRAPHIC
, PARAGRAPH
, TEXT
), // XML_FAMILY_TYPE_PRESENTATION,
68 ENTRY1( DRAWING_PAGE
), // XML_FAMILY_TYPE_DRAWING_PAGE,
69 ENTRY1( END
), // XML_FAMILY_TYPE_MASTER_PAGE
70 ENTRY1( PAGE_LAYOUT
), // XML_FAMILY_TYPE_PAGE_LAYOUT,
71 ENTRY1( HEADER_FOOTER
), // XML_FAMILY_TYPE_HEADER_FOOTER
72 ENTRY1( TEXT
), // XML_FAMILY_TYPE_TEXT,
73 ENTRY2( PARAGRAPH
, TEXT
), // XML_FAMILY_TYPE_PARAGRAPH,
74 ENTRY1( RUBY
), //XML_FAMILY_TYPE_RUBY,
75 ENTRY1( SECTION
), // XML_FAMILY_TYPE_SECTION,
76 ENTRY1( TABLE
), // XML_FAMILY_TYPE_TABLE,
77 ENTRY1( TABLE_COLUMN
), // XML_FAMILY_TYPE_TABLE_COLUMN,
78 ENTRY1( TABLE_ROW
), // XML_FAMILY_TYPE_TABLE_ROW,
79 ENTRY3( TABLE_CELL
, PARAGRAPH
, TEXT
), // XML_FAMILY_TYPE_TABLE_CELL,
80 ENTRY1( LIST_LEVEL
), // XML_FAMILY_TYPE_LIST,
81 ENTRY4( CHART
, GRAPHIC
, PARAGRAPH
, TEXT
), // XML_FAMILY_TYPE_CHART,
82 ENTRY1( TEXT
), // XML_FAMILY_TYPE_DATA,
83 ENTRY1( END
), // XML_FAMILY_TYPE_GRADIENT,
84 ENTRY1( END
), // XML_FAMILY_TYPE_HATCH,
85 ENTRY1( END
), // XML_FAMILY_TYPE_FILL_IMAGE,
86 ENTRY1( END
), // XML_FAMILY_TYPE_STROKE_DASH,
87 ENTRY1( END
), // XML_FAMILY_TYPE_MARKER,
88 ENTRY1( END
) // XML_FAMILY_TYPE_PRESENTATION_PAGE_LAYOUT,
91 static XMLTokenEnum aPropTokens
[XML_PROP_TYPE_END
] =
93 XML_GRAPHIC_PROPERTIES
,
94 XML_DRAWING_PAGE_PROPERTIES
,
95 XML_PAGE_LAYOUT_PROPERTIES
,
96 XML_HEADER_FOOTER_PROPERTIES
,
98 XML_PARAGRAPH_PROPERTIES
,
100 XML_SECTION_PROPERTIES
,
101 XML_TABLE_PROPERTIES
,
102 XML_TABLE_COLUMN_PROPERTIES
,
103 XML_TABLE_ROW_PROPERTIES
,
104 XML_TABLE_CELL_PROPERTIES
,
105 XML_LIST_LEVEL_PROPERTIES
,
109 static sal_uInt16 aAttrActionMaps
[XML_PROP_TYPE_END
] =
111 PROP_OOO_GRAPHIC_ATTR_ACTIONS
,
112 PROP_OOO_DRAWING_PAGE_ATTR_ACTIONS
, // DRAWING_PAGE
113 PROP_OOO_PAGE_LAYOUT_ATTR_ACTIONS
,
114 PROP_OOO_HEADER_FOOTER_ATTR_ACTIONS
,
115 PROP_OOO_TEXT_ATTR_ACTIONS
,
116 PROP_OOO_PARAGRAPH_ATTR_ACTIONS
,
117 MAX_OOO_PROP_ACTIONS
, // RUBY
118 PROP_OOO_SECTION_ATTR_ACTIONS
,
119 PROP_OOO_TABLE_ATTR_ACTIONS
,
120 PROP_OOO_TABLE_COLUMN_ATTR_ACTIONS
,
121 PROP_OOO_TABLE_ROW_ATTR_ACTIONS
,
122 PROP_OOO_TABLE_CELL_ATTR_ACTIONS
,
123 PROP_OOO_LIST_LEVEL_ATTR_ACTIONS
,
124 PROP_OOO_CHART_ATTR_ACTIONS
127 static sal_uInt16 aElemActionMaps
[XML_PROP_TYPE_END
] =
129 PROP_OOO_GRAPHIC_ELEM_ACTIONS
,
130 MAX_OOO_PROP_ACTIONS
,
131 MAX_OOO_PROP_ACTIONS
,
132 MAX_OOO_PROP_ACTIONS
,
133 PROP_OOO_TEXT_ELEM_ACTIONS
,
134 PROP_OOO_PARAGRAPH_ELEM_ACTIONS
,
135 MAX_OOO_PROP_ACTIONS
,
136 MAX_OOO_PROP_ACTIONS
,
137 MAX_OOO_PROP_ACTIONS
,
138 MAX_OOO_PROP_ACTIONS
,
139 MAX_OOO_PROP_ACTIONS
,
140 PROP_OOO_TABLE_CELL_ELEM_ACTIONS
,
141 MAX_OOO_PROP_ACTIONS
,
142 PROP_OOO_CHART_ELEM_ACTIONS
146 //------------------------------------------------------------------------------
148 class XMLTypedPropertiesOOoTContext_Impl
: public XMLPersElemContentTContext
150 ::com::sun::star::uno::Reference
<
151 ::com::sun::star::xml::sax::XAttributeList
> m_xAttrList
;
157 XMLTypedPropertiesOOoTContext_Impl( XMLTransformerBase
& rTransformer
,
158 const ::rtl::OUString
& rQName
);
160 virtual ~XMLTypedPropertiesOOoTContext_Impl();
162 using XMLPersAttrListTContext::AddAttribute
;
163 void AddAttribute( const ::rtl::OUString
&sName
,
164 const ::rtl::OUString
&sValue
);
165 void AddAttribute( sal_uInt16 nPrefix
, XMLTokenEnum eToken
,
166 const ::rtl::OUString
&sValue
);
168 virtual void StartElement( const ::com::sun::star::uno::Reference
< ::com::sun::star::xml::sax::XAttributeList
>& rAttrList
);
170 virtual void Export();
173 TYPEINIT1( XMLTypedPropertiesOOoTContext_Impl
, XMLPersElemContentTContext
);
175 XMLTypedPropertiesOOoTContext_Impl::XMLTypedPropertiesOOoTContext_Impl(
176 XMLTransformerBase
& rImp
,
177 const OUString
& rQName
) :
178 XMLPersElemContentTContext( rImp
, rQName
),
179 m_xAttrList( new XMLMutableAttributeList() )
183 XMLTypedPropertiesOOoTContext_Impl::~XMLTypedPropertiesOOoTContext_Impl()
187 void XMLTypedPropertiesOOoTContext_Impl::AddAttribute(
188 const ::rtl::OUString
&sName
,
189 const ::rtl::OUString
&sValue
)
191 static_cast< XMLMutableAttributeList
* >( m_xAttrList
.get() )
192 ->AddAttribute( sName
, sValue
);
195 void XMLTypedPropertiesOOoTContext_Impl::AddAttribute(
196 sal_uInt16 nPrefix
, XMLTokenEnum eToken
,
197 const ::rtl::OUString
&sValue
)
200 GetTransformer().GetNamespaceMap().GetQNameByKey(
201 nPrefix
, ::xmloff::token::GetXMLToken( eToken
) ) );
202 static_cast< XMLMutableAttributeList
* >( m_xAttrList
.get() )
203 ->AddAttribute( sName
, sValue
);
206 void XMLTypedPropertiesOOoTContext_Impl::StartElement(
207 const Reference
< XAttributeList
>& )
209 // empty, ignore even the attribute list
212 void XMLTypedPropertiesOOoTContext_Impl::Export()
214 if( m_xAttrList
->getLength() || HasElementContent() )
216 GetTransformer().GetDocHandler()->startElement( GetQName(), m_xAttrList
);
218 GetTransformer().GetDocHandler()->endElement( GetQName() );
222 //------------------------------------------------------------------------------
224 class XMLPropertiesOOoTContext_Impl
: public XMLTransformerContext
226 ::rtl::Reference
< XMLTypedPropertiesOOoTContext_Impl
>
227 m_aPropContexts
[MAX_PROP_TYPES
];
229 typedef XMLPropType XMLPropTypes
[MAX_PROP_TYPES
];
231 XMLPropTypes m_aPropTypes
;
233 sal_Bool m_bPersistent
;
235 XMLTypedPropertiesOOoTContext_Impl
*GetPropContextAndAction(
236 TransformerAction_Impl
& rAction
,
237 sal_uInt16 nPrefix
, const OUString
& rLocalName
,
240 XMLTypedPropertiesOOoTContext_Impl
*GetPropContext(
248 XMLPropertiesOOoTContext_Impl( XMLTransformerBase
& rTransformer
,
249 const ::rtl::OUString
& rQName
,
250 XMLPropTypes
& rTypes
,
251 sal_Bool bPersistent
);
253 virtual ~XMLPropertiesOOoTContext_Impl();
255 XMLTransformerContext
*CreateChildContext(
257 const OUString
& rLocalName
,
258 const OUString
& rQName
,
259 const Reference
< XAttributeList
>& rAttrList
);
261 virtual void StartElement( const ::com::sun::star::uno::Reference
< ::com::sun::star::xml::sax::XAttributeList
>& rAttrList
);
263 virtual void EndElement();
265 virtual void Characters( const ::rtl::OUString
& rChars
);
267 virtual void Export();
269 virtual sal_Bool
IsPersistent() const;
272 TYPEINIT1( XMLPropertiesOOoTContext_Impl
, XMLTransformerContext
);
274 XMLTypedPropertiesOOoTContext_Impl
275 *XMLPropertiesOOoTContext_Impl::GetPropContext(
278 sal_uInt16 nIndex
= MAX_PROP_TYPES
;
279 for( sal_uInt16 i
=0; i
< MAX_PROP_TYPES
; i
++ )
281 if( m_aPropTypes
[i
] == eType
)
287 if( MAX_PROP_TYPES
== nIndex
)
290 if( !m_aPropContexts
[nIndex
].is() )
292 m_aPropContexts
[nIndex
] =
293 new XMLTypedPropertiesOOoTContext_Impl(
295 GetTransformer().GetNamespaceMap().GetQNameByKey(
297 ::xmloff::token::GetXMLToken(
298 aPropTokens
[m_aPropTypes
[nIndex
]] ) ));
301 return m_aPropContexts
[nIndex
].get();
305 XMLTypedPropertiesOOoTContext_Impl
306 *XMLPropertiesOOoTContext_Impl::GetPropContextAndAction(
307 TransformerAction_Impl
& rAction
,
308 sal_uInt16 nPrefix
, const OUString
& rLocalName
,
311 rAction
.m_nActionType
= XML_ATACTION_COPY
;
312 sal_uInt16 nIndex
= 0;
314 XMLTransformerActions::key_type
aKey( nPrefix
, rLocalName
);
316 while( i
< MAX_PROP_TYPES
&& XML_PROP_TYPE_END
!=m_aPropTypes
[i
])
318 sal_uInt16 nActionMap
=
319 (bElem
? aElemActionMaps
: aAttrActionMaps
)[m_aPropTypes
[i
]];
320 if( nActionMap
< MAX_OOO_PROP_ACTIONS
)
322 XMLTransformerActions
*pActions
=
323 GetTransformer().GetUserDefinedActions( nActionMap
);
324 OSL_ENSURE( pActions
, "go no actions" );
327 XMLTransformerActions::const_iterator aIter
=
328 pActions
->find( aKey
);
330 if( !(aIter
== pActions
->end()) )
332 rAction
= (*aIter
).second
;
342 if( !( XML_NAMESPACE_NONE
== nPrefix
||
343 (XML_NAMESPACE_UNKNOWN_FLAG
& nPrefix
) ||
344 XML_PROP_TYPE_END
==m_aPropTypes
[1] ||
345 (i
<MAX_PROP_TYPES
&& XML_PROP_TYPE_END
!=m_aPropTypes
[i
]) ) )
347 ::rtl::OString
aTmp("Didnt't find property: ");
348 const ::rtl::OUString
& rPrefix
=
349 GetTransformer().GetNamespaceMap().GetPrefixByKey( nPrefix
);
350 aTmp
+= ::rtl::OString( rPrefix
.getStr(), rPrefix
.getLength(),
351 RTL_TEXTENCODING_ASCII_US
);
352 aTmp
+= ::rtl::OString::valueOf( ':' );
353 aTmp
+= ::rtl::OString( rLocalName
.getStr(), rLocalName
.getLength(),
354 RTL_TEXTENCODING_ASCII_US
);
355 aTmp
+= ::rtl::OString(", assuming <style:");
356 const ::rtl::OUString
& rName
=
357 ::xmloff::token::GetXMLToken( aPropTokens
[m_aPropTypes
[0]] );
358 aTmp
+= ::rtl::OString( rName
.getStr(), rName
.getLength(),
359 RTL_TEXTENCODING_ASCII_US
);
360 aTmp
+= ::rtl::OString::valueOf( '>' );
362 OSL_FAIL(aTmp
.getStr());
366 if( !m_aPropContexts
[nIndex
].is() )
368 m_aPropContexts
[nIndex
] =
369 new XMLTypedPropertiesOOoTContext_Impl(
371 GetTransformer().GetNamespaceMap().GetQNameByKey(
373 ::xmloff::token::GetXMLToken(
374 aPropTokens
[m_aPropTypes
[nIndex
]] ) ));
377 return m_aPropContexts
[nIndex
].get();
380 XMLPropertiesOOoTContext_Impl::XMLPropertiesOOoTContext_Impl(
381 XMLTransformerBase
& rImp
,
382 const OUString
& rQName
,
383 XMLPropTypes
& rTypes
,
384 sal_Bool bPersistent
) :
385 XMLTransformerContext( rImp
, rQName
),
386 m_bPersistent( bPersistent
)
388 for( sal_uInt16 i
=0; i
< MAX_PROP_TYPES
; ++i
)
390 // remember the types that belong to the attribute and element lists
391 m_aPropTypes
[i
] = rTypes
[i
];
395 XMLPropertiesOOoTContext_Impl::~XMLPropertiesOOoTContext_Impl()
399 XMLTransformerContext
*XMLPropertiesOOoTContext_Impl::CreateChildContext(
401 const OUString
& rLocalName
,
402 const OUString
& rQName
,
403 const Reference
< XAttributeList
>& rAttrList
)
405 TransformerAction_Impl aAction
;
406 return GetPropContextAndAction( aAction
, nPrefix
, rLocalName
, sal_True
)
407 ->CreateChildContext( nPrefix
, rLocalName
, rQName
, rAttrList
);
411 void XMLPropertiesOOoTContext_Impl::StartElement(
412 const Reference
< XAttributeList
>& rAttrList
)
414 Reference
< XAttributeList
> xAttrList( rAttrList
);
416 XMLTypedPropertiesOOoTContext_Impl
* pIntervalMinorDivisorContext
= 0;
417 double fIntervalMajor
= 0.0;
418 double fIntervalMinor
= 0.0;
419 sal_Bool bMoveProtect
= sal_False
;
420 sal_Bool bSizeProtect
= sal_False
;
421 OUString aProtectAttrValue
;
422 XMLTypedPropertiesOOoTContext_Impl
* pProtectContext
= 0;
424 /* Attribute <style:mirror> has to be priority over attribute <style:draw>.
425 The filter from OpenDocument file format to OpenOffice.org file format
426 produces styles with both attributes. (#i49139#)
428 sal_Bool
bExistStyleMirror( sal_False
);
429 OUString aStyleMirrorAttrValue
;
430 sal_Bool
bExistDrawMirror( sal_False
);
431 OUString aDrawMirrorAttrValue
;
432 XMLTypedPropertiesOOoTContext_Impl
* pMirrorContext( 0L );
434 sal_Int16 nAttrCount
= xAttrList
.is() ? xAttrList
->getLength() : 0;
435 for( sal_Int16 i
=0; i
< nAttrCount
; i
++ )
437 const OUString sAttrName
= xAttrList
->getNameByIndex( i
);
438 const OUString sAttrValue
= xAttrList
->getValueByIndex( i
);
441 GetTransformer().GetNamespaceMap().GetKeyByAttrName( sAttrName
,
443 TransformerAction_Impl aAction
;
444 XMLTypedPropertiesOOoTContext_Impl
*pContext
=
445 GetPropContextAndAction( aAction
, nPrefix
, aLocalName
, sal_False
);
446 switch( aAction
.m_nActionType
)
448 case XML_ATACTION_REMOVE
:
450 case XML_ATACTION_COPY
:
451 pContext
->AddAttribute( sAttrName
, sAttrValue
);
453 case XML_ATACTION_COPY_DUPLICATE
:
455 pContext
->AddAttribute( sAttrName
, sAttrValue
);
456 XMLTypedPropertiesOOoTContext_Impl
*pContext2
=
457 GetPropContext( (XMLPropType
)aAction
.m_nParam1
);
459 pContext2
->AddAttribute( sAttrName
, sAttrValue
);
462 case XML_ATACTION_RENAME
:
464 pContext
->AddAttribute( aAction
.GetQNamePrefixFromParam1(),
465 aAction
.GetQNameTokenFromParam1(),
469 case XML_ATACTION_ENCODE_STYLE_NAME_REF
:
471 OUString
aAttrValue( sAttrValue
);
472 GetTransformer().EncodeStyleName(aAttrValue
);
473 pContext
->AddAttribute( sAttrName
, aAttrValue
);
476 case XML_ATACTION_RENAME_ENCODE_STYLE_NAME_REF
:
478 OUString
aAttrValue( sAttrValue
);
479 GetTransformer().EncodeStyleName(aAttrValue
);
480 pContext
->AddAttribute( aAction
.GetQNamePrefixFromParam1(),
481 aAction
.GetQNameTokenFromParam1(),
485 case XML_ATACTION_NEG_PERCENT
:
487 OUString
aAttrValue( sAttrValue
);
488 GetTransformer().NegPercent(aAttrValue
);
489 pContext
->AddAttribute( sAttrName
, aAttrValue
);
492 case XML_ATACTION_RENAME_NEG_PERCENT
:
494 OUString
aAttrValue( sAttrValue
);
495 GetTransformer().NegPercent(aAttrValue
);
496 pContext
->AddAttribute( aAction
.GetQNamePrefixFromParam1(),
497 aAction
.GetQNameTokenFromParam1(),
501 case XML_ATACTION_INCH2IN
:
503 OUString
aAttrValue( sAttrValue
);
504 XMLTransformerBase::ReplaceSingleInchWithIn( aAttrValue
);
505 pContext
->AddAttribute( sAttrName
, aAttrValue
);
508 case XML_ATACTION_INCH2IN_DUPLICATE
:
510 OUString
aAttrValue( sAttrValue
);
511 XMLTransformerBase::ReplaceSingleInchWithIn( aAttrValue
);
512 pContext
->AddAttribute( sAttrName
, aAttrValue
);
513 XMLTypedPropertiesOOoTContext_Impl
*pContext2
=
514 GetPropContext( (XMLPropType
)aAction
.m_nParam1
);
516 pContext2
->AddAttribute( sAttrName
, aAttrValue
);
519 case XML_ATACTION_INCHS2INS
:
521 OUString
aAttrValue( sAttrValue
);
522 XMLTransformerBase::ReplaceInchWithIn( aAttrValue
);
523 pContext
->AddAttribute( sAttrName
, aAttrValue
);
526 case XML_PTACTION_LINE_MODE
:
528 OUString
aAttrValue( GetXMLToken(
529 IsXMLToken( sAttrValue
, XML_TRUE
)
531 : XML_SKIP_WHITE_SPACE
) );
533 GetTransformer().GetNamespaceMap().GetQNameByKey(
535 GetXMLToken( XML_TEXT_UNDERLINE_MODE
) ) );
536 pContext
->AddAttribute( aAttrQName
, aAttrValue
);
539 GetTransformer().GetNamespaceMap().GetQNameByKey(
541 GetXMLToken( XML_TEXT_LINE_THROUGH_MODE
) );
542 pContext
->AddAttribute( aAttrQName
, aAttrValue
);
545 case XML_PTACTION_KEEP_WITH_NEXT
:
547 OUString
aAttrValue( GetXMLToken(
548 IsXMLToken( sAttrValue
, XML_TRUE
)
551 pContext
->AddAttribute( sAttrName
, aAttrValue
);
554 case XML_PTACTION_UNDERLINE
:
556 XMLTokenEnum eToken
= GetTransformer().GetToken( sAttrValue
);
557 sal_Bool bBold
= sal_False
, bDouble
= sal_False
;
571 case XML_BOLD_DOTTED
:
579 case XML_BOLD_LONG_DASH
:
580 eToken
= XML_LONG_DASH
;
583 case XML_BOLD_DOT_DASH
:
584 eToken
= XML_DOT_DASH
;
587 case XML_BOLD_DOT_DOT_DASH
:
588 eToken
= XML_DOT_DOT_DASH
;
595 case XML_DOUBLE_WAVE
:
604 OSL_FAIL( "xmloff::XMLPropertiesOOoTContext_Impl::StartElement(), unknown underline token!" );
607 pContext
->AddAttribute(
608 GetTransformer().GetNamespaceMap().GetQNameByKey(
610 GetXMLToken( XML_TEXT_UNDERLINE_STYLE
) ),
611 eToken
!= XML_TOKEN_END
? GetXMLToken( eToken
)
614 pContext
->AddAttribute(
615 GetTransformer().GetNamespaceMap().GetQNameByKey(
617 GetXMLToken( XML_TEXT_UNDERLINE_TYPE
) ),
618 GetXMLToken( XML_DOUBLE
) );
620 pContext
->AddAttribute(
621 GetTransformer().GetNamespaceMap().GetQNameByKey(
623 GetXMLToken( XML_TEXT_UNDERLINE_WIDTH
) ),
624 GetXMLToken( XML_BOLD
) );
627 case XML_PTACTION_LINETHROUGH
:
629 XMLTokenEnum eToken
= GetTransformer().GetToken( sAttrValue
);
630 sal_Bool bBold
= sal_False
, bDouble
= sal_False
;
634 case XML_SINGLE_LINE
:
637 case XML_DOUBLE_LINE
:
656 pContext
->AddAttribute(
657 GetTransformer().GetNamespaceMap().GetQNameByKey(
659 GetXMLToken( XML_TEXT_LINE_THROUGH_STYLE
) ),
660 eToken
!= XML_TOKEN_END
? GetXMLToken( eToken
)
663 pContext
->AddAttribute(
664 GetTransformer().GetNamespaceMap().GetQNameByKey(
666 GetXMLToken( XML_TEXT_LINE_THROUGH_TYPE
) ),
667 GetXMLToken( XML_DOUBLE
) );
669 pContext
->AddAttribute(
670 GetTransformer().GetNamespaceMap().GetQNameByKey(
672 GetXMLToken( XML_TEXT_LINE_THROUGH_WIDTH
) ),
673 GetXMLToken( XML_BOLD
) );
675 pContext
->AddAttribute(
676 GetTransformer().GetNamespaceMap().GetQNameByKey(
678 GetXMLToken( XML_TEXT_LINE_THROUGH_TEXT
) ),
679 OUString::valueOf( c
) );
682 case XML_PTACTION_SPLINES
:
684 sal_Int32 nSplineType
= sAttrValue
.toInt32();
685 OUString aNewAttrName
= GetTransformer().GetNamespaceMap().GetQNameByKey(
686 XML_NAMESPACE_CHART
, GetXMLToken( XML_INTERPOLATION
) );
688 switch( nSplineType
)
692 pContext
->AddAttribute(
693 aNewAttrName
, GetXMLToken( XML_NONE
));
697 pContext
->AddAttribute(
698 aNewAttrName
, GetXMLToken( XML_CUBIC_SPLINE
));
702 pContext
->AddAttribute(
703 aNewAttrName
, GetXMLToken( XML_B_SPLINE
));
707 OSL_FAIL( "invalid spline type" );
708 pContext
->AddAttribute(
709 aNewAttrName
, GetXMLToken( XML_NONE
));
714 case XML_PTACTION_INTERVAL_MAJOR
:
715 pContext
->AddAttribute( sAttrName
, sAttrValue
);
716 ::sax::Converter::convertDouble( fIntervalMajor
, sAttrValue
);
718 case XML_PTACTION_INTERVAL_MINOR
:
719 ::sax::Converter::convertDouble( fIntervalMinor
, sAttrValue
);
720 pIntervalMinorDivisorContext
= pContext
;
722 case XML_PTACTION_SYMBOL
:
724 sal_Int32 nSymbolType
= sAttrValue
.toInt32();
725 OUString aNewAttrName
= GetTransformer().GetNamespaceMap().GetQNameByKey(
726 XML_NAMESPACE_CHART
, GetXMLToken( XML_SYMBOL_TYPE
) );
728 if( nSymbolType
>= 0 )
730 pContext
->AddAttribute( aNewAttrName
, GetXMLToken( XML_NAMED_SYMBOL
));
731 enum XMLTokenEnum eToken
= XML_TOKEN_INVALID
;
732 switch( nSymbolType
)
736 // "square" has an awkward token name
737 eToken
= XML_GRADIENTSTYLE_SQUARE
;
741 eToken
= XML_DIAMOND
;
745 eToken
= XML_ARROW_DOWN
;
749 eToken
= XML_ARROW_UP
;
753 eToken
= XML_ARROW_RIGHT
;
757 eToken
= XML_ARROW_LEFT
;
761 eToken
= XML_BOW_TIE
;
765 eToken
= XML_HOURGLASS
;
780 eToken
= XML_ASTERISK
;
783 eToken
= XML_HORIZONTAL_BAR
;
786 eToken
= XML_VERTICAL_BAR
;
789 OSL_FAIL( "invalid named symbol" );
793 if( eToken
!= XML_TOKEN_INVALID
)
795 pContext
->AddAttribute( GetTransformer().GetNamespaceMap().GetQNameByKey(
796 XML_NAMESPACE_CHART
, GetXMLToken( XML_SYMBOL_NAME
)),
797 GetXMLToken( eToken
));
802 switch( nSymbolType
)
806 pContext
->AddAttribute(
807 aNewAttrName
, GetXMLToken( XML_NONE
));
811 pContext
->AddAttribute(
812 aNewAttrName
, GetXMLToken( XML_AUTOMATIC
));
816 pContext
->AddAttribute(
817 aNewAttrName
, GetXMLToken( XML_IMAGE
));
820 OSL_FAIL( "invalid symbol type" );
821 pContext
->AddAttribute(
822 aNewAttrName
, GetXMLToken( XML_NONE
));
828 case XML_PTACTION_SYMBOL_IMAGE_NAME
:
830 // create an xlink:href element for URI attribute
831 XMLPersAttrListTContext
*pSymbolImageContext
= new XMLPersAttrListTContext(
832 GetTransformer(), GetTransformer().GetNamespaceMap().GetQNameByKey(
833 XML_NAMESPACE_CHART
, GetXMLToken( XML_SYMBOL_IMAGE
)));
835 OUString
aAttrValue( sAttrValue
);
836 if( GetTransformer().ConvertURIToOASIS( aAttrValue
, sal_True
))
838 pSymbolImageContext
->AddAttribute( XML_NAMESPACE_XLINK
, XML_HREF
, aAttrValue
);
839 pContext
->AddContent( pSymbolImageContext
);
845 case XML_PTACTION_TRANSPARENCY
:
847 OUString
aAttrValue( sAttrValue
);
848 GetTransformer().NegPercent(aAttrValue
);
849 pContext
->AddAttribute( XML_NAMESPACE_DRAW
,
852 pContext
->AddAttribute( XML_NAMESPACE_DRAW
,
858 case XML_PTACTION_BREAK_INSIDE
:
860 pContext
->AddAttribute(
861 XML_NAMESPACE_FO
, XML_KEEP_TOGETHER
,
863 IsXMLToken( sAttrValue
, XML_COLUMNSPLIT_AVOID
)
868 case XML_ATACTION_CAPTION_ESCAPE_OOO
:
870 OUString
aAttrValue( sAttrValue
);
871 if( aAttrValue
.indexOf( sal_Unicode('%') ) != -1 )
873 sal_Int32 nValue
= 0;
874 ::sax::Converter::convertPercent( nValue
, sAttrValue
);
878 rtl::OUStringBuffer aOut
;
879 ::sax::Converter::convertPercent( aOut
, nValue
);
880 aAttrValue
= aOut
.makeStringAndClear();
885 XMLTransformerBase::ReplaceSingleInchWithIn( aAttrValue
);
888 pContext
->AddAttribute( sAttrName
, aAttrValue
);
891 case XML_ATACTION_MOVE_PROTECT
:
892 bMoveProtect
= IsXMLToken( sAttrValue
, XML_TRUE
);
893 pProtectContext
= pContext
;
895 case XML_ATACTION_SIZE_PROTECT
:
896 bSizeProtect
= IsXMLToken( sAttrValue
, XML_TRUE
);
897 pProtectContext
= pContext
;
899 case XML_ATACTION_PROTECT
:
900 aProtectAttrValue
= sAttrValue
;
901 pProtectContext
= pContext
;
903 case XML_ATACTION_DRAW_MIRROR_OOO
: // renames draw:mirror to style:mirror and adapts values
905 // OpenDocument file format: attribute value of <style:mirror> wrong (#i49139#)
906 aDrawMirrorAttrValue
=
907 GetXMLToken( IsXMLToken( sAttrValue
, XML_TRUE
)
908 ? XML_HORIZONTAL
: XML_NONE
);
909 bExistDrawMirror
= sal_True
;
910 pMirrorContext
= pContext
;
913 // OpenDocument file format: attribute value of <style:mirror> wrong (#i49139#)
914 case XML_ATACTION_STYLE_MIRROR_OOO
: // adapts style:mirror values
916 SvXMLTokenEnumerator
aTokenEnum( sAttrValue
);
918 while( aTokenEnum
.getNextToken( aToken
) )
920 if ( !aStyleMirrorAttrValue
.isEmpty() )
922 aStyleMirrorAttrValue
+= rtl::OUString(" " );
925 if ( IsXMLToken( aToken
, XML_HORIZONTAL_ON_LEFT_PAGES
) )
927 aStyleMirrorAttrValue
+= GetXMLToken( XML_HORIZONTAL_ON_EVEN
);
929 else if ( IsXMLToken( aToken
, XML_HORIZONTAL_ON_RIGHT_PAGES
) )
931 aStyleMirrorAttrValue
+= GetXMLToken( XML_HORIZONTAL_ON_ODD
);
935 aStyleMirrorAttrValue
+= aToken
;
938 bExistStyleMirror
= sal_True
;
939 pMirrorContext
= pContext
;
942 case XML_ATACTION_GAMMA_OOO
: // converts double value to percentage
944 double fValue
= sAttrValue
.toDouble();
945 sal_Int32 nValue
= (sal_Int32
)((fValue
* 100.0) + ( fValue
> 0 ? 0.5 : - 0.5 ) );
947 rtl::OUStringBuffer aOut
;
948 ::sax::Converter::convertPercent( aOut
, nValue
);
949 OUString
aAttrValue( aOut
.makeStringAndClear() );
950 pContext
->AddAttribute( sAttrName
, aAttrValue
);
953 case XML_ATACTION_OPACITY_FIX
:
956 if( sAttrValue
.indexOf( sal_Unicode('%') ) != -1 )
958 ::sax::Converter::convertPercent( nValue
, sAttrValue
);
962 nValue
= sal_Int32( sAttrValue
.toDouble() * 100.0 );
964 nValue
= 100 - nValue
;
966 rtl::OUStringBuffer aOut
;
967 ::sax::Converter::convertPercent( aOut
, nValue
);
968 pContext
->AddAttribute( sAttrName
, aOut
.makeStringAndClear() );
972 OSL_ENSURE( !this, "unknown action" );
977 // OpenDocument file format: attribute value of <style:mirror> wrong (#i49139#)
978 if ( bExistStyleMirror
)
980 pMirrorContext
->AddAttribute(
981 GetTransformer().GetNamespaceMap().GetQNameByKey(
982 XML_NAMESPACE_STYLE
, GetXMLToken( XML_MIRROR
) ),
983 aStyleMirrorAttrValue
);
985 else if ( bExistDrawMirror
)
987 pMirrorContext
->AddAttribute(
988 GetTransformer().GetNamespaceMap().GetQNameByKey(
989 XML_NAMESPACE_STYLE
, GetXMLToken( XML_MIRROR
) ),
990 aDrawMirrorAttrValue
);
993 if( bMoveProtect
|| bSizeProtect
|| !aProtectAttrValue
.isEmpty() )
995 if( (bMoveProtect
||bSizeProtect
) && IsXMLToken( aProtectAttrValue
, XML_NONE
) )
996 aProtectAttrValue
= OUString();
998 const OUString
& rPosition
= GetXMLToken( XML_POSITION
);
999 if( bMoveProtect
&& -1 == aProtectAttrValue
.indexOf( rPosition
) )
1001 if( !aProtectAttrValue
.isEmpty() )
1002 aProtectAttrValue
+= OUString::valueOf( sal_Unicode( ' ' ) );
1003 aProtectAttrValue
+= rPosition
;
1006 const OUString
& rSize
= GetXMLToken( XML_SIZE
);
1007 if( bSizeProtect
&& -1 == aProtectAttrValue
.indexOf( rSize
) )
1009 if( !aProtectAttrValue
.isEmpty() )
1010 aProtectAttrValue
+= OUString::valueOf( sal_Unicode( ' ' ) );
1011 aProtectAttrValue
+= rSize
;
1014 pProtectContext
->AddAttribute( GetTransformer().GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_STYLE
, GetXMLToken( XML_PROTECT
) ), aProtectAttrValue
);
1017 if( pIntervalMinorDivisorContext
)
1019 if( fIntervalMinor
!= 0.0 )
1021 sal_Int32 nIntervalMinorDivisor
= static_cast< sal_Int32
>(
1022 ::rtl::math::round( fIntervalMajor
/ fIntervalMinor
));
1024 ::rtl::OUStringBuffer aBuf
;
1025 ::sax::Converter::convertNumber( aBuf
, nIntervalMinorDivisor
);
1026 pIntervalMinorDivisorContext
->AddAttribute(
1027 GetTransformer().GetNamespaceMap().GetQNameByKey(
1028 XML_NAMESPACE_CHART
,
1029 GetXMLToken( XML_INTERVAL_MINOR_DIVISOR
)),
1030 aBuf
.makeStringAndClear());
1035 void XMLPropertiesOOoTContext_Impl::EndElement()
1037 if( !m_bPersistent
)
1041 void XMLPropertiesOOoTContext_Impl::Characters( const OUString
& )
1046 void XMLPropertiesOOoTContext_Impl::Export()
1049 for( sal_uInt16 i
=0; i
< MAX_PROP_TYPES
; i
++ )
1051 if( m_aPropContexts
[i
].is() )
1052 m_aPropContexts
[i
]->Export();
1056 sal_Bool
XMLPropertiesOOoTContext_Impl::IsPersistent() const
1058 return m_bPersistent
;
1062 //------------------------------------------------------------------------------
1064 TYPEINIT1( XMLStyleOOoTContext
, XMLPersElemContentTContext
);
1066 XMLStyleOOoTContext::XMLStyleOOoTContext( XMLTransformerBase
& rImp
,
1067 const OUString
& rQName
,
1069 sal_Bool bPersistent
) :
1070 XMLPersElemContentTContext( rImp
, rQName
),
1072 m_bPersistent( bPersistent
)
1076 XMLStyleOOoTContext::XMLStyleOOoTContext(
1077 XMLTransformerBase
& rImp
,
1078 const OUString
& rQName
,
1081 ::xmloff::token::XMLTokenEnum eToken
,
1082 sal_Bool bPersistent
) :
1083 XMLPersElemContentTContext( rImp
, rQName
, nPrefix
, eToken
),
1085 m_bPersistent( bPersistent
)
1089 XMLStyleOOoTContext::~XMLStyleOOoTContext()
1093 XMLTransformerContext
*XMLStyleOOoTContext::CreateChildContext(
1095 const OUString
& rLocalName
,
1096 const OUString
& rQName
,
1097 const Reference
< XAttributeList
>& rAttrList
)
1099 XMLTransformerContext
*pContext
= 0;
1101 if( XML_NAMESPACE_STYLE
== nPrefix
&&
1102 IsXMLToken( rLocalName
, XML_PROPERTIES
) )
1104 if( aPropTypes
[m_eFamily
][0] == XML_PROP_TYPE_END
)
1106 OSL_ENSURE( !this, "unexpected properties element" );
1107 pContext
= m_bPersistent
1108 ? XMLPersElemContentTContext::CreateChildContext(
1109 nPrefix
, rLocalName
, rQName
, rAttrList
)
1110 : XMLTransformerContext::CreateChildContext(
1111 nPrefix
, rLocalName
, rQName
, rAttrList
);
1113 else if( aPropTypes
[m_eFamily
][1] == XML_PROP_TYPE_END
)
1115 sal_uInt16 nActionMap
=
1116 aAttrActionMaps
[aPropTypes
[m_eFamily
][0]];
1117 if( nActionMap
< MAX_OOO_PROP_ACTIONS
)
1119 pContext
= new XMLPropertiesOOoTContext_Impl(
1120 GetTransformer(), rQName
,
1121 aPropTypes
[m_eFamily
], m_bPersistent
);
1126 pContext
= new XMLPersElemContentTContext(
1127 GetTransformer(), rQName
,
1128 XML_NAMESPACE_STYLE
,
1129 aPropTokens
[aPropTypes
[m_eFamily
][0]] );
1131 pContext
= new XMLRenameElemTransformerContext(
1132 GetTransformer(), rQName
,
1133 XML_NAMESPACE_STYLE
,
1134 aPropTokens
[aPropTypes
[m_eFamily
][0]] );
1139 pContext
= new XMLPropertiesOOoTContext_Impl(
1140 GetTransformer(), rQName
,
1141 aPropTypes
[m_eFamily
], m_bPersistent
);
1145 AddContent( pContext
);
1149 pContext
= m_bPersistent
1150 ? XMLPersElemContentTContext::CreateChildContext(
1151 nPrefix
, rLocalName
, rQName
, rAttrList
)
1152 : XMLTransformerContext::CreateChildContext(
1153 nPrefix
, rLocalName
, rQName
, rAttrList
);
1159 void XMLStyleOOoTContext::StartElement(
1160 const Reference
< XAttributeList
>& rAttrList
)
1162 XMLTransformerActions
*pActions
=
1163 GetTransformer().GetUserDefinedActions( OOO_STYLE_ACTIONS
);
1164 OSL_ENSURE( pActions
, "go no actions" );
1166 Reference
< XAttributeList
> xAttrList( rAttrList
);
1167 XMLMutableAttributeList
*pMutableAttrList
= 0;
1168 sal_Int16 nAttrCount
= xAttrList
.is() ? xAttrList
->getLength() : 0;
1169 for( sal_Int16 i
=0; i
< nAttrCount
; i
++ )
1171 const OUString sAttrName
= xAttrList
->getNameByIndex( i
);
1172 OUString aLocalName
;
1173 sal_uInt16 nPrefix
=
1174 GetTransformer().GetNamespaceMap().GetKeyByAttrName( sAttrName
,
1176 XMLTransformerActions::key_type
aKey( nPrefix
, aLocalName
);
1177 XMLTransformerActions::const_iterator aIter
=
1178 pActions
->find( aKey
);
1179 if( !(aIter
== pActions
->end() ) )
1181 if( !pMutableAttrList
)
1184 new XMLMutableAttributeList( xAttrList
);
1185 xAttrList
= pMutableAttrList
;
1187 const OUString sAttrValue
= xAttrList
->getValueByIndex( i
);
1188 switch( (*aIter
).second
.m_nActionType
)
1190 case XML_ATACTION_STYLE_FAMILY
:
1192 sal_Bool bControl
= sal_False
;
1193 if( XML_FAMILY_TYPE_END
== m_eFamily
)
1195 if( IsXMLToken( sAttrValue
, XML_GRAPHICS
) )
1196 m_eFamily
= XML_FAMILY_TYPE_GRAPHIC
;
1197 else if( IsXMLToken( sAttrValue
, XML_PRESENTATION
) )
1198 m_eFamily
= XML_FAMILY_TYPE_PRESENTATION
;
1199 else if( IsXMLToken( sAttrValue
, XML_DRAWING_PAGE
) )
1200 m_eFamily
= XML_FAMILY_TYPE_DRAWING_PAGE
;
1201 else if( IsXMLToken( sAttrValue
, XML_TEXT
) )
1202 m_eFamily
= XML_FAMILY_TYPE_TEXT
;
1203 else if( IsXMLToken( sAttrValue
, XML_PARAGRAPH
) )
1204 m_eFamily
= XML_FAMILY_TYPE_PARAGRAPH
;
1205 else if( IsXMLToken( sAttrValue
, XML_RUBY
) )
1206 m_eFamily
= XML_FAMILY_TYPE_RUBY
;
1207 else if( IsXMLToken( sAttrValue
, XML_SECTION
) )
1208 m_eFamily
= XML_FAMILY_TYPE_SECTION
;
1209 else if( IsXMLToken( sAttrValue
, XML_TABLE
) )
1210 m_eFamily
= XML_FAMILY_TYPE_TABLE
;
1211 else if( IsXMLToken( sAttrValue
, XML_TABLE_COLUMN
) )
1212 m_eFamily
= XML_FAMILY_TYPE_TABLE_COLUMN
;
1213 else if( IsXMLToken( sAttrValue
, XML_TABLE_ROW
) )
1214 m_eFamily
= XML_FAMILY_TYPE_TABLE_ROW
;
1215 else if( IsXMLToken( sAttrValue
, XML_TABLE_CELL
) )
1216 m_eFamily
= XML_FAMILY_TYPE_TABLE_CELL
;
1217 else if( IsXMLToken( sAttrValue
, XML_CHART
) )
1218 m_eFamily
= XML_FAMILY_TYPE_CHART
;
1219 else if( IsXMLToken( sAttrValue
, XML_CONTROL
) )
1221 m_eFamily
= XML_FAMILY_TYPE_PARAGRAPH
;
1222 bControl
= sal_True
;
1225 if( XML_FAMILY_TYPE_GRAPHIC
== m_eFamily
)
1227 pMutableAttrList
->SetValueByIndex( i
,
1228 GetXMLToken( XML_GRAPHIC
) );
1232 pMutableAttrList
->SetValueByIndex( i
,
1233 GetXMLToken( XML_PARAGRAPH
) );
1237 case XML_ATACTION_INCH2IN
:
1239 OUString
aAttrValue( sAttrValue
);
1240 if( XMLTransformerBase::ReplaceSingleInchWithIn(
1242 pMutableAttrList
->SetValueByIndex( i
, aAttrValue
);
1245 case XML_ATACTION_ENCODE_STYLE_NAME
:
1247 OUString
aAttrValue( sAttrValue
);
1248 if( GetTransformer().EncodeStyleName(aAttrValue
) )
1250 pMutableAttrList
->SetValueByIndex( i
, aAttrValue
);
1251 OUString
aNewAttrQName(
1252 GetTransformer().GetNamespaceMap().
1254 nPrefix
, ::xmloff::token::GetXMLToken(
1255 XML_DISPLAY_NAME
) ) );
1256 pMutableAttrList
->AddAttribute( aNewAttrQName
,
1261 case XML_ATACTION_ENCODE_STYLE_NAME_REF
:
1263 OUString
aAttrValue( sAttrValue
);
1264 if( GetTransformer().EncodeStyleName(aAttrValue
) )
1265 pMutableAttrList
->SetValueByIndex( i
, aAttrValue
);
1268 case XML_ATACTION_NEG_PERCENT
:
1270 OUString
aAttrValue( sAttrValue
);
1271 if( GetTransformer().NegPercent(aAttrValue
) )
1272 pMutableAttrList
->SetValueByIndex( i
, aAttrValue
);
1275 case XML_ATACTION_URI_OOO
:
1277 OUString
aAttrValue( sAttrValue
);
1278 if( GetTransformer().ConvertURIToOASIS( aAttrValue
,
1279 static_cast< sal_Bool
>((*aIter
).second
.m_nParam1
)))
1280 pMutableAttrList
->SetValueByIndex( i
, aAttrValue
);
1284 OSL_ENSURE( !this, "unknown action" );
1289 if( XML_FAMILY_TYPE_END
== m_eFamily
)
1290 m_eFamily
= XML_FAMILY_TYPE_TEXT
;
1292 XMLPersElemContentTContext::StartElement( xAttrList
);
1294 GetTransformer().GetDocHandler()->startElement( GetExportQName(),
1298 void XMLStyleOOoTContext::EndElement()
1301 XMLPersElemContentTContext::EndElement();
1303 GetTransformer().GetDocHandler()->endElement( GetExportQName() );
1306 void XMLStyleOOoTContext::Characters( const OUString
& )
1308 // element content only:
1311 sal_Bool
XMLStyleOOoTContext::IsPersistent() const
1313 return m_bPersistent
;
1316 XMLTransformerActions
*XMLStyleOOoTContext::CreateTransformerActions(
1319 XMLTransformerActionInit
*pInit
= 0;
1323 case PROP_OOO_GRAPHIC_ATTR_ACTIONS
:
1324 pInit
= aGraphicPropertyOOoAttrActionTable
;
1326 case PROP_OOO_GRAPHIC_ELEM_ACTIONS
:
1327 pInit
= aGraphicPropertyOOoElemActionTable
;
1329 case PROP_OOO_DRAWING_PAGE_ATTR_ACTIONS
:
1330 pInit
= aDrawingPagePropertyOOoAttrActionTable
;
1332 case PROP_OOO_PAGE_LAYOUT_ATTR_ACTIONS
:
1333 pInit
= aPageLayoutPropertyOOoAttrActionTable
;
1335 case PROP_OOO_HEADER_FOOTER_ATTR_ACTIONS
:
1336 pInit
= aHeaderFooterPropertyOOoAttrActionTable
;
1338 case PROP_OOO_TEXT_ATTR_ACTIONS
:
1339 pInit
= aTextPropertyOOoAttrActionTable
;
1341 case PROP_OOO_TEXT_ELEM_ACTIONS
:
1342 pInit
= aTextPropertyOOoElemActionTable
;
1344 case PROP_OOO_PARAGRAPH_ATTR_ACTIONS
:
1345 pInit
= aParagraphPropertyOOoAttrActionTable
;
1347 case PROP_OOO_PARAGRAPH_ELEM_ACTIONS
:
1348 pInit
= aParagraphPropertyOOoElemActionTable
;
1350 case PROP_OOO_SECTION_ATTR_ACTIONS
:
1351 pInit
= aSectionPropertyOOoAttrActionTable
;
1353 case PROP_OOO_TABLE_ATTR_ACTIONS
:
1354 pInit
= aTablePropertyOOoAttrActionTable
;
1356 case PROP_OOO_TABLE_COLUMN_ATTR_ACTIONS
:
1357 pInit
= aTableColumnPropertyOOoAttrActionTable
;
1359 case PROP_OOO_TABLE_ROW_ATTR_ACTIONS
:
1360 pInit
= aTableRowPropertyOOoAttrActionTable
;
1362 case PROP_OOO_TABLE_CELL_ATTR_ACTIONS
:
1363 pInit
= aTableCellPropertyOOoAttrActionTable
;
1365 case PROP_OOO_TABLE_CELL_ELEM_ACTIONS
:
1366 pInit
= aTableCellPropertyOOoElemActionTable
;
1368 case PROP_OOO_LIST_LEVEL_ATTR_ACTIONS
:
1369 pInit
= aListLevelPropertyOOoAttrActionTable
;
1371 case PROP_OOO_CHART_ATTR_ACTIONS
:
1372 pInit
= aChartPropertyOOoAttrActionTable
;
1374 case PROP_OOO_CHART_ELEM_ACTIONS
:
1375 pInit
= aChartPropertyOOoElemActionTable
;
1379 XMLTransformerActions
*pActions
= 0;
1381 pActions
= new XMLTransformerActions( pInit
);
1386 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */