/src/libreoffice/xmloff/source/style/prhdlfac.cxx
Line | Count | Source |
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 | | #include <xmloff/prhdlfac.hxx> |
21 | | |
22 | | #include <com/sun/star/drawing/ColorMode.hpp> |
23 | | #include <com/sun/star/text/HorizontalAdjust.hpp> |
24 | | #include <com/sun/star/text/WritingMode2.hpp> |
25 | | #include <com/sun/star/text/VertOrientation.hpp> |
26 | | #include <com/sun/star/text/ScriptHintType.hpp> |
27 | | |
28 | | #include <sal/log.hxx> |
29 | | #include <xmloff/xmlement.hxx> |
30 | | #include <xmloff/xmltypes.hxx> |
31 | | #include <xmloff/xmltoken.hxx> |
32 | | #include <xmloff/xmlprhdl.hxx> |
33 | | #include <xmlbahdl.hxx> |
34 | | #include <xmloff/NamedBoolPropertyHdl.hxx> |
35 | | #include <xmloff/XMLConstantsPropertyHandler.hxx> |
36 | | #include "cdouthdl.hxx" |
37 | | #include "csmaphdl.hxx" |
38 | | #include "fonthdl.hxx" |
39 | | #include "kernihdl.hxx" |
40 | | #include "postuhdl.hxx" |
41 | | #include "shadwhdl.hxx" |
42 | | #include "shdwdhdl.hxx" |
43 | | #include "undlihdl.hxx" |
44 | | #include "weighhdl.hxx" |
45 | | #include "breakhdl.hxx" |
46 | | #include "adjushdl.hxx" |
47 | | #include "escphdl.hxx" |
48 | | #include "chrhghdl.hxx" |
49 | | #include "chrlohdl.hxx" |
50 | | #include "lspachdl.hxx" |
51 | | #include "bordrhdl.hxx" |
52 | | #include "tabsthdl.hxx" |
53 | | #include <xmloff/EnumPropertyHdl.hxx> |
54 | | #include <AttributeContainerHandler.hxx> |
55 | | #include "durationhdl.hxx" |
56 | | #include <XMLRectangleMembersHandler.hxx> |
57 | | #include <XMLNumberWithAutoForVoidPropHdl.hxx> |
58 | | #include "DrawAspectHdl.hxx" |
59 | | #include <xmloff/XMLComplexColorHandler.hxx> |
60 | | |
61 | | #include <map> |
62 | | |
63 | | using namespace ::com::sun::star; |
64 | | using namespace ::xmloff::token; |
65 | | |
66 | | SvXMLEnumMapEntry<drawing::ColorMode> const aXML_ColorMode_EnumMap[] = |
67 | | { |
68 | | { XML_GREYSCALE, drawing::ColorMode_GREYS }, |
69 | | { XML_MONO, drawing::ColorMode_MONO }, |
70 | | { XML_WATERMARK, drawing::ColorMode_WATERMARK }, |
71 | | { XML_STANDARD, drawing::ColorMode_STANDARD }, |
72 | | { XML_TOKEN_INVALID, drawing::ColorMode(0) } |
73 | | }; |
74 | | |
75 | | SvXMLEnumMapEntry<text::HorizontalAdjust> const aXML_HorizontalAdjust_Enum[] = |
76 | | { |
77 | | { XML_LEFT, text::HorizontalAdjust_LEFT }, |
78 | | { XML_CENTER, text::HorizontalAdjust_CENTER }, |
79 | | { XML_RIGHT, text::HorizontalAdjust_RIGHT }, |
80 | | { XML_TOKEN_INVALID, text::HorizontalAdjust(0) } |
81 | | }; |
82 | | |
83 | | // aXML_WritingDirection_Enum is used with and without 'page' |
84 | | // attribute, so you'll find uses of aXML_WritingDirection_Enum |
85 | | // directly, as well as &(aXML_WritingDirection_Enum[1]) |
86 | | SvXMLEnumMapEntry<sal_uInt16> const aXML_WritingDirection_Enum[] = |
87 | | { |
88 | | // aXML_WritingDirection_Enum |
89 | | { XML_PAGE, text::WritingMode2::PAGE }, |
90 | | |
91 | | // &(aXML_WritingDirection_Enum[1]) |
92 | | { XML_LR_TB, text::WritingMode2::LR_TB }, |
93 | | { XML_RL_TB, text::WritingMode2::RL_TB }, |
94 | | { XML_TB_RL, text::WritingMode2::TB_RL }, |
95 | | { XML_TB_LR, text::WritingMode2::TB_LR }, |
96 | | { XML_BT_LR, text::WritingMode2::BT_LR }, |
97 | | |
98 | | // alternative names of the above, as accepted by XSL |
99 | | { XML_LR, text::WritingMode2::LR_TB }, |
100 | | { XML_RL, text::WritingMode2::RL_TB }, |
101 | | { XML_TB, text::WritingMode2::TB_RL }, |
102 | | |
103 | | // vertical as clockwise 90deg rotation, for OOXML vert="vert" |
104 | | { XML_TB_RL90, text::WritingMode2::TB_RL90 }, |
105 | | |
106 | | { XML_TOKEN_INVALID, 0 } |
107 | | }; |
108 | | |
109 | | SvXMLEnumMapEntry<sal_uInt16> const pXML_VertPos_Enum[] = |
110 | | { |
111 | | { XML_FROM_TOP, text::VertOrientation::NONE }, |
112 | | { XML_TOP, text::VertOrientation::TOP }, |
113 | | { XML_TOP, text::VertOrientation::CHAR_TOP }, // export only |
114 | | { XML_TOP, text::VertOrientation::LINE_TOP }, // export only |
115 | | { XML_MIDDLE, text::VertOrientation::CENTER }, |
116 | | { XML_MIDDLE, text::VertOrientation::CHAR_CENTER }, // export only |
117 | | { XML_MIDDLE, text::VertOrientation::LINE_CENTER }, // export only |
118 | | { XML_BOTTOM, text::VertOrientation::BOTTOM }, |
119 | | { XML_BOTTOM, text::VertOrientation::CHAR_BOTTOM }, // export only |
120 | | { XML_BOTTOM, text::VertOrientation::LINE_BOTTOM }, // export only |
121 | | { XML_BELOW, text::VertOrientation::CHAR_BOTTOM }, // import only |
122 | | { XML_TOKEN_INVALID, 0 } |
123 | | }; |
124 | | |
125 | | SvXMLEnumMapEntry<sal_uInt16> const pXML_ScriptType_Enum[] |
126 | | = { { XML_IGNORE, text::ScriptHintType::IGNORE }, |
127 | | { XML_LATIN, text::ScriptHintType::LATIN }, |
128 | | { XML_ASIAN, text::ScriptHintType::ASIAN }, |
129 | | { XML_COMPLEX, text::ScriptHintType::COMPLEX }, |
130 | | { XML_TOKEN_INVALID, text::ScriptHintType::AUTOMATIC } }; |
131 | | |
132 | | typedef std::map<sal_Int32, const XMLPropertyHandler*> CacheMap; |
133 | | |
134 | | struct XMLPropertyHandlerFactory::Impl |
135 | | { |
136 | | mutable CacheMap maHandlerCache; |
137 | | }; |
138 | | |
139 | | XMLPropertyHandlerFactory::XMLPropertyHandlerFactory() : |
140 | 370k | mpImpl(new Impl) {} |
141 | | |
142 | | XMLPropertyHandlerFactory::~XMLPropertyHandlerFactory() |
143 | 370k | { |
144 | 370k | for( const auto& rCacheEntry : mpImpl->maHandlerCache ) |
145 | 19.3M | delete rCacheEntry.second; |
146 | 370k | } |
147 | | |
148 | | // Interface |
149 | | const XMLPropertyHandler* XMLPropertyHandlerFactory::GetPropertyHandler( sal_Int32 nType ) const |
150 | 47.2M | { |
151 | 47.2M | SAL_WARN_IF( (nType & ~(sal_uInt32(MID_FLAG_MASK))) != 0, "xmloff", |
152 | 47.2M | "GetPropertyHandler called with flags in type" ); |
153 | 47.2M | return GetBasicHandler( nType ); |
154 | 47.2M | } |
155 | | |
156 | | // Helper-methods to create and cache PropertyHandler |
157 | | const XMLPropertyHandler* XMLPropertyHandlerFactory::GetHdlCache( sal_Int32 nType ) const |
158 | 47.2M | { |
159 | 47.2M | const XMLPropertyHandler* pRet = nullptr; |
160 | | |
161 | 47.2M | if( mpImpl->maHandlerCache.find( nType ) != mpImpl->maHandlerCache.end() ) |
162 | 27.8M | pRet = mpImpl->maHandlerCache.find( nType )->second; |
163 | | |
164 | 47.2M | return pRet; |
165 | 47.2M | } |
166 | | |
167 | | void XMLPropertyHandlerFactory::PutHdlCache( sal_Int32 nType, const XMLPropertyHandler* pHdl ) const |
168 | 19.3M | { |
169 | 19.3M | mpImpl->maHandlerCache[nType] = pHdl; |
170 | 19.3M | } |
171 | | |
172 | | const XMLPropertyHandler* XMLPropertyHandlerFactory::GetBasicHandler( sal_Int32 nType ) const |
173 | 47.2M | { |
174 | 47.2M | const XMLPropertyHandler* pPropHdl = GetHdlCache( nType ); |
175 | 47.2M | if( pPropHdl ) |
176 | 27.8M | return pPropHdl; |
177 | | |
178 | 19.3M | std::unique_ptr<XMLPropertyHandler> pNewPropHdl = CreatePropertyHandler( nType ); |
179 | 19.3M | if( pNewPropHdl ) |
180 | 12.0M | PutHdlCache( nType, pNewPropHdl.get() ); |
181 | 19.3M | return pNewPropHdl.release(); |
182 | 47.2M | } |
183 | | |
184 | | std::unique_ptr<XMLPropertyHandler> XMLPropertyHandlerFactory::CreatePropertyHandler( sal_Int32 nType ) |
185 | 19.3M | { |
186 | 19.3M | std::unique_ptr<XMLPropertyHandler> pPropHdl; |
187 | | |
188 | 19.3M | switch( nType ) |
189 | 19.3M | { |
190 | 330k | case XML_TYPE_BOOL : |
191 | 330k | pPropHdl.reset(new XMLBoolPropHdl); |
192 | 330k | break; |
193 | 0 | case XML_TYPE_BOOL_FALSE : |
194 | 0 | pPropHdl.reset(new XMLBoolFalsePropHdl); |
195 | 0 | break; |
196 | 301k | case XML_TYPE_MEASURE : |
197 | 301k | pPropHdl.reset(new XMLMeasurePropHdl( 4 )); |
198 | 301k | break; |
199 | 0 | case XML_TYPE_MEASURE8 : |
200 | 0 | pPropHdl.reset(new XMLMeasurePropHdl( 1 )); |
201 | 0 | break; |
202 | 42.3k | case XML_TYPE_MEASURE16: |
203 | 42.3k | pPropHdl.reset(new XMLMeasurePropHdl( 2 )); |
204 | 42.3k | break; |
205 | 98.4k | case XML_TYPE_UNIT_MEASURE: |
206 | 98.4k | pPropHdl = std::make_unique<XMLUnitMeasurePropHdl>(); |
207 | 98.4k | break; |
208 | 185k | case XML_TYPE_PERCENT : |
209 | 185k | pPropHdl.reset(new XMLPercentPropHdl( 4 )); |
210 | 185k | break; |
211 | 48.8k | case XML_TYPE_PERCENT8 : |
212 | 48.8k | pPropHdl.reset(new XMLPercentPropHdl( 1 )); |
213 | 48.8k | break; |
214 | 220k | case XML_TYPE_PERCENT16 : |
215 | 220k | pPropHdl.reset(new XMLPercentPropHdl( 2 )); |
216 | 220k | break; |
217 | 0 | case XML_TYPE_PERCENT100: |
218 | 0 | pPropHdl.reset(new XML100thPercentPropHdl); |
219 | 0 | break; |
220 | 82.6k | case XML_TYPE_DOUBLE_PERCENT : |
221 | 82.6k | pPropHdl.reset(new XMLDoublePercentPropHdl); |
222 | 82.6k | break; |
223 | 82.6k | case XML_TYPE_NEG_PERCENT : |
224 | 82.6k | pPropHdl.reset(new XMLNegPercentPropHdl( 4 )); |
225 | 82.6k | break; |
226 | 0 | case XML_TYPE_NEG_PERCENT8 : |
227 | 0 | pPropHdl.reset(new XMLNegPercentPropHdl( 1 )); |
228 | 0 | break; |
229 | 220k | case XML_TYPE_NEG_PERCENT16 : |
230 | 220k | pPropHdl.reset(new XMLNegPercentPropHdl( 2 )); |
231 | 220k | break; |
232 | 82.6k | case XML_TYPE_MEASURE_PX : |
233 | 82.6k | pPropHdl.reset(new XMLMeasurePxPropHdl( 4 )); |
234 | 82.6k | break; |
235 | 301k | case XML_TYPE_STRING : |
236 | 301k | pPropHdl.reset(new XMLStringPropHdl); |
237 | 301k | break; |
238 | 221k | case XML_TYPE_COLOR : |
239 | 221k | pPropHdl.reset(new XMLColorPropHdl); |
240 | 221k | break; |
241 | 134k | case XML_TYPE_HEX : |
242 | 134k | pPropHdl.reset(new XMLHexPropHdl); |
243 | 134k | break; |
244 | 217k | case XML_TYPE_NUMBER : |
245 | 217k | pPropHdl.reset(new XMLNumberPropHdl( 4 )); |
246 | 217k | break; |
247 | 98.4k | case XML_TYPE_NUMBER8 : |
248 | 98.4k | pPropHdl.reset(new XMLNumberPropHdl( 1 )); |
249 | 98.4k | break; |
250 | 196k | case XML_TYPE_NUMBER16: |
251 | 196k | pPropHdl.reset(new XMLNumberPropHdl( 2 )); |
252 | 196k | break; |
253 | 0 | case XML_TYPE_NUMBER_NONE : |
254 | 0 | pPropHdl.reset(new XMLNumberNonePropHdl); |
255 | 0 | break; |
256 | 0 | case XML_TYPE_NUMBER8_NONE : |
257 | 0 | pPropHdl.reset(new XMLNumberNonePropHdl( 1 )); |
258 | 0 | break; |
259 | 98.4k | case XML_TYPE_NUMBER16_NONE : |
260 | 98.4k | pPropHdl.reset(new XMLNumberNonePropHdl( 2 )); |
261 | 98.4k | break; |
262 | 61 | case XML_TYPE_DOUBLE : |
263 | 61 | pPropHdl.reset(new XMLDoublePropHdl); |
264 | 61 | break; |
265 | 35.7k | case XML_TYPE_NBOOL : |
266 | 35.7k | pPropHdl.reset(new XMLNBoolPropHdl); |
267 | 35.7k | break; |
268 | 266k | case XML_TYPE_COLORTRANSPARENT : |
269 | 266k | pPropHdl.reset(new XMLColorTransparentPropHdl); |
270 | 266k | break; |
271 | 257k | case XML_TYPE_ISTRANSPARENT : |
272 | 257k | pPropHdl.reset(new XMLIsTransparentPropHdl); |
273 | 257k | break; |
274 | 179k | case XML_TYPE_COLORAUTO : |
275 | 179k | pPropHdl.reset(new XMLColorAutoPropHdl); |
276 | 179k | break; |
277 | 140k | case XML_TYPE_ISAUTOCOLOR : |
278 | 140k | pPropHdl.reset(new XMLIsAutoColorPropHdl); |
279 | 140k | break; |
280 | 259k | case XML_TYPE_BUILDIN_CMP_ONLY : |
281 | 259k | pPropHdl.reset(new XMLCompareOnlyPropHdl); |
282 | 259k | break; |
283 | | |
284 | 37.6k | case XML_TYPE_RECTANGLE_LEFT : |
285 | 75.3k | case XML_TYPE_RECTANGLE_TOP : |
286 | 112k | case XML_TYPE_RECTANGLE_WIDTH : |
287 | 150k | case XML_TYPE_RECTANGLE_HEIGHT : |
288 | 150k | pPropHdl.reset(new XMLRectangleMembersHdl( nType )); |
289 | 150k | break; |
290 | | |
291 | 141k | case XML_TYPE_TEXT_CROSSEDOUT_TYPE: |
292 | 141k | pPropHdl.reset(new XMLCrossedOutTypePropHdl) ; |
293 | 141k | break; |
294 | 141k | case XML_TYPE_TEXT_CROSSEDOUT_STYLE: |
295 | 141k | pPropHdl.reset(new XMLCrossedOutStylePropHdl) ; |
296 | 141k | break; |
297 | 141k | case XML_TYPE_TEXT_CROSSEDOUT_WIDTH: |
298 | 141k | pPropHdl.reset(new XMLCrossedOutWidthPropHdl) ; |
299 | 141k | break; |
300 | 141k | case XML_TYPE_TEXT_CROSSEDOUT_TEXT: |
301 | 141k | pPropHdl.reset(new XMLCrossedOutTextPropHdl) ; |
302 | 141k | break; |
303 | 0 | case XML_TYPE_TEXT_BOOLCROSSEDOUT: |
304 | 0 | pPropHdl.reset(new XMLNamedBoolPropertyHdl( |
305 | 0 | GetXMLToken(XML_SOLID), |
306 | 0 | GetXMLToken(XML_NONE) )); |
307 | 0 | break; |
308 | 134k | case XML_TYPE_TEXT_ESCAPEMENT: |
309 | 134k | pPropHdl.reset(new XMLEscapementPropHdl); |
310 | 134k | break; |
311 | 134k | case XML_TYPE_TEXT_ESCAPEMENT_HEIGHT: |
312 | 134k | pPropHdl.reset(new XMLEscapementHeightPropHdl); |
313 | 134k | break; |
314 | 134k | case XML_TYPE_TEXT_CASEMAP: |
315 | 134k | pPropHdl.reset(new XMLCaseMapPropHdl); |
316 | 134k | break; |
317 | 134k | case XML_TYPE_TEXT_CASEMAP_VAR: |
318 | 134k | pPropHdl.reset(new XMLCaseMapVariantHdl); |
319 | 134k | break; |
320 | 140k | case XML_TYPE_TEXT_FONTFAMILYNAME: |
321 | 140k | pPropHdl.reset(new XMLFontFamilyNamePropHdl); |
322 | 140k | break; |
323 | 141k | case XML_TYPE_TEXT_FONTFAMILY: |
324 | 141k | pPropHdl.reset(new XMLFontFamilyPropHdl); |
325 | 141k | break; |
326 | 141k | case XML_TYPE_TEXT_FONTENCODING: |
327 | 141k | pPropHdl.reset(new XMLFontEncodingPropHdl); |
328 | 141k | break; |
329 | 141k | case XML_TYPE_TEXT_FONTPITCH: |
330 | 141k | pPropHdl.reset(new XMLFontPitchPropHdl); |
331 | 141k | break; |
332 | 134k | case XML_TYPE_TEXT_KERNING: |
333 | 134k | pPropHdl.reset(new XMLKerningPropHdl); |
334 | 134k | break; |
335 | 141k | case XML_TYPE_TEXT_POSTURE: |
336 | 141k | pPropHdl.reset(new XMLPosturePropHdl); |
337 | 141k | break; |
338 | 140k | case XML_TYPE_TEXT_SHADOWED: |
339 | 140k | pPropHdl.reset(new XMLShadowedPropHdl); |
340 | 140k | break; |
341 | 141k | case XML_TYPE_TEXT_UNDERLINE_TYPE: |
342 | 141k | pPropHdl.reset(new XMLUnderlineTypePropHdl); |
343 | 141k | break; |
344 | 141k | case XML_TYPE_TEXT_UNDERLINE_STYLE: |
345 | 141k | pPropHdl.reset(new XMLUnderlineStylePropHdl); |
346 | 141k | break; |
347 | 141k | case XML_TYPE_TEXT_UNDERLINE_WIDTH: |
348 | 141k | pPropHdl.reset(new XMLUnderlineWidthPropHdl); |
349 | 141k | break; |
350 | 141k | case XML_TYPE_TEXT_UNDERLINE_COLOR: |
351 | 141k | pPropHdl.reset(new XMLColorTransparentPropHdl( XML_FONT_COLOR )); |
352 | 141k | break; |
353 | 140k | case XML_TYPE_TEXT_UNDERLINE_HASCOLOR: |
354 | 140k | pPropHdl.reset(new XMLIsTransparentPropHdl( XML_FONT_COLOR, |
355 | 140k | false )); |
356 | 140k | break; |
357 | 134k | case XML_TYPE_TEXT_OVERLINE_TYPE: |
358 | 134k | pPropHdl.reset(new XMLUnderlineTypePropHdl); |
359 | 134k | break; |
360 | 134k | case XML_TYPE_TEXT_OVERLINE_STYLE: |
361 | 134k | pPropHdl.reset(new XMLUnderlineStylePropHdl); |
362 | 134k | break; |
363 | 134k | case XML_TYPE_TEXT_OVERLINE_WIDTH: |
364 | 134k | pPropHdl.reset(new XMLUnderlineWidthPropHdl); |
365 | 134k | break; |
366 | 134k | case XML_TYPE_TEXT_OVERLINE_COLOR: |
367 | 134k | pPropHdl.reset(new XMLColorTransparentPropHdl( XML_FONT_COLOR )); |
368 | 134k | break; |
369 | 134k | case XML_TYPE_TEXT_OVERLINE_HASCOLOR: |
370 | 134k | pPropHdl.reset(new XMLIsTransparentPropHdl( XML_FONT_COLOR, |
371 | 134k | false )); |
372 | 134k | break; |
373 | 141k | case XML_TYPE_TEXT_WEIGHT: |
374 | 141k | pPropHdl.reset(new XMLFontWeightPropHdl); |
375 | 141k | break; |
376 | 98.4k | case XML_TYPE_TEXT_SPLIT: |
377 | 98.4k | pPropHdl.reset(new XMLNamedBoolPropertyHdl( |
378 | 98.4k | GetXMLToken(XML_AUTO), |
379 | 98.4k | GetXMLToken(XML_ALWAYS) )); |
380 | 98.4k | break; |
381 | 98.4k | case XML_TYPE_TEXT_BREAKBEFORE: |
382 | 98.4k | pPropHdl.reset(new XMLFmtBreakBeforePropHdl); |
383 | 98.4k | break; |
384 | 98.4k | case XML_TYPE_TEXT_BREAKAFTER: |
385 | 98.4k | pPropHdl.reset(new XMLFmtBreakAfterPropHdl); |
386 | 98.4k | break; |
387 | 221k | case XML_TYPE_TEXT_SHADOW: |
388 | 221k | pPropHdl.reset(new XMLShadowPropHdl); |
389 | 221k | break; |
390 | 105k | case XML_TYPE_TEXT_ADJUST: |
391 | 105k | pPropHdl.reset(new XMLParaAdjustPropHdl); |
392 | 105k | break; |
393 | 98.4k | case XML_TYPE_TEXT_ADJUSTLAST: |
394 | 98.4k | pPropHdl.reset(new XMLLastLineAdjustPropHdl); |
395 | 98.4k | break; |
396 | 141k | case XML_TYPE_CHAR_HEIGHT: |
397 | 141k | pPropHdl.reset(new XMLCharHeightHdl); |
398 | 141k | break; |
399 | 134k | case XML_TYPE_CHAR_HEIGHT_PROP: |
400 | 134k | pPropHdl.reset(new XMLCharHeightPropHdl); |
401 | 134k | break; |
402 | 134k | case XML_TYPE_CHAR_HEIGHT_DIFF: |
403 | 134k | pPropHdl.reset(new XMLCharHeightDiffHdl); |
404 | 134k | break; |
405 | 134k | case XML_TYPE_CHAR_RFC_LANGUAGE_TAG: |
406 | 134k | pPropHdl.reset(new XMLCharRfcLanguageTagHdl); |
407 | 134k | break; |
408 | 134k | case XML_TYPE_CHAR_LANGUAGE: |
409 | 134k | pPropHdl.reset(new XMLCharLanguageHdl); |
410 | 134k | break; |
411 | 134k | case XML_TYPE_CHAR_SCRIPT: |
412 | 134k | pPropHdl.reset(new XMLCharScriptHdl); |
413 | 134k | break; |
414 | 134k | case XML_TYPE_CHAR_COUNTRY: |
415 | 134k | pPropHdl.reset(new XMLCharCountryHdl); |
416 | 134k | break; |
417 | 98.4k | case XML_TYPE_LINE_SPACE_FIXED: |
418 | 98.4k | pPropHdl.reset(new XMLLineHeightHdl); |
419 | 98.4k | break; |
420 | 98.4k | case XML_TYPE_LINE_SPACE_MINIMUM: |
421 | 98.4k | pPropHdl.reset(new XMLLineHeightAtLeastHdl); |
422 | 98.4k | break; |
423 | 98.4k | case XML_TYPE_LINE_SPACE_DISTANCE: |
424 | 98.4k | pPropHdl.reset(new XMLLineSpacingHdl); |
425 | 98.4k | break; |
426 | 221k | case XML_TYPE_BORDER_WIDTH: |
427 | 221k | pPropHdl.reset(new XMLBorderWidthHdl); |
428 | 221k | break; |
429 | 230k | case XML_TYPE_BORDER: |
430 | 230k | pPropHdl.reset(new XMLBorderHdl); |
431 | 230k | break; |
432 | 98.4k | case XML_TYPE_TEXT_TABSTOP: |
433 | 98.4k | pPropHdl.reset(new XMLTabStopPropHdl); |
434 | 98.4k | break; |
435 | 231k | case XML_TYPE_ATTRIBUTE_CONTAINER: |
436 | 231k | pPropHdl.reset(new XMLAttributeContainerHandler); |
437 | 231k | break; |
438 | 82.6k | case XML_TYPE_COLOR_MODE: |
439 | 82.6k | pPropHdl.reset(new XMLEnumPropertyHdl(aXML_ColorMode_EnumMap)); |
440 | 82.6k | break; |
441 | 37.6k | case XML_TYPE_DURATION16_MS: |
442 | 37.6k | pPropHdl.reset(new XMLDurationMS16PropHdl_Impl); |
443 | 37.6k | break; |
444 | 3.85k | case XML_TYPE_TEXT_HORIZONTAL_ADJUST: |
445 | 3.85k | pPropHdl.reset(new XMLEnumPropertyHdl(aXML_HorizontalAdjust_Enum)); |
446 | 3.85k | break; |
447 | 82.6k | case XML_TYPE_TEXT_DRAW_ASPECT: |
448 | 82.6k | pPropHdl.reset(new DrawAspectHdl); |
449 | 82.6k | break; |
450 | 42.3k | case XML_TYPE_TEXT_WRITING_MODE: |
451 | 42.3k | pPropHdl.reset(new XMLConstantsPropertyHandler( |
452 | 42.3k | &(aXML_WritingDirection_Enum[1]), |
453 | 42.3k | XML_LR_TB)); |
454 | 42.3k | break; |
455 | 223k | case XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT: |
456 | 223k | pPropHdl.reset(new XMLConstantsPropertyHandler( |
457 | 223k | aXML_WritingDirection_Enum, |
458 | 223k | XML_PAGE)); |
459 | 223k | break; |
460 | 134k | case XML_TYPE_TEXT_HIDDEN_AS_DISPLAY: |
461 | 134k | pPropHdl.reset(new XMLNamedBoolPropertyHdl( |
462 | 134k | GetXMLToken(XML_NONE), |
463 | 134k | GetXMLToken(XML_TRUE) )); |
464 | 134k | break; |
465 | 185k | case XML_TYPE_STYLENAME : |
466 | 185k | pPropHdl.reset(new XMLStyleNamePropHdl); |
467 | 185k | break; |
468 | 0 | case XML_TYPE_NUMBER_NO_ZERO: |
469 | 0 | pPropHdl.reset(new XMLNumberWithoutZeroPropHdl( 4 )); |
470 | 0 | break; |
471 | 0 | case XML_TYPE_NUMBER8_NO_ZERO: |
472 | 0 | pPropHdl.reset(new XMLNumberWithoutZeroPropHdl( 1 )); |
473 | 0 | break; |
474 | 98.4k | case XML_TYPE_NUMBER16_NO_ZERO: |
475 | 98.4k | pPropHdl.reset(new XMLNumberWithoutZeroPropHdl( 2 )); |
476 | 98.4k | break; |
477 | 98.4k | case XML_TYPE_NUMBER16_AUTO: |
478 | 98.4k | pPropHdl.reset(new XMLNumberWithAutoForVoidPropHdl); |
479 | 98.4k | break; |
480 | 51.8k | case XML_TYPE_TEXT_VERTICAL_POS: |
481 | 51.8k | pPropHdl.reset(new XMLConstantsPropertyHandler( pXML_VertPos_Enum, XML_TOKEN_INVALID )); |
482 | 51.8k | break; |
483 | 37.6k | case XML_TYPE_TEXT_OVERFLOW_BEHAVIOR: |
484 | | // auto-create-new-frame isn't properly implemented yet. It just means don't clip. |
485 | 37.6k | pPropHdl.reset(new XMLNamedBoolPropertyHdl(GetXMLToken(XML_CLIP), |
486 | 37.6k | GetXMLToken(XML_AUTO_CREATE_NEW_FRAME))); |
487 | 37.6k | break; |
488 | 217k | case XML_TYPE_COMPLEX_COLOR: |
489 | 217k | pPropHdl.reset(new XMLComplexColorHandler); |
490 | 217k | break; |
491 | 134k | case XML_TYPE_TEXT_SCRIPT_TYPE: |
492 | 134k | pPropHdl = std::make_unique<XMLConstantsPropertyHandler>(pXML_ScriptType_Enum, |
493 | 134k | XML_TOKEN_INVALID); |
494 | 134k | break; |
495 | 19.3M | } |
496 | | |
497 | 19.3M | return pPropHdl; |
498 | 19.3M | } |
499 | | |
500 | | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |