xref: /trunk/main/xmloff/source/style/xmlbahdl.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _XMLOFF_PROPERTYHANDLER_BASICTYPES_HXX
29 #define _XMLOFF_PROPERTYHANDLER_BASICTYPES_HXX
30 
31 #include <xmloff/xmlprhdl.hxx>
32 #include <rtl/ustrbuf.hxx>
33 #include <xmloff/xmltoken.hxx>
34 
35 
36 /**
37     PropertyHandler for the XML-data-type: XML_TYPE_NUMBER
38 */
39 class XMLNumberPropHdl : public XMLPropertyHandler
40 {
41     sal_Int8 nBytes;
42 
43 public:
44     XMLNumberPropHdl( sal_Int8 nB=4 ) : nBytes( nB ) {}
45     virtual ~XMLNumberPropHdl();
46 
47     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
48     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
49 };
50 
51 /**
52     PropertyHandler for the XML-data-type: XML_TYPE_NUMBER_NONE
53 */
54 class XMLNumberNonePropHdl : public XMLPropertyHandler
55 {
56     ::rtl::OUString sZeroStr;
57     sal_Int8        nBytes;
58 public:
59     XMLNumberNonePropHdl( sal_Int8 nB = 4 );
60     XMLNumberNonePropHdl( enum ::xmloff::token::XMLTokenEnum eZeroString, sal_Int8 nB = 4 );
61     virtual ~XMLNumberNonePropHdl();
62 
63     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
64     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
65 };
66 
67 /**
68     PropertyHandler for the XML-data-type: XML_TYPE_MEASURE
69 */
70 class XMLMeasurePropHdl : public XMLPropertyHandler
71 {
72     sal_Int8 nBytes;
73 public:
74     XMLMeasurePropHdl( sal_Int8 nB=4 ) : nBytes( nB ) {}
75     virtual ~XMLMeasurePropHdl();
76 
77     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
78     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
79 };
80 
81 /**
82     PropertyHandler for the XML-data-type: XML_TYPE_PERCENT
83 */
84 class XMLPercentPropHdl : public XMLPropertyHandler
85 {
86     sal_Int8 nBytes;
87 public:
88     XMLPercentPropHdl( sal_Int8 nB=4 ) : nBytes( nB ) {}
89     virtual ~XMLPercentPropHdl();
90 
91     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
92     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
93 };
94 
95 /**
96     PropertyHandler for the XML-data-type: XML_TYPE_PERCENT
97     that is mapped on a double from 0.0 to 1.0
98 */
99 class XMLDoublePercentPropHdl : public XMLPropertyHandler
100 {
101     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
102     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
103 };
104 
105 /**
106     PropertyHandler for the XML-data-type: XML_TYPE_NEG_PERCENT
107 */
108 class XMLNegPercentPropHdl : public XMLPropertyHandler
109 {
110     sal_Int8 nBytes;
111 public:
112     XMLNegPercentPropHdl( sal_Int8 nB=4 ) : nBytes( nB ) {}
113     virtual ~XMLNegPercentPropHdl();
114 
115     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
116     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
117 };
118 
119 /**
120     PropertyHandler for the XML-data-type: XML_TYPE_PERCENT
121 */
122 class XMLMeasurePxPropHdl : public XMLPropertyHandler
123 {
124     sal_Int8 nBytes;
125 public:
126     XMLMeasurePxPropHdl( sal_Int8 nB=4 ) : nBytes( nB ) {}
127     virtual ~XMLMeasurePxPropHdl();
128 
129     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
130     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
131 };
132 
133 /**
134     PropertyHandler for the XML-data-type: XML_TYPE_BOOL
135 */
136 class XMLBoolPropHdl : public XMLPropertyHandler
137 {
138 public:
139     virtual ~XMLBoolPropHdl();
140 
141     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
142     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
143 };
144 
145 /**
146     PropertyHandler for the XML-data-type: XML_TYPE_COLOR
147 */
148 class XMLColorPropHdl : public XMLPropertyHandler
149 {
150 public:
151     virtual ~XMLColorPropHdl();
152 
153     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
154     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
155 };
156 
157 /**
158     PropertyHandler for the XML-data-type: XML_TYPE_STRING
159 */
160 class XMLStringPropHdl : public XMLPropertyHandler
161 {
162 public:
163     virtual ~XMLStringPropHdl();
164 
165     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
166     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
167 };
168 
169 /**
170     PropertyHandler for the XML-data-type: XML_TYPE_STYLENAME
171 */
172 class XMLStyleNamePropHdl : public XMLStringPropHdl
173 {
174 public:
175     virtual ~XMLStyleNamePropHdl();
176 
177     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
178 };
179 
180 
181 /**
182     PropertyHandler for the XML-data-type: XML_TYPE_DOUBLE
183 */
184 class XMLDoublePropHdl : public XMLPropertyHandler
185 {
186 public:
187     virtual ~XMLDoublePropHdl();
188 
189     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
190     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
191 };
192 
193 /**
194     PropertyHandler for the XML-data-type: XML_TYPE_NBOOL
195 */
196 class XMLNBoolPropHdl : public XMLPropertyHandler
197 {
198 public:
199     virtual ~XMLNBoolPropHdl();
200 
201     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
202     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
203 };
204 
205 /**
206     PropertyHandler for the XML-data-type: XML_TYPE_COLORTRANSPARENT
207 */
208 class XMLColorTransparentPropHdl : public XMLPropertyHandler
209 {
210     const ::rtl::OUString sTransparent;
211 
212 public:
213     XMLColorTransparentPropHdl( enum ::xmloff::token::XMLTokenEnum eTransparent = xmloff::token::XML_TOKEN_INVALID );
214     virtual ~XMLColorTransparentPropHdl();
215 
216     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
217     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
218 };
219 
220 /**
221     PropertyHandler for the XML-data-type: XML_TYPE_ISTRANSPARENT
222 */
223 class XMLIsTransparentPropHdl : public XMLPropertyHandler
224 {
225     const ::rtl::OUString sTransparent;
226     sal_Bool bTransPropValue;
227 
228 public:
229     XMLIsTransparentPropHdl( enum ::xmloff::token::XMLTokenEnum eTransparent = xmloff::token::XML_TOKEN_INVALID,
230                              sal_Bool bTransPropValue = sal_True );
231     virtual ~XMLIsTransparentPropHdl();
232 
233     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
234     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
235 };
236 
237 /**
238     PropertyHandler for the XML-data-type: XML_TYPE_COLORAUTO
239 */
240 class XMLColorAutoPropHdl : public XMLPropertyHandler
241 {
242 public:
243     XMLColorAutoPropHdl();
244     virtual ~XMLColorAutoPropHdl();
245 
246     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
247     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
248 };
249 
250 /**
251     PropertyHandler for the XML-data-type: XML_TYPE_COLORISAUTO
252 */
253 class XMLIsAutoColorPropHdl : public XMLPropertyHandler
254 {
255 public:
256     XMLIsAutoColorPropHdl();
257     virtual ~XMLIsAutoColorPropHdl();
258 
259     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
260     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
261 };
262 
263 
264 /**
265     PropertyHandler for properties that cannot make use of importXML
266     and exportXML methods, but can make use of the default comparison
267 */
268 class XMLCompareOnlyPropHdl : public XMLPropertyHandler
269 {
270 public:
271     virtual ~XMLCompareOnlyPropHdl();
272 
273     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
274     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
275 };
276 
277 /**
278     PropertyHandler for the XML-data-type: XML_TYPE_NUMBER_NO_ZERO
279     Reads/writes numeric properties, but fails for the value zero
280     (i.e., a value 0 property will not be written)
281 */
282 class XMLNumberWithoutZeroPropHdl : public XMLPropertyHandler
283 {
284     sal_Int8        nBytes;
285 public:
286     XMLNumberWithoutZeroPropHdl( sal_Int8 nB = 4 );
287     virtual ~XMLNumberWithoutZeroPropHdl();
288 
289     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
290     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
291 };
292 
293 /**
294     PropertyHandler for the XML-data-type: XML_TYPE_NUMBER16_AUTO
295     Reads/writes numeric properties with special handling for the value zero
296     (i.e., a value 0 property will be written as "auto")
297 */
298 class XMLNumberWithAutoInsteadZeroPropHdl : public XMLNumberWithoutZeroPropHdl
299 {
300 public:
301     virtual ~XMLNumberWithAutoInsteadZeroPropHdl();
302 
303     virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
304     virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
305 };
306 
307 #endif      // _XMLOFF_PROPERTYHANDLER_BASICTYPES_HXX
308