LibreOffice Module xmloff (master) 1
xmluconv.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#ifndef INCLUDED_XMLOFF_XMLUCONV_HXX
21#define INCLUDED_XMLOFF_XMLUCONV_HXX
22
23#include <sal/config.h>
24#include <xmloff/dllapi.h>
25#include <sal/types.h>
26
27#include <memory>
28
29#include <rtl/ustring.hxx>
30#include <rtl/ustrbuf.hxx>
31#include <xmloff/xmltoken.hxx>
32
33#include <unotools/saveopt.hxx>
34
35#include <tools/fldunit.hxx>
36
37namespace com::sun::star {
38 namespace text { class XNumberingTypeInfo; }
39}
40
41namespace basegfx
42{
43 class B3DVector;
44}
45
46namespace com::sun::star::beans { class XPropertySet; }
47namespace com::sun::star::beans { struct PropertyValue; }
48namespace com::sun::star::drawing { struct Position3D; }
49namespace com::sun::star::frame { class XModel; }
50namespace com::sun::star::uno { class XComponentContext; }
51namespace com::sun::star::uno { template <class E> class Sequence; }
52namespace com::sun::star::util { struct Date; }
53template <typename EnumT> struct SvXMLEnumMapEntry;
54template <typename EnumT> struct SvXMLEnumStringMapEntry;
55
57{
58private:
59 std::u16string_view maTokenString;
62
63public:
64 SvXMLTokenEnumerator( std::u16string_view rString, sal_Unicode cSeparator = u' ' );
67 SvXMLTokenEnumerator( OUString&& , sal_Unicode cSeparator = u' ' ) = delete;
68
69 bool getNextToken( std::u16string_view& rToken );
70};
71
83{
84private:
87
88 struct SAL_DLLPRIVATE Impl;
89 ::std::unique_ptr<Impl> m_pImpl;
90
91public:
96 const css::uno::Reference< css::uno::XComponentContext >& xContext,
97 sal_Int16 eCoreMeasureUnit /*css::util::MeasureUnit*/,
98 sal_Int16 eXMLMeasureUnit /*css::util::MeasureUnit*/,
100
102
103 static sal_Int16 GetMeasureUnit(FieldUnit const nFieldUnit);
104
106 void SetCoreMeasureUnit( sal_Int16 const eCoreMeasureUnit /*css::util::MeasureUnit*/);
107
109 void SetXMLMeasureUnit( sal_Int16 const eXMLMeasureUnit /*css::util::MeasureUnit*/);
110
112 sal_Int16 GetXMLMeasureUnit() const;
113
115 SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const;
116 void overrideSaneDefaultVersion(SvtSaveOptions::ODFSaneDefaultVersion const);
117
119 const css::uno::Reference< css::text::XNumberingTypeInfo >& getNumTypeInfo() const;
120
123 bool convertMeasureToCore( sal_Int32& rValue,
124 std::u16string_view rString,
125 sal_Int32 nMin = SAL_MIN_INT32,
126 sal_Int32 nMax = SAL_MAX_INT32) const;
127
130 bool convertMeasureToCore( sal_Int32& rValue,
131 std::string_view rString,
132 sal_Int32 nMin = SAL_MIN_INT32,
133 sal_Int32 nMax = SAL_MAX_INT32) const;
134
136 void convertMeasureToXML( OUStringBuffer& rBuffer,
137 sal_Int32 nMeasure ) const;
138
140 OUString convertMeasureToXML( sal_Int32 nMeasure ) const;
141
144 template<typename EnumT>
145 static bool convertEnum( EnumT& rEnum,
146 std::u16string_view rValue,
147 const SvXMLEnumMapEntry<EnumT> *pMap )
148 {
149 sal_uInt16 nTmp;
150 bool bRet = convertEnumImpl(nTmp, rValue,
151 reinterpret_cast<const SvXMLEnumMapEntry<sal_uInt16>*>(pMap));
152 if (bRet)
153 rEnum = static_cast<EnumT>(nTmp);
154 return bRet;
155 }
156
159 template<typename EnumT>
160 static bool convertEnum( EnumT& rEnum,
161 std::string_view rValue,
162 const SvXMLEnumMapEntry<EnumT> *pMap )
163 {
164 sal_uInt16 nTmp;
165 bool bRet = convertEnumImpl(nTmp, rValue,
166 reinterpret_cast<const SvXMLEnumMapEntry<sal_uInt16>*>(pMap));
167 if (bRet)
168 rEnum = static_cast<EnumT>(nTmp);
169 return bRet;
170 }
171
174 template<typename EnumT>
175 static bool convertEnum( EnumT& rEnum,
176 std::u16string_view rValue,
178 {
179 sal_uInt16 nTmp;
180 bool bRet = convertEnumImpl(nTmp, rValue,
181 reinterpret_cast<const SvXMLEnumStringMapEntry<sal_uInt16>*>(pMap));
182 if (bRet)
183 rEnum = static_cast<EnumT>(nTmp);
184 return bRet;
185 }
186
189 template<typename EnumT>
190 static bool convertEnum( EnumT& rEnum,
191 std::string_view rValue,
193 {
194 sal_uInt16 nTmp;
195 bool bRet = convertEnumImpl(nTmp, rValue,
196 reinterpret_cast<const SvXMLEnumStringMapEntry<sal_uInt16>*>(pMap));
197 if (bRet)
198 rEnum = static_cast<EnumT>(nTmp);
199 return bRet;
200 }
201
206 template<typename EnumT>
207 static bool convertEnum( OUStringBuffer& rBuffer,
208 EnumT nValue,
209 const SvXMLEnumMapEntry<EnumT> *pMap,
212 {
213 return convertEnumImpl(rBuffer, static_cast<sal_uInt16>(nValue),
214 reinterpret_cast<const SvXMLEnumMapEntry<sal_uInt16>*>(pMap), eDefault);
215 }
216
219 void convertDouble(OUStringBuffer& rBuffer,
220 double fNumber) const;
221
223 bool convertDouble(double& rValue, std::u16string_view rString) const;
224
226 bool convertDouble(double& rValue, std::string_view rString) const;
227
229 bool setNullDate (
230 const css::uno::Reference <css::frame::XModel>& xModel);
231
233 void convertDateTime( OUStringBuffer& rBuffer,
234 const double& fDateTime,
235 bool const bAddTimeIf0AM = false);
236
238 bool convertDateTime(double& fDateTime,
239 std::u16string_view rString) const;
240
242 bool convertDateTime(double& fDateTime,
243 std::string_view rString) const;
244
246
248 static void convertDateTime( OUStringBuffer& rBuffer,
249 const double& fDateTime,
250 const css::util::Date& aNullDate,
251 bool bAddTimeIf0AM = false);
253 static bool convertDateTime( double& fDateTime,
254 std::u16string_view rString,
255 const css::util::Date& aNullDate);
257 static bool convertDateTime( double& fDateTime,
258 std::string_view rString,
259 const css::util::Date& aNullDate);
260
262 static bool convertB3DVector( ::basegfx::B3DVector& rVector,
263 std::string_view rValue );
264
266 static void convertB3DVector( OUStringBuffer &rBuffer,
267 const ::basegfx::B3DVector& rVector );
268
270 bool convertPosition3D( css::drawing::Position3D& rPosition,
271 std::string_view rValue ) const;
272
274 void convertPosition3D( OUStringBuffer &rBuffer,
275 const css::drawing::Position3D& rVector );
276
277
279 bool convertNumFormat( sal_Int16& rType,
280 const OUString& rNumFormat,
281 std::u16string_view rNumLetterSync,
282 bool bNumberNone = false ) const;
283
285 void convertNumFormat( OUStringBuffer& rBuffer,
286 sal_Int16 nType ) const;
287 static void convertNumLetterSync( OUStringBuffer& rBuffer,
288 sal_Int16 nType );
289
290 static void convertPropertySet(css::uno::Sequence<css::beans::PropertyValue>& rProps,
291 const css::uno::Reference<css::beans::XPropertySet>& aProperties,
292 const std::initializer_list<std::u16string_view>* pOmitFalseValues = nullptr);
293 static void convertPropertySet(css::uno::Reference<css::beans::XPropertySet> const & rProperties,
294 const css::uno::Sequence<css::beans::PropertyValue>& aProps);
295
296 OUString encodeStyleName( const OUString& rName,
297 bool *pEncoded=nullptr ) const;
299 static bool convertHex( sal_uInt32& nVal,
300 std::u16string_view rValue );
301
303 static void convertHex( OUStringBuffer& rBuffer,
304 sal_uInt32 nVal );
305
306private:
307 static bool convertEnumImpl( sal_uInt16& rEnum,
308 std::u16string_view rValue,
309 const SvXMLEnumMapEntry<sal_uInt16> *pMap );
310
311 static bool convertEnumImpl( sal_uInt16& rEnum,
312 std::u16string_view rValue,
314
315 static bool convertEnumImpl( sal_uInt16& rEnum,
316 std::string_view rValue,
317 const SvXMLEnumMapEntry<sal_uInt16> *pMap );
318
319 static bool convertEnumImpl( sal_uInt16& rEnum,
320 std::string_view rValue,
322
323 static bool convertEnumImpl( OUStringBuffer& rBuffer,
324 sal_uInt16 nValue,
327};
328
329#endif // INCLUDED_XMLOFF_XMLUCONV_HXX
330
331/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::u16string_view maTokenString
Definition: xmluconv.hxx:59
sal_Unicode mcSeparator
Definition: xmluconv.hxx:61
SvXMLTokenEnumerator(OUString &&, sal_Unicode cSeparator=u' ')=delete
just so no-one accidentally passes a temporary to this, and ends up with this class accessing the tem...
the SvXMLTypeConverter converts values of various types from their internal representation to the tex...
Definition: xmluconv.hxx:83
static bool convertEnumImpl(OUStringBuffer &rBuffer, sal_uInt16 nValue, const SvXMLEnumMapEntry< sal_uInt16 > *pMap, enum ::xmloff::token::XMLTokenEnum eDefault)
static bool convertEnum(EnumT &rEnum, std::u16string_view rValue, const SvXMLEnumMapEntry< EnumT > *pMap)
convert string to enum using given enum map, if the enum is not found in the map, this method will re...
Definition: xmluconv.hxx:145
static bool convertEnum(OUStringBuffer &rBuffer, EnumT nValue, const SvXMLEnumMapEntry< EnumT > *pMap, enum ::xmloff::token::XMLTokenEnum eDefault=::xmloff::token::XML_TOKEN_INVALID)
convert enum to string using given enum map with an optional default token.
Definition: xmluconv.hxx:207
static bool convertEnum(EnumT &rEnum, std::string_view rValue, const SvXMLEnumStringMapEntry< EnumT > *pMap)
convert string to enum using given token map, if the enum is not found in the map,...
Definition: xmluconv.hxx:190
bool convertPosition3D(css::drawing::Position3D &rPosition, std::string_view rValue) const
convert string to Position3D
void convertPosition3D(OUStringBuffer &rBuffer, const css::drawing::Position3D &rVector)
convert Position3D to string
SvXMLUnitConverter(const SvXMLUnitConverter &)=delete
SvXMLUnitConverter(const css::uno::Reference< css::uno::XComponentContext > &xContext, sal_Int16 eCoreMeasureUnit, sal_Int16 eXMLMeasureUnit, SvtSaveOptions::ODFSaneDefaultVersion const nODFVersion)
constructs a SvXMLUnitConverter.
static void convertPropertySet(css::uno::Sequence< css::beans::PropertyValue > &rProps, const css::uno::Reference< css::beans::XPropertySet > &aProperties, const std::initializer_list< std::u16string_view > *pOmitFalseValues=nullptr)
::std::unique_ptr< Impl > m_pImpl
Definition: xmluconv.hxx:89
static bool convertEnum(EnumT &rEnum, std::string_view rValue, const SvXMLEnumMapEntry< EnumT > *pMap)
convert string to enum using given enum map, if the enum is not found in the map, this method will re...
Definition: xmluconv.hxx:160
static bool convertEnum(EnumT &rEnum, std::u16string_view rValue, const SvXMLEnumStringMapEntry< EnumT > *pMap)
convert string to enum using given token map, if the enum is not found in the map,...
Definition: xmluconv.hxx:175
static bool convertEnumImpl(sal_uInt16 &rEnum, std::string_view rValue, const SvXMLEnumStringMapEntry< sal_uInt16 > *pMap)
static void convertPropertySet(css::uno::Reference< css::beans::XPropertySet > const &rProperties, const css::uno::Sequence< css::beans::PropertyValue > &aProps)
SvXMLUnitConverter & operator=(const SvXMLUnitConverter &)=delete
#define XMLOFF_DLLPUBLIC
Definition: dllapi.h:29
FieldUnit
sal_Int16 nValue
def text(shape, orig_st)
class SAL_NO_VTABLE XPropertySet
XMLTokenEnum
The enumeration of all XML tokens.
Definition: xmltoken.hxx:50
Map a const char* (with length) to a sal_uInt16 value.
Definition: xmlement.hxx:71
sal_uInt16 sal_Unicode