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