xref: /aoo4110/main/xmloff/source/text/txtprhdl.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_xmloff.hxx"
26*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
27*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
28*b1cdbd2cSJim Jagielski #include <tools/fontenum.hxx>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Any.hxx>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/style/DropCapFormat.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/text/FontRelief.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/text/WrapTextMode.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XTextColumns.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/text/TextColumn.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/text/RelOrientation.hpp>
36*b1cdbd2cSJim Jagielski #include <com/sun/star/text/HoriOrientation.hpp>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/text/VertOrientation.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/text/RubyAdjust.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/text/FontEmphasis.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/text/ParagraphVertAlign.hpp>
41*b1cdbd2cSJim Jagielski #include <xmloff/xmltypes.hxx>
42*b1cdbd2cSJim Jagielski #include <xmloff/xmluconv.hxx>
43*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
44*b1cdbd2cSJim Jagielski #include "XMLAnchorTypePropHdl.hxx"
45*b1cdbd2cSJim Jagielski #include <xmloff/XMLConstantsPropertyHandler.hxx>
46*b1cdbd2cSJim Jagielski #include "XMLClipPropertyHandler.hxx"
47*b1cdbd2cSJim Jagielski #ifndef _XMLOFF_XMLTEXTCOLUMNSPPROPERTYHANDLER_HXX
48*b1cdbd2cSJim Jagielski #include "XMLTextColumnsPropertyHandler.hxx"
49*b1cdbd2cSJim Jagielski #endif
50*b1cdbd2cSJim Jagielski #include <xmloff/NamedBoolPropertyHdl.hxx>
51*b1cdbd2cSJim Jagielski #ifndef _XMLOFF_TXTPRHDL_HXX
52*b1cdbd2cSJim Jagielski #include "txtprhdl.hxx"
53*b1cdbd2cSJim Jagielski #endif
54*b1cdbd2cSJim Jagielski // OD 2004-05-05 #i28701#
55*b1cdbd2cSJim Jagielski #include <com/sun/star/text/WrapInfluenceOnPosition.hpp>
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski using ::rtl::OUString;
59*b1cdbd2cSJim Jagielski using ::rtl::OUStringBuffer;
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski //using namespace ::com::sun::star;
62*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
63*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::style;
64*b1cdbd2cSJim Jagielski //using namespace ::com::sun::star::container;
65*b1cdbd2cSJim Jagielski //using namespace ::com::sun::star::beans;
66*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::text;
67*b1cdbd2cSJim Jagielski using namespace ::xmloff::token;
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski #define CONSTASCII_USTRINGPARAM_CMP(s) s, sizeof(s)-1
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_HoriPos_Enum[] =
75*b1cdbd2cSJim Jagielski {
76*b1cdbd2cSJim Jagielski 	{ XML_FROM_LEFT,		HoriOrientation::NONE	},
77*b1cdbd2cSJim Jagielski 	{ XML_FROM_INSIDE,		HoriOrientation::NONE	},	// import only
78*b1cdbd2cSJim Jagielski 	{ XML_LEFT,		    	HoriOrientation::LEFT	},
79*b1cdbd2cSJim Jagielski 	{ XML_INSIDE,			HoriOrientation::LEFT	},	// import only
80*b1cdbd2cSJim Jagielski 	{ XML_CENTER,			HoriOrientation::CENTER	},
81*b1cdbd2cSJim Jagielski 	{ XML_RIGHT,			HoriOrientation::RIGHT	},
82*b1cdbd2cSJim Jagielski 	{ XML_OUTSIDE,			HoriOrientation::RIGHT	},	// import only
83*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
84*b1cdbd2cSJim Jagielski };
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_HoriPosMirrored_Enum[] =
87*b1cdbd2cSJim Jagielski {
88*b1cdbd2cSJim Jagielski 	{ XML_FROM_INSIDE,		HoriOrientation::NONE	},
89*b1cdbd2cSJim Jagielski 	{ XML_INSIDE,			HoriOrientation::LEFT	},
90*b1cdbd2cSJim Jagielski 	{ XML_CENTER,			HoriOrientation::CENTER	},
91*b1cdbd2cSJim Jagielski 	{ XML_OUTSIDE,			HoriOrientation::RIGHT	},
92*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
93*b1cdbd2cSJim Jagielski };
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_HoriRel_Enum[] =
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski 	{ XML_PARAGRAPH,			RelOrientation::FRAME	},
98*b1cdbd2cSJim Jagielski 	{ XML_PARAGRAPH_CONTENT,	RelOrientation::PRINT_AREA	},
99*b1cdbd2cSJim Jagielski 	{ XML_PAGE,				    RelOrientation::PAGE_FRAME	},
100*b1cdbd2cSJim Jagielski 	{ XML_PAGE_CONTENT,		    RelOrientation::PAGE_PRINT_AREA	},
101*b1cdbd2cSJim Jagielski 	{ XML_PARAGRAPH_START_MARGIN,	RelOrientation::FRAME_LEFT	},
102*b1cdbd2cSJim Jagielski 	{ XML_PARAGRAPH_END_MARGIN,	RelOrientation::FRAME_RIGHT	},
103*b1cdbd2cSJim Jagielski 	{ XML_PAGE_START_MARGIN,	RelOrientation::PAGE_LEFT	},
104*b1cdbd2cSJim Jagielski 	{ XML_PAGE_END_MARGIN,		RelOrientation::PAGE_RIGHT	},
105*b1cdbd2cSJim Jagielski 	{ XML_CHAR,				    RelOrientation::CHAR	},
106*b1cdbd2cSJim Jagielski 	{ XML_FRAME,				RelOrientation::FRAME	},		// import only
107*b1cdbd2cSJim Jagielski 	{ XML_FRAME_CONTENT,		RelOrientation::PRINT_AREA	},	// import only
108*b1cdbd2cSJim Jagielski 	{ XML_FRAME_START_MARGIN,	RelOrientation::FRAME_LEFT	},	// import only
109*b1cdbd2cSJim Jagielski 	{ XML_FRAME_END_MARGIN, 	RelOrientation::FRAME_RIGHT	},	// import only
110*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
111*b1cdbd2cSJim Jagielski };
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_HoriRelFrame_Enum[] =
114*b1cdbd2cSJim Jagielski {
115*b1cdbd2cSJim Jagielski 	{ XML_FRAME,				RelOrientation::FRAME	},
116*b1cdbd2cSJim Jagielski 	{ XML_FRAME_CONTENT,		RelOrientation::PRINT_AREA	},
117*b1cdbd2cSJim Jagielski 	{ XML_PAGE,				    RelOrientation::PAGE_FRAME	},
118*b1cdbd2cSJim Jagielski 	{ XML_PAGE_CONTENT,		    RelOrientation::PAGE_PRINT_AREA	},
119*b1cdbd2cSJim Jagielski 	{ XML_FRAME_START_MARGIN,	RelOrientation::FRAME_LEFT	},
120*b1cdbd2cSJim Jagielski 	{ XML_FRAME_END_MARGIN,	    RelOrientation::FRAME_RIGHT	},
121*b1cdbd2cSJim Jagielski 	{ XML_PAGE_START_MARGIN,	RelOrientation::PAGE_LEFT	},
122*b1cdbd2cSJim Jagielski 	{ XML_PAGE_END_MARGIN,		RelOrientation::PAGE_RIGHT	},
123*b1cdbd2cSJim Jagielski 	{ XML_CHAR,				    RelOrientation::CHAR	},
124*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
125*b1cdbd2cSJim Jagielski };
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_HoriMirror_Enum[] =
128*b1cdbd2cSJim Jagielski {
129*b1cdbd2cSJim Jagielski 	{ XML_FROM_LEFT,		sal_False	},
130*b1cdbd2cSJim Jagielski 	{ XML_FROM_INSIDE,		sal_True	},
131*b1cdbd2cSJim Jagielski 	{ XML_LEFT,		    	sal_False	},
132*b1cdbd2cSJim Jagielski 	{ XML_INSIDE,			sal_True	},
133*b1cdbd2cSJim Jagielski 	{ XML_CENTER,			sal_False	},
134*b1cdbd2cSJim Jagielski 	{ XML_RIGHT,			sal_False	},
135*b1cdbd2cSJim Jagielski 	{ XML_OUTSIDE,			sal_True	},
136*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
137*b1cdbd2cSJim Jagielski };
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_VertPos_Enum[] =
140*b1cdbd2cSJim Jagielski {
141*b1cdbd2cSJim Jagielski 	{ XML_FROM_TOP,		    VertOrientation::NONE		},
142*b1cdbd2cSJim Jagielski 	{ XML_TOP,				VertOrientation::TOP		},
143*b1cdbd2cSJim Jagielski 	{ XML_TOP,				VertOrientation::CHAR_TOP	},	// export only
144*b1cdbd2cSJim Jagielski 	{ XML_TOP,				VertOrientation::LINE_TOP	},	// export only
145*b1cdbd2cSJim Jagielski 	{ XML_MIDDLE,			VertOrientation::CENTER		},
146*b1cdbd2cSJim Jagielski 	{ XML_MIDDLE,			VertOrientation::CHAR_CENTER	},	// export only
147*b1cdbd2cSJim Jagielski 	{ XML_MIDDLE,			VertOrientation::LINE_CENTER	},	// export only
148*b1cdbd2cSJim Jagielski 	{ XML_BOTTOM,			VertOrientation::BOTTOM		},
149*b1cdbd2cSJim Jagielski 	{ XML_BOTTOM,			VertOrientation::CHAR_BOTTOM	},	// export only
150*b1cdbd2cSJim Jagielski 	{ XML_BOTTOM,			VertOrientation::LINE_BOTTOM	},	// export only
151*b1cdbd2cSJim Jagielski 	{ XML_BELOW,			VertOrientation::CHAR_BOTTOM	},	// import only
152*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
153*b1cdbd2cSJim Jagielski };
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_VertPosAtChar_Enum[] =
156*b1cdbd2cSJim Jagielski {
157*b1cdbd2cSJim Jagielski 	{ XML_FROM_TOP,		    VertOrientation::NONE		},
158*b1cdbd2cSJim Jagielski 	{ XML_TOP,				VertOrientation::TOP		},
159*b1cdbd2cSJim Jagielski 	{ XML_TOP,				VertOrientation::CHAR_TOP	},	// export only
160*b1cdbd2cSJim Jagielski 	{ XML_TOP,				VertOrientation::LINE_TOP	},	// export only
161*b1cdbd2cSJim Jagielski 	{ XML_MIDDLE,			VertOrientation::CENTER		},
162*b1cdbd2cSJim Jagielski 	{ XML_MIDDLE,			VertOrientation::CHAR_CENTER	},	// export only
163*b1cdbd2cSJim Jagielski 	{ XML_MIDDLE,			VertOrientation::LINE_CENTER	},	// export only
164*b1cdbd2cSJim Jagielski 	{ XML_BOTTOM,			VertOrientation::BOTTOM		},
165*b1cdbd2cSJim Jagielski 	{ XML_BELOW,			VertOrientation::CHAR_BOTTOM	},	// export only
166*b1cdbd2cSJim Jagielski 	{ XML_BOTTOM,			VertOrientation::LINE_BOTTOM	},	// export only
167*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
168*b1cdbd2cSJim Jagielski };
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_VertRel_Enum[] =
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski 	{ XML_PARAGRAPH,			RelOrientation::FRAME	},
173*b1cdbd2cSJim Jagielski 	{ XML_PARAGRAPH_CONTENT,	RelOrientation::PRINT_AREA	},
174*b1cdbd2cSJim Jagielski 	{ XML_CHAR,				    RelOrientation::CHAR	},
175*b1cdbd2cSJim Jagielski     // DVO, OD 17.09.2003 #i18732# - allow vertical alignment at page
176*b1cdbd2cSJim Jagielski     { XML_PAGE,                 RelOrientation::PAGE_FRAME  },
177*b1cdbd2cSJim Jagielski     { XML_PAGE_CONTENT,         RelOrientation::PAGE_PRINT_AREA },
178*b1cdbd2cSJim Jagielski 	{ XML_FRAME,				RelOrientation::FRAME	},		// import only
179*b1cdbd2cSJim Jagielski 	{ XML_FRAME_CONTENT,		RelOrientation::PRINT_AREA	},	// import only
180*b1cdbd2cSJim Jagielski     // OD 13.11.2003 #i22341# - new vertical alignment at top of line
181*b1cdbd2cSJim Jagielski     { XML_LINE,                 RelOrientation::TEXT_LINE },
182*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
183*b1cdbd2cSJim Jagielski };
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_VertRelPage_Enum[] =
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski 	{ XML_PAGE,			RelOrientation::FRAME	},
188*b1cdbd2cSJim Jagielski 	{ XML_PAGE_CONTENT,	RelOrientation::PRINT_AREA	},
189*b1cdbd2cSJim Jagielski 	{ XML_PAGE,			RelOrientation::PAGE_FRAME	},
190*b1cdbd2cSJim Jagielski 	{ XML_PAGE_CONTENT,	RelOrientation::PAGE_PRINT_AREA	},
191*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
192*b1cdbd2cSJim Jagielski };
193*b1cdbd2cSJim Jagielski 
194*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_VertRelFrame_Enum[] =
195*b1cdbd2cSJim Jagielski {
196*b1cdbd2cSJim Jagielski 	{ XML_FRAME,			RelOrientation::FRAME	},
197*b1cdbd2cSJim Jagielski 	{ XML_FRAME_CONTENT,	RelOrientation::PRINT_AREA	},
198*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
199*b1cdbd2cSJim Jagielski };
200*b1cdbd2cSJim Jagielski 
201*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_VertRelAsChar_Enum[] =
202*b1cdbd2cSJim Jagielski {
203*b1cdbd2cSJim Jagielski 	{ XML_BASELINE,		VertOrientation::TOP		},
204*b1cdbd2cSJim Jagielski 	{ XML_BASELINE,		VertOrientation::CENTER		},	// export only
205*b1cdbd2cSJim Jagielski 	{ XML_BASELINE,		VertOrientation::BOTTOM		},	// export only
206*b1cdbd2cSJim Jagielski 	{ XML_TEXT,			VertOrientation::CHAR_TOP	},
207*b1cdbd2cSJim Jagielski 	{ XML_TEXT,			VertOrientation::CHAR_CENTER	},	// export only
208*b1cdbd2cSJim Jagielski 	{ XML_TEXT,			VertOrientation::CHAR_BOTTOM	},	// export only
209*b1cdbd2cSJim Jagielski     { XML_LINE,			VertOrientation::LINE_TOP	},
210*b1cdbd2cSJim Jagielski 	{ XML_LINE,			VertOrientation::LINE_CENTER	},	// export only
211*b1cdbd2cSJim Jagielski 	{ XML_LINE,			VertOrientation::LINE_BOTTOM	},	// export only
212*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
213*b1cdbd2cSJim Jagielski };
214*b1cdbd2cSJim Jagielski 
215*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_RubyAdjust_Enum[] =
216*b1cdbd2cSJim Jagielski {
217*b1cdbd2cSJim Jagielski 	{ XML_LEFT,				    RubyAdjust_LEFT },
218*b1cdbd2cSJim Jagielski     { XML_CENTER,				RubyAdjust_CENTER },
219*b1cdbd2cSJim Jagielski 	{ XML_RIGHT,				RubyAdjust_RIGHT },
220*b1cdbd2cSJim Jagielski 	{ XML_DISTRIBUTE_LETTER,	RubyAdjust_BLOCK },
221*b1cdbd2cSJim Jagielski 	{ XML_DISTRIBUTE_SPACE,	    RubyAdjust_INDENT_BLOCK },
222*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
223*b1cdbd2cSJim Jagielski };
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_FontRelief_Enum[] =
226*b1cdbd2cSJim Jagielski {
227*b1cdbd2cSJim Jagielski 	{ XML_NONE,				FontRelief::NONE		},
228*b1cdbd2cSJim Jagielski 	{ XML_ENGRAVED,			FontRelief::ENGRAVED	},
229*b1cdbd2cSJim Jagielski 	{ XML_EMBOSSED,			FontRelief::EMBOSSED	},
230*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
231*b1cdbd2cSJim Jagielski };
232*b1cdbd2cSJim Jagielski 
233*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_VerticalAlign_Enum[] =
234*b1cdbd2cSJim Jagielski {
235*b1cdbd2cSJim Jagielski 	{ XML_TOP,			ParagraphVertAlign::TOP		},
236*b1cdbd2cSJim Jagielski 	{ XML_MIDDLE,		ParagraphVertAlign::CENTER	},
237*b1cdbd2cSJim Jagielski 	{ XML_BOTTOM,		ParagraphVertAlign::BOTTOM	},
238*b1cdbd2cSJim Jagielski 	{ XML_BASELINE,	    ParagraphVertAlign::BASELINE	},
239*b1cdbd2cSJim Jagielski 	{ XML_AUTO,		    ParagraphVertAlign::AUTOMATIC	},
240*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
241*b1cdbd2cSJim Jagielski };
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski // OD 2004-05-05 #i28701#
244*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_WrapInfluenceOnPosition_Enum[] =
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski     // --> OD 2004-10-18 #i35017# - tokens have been renamed and
247*b1cdbd2cSJim Jagielski     // <XML_ITERATIVE> has been added
248*b1cdbd2cSJim Jagielski     { XML_ONCE_SUCCESSIVE, WrapInfluenceOnPosition::ONCE_SUCCESSIVE },
249*b1cdbd2cSJim Jagielski     { XML_ONCE_CONCURRENT, WrapInfluenceOnPosition::ONCE_CONCURRENT },
250*b1cdbd2cSJim Jagielski     { XML_ITERATIVE,       WrapInfluenceOnPosition::ITERATIVE },
251*b1cdbd2cSJim Jagielski     // <--
252*b1cdbd2cSJim Jagielski     { XML_TOKEN_INVALID, 0 }
253*b1cdbd2cSJim Jagielski };
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
256*b1cdbd2cSJim Jagielski 
257*b1cdbd2cSJim Jagielski class XMLDropCapPropHdl_Impl : public XMLPropertyHandler
258*b1cdbd2cSJim Jagielski {
259*b1cdbd2cSJim Jagielski public:
260*b1cdbd2cSJim Jagielski 	virtual ~XMLDropCapPropHdl_Impl ();
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski 	virtual bool equals(
263*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& r1,
264*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& r2 ) const;
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski 	/// TabStops will be imported/exported as XML-Elements. So the Import/Export-work must be done at another place.
267*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
268*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
269*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
270*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
271*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
272*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
273*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
274*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
275*b1cdbd2cSJim Jagielski };
276*b1cdbd2cSJim Jagielski 
~XMLDropCapPropHdl_Impl()277*b1cdbd2cSJim Jagielski XMLDropCapPropHdl_Impl::~XMLDropCapPropHdl_Impl ()
278*b1cdbd2cSJim Jagielski {
279*b1cdbd2cSJim Jagielski }
280*b1cdbd2cSJim Jagielski 
equals(const Any & r1,const Any & r2) const281*b1cdbd2cSJim Jagielski bool XMLDropCapPropHdl_Impl::equals(
282*b1cdbd2cSJim Jagielski 		const Any& r1,
283*b1cdbd2cSJim Jagielski 		const Any& r2 ) const
284*b1cdbd2cSJim Jagielski {
285*b1cdbd2cSJim Jagielski 	DropCapFormat aFormat1, aFormat2;
286*b1cdbd2cSJim Jagielski 	r1 >>= aFormat1;
287*b1cdbd2cSJim Jagielski 	r2 >>= aFormat2;
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski 	return	(aFormat1.Lines <=1 && aFormat2.Lines <=1) ||
290*b1cdbd2cSJim Jagielski 			(aFormat1.Lines == aFormat2.Lines &&
291*b1cdbd2cSJim Jagielski 			 aFormat1.Count == aFormat2.Count &&
292*b1cdbd2cSJim Jagielski 			 aFormat1.Distance == aFormat2.Distance);
293*b1cdbd2cSJim Jagielski }
294*b1cdbd2cSJim Jagielski 
importXML(const OUString &,Any &,const SvXMLUnitConverter &) const295*b1cdbd2cSJim Jagielski sal_Bool XMLDropCapPropHdl_Impl::importXML(
296*b1cdbd2cSJim Jagielski 		const OUString&,
297*b1cdbd2cSJim Jagielski 	   	Any&,
298*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
299*b1cdbd2cSJim Jagielski {
300*b1cdbd2cSJim Jagielski 	DBG_ASSERT( !this, "drop caps are an element import property" );
301*b1cdbd2cSJim Jagielski 	return sal_False;
302*b1cdbd2cSJim Jagielski }
303*b1cdbd2cSJim Jagielski 
exportXML(OUString &,const Any &,const SvXMLUnitConverter &) const304*b1cdbd2cSJim Jagielski sal_Bool XMLDropCapPropHdl_Impl::exportXML(
305*b1cdbd2cSJim Jagielski 		OUString&,
306*b1cdbd2cSJim Jagielski 		const Any&,
307*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
308*b1cdbd2cSJim Jagielski {
309*b1cdbd2cSJim Jagielski 	DBG_ASSERT( !this, "drop caps are an element export property" );
310*b1cdbd2cSJim Jagielski 	return sal_False;
311*b1cdbd2cSJim Jagielski }
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
314*b1cdbd2cSJim Jagielski 
315*b1cdbd2cSJim Jagielski class XMLOpaquePropHdl_Impl : public XMLPropertyHandler
316*b1cdbd2cSJim Jagielski {
317*b1cdbd2cSJim Jagielski public:
318*b1cdbd2cSJim Jagielski 	virtual ~XMLOpaquePropHdl_Impl ();
319*b1cdbd2cSJim Jagielski 
320*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
321*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
322*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
323*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
324*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
325*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
326*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
327*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
328*b1cdbd2cSJim Jagielski };
329*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const330*b1cdbd2cSJim Jagielski sal_Bool XMLOpaquePropHdl_Impl::importXML(
331*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
332*b1cdbd2cSJim Jagielski 	   	Any& rValue,
333*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
336*b1cdbd2cSJim Jagielski 	sal_Bool bVal = sal_False;
337*b1cdbd2cSJim Jagielski 	if( IsXMLToken( rStrImpValue, XML_FOREGROUND ) )
338*b1cdbd2cSJim Jagielski 		bVal = sal_True;
339*b1cdbd2cSJim Jagielski 	else if( !IsXMLToken( rStrImpValue, XML_BACKGROUND ) )
340*b1cdbd2cSJim Jagielski 		bRet = sal_False;
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 	if( bRet )
343*b1cdbd2cSJim Jagielski 		rValue.setValue( &bVal, ::getBooleanCppuType() );
344*b1cdbd2cSJim Jagielski 
345*b1cdbd2cSJim Jagielski 	return bRet;
346*b1cdbd2cSJim Jagielski }
347*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const348*b1cdbd2cSJim Jagielski sal_Bool XMLOpaquePropHdl_Impl::exportXML(
349*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
350*b1cdbd2cSJim Jagielski 		const Any& rValue,
351*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
352*b1cdbd2cSJim Jagielski {
353*b1cdbd2cSJim Jagielski 	if( *(sal_Bool *)rValue.getValue() )
354*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_FOREGROUND );
355*b1cdbd2cSJim Jagielski 	else
356*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_BACKGROUND );
357*b1cdbd2cSJim Jagielski 
358*b1cdbd2cSJim Jagielski 	return sal_True;
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski 
~XMLOpaquePropHdl_Impl()361*b1cdbd2cSJim Jagielski XMLOpaquePropHdl_Impl::~XMLOpaquePropHdl_Impl ()
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski }
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski class XMLContourModePropHdl_Impl : public XMLPropertyHandler
368*b1cdbd2cSJim Jagielski {
369*b1cdbd2cSJim Jagielski public:
370*b1cdbd2cSJim Jagielski 	virtual ~XMLContourModePropHdl_Impl ();
371*b1cdbd2cSJim Jagielski 
372*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
373*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
374*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
375*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
376*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
377*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
378*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
379*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
380*b1cdbd2cSJim Jagielski };
381*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const382*b1cdbd2cSJim Jagielski sal_Bool XMLContourModePropHdl_Impl::importXML(
383*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
384*b1cdbd2cSJim Jagielski 	   	Any& rValue,
385*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
386*b1cdbd2cSJim Jagielski {
387*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
388*b1cdbd2cSJim Jagielski 	sal_Bool bVal = sal_False;
389*b1cdbd2cSJim Jagielski 	if( IsXMLToken( rStrImpValue, XML_OUTSIDE ) )
390*b1cdbd2cSJim Jagielski 		bVal = sal_True;
391*b1cdbd2cSJim Jagielski 	else if( ! IsXMLToken( rStrImpValue, XML_FULL ) )
392*b1cdbd2cSJim Jagielski 		bRet = sal_False;
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski 	if( bRet )
395*b1cdbd2cSJim Jagielski 		rValue.setValue( &bVal, ::getBooleanCppuType() );
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski 	return bRet;
398*b1cdbd2cSJim Jagielski }
399*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const400*b1cdbd2cSJim Jagielski sal_Bool XMLContourModePropHdl_Impl::exportXML(
401*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
402*b1cdbd2cSJim Jagielski 		const Any& rValue,
403*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
404*b1cdbd2cSJim Jagielski {
405*b1cdbd2cSJim Jagielski 	if( *(sal_Bool *)rValue.getValue() )
406*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_OUTSIDE );
407*b1cdbd2cSJim Jagielski 	else
408*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_FULL );
409*b1cdbd2cSJim Jagielski 
410*b1cdbd2cSJim Jagielski 	return sal_True;
411*b1cdbd2cSJim Jagielski }
412*b1cdbd2cSJim Jagielski 
~XMLContourModePropHdl_Impl()413*b1cdbd2cSJim Jagielski XMLContourModePropHdl_Impl::~XMLContourModePropHdl_Impl()
414*b1cdbd2cSJim Jagielski {
415*b1cdbd2cSJim Jagielski }
416*b1cdbd2cSJim Jagielski 
417*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
418*b1cdbd2cSJim Jagielski 
419*b1cdbd2cSJim Jagielski class XMLParagraphOnlyPropHdl_Impl : public XMLPropertyHandler
420*b1cdbd2cSJim Jagielski {
421*b1cdbd2cSJim Jagielski public:
422*b1cdbd2cSJim Jagielski 	virtual ~XMLParagraphOnlyPropHdl_Impl ();
423*b1cdbd2cSJim Jagielski 
424*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
425*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
426*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
427*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
428*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
429*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
430*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
431*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
432*b1cdbd2cSJim Jagielski };
433*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const434*b1cdbd2cSJim Jagielski sal_Bool XMLParagraphOnlyPropHdl_Impl::importXML(
435*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
436*b1cdbd2cSJim Jagielski 	   	Any& rValue,
437*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
438*b1cdbd2cSJim Jagielski {
439*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
440*b1cdbd2cSJim Jagielski 	sal_Bool bVal = sal_False;
441*b1cdbd2cSJim Jagielski 
442*b1cdbd2cSJim Jagielski 	if( ! IsXMLToken( rStrImpValue, XML_NO_LIMIT ) )
443*b1cdbd2cSJim Jagielski 	{
444*b1cdbd2cSJim Jagielski 		sal_Int32 nValue = 0;
445*b1cdbd2cSJim Jagielski 		bRet = SvXMLUnitConverter::convertNumber( nValue, rStrImpValue );
446*b1cdbd2cSJim Jagielski 		bVal = 1 == nValue;
447*b1cdbd2cSJim Jagielski 	}
448*b1cdbd2cSJim Jagielski 
449*b1cdbd2cSJim Jagielski 	if( bRet )
450*b1cdbd2cSJim Jagielski 		rValue.setValue( &bVal, ::getBooleanCppuType() );
451*b1cdbd2cSJim Jagielski 
452*b1cdbd2cSJim Jagielski 	return bRet;
453*b1cdbd2cSJim Jagielski }
454*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const455*b1cdbd2cSJim Jagielski sal_Bool XMLParagraphOnlyPropHdl_Impl::exportXML(
456*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
457*b1cdbd2cSJim Jagielski 		const Any& rValue,
458*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
459*b1cdbd2cSJim Jagielski {
460*b1cdbd2cSJim Jagielski 	if( *(sal_Bool *)rValue.getValue() )
461*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_1 );
462*b1cdbd2cSJim Jagielski 	else
463*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_NO_LIMIT );
464*b1cdbd2cSJim Jagielski 
465*b1cdbd2cSJim Jagielski 	return sal_True;
466*b1cdbd2cSJim Jagielski }
467*b1cdbd2cSJim Jagielski 
~XMLParagraphOnlyPropHdl_Impl()468*b1cdbd2cSJim Jagielski XMLParagraphOnlyPropHdl_Impl::~XMLParagraphOnlyPropHdl_Impl()
469*b1cdbd2cSJim Jagielski {
470*b1cdbd2cSJim Jagielski }
471*b1cdbd2cSJim Jagielski 
472*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_Wrap_Enum[] =
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski 	{ XML_NONE,		    WrapTextMode_NONE },
477*b1cdbd2cSJim Jagielski 	{ XML_RUN_THROUGH,	WrapTextMode_THROUGHT },
478*b1cdbd2cSJim Jagielski 	{ XML_PARALLEL,	    WrapTextMode_PARALLEL },
479*b1cdbd2cSJim Jagielski 	{ XML_DYNAMIC,		WrapTextMode_DYNAMIC },
480*b1cdbd2cSJim Jagielski 	{ XML_LEFT,		    WrapTextMode_LEFT },
481*b1cdbd2cSJim Jagielski 	{ XML_RIGHT,		WrapTextMode_RIGHT },
482*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
483*b1cdbd2cSJim Jagielski };
484*b1cdbd2cSJim Jagielski 
485*b1cdbd2cSJim Jagielski class XMLWrapPropHdl_Impl : public XMLPropertyHandler
486*b1cdbd2cSJim Jagielski {
487*b1cdbd2cSJim Jagielski public:
488*b1cdbd2cSJim Jagielski 	virtual ~XMLWrapPropHdl_Impl ();
489*b1cdbd2cSJim Jagielski 
490*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
491*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
492*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
493*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
494*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
495*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
496*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
497*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
498*b1cdbd2cSJim Jagielski };
499*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const500*b1cdbd2cSJim Jagielski sal_Bool XMLWrapPropHdl_Impl::importXML(
501*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
502*b1cdbd2cSJim Jagielski 	   	Any& rValue,
503*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
504*b1cdbd2cSJim Jagielski {
505*b1cdbd2cSJim Jagielski 	sal_uInt16 nWrap;
506*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertEnum( nWrap, rStrImpValue,
507*b1cdbd2cSJim Jagielski 												pXML_Wrap_Enum );
508*b1cdbd2cSJim Jagielski 
509*b1cdbd2cSJim Jagielski 	if( bRet )
510*b1cdbd2cSJim Jagielski 		rValue <<= (WrapTextMode)nWrap;
511*b1cdbd2cSJim Jagielski 
512*b1cdbd2cSJim Jagielski 	return bRet;
513*b1cdbd2cSJim Jagielski }
514*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const515*b1cdbd2cSJim Jagielski sal_Bool XMLWrapPropHdl_Impl::exportXML(
516*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
517*b1cdbd2cSJim Jagielski 		const Any& rValue,
518*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
519*b1cdbd2cSJim Jagielski {
520*b1cdbd2cSJim Jagielski 	OUStringBuffer aOut;
521*b1cdbd2cSJim Jagielski 	WrapTextMode eVal;
522*b1cdbd2cSJim Jagielski 
523*b1cdbd2cSJim Jagielski 	rValue >>= eVal;
524*b1cdbd2cSJim Jagielski 
525*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertEnum( aOut, eVal, pXML_Wrap_Enum, XML_NONE );
526*b1cdbd2cSJim Jagielski 
527*b1cdbd2cSJim Jagielski 	rStrExpValue = aOut.makeStringAndClear();
528*b1cdbd2cSJim Jagielski 
529*b1cdbd2cSJim Jagielski 	return bRet;
530*b1cdbd2cSJim Jagielski }
531*b1cdbd2cSJim Jagielski 
~XMLWrapPropHdl_Impl()532*b1cdbd2cSJim Jagielski XMLWrapPropHdl_Impl::~XMLWrapPropHdl_Impl ()
533*b1cdbd2cSJim Jagielski {
534*b1cdbd2cSJim Jagielski }
535*b1cdbd2cSJim Jagielski 
536*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
537*b1cdbd2cSJim Jagielski 
538*b1cdbd2cSJim Jagielski class XMLFrameProtectPropHdl_Impl : public XMLPropertyHandler
539*b1cdbd2cSJim Jagielski {
540*b1cdbd2cSJim Jagielski 	const OUString sVal;
541*b1cdbd2cSJim Jagielski public:
XMLFrameProtectPropHdl_Impl(enum XMLTokenEnum eVal)542*b1cdbd2cSJim Jagielski 	XMLFrameProtectPropHdl_Impl( enum XMLTokenEnum eVal ) :
543*b1cdbd2cSJim Jagielski 	   	sVal( GetXMLToken(eVal) ) {}
544*b1cdbd2cSJim Jagielski 	virtual ~XMLFrameProtectPropHdl_Impl ();
545*b1cdbd2cSJim Jagielski 
546*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
547*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
548*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
549*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
550*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
551*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
552*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
553*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
554*b1cdbd2cSJim Jagielski };
555*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const556*b1cdbd2cSJim Jagielski sal_Bool XMLFrameProtectPropHdl_Impl::importXML(
557*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
558*b1cdbd2cSJim Jagielski 	   	Any& rValue,
559*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
560*b1cdbd2cSJim Jagielski {
561*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
562*b1cdbd2cSJim Jagielski 	sal_Bool bVal = sal_False;
563*b1cdbd2cSJim Jagielski 	if( ! IsXMLToken( rStrImpValue, XML_NONE ) )
564*b1cdbd2cSJim Jagielski 	{
565*b1cdbd2cSJim Jagielski 		bRet = sal_False;
566*b1cdbd2cSJim Jagielski 		SvXMLTokenEnumerator aTokenEnum( rStrImpValue );
567*b1cdbd2cSJim Jagielski 		OUString aToken;
568*b1cdbd2cSJim Jagielski 		while( aTokenEnum.getNextToken( aToken ) )
569*b1cdbd2cSJim Jagielski 		{
570*b1cdbd2cSJim Jagielski 			bRet = sal_True;
571*b1cdbd2cSJim Jagielski 			if( aToken == sVal )
572*b1cdbd2cSJim Jagielski 			{
573*b1cdbd2cSJim Jagielski 				bVal = sal_True;
574*b1cdbd2cSJim Jagielski 				break;
575*b1cdbd2cSJim Jagielski 			}
576*b1cdbd2cSJim Jagielski 		}
577*b1cdbd2cSJim Jagielski 	}
578*b1cdbd2cSJim Jagielski 
579*b1cdbd2cSJim Jagielski 	if( bRet )
580*b1cdbd2cSJim Jagielski 		rValue.setValue( &bVal, ::getBooleanCppuType() );
581*b1cdbd2cSJim Jagielski 
582*b1cdbd2cSJim Jagielski 	return bRet;
583*b1cdbd2cSJim Jagielski }
584*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const585*b1cdbd2cSJim Jagielski sal_Bool XMLFrameProtectPropHdl_Impl::exportXML(
586*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
587*b1cdbd2cSJim Jagielski 		const Any& rValue,
588*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
589*b1cdbd2cSJim Jagielski {
590*b1cdbd2cSJim Jagielski 	if( *(sal_Bool *)rValue.getValue() )
591*b1cdbd2cSJim Jagielski 	{
592*b1cdbd2cSJim Jagielski 		if( !rStrExpValue.getLength() ||
593*b1cdbd2cSJim Jagielski 			IsXMLToken( rStrExpValue, XML_NONE ) )
594*b1cdbd2cSJim Jagielski 		{
595*b1cdbd2cSJim Jagielski 	   		rStrExpValue = sVal;
596*b1cdbd2cSJim Jagielski 		}
597*b1cdbd2cSJim Jagielski 		else
598*b1cdbd2cSJim Jagielski 		{
599*b1cdbd2cSJim Jagielski 			OUStringBuffer aOut( rStrExpValue.getLength() + 1 +
600*b1cdbd2cSJim Jagielski 								 sVal.getLength() );
601*b1cdbd2cSJim Jagielski 			aOut.append( rStrExpValue );
602*b1cdbd2cSJim Jagielski 			aOut.append( (sal_Unicode)' ' );
603*b1cdbd2cSJim Jagielski 			aOut.append( sVal );
604*b1cdbd2cSJim Jagielski 			rStrExpValue = aOut.makeStringAndClear();
605*b1cdbd2cSJim Jagielski 		}
606*b1cdbd2cSJim Jagielski 	}
607*b1cdbd2cSJim Jagielski 	else if( !rStrExpValue.getLength() )
608*b1cdbd2cSJim Jagielski 	{
609*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_NONE );
610*b1cdbd2cSJim Jagielski 	}
611*b1cdbd2cSJim Jagielski 
612*b1cdbd2cSJim Jagielski 	return sal_True;
613*b1cdbd2cSJim Jagielski }
614*b1cdbd2cSJim Jagielski 
~XMLFrameProtectPropHdl_Impl()615*b1cdbd2cSJim Jagielski XMLFrameProtectPropHdl_Impl::~XMLFrameProtectPropHdl_Impl()
616*b1cdbd2cSJim Jagielski {
617*b1cdbd2cSJim Jagielski }
618*b1cdbd2cSJim Jagielski 
619*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
620*b1cdbd2cSJim Jagielski 
621*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_Anchor_Enum[] =
622*b1cdbd2cSJim Jagielski {
623*b1cdbd2cSJim Jagielski 	{ XML_CHAR,		    TextContentAnchorType_AT_CHARACTER },
624*b1cdbd2cSJim Jagielski 	{ XML_PAGE,	        TextContentAnchorType_AT_PAGE },
625*b1cdbd2cSJim Jagielski 	{ XML_FRAME,	    TextContentAnchorType_AT_FRAME },
626*b1cdbd2cSJim Jagielski 	{ XML_PARAGRAPH,		TextContentAnchorType_AT_PARAGRAPH },
627*b1cdbd2cSJim Jagielski 	{ XML_AS_CHAR,	    TextContentAnchorType_AS_CHARACTER },
628*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
629*b1cdbd2cSJim Jagielski };
630*b1cdbd2cSJim Jagielski 
631*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const632*b1cdbd2cSJim Jagielski sal_Bool XMLAnchorTypePropHdl::importXML(
633*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
634*b1cdbd2cSJim Jagielski 	   	Any& rValue,
635*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
636*b1cdbd2cSJim Jagielski {
637*b1cdbd2cSJim Jagielski 	sal_uInt16 nAnchor;
638*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertEnum( nAnchor, rStrImpValue,
639*b1cdbd2cSJim Jagielski 												pXML_Anchor_Enum );
640*b1cdbd2cSJim Jagielski 
641*b1cdbd2cSJim Jagielski 	if( bRet )
642*b1cdbd2cSJim Jagielski 		rValue <<= (TextContentAnchorType)nAnchor;
643*b1cdbd2cSJim Jagielski 
644*b1cdbd2cSJim Jagielski 	return bRet;
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const647*b1cdbd2cSJim Jagielski sal_Bool XMLAnchorTypePropHdl::exportXML(
648*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
649*b1cdbd2cSJim Jagielski 		const Any& rValue,
650*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
651*b1cdbd2cSJim Jagielski {
652*b1cdbd2cSJim Jagielski 	OUStringBuffer aOut;
653*b1cdbd2cSJim Jagielski 	TextContentAnchorType eVal;
654*b1cdbd2cSJim Jagielski 
655*b1cdbd2cSJim Jagielski 	rValue >>= eVal;
656*b1cdbd2cSJim Jagielski 
657*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertEnum( aOut, eVal, pXML_Anchor_Enum, XML_PARAGRAPH );
658*b1cdbd2cSJim Jagielski 
659*b1cdbd2cSJim Jagielski 	rStrExpValue = aOut.makeStringAndClear();
660*b1cdbd2cSJim Jagielski 
661*b1cdbd2cSJim Jagielski 	return bRet;
662*b1cdbd2cSJim Jagielski }
663*b1cdbd2cSJim Jagielski 
~XMLAnchorTypePropHdl()664*b1cdbd2cSJim Jagielski XMLAnchorTypePropHdl::~XMLAnchorTypePropHdl()
665*b1cdbd2cSJim Jagielski {
666*b1cdbd2cSJim Jagielski }
667*b1cdbd2cSJim Jagielski 
convert(const OUString & rStrImpValue,TextContentAnchorType & rType)668*b1cdbd2cSJim Jagielski sal_Bool XMLAnchorTypePropHdl::convert( const OUString& rStrImpValue,
669*b1cdbd2cSJim Jagielski 				 TextContentAnchorType& rType )
670*b1cdbd2cSJim Jagielski {
671*b1cdbd2cSJim Jagielski 	sal_uInt16 nAnchor;
672*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertEnum( nAnchor, rStrImpValue,
673*b1cdbd2cSJim Jagielski 												pXML_Anchor_Enum );
674*b1cdbd2cSJim Jagielski 	if( bRet )
675*b1cdbd2cSJim Jagielski 		rType = (TextContentAnchorType)nAnchor;
676*b1cdbd2cSJim Jagielski 	return bRet;
677*b1cdbd2cSJim Jagielski }
678*b1cdbd2cSJim Jagielski 
679*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
680*b1cdbd2cSJim Jagielski 
681*b1cdbd2cSJim Jagielski 
~XMLTextColumnsPropertyHandler()682*b1cdbd2cSJim Jagielski XMLTextColumnsPropertyHandler::~XMLTextColumnsPropertyHandler ()
683*b1cdbd2cSJim Jagielski {
684*b1cdbd2cSJim Jagielski }
685*b1cdbd2cSJim Jagielski 
equals(const Any & r1,const Any & r2) const686*b1cdbd2cSJim Jagielski bool XMLTextColumnsPropertyHandler::equals(
687*b1cdbd2cSJim Jagielski 		const Any& r1,
688*b1cdbd2cSJim Jagielski 		const Any& r2 ) const
689*b1cdbd2cSJim Jagielski {
690*b1cdbd2cSJim Jagielski 	Reference < XTextColumns > xColumns1;
691*b1cdbd2cSJim Jagielski 	r1 >>= xColumns1;
692*b1cdbd2cSJim Jagielski 
693*b1cdbd2cSJim Jagielski 	Reference < XTextColumns > xColumns2;
694*b1cdbd2cSJim Jagielski 	r2 >>= xColumns2;
695*b1cdbd2cSJim Jagielski 
696*b1cdbd2cSJim Jagielski 	if( xColumns1->getColumnCount() != xColumns2->getColumnCount() ||
697*b1cdbd2cSJim Jagielski 	  	xColumns1->getReferenceValue() != xColumns2->getReferenceValue() )
698*b1cdbd2cSJim Jagielski 		return sal_False;
699*b1cdbd2cSJim Jagielski 
700*b1cdbd2cSJim Jagielski 	Sequence < TextColumn > aColumns1 = xColumns1->getColumns();
701*b1cdbd2cSJim Jagielski 	Sequence < TextColumn > aColumns2 = xColumns2->getColumns();
702*b1cdbd2cSJim Jagielski 	sal_Int32 nCount = aColumns1.getLength();
703*b1cdbd2cSJim Jagielski 	if( aColumns2.getLength() != nCount )
704*b1cdbd2cSJim Jagielski 		return sal_False;
705*b1cdbd2cSJim Jagielski 
706*b1cdbd2cSJim Jagielski 	const TextColumn *pColumns1 = aColumns1.getArray();
707*b1cdbd2cSJim Jagielski 	const TextColumn *pColumns2 = aColumns2.getArray();
708*b1cdbd2cSJim Jagielski 
709*b1cdbd2cSJim Jagielski 	while( nCount-- )
710*b1cdbd2cSJim Jagielski 	{
711*b1cdbd2cSJim Jagielski 		if( pColumns1->Width != pColumns2->Width ||
712*b1cdbd2cSJim Jagielski 		 	pColumns1->LeftMargin != pColumns2->LeftMargin ||
713*b1cdbd2cSJim Jagielski 		 	pColumns1->RightMargin != pColumns2->RightMargin )
714*b1cdbd2cSJim Jagielski 			return sal_False;
715*b1cdbd2cSJim Jagielski 
716*b1cdbd2cSJim Jagielski 		pColumns1++;
717*b1cdbd2cSJim Jagielski 		pColumns2++;
718*b1cdbd2cSJim Jagielski 	}
719*b1cdbd2cSJim Jagielski 
720*b1cdbd2cSJim Jagielski 	return sal_True;
721*b1cdbd2cSJim Jagielski }
722*b1cdbd2cSJim Jagielski 
importXML(const OUString &,Any &,const SvXMLUnitConverter &) const723*b1cdbd2cSJim Jagielski sal_Bool XMLTextColumnsPropertyHandler::importXML(
724*b1cdbd2cSJim Jagielski 		const OUString&,
725*b1cdbd2cSJim Jagielski 	   	Any&,
726*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski 	DBG_ASSERT( !this, "columns are an element import property" );
729*b1cdbd2cSJim Jagielski 	return sal_False;
730*b1cdbd2cSJim Jagielski }
731*b1cdbd2cSJim Jagielski 
exportXML(OUString &,const Any &,const SvXMLUnitConverter &) const732*b1cdbd2cSJim Jagielski sal_Bool XMLTextColumnsPropertyHandler::exportXML(
733*b1cdbd2cSJim Jagielski 		OUString&,
734*b1cdbd2cSJim Jagielski 		const Any&,
735*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
736*b1cdbd2cSJim Jagielski {
737*b1cdbd2cSJim Jagielski 	DBG_ASSERT( !this, "columns are an element export property" );
738*b1cdbd2cSJim Jagielski 	return sal_False;
739*b1cdbd2cSJim Jagielski }
740*b1cdbd2cSJim Jagielski 
741*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
742*b1cdbd2cSJim Jagielski 
743*b1cdbd2cSJim Jagielski class XMLHoriMirrorPropHdl_Impl : public XMLPropertyHandler
744*b1cdbd2cSJim Jagielski {
745*b1cdbd2cSJim Jagielski public:
746*b1cdbd2cSJim Jagielski 	virtual ~XMLHoriMirrorPropHdl_Impl ();
747*b1cdbd2cSJim Jagielski 
748*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
749*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
750*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
751*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
752*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
753*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
754*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
755*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
756*b1cdbd2cSJim Jagielski };
757*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const758*b1cdbd2cSJim Jagielski sal_Bool XMLHoriMirrorPropHdl_Impl::importXML(
759*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
760*b1cdbd2cSJim Jagielski 	   	Any& rValue,
761*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
762*b1cdbd2cSJim Jagielski {
763*b1cdbd2cSJim Jagielski 	sal_uInt16 nHoriMirror;
764*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertEnum( nHoriMirror, rStrImpValue,
765*b1cdbd2cSJim Jagielski 												pXML_HoriMirror_Enum );
766*b1cdbd2cSJim Jagielski 
767*b1cdbd2cSJim Jagielski 	if( bRet )
768*b1cdbd2cSJim Jagielski 	{
769*b1cdbd2cSJim Jagielski 		sal_Bool bTmp = nHoriMirror != 0;
770*b1cdbd2cSJim Jagielski 		rValue.setValue( &bTmp, ::getBooleanCppuType() );
771*b1cdbd2cSJim Jagielski 	}
772*b1cdbd2cSJim Jagielski 
773*b1cdbd2cSJim Jagielski 	return bRet;
774*b1cdbd2cSJim Jagielski }
775*b1cdbd2cSJim Jagielski 
exportXML(OUString &,const Any &,const SvXMLUnitConverter &) const776*b1cdbd2cSJim Jagielski sal_Bool XMLHoriMirrorPropHdl_Impl::exportXML(
777*b1cdbd2cSJim Jagielski 		OUString&,
778*b1cdbd2cSJim Jagielski 		const Any&,
779*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
780*b1cdbd2cSJim Jagielski {
781*b1cdbd2cSJim Jagielski 	DBG_ASSERT( !this, "HorMirror properyt shouldn't be exported" );
782*b1cdbd2cSJim Jagielski 
783*b1cdbd2cSJim Jagielski 	return sal_False;
784*b1cdbd2cSJim Jagielski }
785*b1cdbd2cSJim Jagielski 
~XMLHoriMirrorPropHdl_Impl()786*b1cdbd2cSJim Jagielski XMLHoriMirrorPropHdl_Impl::~XMLHoriMirrorPropHdl_Impl ()
787*b1cdbd2cSJim Jagielski {
788*b1cdbd2cSJim Jagielski }
789*b1cdbd2cSJim Jagielski 
790*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
791*b1cdbd2cSJim Jagielski 
792*b1cdbd2cSJim Jagielski class XMLGrfMirrorPropHdl_Impl : public XMLPropertyHandler
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski 	const OUString sVal;
795*b1cdbd2cSJim Jagielski 	sal_Bool bHori;
796*b1cdbd2cSJim Jagielski 
797*b1cdbd2cSJim Jagielski public:
XMLGrfMirrorPropHdl_Impl(enum XMLTokenEnum eVal,sal_Bool bH)798*b1cdbd2cSJim Jagielski 	XMLGrfMirrorPropHdl_Impl( enum XMLTokenEnum eVal, sal_Bool bH ) :
799*b1cdbd2cSJim Jagielski 	   	sVal( GetXMLToken( eVal ) ),
800*b1cdbd2cSJim Jagielski 		bHori( bH ) {}
801*b1cdbd2cSJim Jagielski 	virtual ~XMLGrfMirrorPropHdl_Impl ();
802*b1cdbd2cSJim Jagielski 
803*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
804*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
805*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
806*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
807*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
808*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
809*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
810*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
811*b1cdbd2cSJim Jagielski };
812*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const813*b1cdbd2cSJim Jagielski sal_Bool XMLGrfMirrorPropHdl_Impl::importXML(
814*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
815*b1cdbd2cSJim Jagielski 	   	Any& rValue,
816*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
817*b1cdbd2cSJim Jagielski {
818*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
819*b1cdbd2cSJim Jagielski 	sal_Bool bVal = sal_False;
820*b1cdbd2cSJim Jagielski 	if( ! IsXMLToken( rStrImpValue, XML_NONE ) )
821*b1cdbd2cSJim Jagielski 	{
822*b1cdbd2cSJim Jagielski 		bRet = sal_False;
823*b1cdbd2cSJim Jagielski 		SvXMLTokenEnumerator aTokenEnum( rStrImpValue );
824*b1cdbd2cSJim Jagielski 		OUString aToken;
825*b1cdbd2cSJim Jagielski 		while( aTokenEnum.getNextToken( aToken ) )
826*b1cdbd2cSJim Jagielski 		{
827*b1cdbd2cSJim Jagielski 			bRet = sal_True;
828*b1cdbd2cSJim Jagielski 			if( aToken == sVal ||
829*b1cdbd2cSJim Jagielski 			 	(bHori && IsXMLToken( aToken, XML_HORIZONTAL ) ) )
830*b1cdbd2cSJim Jagielski 			{
831*b1cdbd2cSJim Jagielski 				bVal = sal_True;
832*b1cdbd2cSJim Jagielski 				break;
833*b1cdbd2cSJim Jagielski 			}
834*b1cdbd2cSJim Jagielski 		}
835*b1cdbd2cSJim Jagielski 	}
836*b1cdbd2cSJim Jagielski 
837*b1cdbd2cSJim Jagielski 	if( bRet )
838*b1cdbd2cSJim Jagielski 		rValue.setValue( &bVal, ::getBooleanCppuType() );
839*b1cdbd2cSJim Jagielski 
840*b1cdbd2cSJim Jagielski 	return bRet;
841*b1cdbd2cSJim Jagielski }
842*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const843*b1cdbd2cSJim Jagielski sal_Bool XMLGrfMirrorPropHdl_Impl::exportXML(
844*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
845*b1cdbd2cSJim Jagielski 		const Any& rValue,
846*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
847*b1cdbd2cSJim Jagielski {
848*b1cdbd2cSJim Jagielski 	if( *(sal_Bool *)rValue.getValue() )
849*b1cdbd2cSJim Jagielski 	{
850*b1cdbd2cSJim Jagielski 		if( !rStrExpValue.getLength() ||
851*b1cdbd2cSJim Jagielski 			IsXMLToken( rStrExpValue, XML_NONE ) )
852*b1cdbd2cSJim Jagielski 		{
853*b1cdbd2cSJim Jagielski 	   		rStrExpValue = sVal;
854*b1cdbd2cSJim Jagielski 		}
855*b1cdbd2cSJim Jagielski 		else if( bHori &&
856*b1cdbd2cSJim Jagielski                  // --> OD 2005-05-12 #i49139#
857*b1cdbd2cSJim Jagielski                  // XML_HORIZONTAL_ON_LEFT_PAGES and XML_HORIZONTAL_ON_RIGHT_PAGES
858*b1cdbd2cSJim Jagielski                  // are replaced by XML_HORIZONTAL_ON_EVEN and XML_HORIZONTAL_ON_ODD.
859*b1cdbd2cSJim Jagielski                  ( IsXMLToken( rStrExpValue, XML_HORIZONTAL_ON_EVEN ) ||
860*b1cdbd2cSJim Jagielski                    IsXMLToken( rStrExpValue, XML_HORIZONTAL_ON_ODD ) ))
861*b1cdbd2cSJim Jagielski                  // <--
862*b1cdbd2cSJim Jagielski 		{
863*b1cdbd2cSJim Jagielski 			rStrExpValue = GetXMLToken( XML_HORIZONTAL );
864*b1cdbd2cSJim Jagielski 		}
865*b1cdbd2cSJim Jagielski 		else
866*b1cdbd2cSJim Jagielski 		{
867*b1cdbd2cSJim Jagielski 			OUStringBuffer aOut( rStrExpValue.getLength() + 1 +
868*b1cdbd2cSJim Jagielski 								 sVal.getLength() );
869*b1cdbd2cSJim Jagielski 			aOut.append( rStrExpValue );
870*b1cdbd2cSJim Jagielski 			aOut.append( (sal_Unicode)' ' );
871*b1cdbd2cSJim Jagielski 			aOut.append( sVal );
872*b1cdbd2cSJim Jagielski 			rStrExpValue = aOut.makeStringAndClear();
873*b1cdbd2cSJim Jagielski 		}
874*b1cdbd2cSJim Jagielski 	}
875*b1cdbd2cSJim Jagielski 	else if( !rStrExpValue.getLength() )
876*b1cdbd2cSJim Jagielski 	{
877*b1cdbd2cSJim Jagielski 	   	rStrExpValue = GetXMLToken( XML_NONE );
878*b1cdbd2cSJim Jagielski 	}
879*b1cdbd2cSJim Jagielski 
880*b1cdbd2cSJim Jagielski 	return sal_True;
881*b1cdbd2cSJim Jagielski }
882*b1cdbd2cSJim Jagielski 
~XMLGrfMirrorPropHdl_Impl()883*b1cdbd2cSJim Jagielski XMLGrfMirrorPropHdl_Impl::~XMLGrfMirrorPropHdl_Impl()
884*b1cdbd2cSJim Jagielski {
885*b1cdbd2cSJim Jagielski }
886*b1cdbd2cSJim Jagielski 
887*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
888*b1cdbd2cSJim Jagielski 
889*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA pXML_Emphasize_Enum[] =
890*b1cdbd2cSJim Jagielski {
891*b1cdbd2cSJim Jagielski 	{ XML_NONE,	    FontEmphasis::NONE },
892*b1cdbd2cSJim Jagielski 	{ XML_DOT,		FontEmphasis::DOT_ABOVE },
893*b1cdbd2cSJim Jagielski 	{ XML_CIRCLE,	FontEmphasis::CIRCLE_ABOVE },
894*b1cdbd2cSJim Jagielski 	{ XML_DISC,	    FontEmphasis::DISK_ABOVE },
895*b1cdbd2cSJim Jagielski 	{ XML_ACCENT,	FontEmphasis::ACCENT_ABOVE },
896*b1cdbd2cSJim Jagielski 	{ XML_TOKEN_INVALID, 0 }
897*b1cdbd2cSJim Jagielski };
898*b1cdbd2cSJim Jagielski class XMLTextEmphasizePropHdl_Impl : public XMLPropertyHandler
899*b1cdbd2cSJim Jagielski {
900*b1cdbd2cSJim Jagielski public:
XMLTextEmphasizePropHdl_Impl()901*b1cdbd2cSJim Jagielski 	XMLTextEmphasizePropHdl_Impl() {}
902*b1cdbd2cSJim Jagielski 	virtual ~XMLTextEmphasizePropHdl_Impl();
903*b1cdbd2cSJim Jagielski 
904*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
905*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
906*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
907*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
908*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
909*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
910*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
911*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
912*b1cdbd2cSJim Jagielski };
913*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const914*b1cdbd2cSJim Jagielski sal_Bool XMLTextEmphasizePropHdl_Impl::importXML(
915*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
916*b1cdbd2cSJim Jagielski 	   	Any& rValue,
917*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
918*b1cdbd2cSJim Jagielski {
919*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
920*b1cdbd2cSJim Jagielski 	sal_uInt16 nVal = FontEmphasis::NONE;
921*b1cdbd2cSJim Jagielski 	sal_Bool bBelow = sal_False;
922*b1cdbd2cSJim Jagielski 	sal_Bool bHasPos = sal_False, bHasType = sal_False;
923*b1cdbd2cSJim Jagielski 	OUString aToken;
924*b1cdbd2cSJim Jagielski 
925*b1cdbd2cSJim Jagielski 	SvXMLTokenEnumerator aTokenEnum( rStrImpValue );
926*b1cdbd2cSJim Jagielski 	while( aTokenEnum.getNextToken( aToken ) )
927*b1cdbd2cSJim Jagielski 	{
928*b1cdbd2cSJim Jagielski 		if( !bHasPos && IsXMLToken( aToken, XML_ABOVE ) )
929*b1cdbd2cSJim Jagielski 		{
930*b1cdbd2cSJim Jagielski 			bBelow = sal_False;
931*b1cdbd2cSJim Jagielski 			bHasPos = sal_True;
932*b1cdbd2cSJim Jagielski 		}
933*b1cdbd2cSJim Jagielski 		else if( !bHasPos && IsXMLToken( aToken, XML_BELOW ) )
934*b1cdbd2cSJim Jagielski 		{
935*b1cdbd2cSJim Jagielski 			bBelow = sal_True;
936*b1cdbd2cSJim Jagielski 			bHasPos = sal_True;
937*b1cdbd2cSJim Jagielski 		}
938*b1cdbd2cSJim Jagielski 		else if( !bHasType &&
939*b1cdbd2cSJim Jagielski 			 	 SvXMLUnitConverter::convertEnum( nVal, aToken,
940*b1cdbd2cSJim Jagielski 											 pXML_Emphasize_Enum ))
941*b1cdbd2cSJim Jagielski 		{
942*b1cdbd2cSJim Jagielski 			bHasType = sal_True;
943*b1cdbd2cSJim Jagielski 		}
944*b1cdbd2cSJim Jagielski 		else
945*b1cdbd2cSJim Jagielski 		{
946*b1cdbd2cSJim Jagielski 			bRet = sal_False;
947*b1cdbd2cSJim Jagielski 			break;
948*b1cdbd2cSJim Jagielski 		}
949*b1cdbd2cSJim Jagielski 	}
950*b1cdbd2cSJim Jagielski 
951*b1cdbd2cSJim Jagielski 	if( bRet )
952*b1cdbd2cSJim Jagielski 	{
953*b1cdbd2cSJim Jagielski 		if( FontEmphasis::NONE != nVal && bBelow )
954*b1cdbd2cSJim Jagielski 			nVal += 10;
955*b1cdbd2cSJim Jagielski 		rValue <<= (sal_Int16)nVal;
956*b1cdbd2cSJim Jagielski 	}
957*b1cdbd2cSJim Jagielski 
958*b1cdbd2cSJim Jagielski 	return bRet;
959*b1cdbd2cSJim Jagielski }
960*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const961*b1cdbd2cSJim Jagielski sal_Bool XMLTextEmphasizePropHdl_Impl::exportXML(
962*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
963*b1cdbd2cSJim Jagielski 		const Any& rValue,
964*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
965*b1cdbd2cSJim Jagielski {
966*b1cdbd2cSJim Jagielski 	OUStringBuffer aOut( 15 );
967*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_True;
968*b1cdbd2cSJim Jagielski 	sal_Int16 nType = sal_Int16();
969*b1cdbd2cSJim Jagielski 	if( rValue >>= nType )
970*b1cdbd2cSJim Jagielski 	{
971*b1cdbd2cSJim Jagielski 		sal_Bool bBelow = sal_False;
972*b1cdbd2cSJim Jagielski 		if( nType > 10 )
973*b1cdbd2cSJim Jagielski 		{
974*b1cdbd2cSJim Jagielski 			bBelow = sal_True;
975*b1cdbd2cSJim Jagielski 			nType -= 10;
976*b1cdbd2cSJim Jagielski 		}
977*b1cdbd2cSJim Jagielski 		bRet = SvXMLUnitConverter::convertEnum( aOut, nType,
978*b1cdbd2cSJim Jagielski 										   pXML_Emphasize_Enum,
979*b1cdbd2cSJim Jagielski 										   XML_DOT );
980*b1cdbd2cSJim Jagielski 		if( bRet )
981*b1cdbd2cSJim Jagielski 		{
982*b1cdbd2cSJim Jagielski 			if( nType != 0 )
983*b1cdbd2cSJim Jagielski 			{
984*b1cdbd2cSJim Jagielski 				enum XMLTokenEnum ePos = bBelow ? XML_BELOW : XML_ABOVE;
985*b1cdbd2cSJim Jagielski 				aOut.append( (sal_Unicode)' ' );
986*b1cdbd2cSJim Jagielski 				aOut.append( GetXMLToken(ePos) );
987*b1cdbd2cSJim Jagielski 			}
988*b1cdbd2cSJim Jagielski 			rStrExpValue = aOut.makeStringAndClear();
989*b1cdbd2cSJim Jagielski 		}
990*b1cdbd2cSJim Jagielski 	}
991*b1cdbd2cSJim Jagielski 
992*b1cdbd2cSJim Jagielski 	return bRet;
993*b1cdbd2cSJim Jagielski }
994*b1cdbd2cSJim Jagielski 
~XMLTextEmphasizePropHdl_Impl()995*b1cdbd2cSJim Jagielski XMLTextEmphasizePropHdl_Impl::~XMLTextEmphasizePropHdl_Impl()
996*b1cdbd2cSJim Jagielski {
997*b1cdbd2cSJim Jagielski }
998*b1cdbd2cSJim Jagielski 
999*b1cdbd2cSJim Jagielski 
1000*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
1001*b1cdbd2cSJim Jagielski 
1002*b1cdbd2cSJim Jagielski class XMLTextCombineCharPropHdl_Impl : public XMLPropertyHandler
1003*b1cdbd2cSJim Jagielski {
1004*b1cdbd2cSJim Jagielski public:
XMLTextCombineCharPropHdl_Impl()1005*b1cdbd2cSJim Jagielski 	XMLTextCombineCharPropHdl_Impl() {}
1006*b1cdbd2cSJim Jagielski 	virtual ~XMLTextCombineCharPropHdl_Impl();
1007*b1cdbd2cSJim Jagielski 
1008*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
1009*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
1010*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
1011*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1012*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
1013*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
1014*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
1015*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1016*b1cdbd2cSJim Jagielski };
1017*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const1018*b1cdbd2cSJim Jagielski sal_Bool XMLTextCombineCharPropHdl_Impl::importXML(
1019*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
1020*b1cdbd2cSJim Jagielski 	   	Any& rValue,
1021*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1022*b1cdbd2cSJim Jagielski {
1023*b1cdbd2cSJim Jagielski 	if( rStrImpValue.getLength() )
1024*b1cdbd2cSJim Jagielski 		rValue <<= rStrImpValue.copy( 0, 1 );
1025*b1cdbd2cSJim Jagielski 	else
1026*b1cdbd2cSJim Jagielski 		rValue <<= rStrImpValue;
1027*b1cdbd2cSJim Jagielski 
1028*b1cdbd2cSJim Jagielski 	return sal_True;
1029*b1cdbd2cSJim Jagielski }
1030*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const1031*b1cdbd2cSJim Jagielski sal_Bool XMLTextCombineCharPropHdl_Impl::exportXML(
1032*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
1033*b1cdbd2cSJim Jagielski 		const Any& rValue,
1034*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1035*b1cdbd2cSJim Jagielski {
1036*b1cdbd2cSJim Jagielski 	rValue >>= rStrExpValue;
1037*b1cdbd2cSJim Jagielski 
1038*b1cdbd2cSJim Jagielski     // #i114107# attribute of type "character": export only if length is 1
1039*b1cdbd2cSJim Jagielski     return (1 == rStrExpValue.getLength())  ? sal_True : sal_False;
1040*b1cdbd2cSJim Jagielski }
1041*b1cdbd2cSJim Jagielski 
~XMLTextCombineCharPropHdl_Impl()1042*b1cdbd2cSJim Jagielski XMLTextCombineCharPropHdl_Impl::~XMLTextCombineCharPropHdl_Impl()
1043*b1cdbd2cSJim Jagielski {
1044*b1cdbd2cSJim Jagielski }
1045*b1cdbd2cSJim Jagielski 
1046*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
1047*b1cdbd2cSJim Jagielski 
1048*b1cdbd2cSJim Jagielski class XMLTextRelWidthHeightPropHdl_Impl : public XMLPropertyHandler
1049*b1cdbd2cSJim Jagielski {
1050*b1cdbd2cSJim Jagielski public:
XMLTextRelWidthHeightPropHdl_Impl()1051*b1cdbd2cSJim Jagielski 	XMLTextRelWidthHeightPropHdl_Impl() {}
1052*b1cdbd2cSJim Jagielski 	virtual ~XMLTextRelWidthHeightPropHdl_Impl();
1053*b1cdbd2cSJim Jagielski 
1054*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
1055*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
1056*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
1057*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1058*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
1059*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
1060*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
1061*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1062*b1cdbd2cSJim Jagielski };
1063*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const1064*b1cdbd2cSJim Jagielski sal_Bool XMLTextRelWidthHeightPropHdl_Impl::importXML(
1065*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
1066*b1cdbd2cSJim Jagielski 	   	Any& rValue,
1067*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1068*b1cdbd2cSJim Jagielski {
1069*b1cdbd2cSJim Jagielski 	sal_Bool bRet;
1070*b1cdbd2cSJim Jagielski 	sal_Int32 nValue;
1071*b1cdbd2cSJim Jagielski 	bRet = SvXMLUnitConverter::convertPercent( nValue, rStrImpValue );
1072*b1cdbd2cSJim Jagielski 	if( bRet )
1073*b1cdbd2cSJim Jagielski 		rValue <<= (sal_Int16)nValue;
1074*b1cdbd2cSJim Jagielski 
1075*b1cdbd2cSJim Jagielski 	return bRet;
1076*b1cdbd2cSJim Jagielski }
1077*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const1078*b1cdbd2cSJim Jagielski sal_Bool XMLTextRelWidthHeightPropHdl_Impl::exportXML(
1079*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
1080*b1cdbd2cSJim Jagielski 		const Any& rValue,
1081*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1082*b1cdbd2cSJim Jagielski {
1083*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_False;
1084*b1cdbd2cSJim Jagielski 	sal_Int16 nValue = sal_Int16();
1085*b1cdbd2cSJim Jagielski 	if( (rValue >>= nValue) && nValue > 0 )
1086*b1cdbd2cSJim Jagielski 	{
1087*b1cdbd2cSJim Jagielski 		OUStringBuffer aOut;
1088*b1cdbd2cSJim Jagielski 	 	SvXMLUnitConverter::convertPercent( aOut, nValue );
1089*b1cdbd2cSJim Jagielski 		rStrExpValue = aOut.makeStringAndClear();
1090*b1cdbd2cSJim Jagielski 
1091*b1cdbd2cSJim Jagielski 		bRet = sal_True;
1092*b1cdbd2cSJim Jagielski 	}
1093*b1cdbd2cSJim Jagielski 
1094*b1cdbd2cSJim Jagielski 	return bRet;
1095*b1cdbd2cSJim Jagielski }
1096*b1cdbd2cSJim Jagielski 
~XMLTextRelWidthHeightPropHdl_Impl()1097*b1cdbd2cSJim Jagielski XMLTextRelWidthHeightPropHdl_Impl::~XMLTextRelWidthHeightPropHdl_Impl()
1098*b1cdbd2cSJim Jagielski {
1099*b1cdbd2cSJim Jagielski }
1100*b1cdbd2cSJim Jagielski 
1101*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
1102*b1cdbd2cSJim Jagielski 
1103*b1cdbd2cSJim Jagielski class XMLTextSyncWidthHeightPropHdl_Impl : public XMLPropertyHandler
1104*b1cdbd2cSJim Jagielski {
1105*b1cdbd2cSJim Jagielski 	const OUString sValue;
1106*b1cdbd2cSJim Jagielski 
1107*b1cdbd2cSJim Jagielski public:
XMLTextSyncWidthHeightPropHdl_Impl(enum XMLTokenEnum eValue)1108*b1cdbd2cSJim Jagielski 	XMLTextSyncWidthHeightPropHdl_Impl( enum XMLTokenEnum eValue ) :
1109*b1cdbd2cSJim Jagielski    		sValue( GetXMLToken(eValue) )	{}
1110*b1cdbd2cSJim Jagielski 	virtual ~XMLTextSyncWidthHeightPropHdl_Impl();
1111*b1cdbd2cSJim Jagielski 
1112*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
1113*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
1114*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
1115*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1116*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
1117*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
1118*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
1119*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1120*b1cdbd2cSJim Jagielski };
1121*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const1122*b1cdbd2cSJim Jagielski sal_Bool XMLTextSyncWidthHeightPropHdl_Impl::importXML(
1123*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
1124*b1cdbd2cSJim Jagielski 	   	Any& rValue,
1125*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1126*b1cdbd2cSJim Jagielski {
1127*b1cdbd2cSJim Jagielski 	sal_Bool bValue = (rStrImpValue == sValue );
1128*b1cdbd2cSJim Jagielski 	rValue.setValue( &bValue, ::getBooleanCppuType() );
1129*b1cdbd2cSJim Jagielski 
1130*b1cdbd2cSJim Jagielski 	return sal_True;
1131*b1cdbd2cSJim Jagielski }
1132*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const1133*b1cdbd2cSJim Jagielski sal_Bool XMLTextSyncWidthHeightPropHdl_Impl::exportXML(
1134*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
1135*b1cdbd2cSJim Jagielski 		const Any& rValue,
1136*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1137*b1cdbd2cSJim Jagielski {
1138*b1cdbd2cSJim Jagielski 	sal_Bool bRet = sal_False;
1139*b1cdbd2cSJim Jagielski 	if( *(sal_Bool *)rValue.getValue() )
1140*b1cdbd2cSJim Jagielski 	{
1141*b1cdbd2cSJim Jagielski 		rStrExpValue = sValue;
1142*b1cdbd2cSJim Jagielski 		bRet = sal_True;
1143*b1cdbd2cSJim Jagielski 	}
1144*b1cdbd2cSJim Jagielski 
1145*b1cdbd2cSJim Jagielski 	return bRet;
1146*b1cdbd2cSJim Jagielski }
1147*b1cdbd2cSJim Jagielski 
~XMLTextSyncWidthHeightPropHdl_Impl()1148*b1cdbd2cSJim Jagielski XMLTextSyncWidthHeightPropHdl_Impl::~XMLTextSyncWidthHeightPropHdl_Impl()
1149*b1cdbd2cSJim Jagielski {
1150*b1cdbd2cSJim Jagielski }
1151*b1cdbd2cSJim Jagielski 
1152*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
1153*b1cdbd2cSJim Jagielski 
1154*b1cdbd2cSJim Jagielski class XMLTextRotationAnglePropHdl_Impl : public XMLPropertyHandler
1155*b1cdbd2cSJim Jagielski {
1156*b1cdbd2cSJim Jagielski 
1157*b1cdbd2cSJim Jagielski public:
XMLTextRotationAnglePropHdl_Impl()1158*b1cdbd2cSJim Jagielski 	XMLTextRotationAnglePropHdl_Impl()	{}
1159*b1cdbd2cSJim Jagielski 	virtual ~XMLTextRotationAnglePropHdl_Impl();
1160*b1cdbd2cSJim Jagielski 
1161*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
1162*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
1163*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
1164*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1165*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
1166*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
1167*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
1168*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1169*b1cdbd2cSJim Jagielski };
1170*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const1171*b1cdbd2cSJim Jagielski sal_Bool XMLTextRotationAnglePropHdl_Impl::importXML(
1172*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
1173*b1cdbd2cSJim Jagielski 	   	Any& rValue,
1174*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1175*b1cdbd2cSJim Jagielski {
1176*b1cdbd2cSJim Jagielski 	sal_Int32 nValue;
1177*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertNumber( nValue, rStrImpValue );
1178*b1cdbd2cSJim Jagielski 	if( bRet )
1179*b1cdbd2cSJim Jagielski 	{
1180*b1cdbd2cSJim Jagielski 		nValue = (nValue % 360 );
1181*b1cdbd2cSJim Jagielski 		if( nValue < 0 )
1182*b1cdbd2cSJim Jagielski 			nValue = 360 + nValue;
1183*b1cdbd2cSJim Jagielski 		sal_Int16 nAngle;
1184*b1cdbd2cSJim Jagielski 		if( nValue < 45 || nValue > 315 )
1185*b1cdbd2cSJim Jagielski 			nAngle = 0;
1186*b1cdbd2cSJim Jagielski 		else if( nValue < 180 )
1187*b1cdbd2cSJim Jagielski 			nAngle = 900;
1188*b1cdbd2cSJim Jagielski 		else /* if nValalue <= 315 ) */
1189*b1cdbd2cSJim Jagielski 			nAngle = 2700;
1190*b1cdbd2cSJim Jagielski 		rValue <<= nAngle;
1191*b1cdbd2cSJim Jagielski 	}
1192*b1cdbd2cSJim Jagielski 
1193*b1cdbd2cSJim Jagielski 	return bRet;
1194*b1cdbd2cSJim Jagielski }
1195*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const1196*b1cdbd2cSJim Jagielski sal_Bool XMLTextRotationAnglePropHdl_Impl::exportXML(
1197*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
1198*b1cdbd2cSJim Jagielski 		const Any& rValue,
1199*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1200*b1cdbd2cSJim Jagielski {
1201*b1cdbd2cSJim Jagielski 	sal_Int16 nAngle = sal_Int16();
1202*b1cdbd2cSJim Jagielski 	sal_Bool bRet = ( rValue >>= nAngle );
1203*b1cdbd2cSJim Jagielski 	if( bRet )
1204*b1cdbd2cSJim Jagielski 	{
1205*b1cdbd2cSJim Jagielski 		OUStringBuffer aOut;
1206*b1cdbd2cSJim Jagielski 		SvXMLUnitConverter::convertNumber( aOut, nAngle / 10 );
1207*b1cdbd2cSJim Jagielski 		rStrExpValue = aOut.makeStringAndClear();
1208*b1cdbd2cSJim Jagielski 	}
1209*b1cdbd2cSJim Jagielski 	OSL_ENSURE( bRet, "illegal rotation angle" );
1210*b1cdbd2cSJim Jagielski 
1211*b1cdbd2cSJim Jagielski 	return bRet;
1212*b1cdbd2cSJim Jagielski }
1213*b1cdbd2cSJim Jagielski 
~XMLTextRotationAnglePropHdl_Impl()1214*b1cdbd2cSJim Jagielski XMLTextRotationAnglePropHdl_Impl::~XMLTextRotationAnglePropHdl_Impl()
1215*b1cdbd2cSJim Jagielski {
1216*b1cdbd2cSJim Jagielski }
1217*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
1218*b1cdbd2cSJim Jagielski class XMLNumber8OneBasedHdl : public XMLPropertyHandler
1219*b1cdbd2cSJim Jagielski {
1220*b1cdbd2cSJim Jagielski 
1221*b1cdbd2cSJim Jagielski public:
XMLNumber8OneBasedHdl()1222*b1cdbd2cSJim Jagielski 	XMLNumber8OneBasedHdl()	{}
~XMLNumber8OneBasedHdl()1223*b1cdbd2cSJim Jagielski 	virtual ~XMLNumber8OneBasedHdl() {};
1224*b1cdbd2cSJim Jagielski 
1225*b1cdbd2cSJim Jagielski 	virtual sal_Bool importXML(
1226*b1cdbd2cSJim Jagielski 			const ::rtl::OUString& rStrImpValue,
1227*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Any& rValue,
1228*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1229*b1cdbd2cSJim Jagielski 	virtual sal_Bool exportXML(
1230*b1cdbd2cSJim Jagielski 			::rtl::OUString& rStrExpValue,
1231*b1cdbd2cSJim Jagielski 			const ::com::sun::star::uno::Any& rValue,
1232*b1cdbd2cSJim Jagielski 			const SvXMLUnitConverter& ) const;
1233*b1cdbd2cSJim Jagielski };
1234*b1cdbd2cSJim Jagielski 
importXML(const OUString & rStrImpValue,Any & rValue,const SvXMLUnitConverter &) const1235*b1cdbd2cSJim Jagielski sal_Bool XMLNumber8OneBasedHdl::importXML(
1236*b1cdbd2cSJim Jagielski 		const OUString& rStrImpValue,
1237*b1cdbd2cSJim Jagielski 	   	Any& rValue,
1238*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1239*b1cdbd2cSJim Jagielski {
1240*b1cdbd2cSJim Jagielski 	sal_Int32 nValue = 0;
1241*b1cdbd2cSJim Jagielski 	sal_Bool bRet = SvXMLUnitConverter::convertNumber( nValue, rStrImpValue );
1242*b1cdbd2cSJim Jagielski     if( bRet )
1243*b1cdbd2cSJim Jagielski         rValue <<= static_cast<sal_Int8>( nValue - 1 );
1244*b1cdbd2cSJim Jagielski 	return bRet;
1245*b1cdbd2cSJim Jagielski }
1246*b1cdbd2cSJim Jagielski 
exportXML(OUString & rStrExpValue,const Any & rValue,const SvXMLUnitConverter &) const1247*b1cdbd2cSJim Jagielski sal_Bool XMLNumber8OneBasedHdl::exportXML(
1248*b1cdbd2cSJim Jagielski 		OUString& rStrExpValue,
1249*b1cdbd2cSJim Jagielski 		const Any& rValue,
1250*b1cdbd2cSJim Jagielski 		const SvXMLUnitConverter& ) const
1251*b1cdbd2cSJim Jagielski {
1252*b1cdbd2cSJim Jagielski 	sal_Int8 nValue = sal_Int8();
1253*b1cdbd2cSJim Jagielski 	sal_Bool bRet = ( rValue >>= nValue );
1254*b1cdbd2cSJim Jagielski     if( bRet )
1255*b1cdbd2cSJim Jagielski 	{
1256*b1cdbd2cSJim Jagielski         OUStringBuffer aOut;
1257*b1cdbd2cSJim Jagielski 	 	SvXMLUnitConverter::convertNumber( aOut, nValue + 1 );
1258*b1cdbd2cSJim Jagielski 		rStrExpValue = aOut.makeStringAndClear();
1259*b1cdbd2cSJim Jagielski 	}
1260*b1cdbd2cSJim Jagielski 	return bRet;
1261*b1cdbd2cSJim Jagielski }
1262*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
1263*b1cdbd2cSJim Jagielski class XMLTextPropertyHandlerFactory_Impl
1264*b1cdbd2cSJim Jagielski {
1265*b1cdbd2cSJim Jagielski public:
1266*b1cdbd2cSJim Jagielski 	const XMLPropertyHandler *GetPropertyHandler( sal_Int32 nType ) const;
1267*b1cdbd2cSJim Jagielski 
1268*b1cdbd2cSJim Jagielski 	XMLTextPropertyHandlerFactory_Impl();
1269*b1cdbd2cSJim Jagielski 	~XMLTextPropertyHandlerFactory_Impl();
1270*b1cdbd2cSJim Jagielski };
1271*b1cdbd2cSJim Jagielski 
GetPropertyHandler(sal_Int32 nType) const1272*b1cdbd2cSJim Jagielski const XMLPropertyHandler *XMLTextPropertyHandlerFactory_Impl::GetPropertyHandler
1273*b1cdbd2cSJim Jagielski 	( sal_Int32 nType ) const
1274*b1cdbd2cSJim Jagielski {
1275*b1cdbd2cSJim Jagielski 	const XMLPropertyHandler* pHdl = 0;
1276*b1cdbd2cSJim Jagielski 	switch( nType )
1277*b1cdbd2cSJim Jagielski 	{
1278*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_DROPCAP:
1279*b1cdbd2cSJim Jagielski 		pHdl = new XMLDropCapPropHdl_Impl;
1280*b1cdbd2cSJim Jagielski 		break;
1281*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_WRAP:
1282*b1cdbd2cSJim Jagielski 		pHdl = new XMLWrapPropHdl_Impl;
1283*b1cdbd2cSJim Jagielski 		break;
1284*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_PARAGRAPH_ONLY:
1285*b1cdbd2cSJim Jagielski 		pHdl = new XMLParagraphOnlyPropHdl_Impl;
1286*b1cdbd2cSJim Jagielski 		break;
1287*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_WRAP_OUTSIDE:
1288*b1cdbd2cSJim Jagielski 		pHdl = new XMLContourModePropHdl_Impl;
1289*b1cdbd2cSJim Jagielski 		break;
1290*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_OPAQUE:
1291*b1cdbd2cSJim Jagielski 		pHdl = new XMLOpaquePropHdl_Impl;
1292*b1cdbd2cSJim Jagielski 		break;
1293*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_PROTECT_CONTENT:
1294*b1cdbd2cSJim Jagielski 		pHdl = new XMLFrameProtectPropHdl_Impl( XML_CONTENT );
1295*b1cdbd2cSJim Jagielski 		break;
1296*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_PROTECT_SIZE:
1297*b1cdbd2cSJim Jagielski 		pHdl = new XMLFrameProtectPropHdl_Impl( XML_SIZE );
1298*b1cdbd2cSJim Jagielski 		break;
1299*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_PROTECT_POSITION:
1300*b1cdbd2cSJim Jagielski 		pHdl = new XMLFrameProtectPropHdl_Impl( XML_POSITION );
1301*b1cdbd2cSJim Jagielski 		break;
1302*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_ANCHOR_TYPE:
1303*b1cdbd2cSJim Jagielski 		pHdl = new XMLAnchorTypePropHdl;
1304*b1cdbd2cSJim Jagielski 		break;
1305*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_COLUMNS:
1306*b1cdbd2cSJim Jagielski 		pHdl = new XMLTextColumnsPropertyHandler;
1307*b1cdbd2cSJim Jagielski 		break;
1308*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_HORIZONTAL_POS:
1309*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_HoriPos_Enum, XML_TOKEN_INVALID );
1310*b1cdbd2cSJim Jagielski 		break;
1311*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_HORIZONTAL_POS_MIRRORED:
1312*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_HoriPosMirrored_Enum, XML_TOKEN_INVALID );
1313*b1cdbd2cSJim Jagielski 		break;
1314*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_HORIZONTAL_REL:
1315*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_HoriRel_Enum, XML_TOKEN_INVALID );
1316*b1cdbd2cSJim Jagielski 		break;
1317*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_HORIZONTAL_REL_FRAME:
1318*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_HoriRelFrame_Enum, XML_TOKEN_INVALID );
1319*b1cdbd2cSJim Jagielski 		break;
1320*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_HORIZONTAL_MIRROR:
1321*b1cdbd2cSJim Jagielski 		pHdl = new XMLHoriMirrorPropHdl_Impl;
1322*b1cdbd2cSJim Jagielski 		break;
1323*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_VERTICAL_POS:
1324*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_VertPos_Enum, XML_TOKEN_INVALID );
1325*b1cdbd2cSJim Jagielski 		break;
1326*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_VERTICAL_POS_AT_CHAR:
1327*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_VertPosAtChar_Enum, XML_TOKEN_INVALID );
1328*b1cdbd2cSJim Jagielski 		break;
1329*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_VERTICAL_REL:
1330*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_VertRel_Enum, XML_TOKEN_INVALID );
1331*b1cdbd2cSJim Jagielski 		break;
1332*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_VERTICAL_REL_PAGE:
1333*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_VertRelPage_Enum, XML_TOKEN_INVALID );
1334*b1cdbd2cSJim Jagielski 		break;
1335*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_VERTICAL_REL_FRAME:
1336*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_VertRelFrame_Enum, XML_TOKEN_INVALID );
1337*b1cdbd2cSJim Jagielski 		break;
1338*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_VERTICAL_REL_AS_CHAR:
1339*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_VertRelAsChar_Enum, XML_TOKEN_INVALID );
1340*b1cdbd2cSJim Jagielski 		break;
1341*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_MIRROR_VERTICAL:
1342*b1cdbd2cSJim Jagielski 		pHdl = new XMLGrfMirrorPropHdl_Impl( XML_VERTICAL, sal_False );
1343*b1cdbd2cSJim Jagielski 		break;
1344*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_MIRROR_HORIZONTAL_LEFT:
1345*b1cdbd2cSJim Jagielski         // --> OD 2005-05-12 #i49139#
1346*b1cdbd2cSJim Jagielski         // XML_HORIZONTAL_ON_LEFT_PAGES is replaced by XML_HORIZONTAL_ON_EVEN.
1347*b1cdbd2cSJim Jagielski         pHdl = new XMLGrfMirrorPropHdl_Impl( XML_HORIZONTAL_ON_EVEN, sal_True );
1348*b1cdbd2cSJim Jagielski         // <--
1349*b1cdbd2cSJim Jagielski 		break;
1350*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_MIRROR_HORIZONTAL_RIGHT:
1351*b1cdbd2cSJim Jagielski         // --> OD 2005-05-12 #i49139#
1352*b1cdbd2cSJim Jagielski         // XML_HORIZONTAL_ON_RIGHT_PAGES is replaced by XML_HORIZONTAL_ON_ODD.
1353*b1cdbd2cSJim Jagielski         pHdl = new XMLGrfMirrorPropHdl_Impl( XML_HORIZONTAL_ON_ODD, sal_True );
1354*b1cdbd2cSJim Jagielski         // <--
1355*b1cdbd2cSJim Jagielski 		break;
1356*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_CLIP:
1357*b1cdbd2cSJim Jagielski 		pHdl = new XMLClipPropertyHandler( sal_False );
1358*b1cdbd2cSJim Jagielski 		break;
1359*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_CLIP11:
1360*b1cdbd2cSJim Jagielski 		pHdl = new XMLClipPropertyHandler( sal_True );
1361*b1cdbd2cSJim Jagielski 		break;
1362*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_EMPHASIZE:
1363*b1cdbd2cSJim Jagielski 		pHdl = new XMLTextEmphasizePropHdl_Impl;
1364*b1cdbd2cSJim Jagielski 		break;
1365*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_COMBINE:
1366*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl( GetXMLToken( XML_LINES ),
1367*b1cdbd2cSJim Jagielski                                             GetXMLToken( XML_NONE ) );
1368*b1cdbd2cSJim Jagielski 		break;
1369*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_COMBINE_CHARACTERS:
1370*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl( GetXMLToken( XML_LETTERS ),
1371*b1cdbd2cSJim Jagielski                                             GetXMLToken( XML_NONE ) );
1372*b1cdbd2cSJim Jagielski 		break;
1373*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_COMBINECHAR:
1374*b1cdbd2cSJim Jagielski 		pHdl = new XMLTextCombineCharPropHdl_Impl;
1375*b1cdbd2cSJim Jagielski 		break;
1376*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_AUTOSPACE:
1377*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl( GetXMLToken( XML_IDEOGRAPH_ALPHA ),
1378*b1cdbd2cSJim Jagielski                                             GetXMLToken( XML_NONE ) );
1379*b1cdbd2cSJim Jagielski 		break;
1380*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_PUNCTUATION_WRAP:
1381*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl( GetXMLToken( XML_HANGING ),
1382*b1cdbd2cSJim Jagielski                                             GetXMLToken( XML_SIMPLE ) );
1383*b1cdbd2cSJim Jagielski 		break;
1384*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_LINE_BREAK:
1385*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl( GetXMLToken( XML_STRICT ),
1386*b1cdbd2cSJim Jagielski                                             GetXMLToken( XML_NORMAL ) );
1387*b1cdbd2cSJim Jagielski 		break;
1388*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_REL_WIDTH_HEIGHT:
1389*b1cdbd2cSJim Jagielski 		pHdl = new XMLTextRelWidthHeightPropHdl_Impl;
1390*b1cdbd2cSJim Jagielski 		break;
1391*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_SYNC_WIDTH_HEIGHT:
1392*b1cdbd2cSJim Jagielski 		pHdl = new XMLTextSyncWidthHeightPropHdl_Impl( XML_SCALE );
1393*b1cdbd2cSJim Jagielski 		break;
1394*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_SYNC_WIDTH_HEIGHT_MIN:
1395*b1cdbd2cSJim Jagielski 		pHdl = new XMLTextSyncWidthHeightPropHdl_Impl( XML_SCALE_MIN );
1396*b1cdbd2cSJim Jagielski 		break;
1397*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_RUBY_ADJUST:
1398*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_RubyAdjust_Enum, XML_TOKEN_INVALID );
1399*b1cdbd2cSJim Jagielski 		break;
1400*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_FONT_RELIEF:
1401*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_FontRelief_Enum, XML_TOKEN_INVALID );
1402*b1cdbd2cSJim Jagielski 		break;
1403*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_ROTATION_ANGLE:
1404*b1cdbd2cSJim Jagielski 		pHdl = new XMLTextRotationAnglePropHdl_Impl;
1405*b1cdbd2cSJim Jagielski 		break;
1406*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_ROTATION_SCALE:
1407*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl( GetXMLToken( XML_FIXED ),
1408*b1cdbd2cSJim Jagielski                                             GetXMLToken( XML_LINE_HEIGHT ) );
1409*b1cdbd2cSJim Jagielski 		break;
1410*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_VERTICAL_ALIGN:
1411*b1cdbd2cSJim Jagielski 		pHdl = new XMLConstantsPropertyHandler( pXML_VerticalAlign_Enum, XML_TOKEN_INVALID );
1412*b1cdbd2cSJim Jagielski 		break;
1413*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_RUBY_POSITION:
1414*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl( ::xmloff::token::XML_ABOVE,
1415*b1cdbd2cSJim Jagielski 											::xmloff::token::XML_BELOW );
1416*b1cdbd2cSJim Jagielski 		break;
1417*b1cdbd2cSJim Jagielski     // OD 2004-05-05 #i28701#
1418*b1cdbd2cSJim Jagielski     case XML_TYPE_WRAP_INFLUENCE_ON_POSITION:
1419*b1cdbd2cSJim Jagielski         pHdl = new XMLConstantsPropertyHandler( pXML_WrapInfluenceOnPosition_Enum,
1420*b1cdbd2cSJim Jagielski                                                 XML_TOKEN_INVALID );
1421*b1cdbd2cSJim Jagielski         break;
1422*b1cdbd2cSJim Jagielski     case XML_TYPE_BORDER_MODEL:
1423*b1cdbd2cSJim Jagielski         pHdl = new XMLNamedBoolPropertyHdl( xmloff::token::XML_COLLAPSING,
1424*b1cdbd2cSJim Jagielski                                             xmloff::token::XML_SEPARATING );
1425*b1cdbd2cSJim Jagielski         break;
1426*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_LINE_MODE:
1427*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl(
1428*b1cdbd2cSJim Jagielski 									::xmloff::token::XML_SKIP_WHITE_SPACE,
1429*b1cdbd2cSJim Jagielski                                     ::xmloff::token::XML_CONTINUOUS);
1430*b1cdbd2cSJim Jagielski 		break;
1431*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_KEEP:
1432*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl(
1433*b1cdbd2cSJim Jagielski 									::xmloff::token::XML_ALWAYS,
1434*b1cdbd2cSJim Jagielski                                     ::xmloff::token::XML_AUTO);
1435*b1cdbd2cSJim Jagielski 		break;
1436*b1cdbd2cSJim Jagielski 	case XML_TYPE_TEXT_NKEEP:
1437*b1cdbd2cSJim Jagielski 		pHdl = new XMLNamedBoolPropertyHdl(
1438*b1cdbd2cSJim Jagielski 									::xmloff::token::XML_AUTO,
1439*b1cdbd2cSJim Jagielski                                     ::xmloff::token::XML_ALWAYS);
1440*b1cdbd2cSJim Jagielski 		break;
1441*b1cdbd2cSJim Jagielski     case XML_TYPE_TEXT_NUMBER8_ONE_BASED:
1442*b1cdbd2cSJim Jagielski         pHdl = new XMLNumber8OneBasedHdl();
1443*b1cdbd2cSJim Jagielski         break;
1444*b1cdbd2cSJim Jagielski 	}
1445*b1cdbd2cSJim Jagielski 
1446*b1cdbd2cSJim Jagielski 	return pHdl;
1447*b1cdbd2cSJim Jagielski }
1448*b1cdbd2cSJim Jagielski 
XMLTextPropertyHandlerFactory_Impl()1449*b1cdbd2cSJim Jagielski XMLTextPropertyHandlerFactory_Impl::XMLTextPropertyHandlerFactory_Impl()
1450*b1cdbd2cSJim Jagielski {
1451*b1cdbd2cSJim Jagielski }
1452*b1cdbd2cSJim Jagielski 
~XMLTextPropertyHandlerFactory_Impl()1453*b1cdbd2cSJim Jagielski XMLTextPropertyHandlerFactory_Impl::~XMLTextPropertyHandlerFactory_Impl()
1454*b1cdbd2cSJim Jagielski {
1455*b1cdbd2cSJim Jagielski }
1456*b1cdbd2cSJim Jagielski 
1457*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------
1458*b1cdbd2cSJim Jagielski 
XMLTextPropertyHandlerFactory()1459*b1cdbd2cSJim Jagielski XMLTextPropertyHandlerFactory::XMLTextPropertyHandlerFactory() :
1460*b1cdbd2cSJim Jagielski 	XMLPropertyHandlerFactory(),
1461*b1cdbd2cSJim Jagielski    pImpl( new XMLTextPropertyHandlerFactory_Impl )
1462*b1cdbd2cSJim Jagielski {
1463*b1cdbd2cSJim Jagielski }
1464*b1cdbd2cSJim Jagielski 
~XMLTextPropertyHandlerFactory()1465*b1cdbd2cSJim Jagielski XMLTextPropertyHandlerFactory::~XMLTextPropertyHandlerFactory()
1466*b1cdbd2cSJim Jagielski {
1467*b1cdbd2cSJim Jagielski 	delete pImpl;
1468*b1cdbd2cSJim Jagielski }
1469*b1cdbd2cSJim Jagielski 
GetPropertyHandler(sal_Int32 nType) const1470*b1cdbd2cSJim Jagielski const XMLPropertyHandler *XMLTextPropertyHandlerFactory::GetPropertyHandler(
1471*b1cdbd2cSJim Jagielski 		sal_Int32 nType ) const
1472*b1cdbd2cSJim Jagielski {
1473*b1cdbd2cSJim Jagielski 	const XMLPropertyHandler *pHdl =
1474*b1cdbd2cSJim Jagielski 		XMLPropertyHandlerFactory::GetPropertyHandler( nType );
1475*b1cdbd2cSJim Jagielski 
1476*b1cdbd2cSJim Jagielski 	if( !pHdl )
1477*b1cdbd2cSJim Jagielski 	{
1478*b1cdbd2cSJim Jagielski 		const XMLPropertyHandler *pNewHdl = pImpl->GetPropertyHandler( nType );
1479*b1cdbd2cSJim Jagielski 
1480*b1cdbd2cSJim Jagielski 		if( pNewHdl )
1481*b1cdbd2cSJim Jagielski 			PutHdlCache( nType, pNewHdl );
1482*b1cdbd2cSJim Jagielski 
1483*b1cdbd2cSJim Jagielski 		pHdl = pNewHdl;
1484*b1cdbd2cSJim Jagielski 	}
1485*b1cdbd2cSJim Jagielski 
1486*b1cdbd2cSJim Jagielski 	return pHdl;
1487*b1cdbd2cSJim Jagielski }
1488*b1cdbd2cSJim Jagielski 
1489*b1cdbd2cSJim Jagielski 
1490