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