LibreOffice Module xmloff (master)  1
sdpropls.cxx
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 #include <com/sun/star/animations/TransitionType.hpp>
21 #include <com/sun/star/ucb/XAnyCompareFactory.hpp>
22 #include <com/sun/star/container/XIndexReplace.hpp>
23 #include <com/sun/star/drawing/LineStyle.hpp>
24 #include <com/sun/star/drawing/LineJoint.hpp>
25 #include <com/sun/star/drawing/LineCap.hpp>
26 #include <com/sun/star/presentation/AnimationSpeed.hpp>
27 #include <com/sun/star/presentation/FadeEffect.hpp>
28 
29 #include <com/sun/star/text/WritingMode.hpp>
30 #include <com/sun/star/text/WritingMode2.hpp>
33 #include <WordWrapPropertyHdl.hxx>
34 #include <enummaps.hxx>
35 #include "numithdl.hxx"
39 #include <com/sun/star/drawing/TextAnimationKind.hpp>
40 #include <com/sun/star/drawing/TextAnimationDirection.hpp>
41 #include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
42 #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
43 #include <com/sun/star/drawing/TextFitToSizeType.hpp>
44 #include <com/sun/star/drawing/MeasureTextHorzPos.hpp>
45 #include <com/sun/star/drawing/MeasureTextVertPos.hpp>
47 #include <xmloff/xmltoken.hxx>
48 #include "sdpropls.hxx"
49 #include <propimp0.hxx>
50 #include <xmloff/xmlexp.hxx>
51 #include <xmloff/xmlnamespace.hxx>
52 #include <com/sun/star/drawing/NormalsKind.hpp>
53 #include <com/sun/star/drawing/TextureProjectionMode.hpp>
54 #include <com/sun/star/drawing/TextureKind.hpp>
55 #include <com/sun/star/drawing/TextureMode.hpp>
56 #include <com/sun/star/beans/XPropertySet.hpp>
57 #include <xmloff/txtprmap.hxx>
61 #include <animations.hxx>
62 #include <sax/tools/converter.hxx>
63 #include <xmlsdtypes.hxx>
64 
65 using ::com::sun::star::uno::Any;
66 
67 using namespace ::com::sun::star;
68 using namespace ::xmloff::token;
69 
70 #define MAP_(name,prefix,token,type,context) { name, sizeof(name)-1, prefix, token, type, context, SvtSaveOptions::ODFSVER_010, false }
71 #define MAPV_(name,prefix,token,type,context,version) { name, sizeof(name)-1, prefix, token, type, context, version, false }
72 #define GMAP(name,prefix,token,type,context) MAP_(name,prefix,token,type|XML_TYPE_PROP_GRAPHIC,context)
73 #define GMAP_D(name,prefix,token,type,context) MAP_(name,prefix,token,type|XML_TYPE_PROP_GRAPHIC|MID_FLAG_DEFAULT_ITEM_EXPORT,context)
74 #define GMAPV(name,prefix,token,type,context,version) MAPV_(name,prefix,token,type|XML_TYPE_PROP_GRAPHIC,context,version)
75 #define DPMAP(name,prefix,token,type,context) MAP_(name,prefix,token,type|XML_TYPE_PROP_DRAWING_PAGE,context)
76 #define TMAP(name,prefix,token,type,context) MAP_(name,prefix,token,type|XML_TYPE_PROP_TEXT,context)
77 #define PMAP(name,prefix,token,type,context) MAP_(name,prefix,token,type|XML_TYPE_PROP_PARAGRAPH,context)
78 #define MAP_END() { nullptr, 0, 0, XML_EMPTY, 0 ,0, SvtSaveOptions::ODFSVER_010, false }
79 
80 // entry list for graphic properties
81 
83 {
84  // this entry must be first! this is needed for XMLShapeImportHelper::CreateExternalShapePropMapper
85 
86  // ^^^though CreateExternalShapePropMapper is gone now, hmm^^^
87  GMAP( "UserDefinedAttributes", XML_NAMESPACE_TEXT, XML_XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
88 
89  // stroke attributes
100  GMAP( "LineTransparence", XML_NAMESPACE_SVG, XML_STROKE_OPACITY, XML_SD_TYPE_OPACITY, 0 ),
103 
104  // fill attributes
109  GMAP( "FillGradientStepCount", XML_NAMESPACE_DRAW, XML_GRADIENT_STEP_COUNT, XML_TYPE_NUMBER16, 0 ),
111  GMAP( "FillBackground", XML_NAMESPACE_DRAW, XML_FILL_HATCH_SOLID, XML_TYPE_BOOL, 0 ),
113  GMAP( "FillTransparence", XML_NAMESPACE_DRAW, XML_OPACITY, XML_TYPE_NEG_PERCENT16|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too
120  GMAP( "FillBitmapPositionOffsetX", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_REF_POINT_X, XML_TYPE_PERCENT, 0 ),
121  GMAP( "FillBitmapPositionOffsetY", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_REF_POINT_Y, XML_TYPE_PERCENT, 0 ),
125 
126  // text frame attributes
129  GMAP( "TextAutoGrowHeight", XML_NAMESPACE_DRAW, XML_AUTO_GROW_HEIGHT, XML_TYPE_BOOL, 0 ),
130  GMAP( "TextAutoGrowWidth", XML_NAMESPACE_DRAW, XML_AUTO_GROW_WIDTH, XML_TYPE_BOOL, 0 ),
133  GMAP( "TextContourFrame", XML_NAMESPACE_DRAW, XML_FIT_TO_CONTOUR, XML_TYPE_BOOL, 0 ),
134  GMAP( "TextMaximumFrameHeight", XML_NAMESPACE_FO, XML_MAX_HEIGHT, XML_TYPE_MEASURE, 0 ),
135  GMAP( "TextMaximumFrameWidth", XML_NAMESPACE_FO, XML_MAX_WIDTH, XML_TYPE_MEASURE, 0 ),
136  GMAP( "TextMinimumFrameHeight", XML_NAMESPACE_FO, XML_MIN_HEIGHT, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too
138  GMAP( "TextUpperDistance", XML_NAMESPACE_FO, XML_PADDING_TOP, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too
139  GMAP( "TextLowerDistance", XML_NAMESPACE_FO, XML_PADDING_BOTTOM, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too
140  GMAP( "TextLeftDistance", XML_NAMESPACE_FO, XML_PADDING_LEFT, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too
141  GMAP( "TextRightDistance", XML_NAMESPACE_FO, XML_PADDING_RIGHT, XML_TYPE_MEASURE|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too
146  GMAP( "TextChainNextName", XML_NAMESPACE_DRAW, XML_CHAIN_NEXT_NAME, XML_TYPE_STRING, 0 ),
147 
148  // shadow attributes
150  GMAP( "ShadowXDistance", XML_NAMESPACE_DRAW, XML_SHADOW_OFFSET_X, XML_TYPE_MEASURE, 0 ),
151  GMAP( "ShadowYDistance", XML_NAMESPACE_DRAW, XML_SHADOW_OFFSET_Y, XML_TYPE_MEASURE, 0 ),
153  GMAP( "ShadowTransparence", XML_NAMESPACE_DRAW, XML_SHADOW_OPACITY, XML_TYPE_NEG_PERCENT, 0 ),
155 
156  // glow attributes
160 
161  // soft edge attributes
163 
164  // graphic attributes
165  GMAP( "GraphicColorMode", XML_NAMESPACE_DRAW, XML_COLOR_MODE, XML_TYPE_COLOR_MODE, 0 ), // exists in SW, too, with same property name
166  GMAP( "AdjustLuminance", XML_NAMESPACE_DRAW, XML_LUMINANCE, XML_TYPE_PERCENT16, 0 ), // signed? exists in SW, too, with same property name
167  GMAP( "AdjustContrast", XML_NAMESPACE_DRAW, XML_CONTRAST, XML_TYPE_PERCENT16, 0 ), // signed? exists in SW, too, with same property name
168  GMAP( "Gamma", XML_NAMESPACE_DRAW, XML_GAMMA, XML_TYPE_DOUBLE_PERCENT, 0 ), // signed? exists in SW, too, with same property name
169  GMAP( "AdjustRed", XML_NAMESPACE_DRAW, XML_RED, XML_TYPE_PERCENT16, 0 ), // signed? exists in SW, too, with same property name
170  GMAP( "AdjustGreen", XML_NAMESPACE_DRAW, XML_GREEN, XML_TYPE_PERCENT16, 0 ), // signed? exists in SW, too, with same property name
171  GMAP( "AdjustBlue", XML_NAMESPACE_DRAW, XML_BLUE, XML_TYPE_PERCENT16, 0 ), // signed? exists in SW, too, with same property name
172  GMAPV( "GraphicCrop", XML_NAMESPACE_FO, XML_CLIP, XML_TYPE_TEXT_CLIP, CTF_TEXT_CLIP, SvtSaveOptions::ODFSVER_012), // exists in SW, too, with same property name
173  GMAP( "GraphicCrop", XML_NAMESPACE_FO, XML_CLIP, XML_TYPE_TEXT_CLIP11, CTF_TEXT_CLIP11 ), // exists in SW, too, with same property name
174  GMAP( "Transparency", XML_NAMESPACE_DRAW, XML_IMAGE_OPACITY, XML_TYPE_NEG_PERCENT16|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too, with same property name // #i25616#
175  GMAP( "IsMirrored", XML_NAMESPACE_STYLE, XML_MIRROR, XML_TYPE_SD_MIRROR|MID_FLAG_MULTI_PROPERTY, 0 ), // exists in SW, too // #i40214#
176 
177  // animation text attributes
181  GMAP( "TextAnimationStartInside", XML_NAMESPACE_TEXT, XML_ANIMATION_START_INSIDE, XML_TYPE_BOOL, 0 ),
182  GMAP( "TextAnimationStopInside", XML_NAMESPACE_TEXT, XML_ANIMATION_STOP_INSIDE, XML_TYPE_BOOL, 0 ),
183  GMAP( "TextAnimationCount", XML_NAMESPACE_TEXT, XML_ANIMATION_REPEAT, XML_TYPE_NUMBER16, 0 ),
186 
187  // connector attributes
192 
193  // measure attributes
194  GMAP( "MeasureLineDistance", XML_NAMESPACE_DRAW, XML_LINE_DISTANCE, XML_TYPE_MEASURE, 0 ),
195  GMAP( "MeasureHelpLineOverhang", XML_NAMESPACE_DRAW, XML_GUIDE_OVERHANG, XML_TYPE_MEASURE, 0 ),
196  GMAP( "MeasureHelpLineDistance", XML_NAMESPACE_DRAW, XML_GUIDE_DISTANCE, XML_TYPE_MEASURE, 0 ),
197  GMAP( "MeasureHelpLine1Length", XML_NAMESPACE_DRAW, XML_START_GUIDE, XML_TYPE_MEASURE, 0 ),
198  GMAP( "MeasureHelpLine2Length", XML_NAMESPACE_DRAW, XML_END_GUIDE, XML_TYPE_MEASURE, 0 ),
199  GMAP( "MeasureTextHorizontalPosition", XML_NAMESPACE_DRAW, XML_MEASURE_ALIGN, XML_SD_TYPE_MEASURE_HALIGN, 0 ),
200  GMAP( "MeasureTextVerticalPosition", XML_NAMESPACE_DRAW, XML_MEASURE_VERTICAL_ALIGN, XML_SD_TYPE_MEASURE_VALIGN, 0 ),
202  GMAP( "MeasureShowUnit", XML_NAMESPACE_DRAW, XML_SHOW_UNIT, XML_TYPE_BOOL, 0 ),
203  GMAP( "MeasureBelowReferenceEdge", XML_NAMESPACE_DRAW, XML_PLACING, XML_SD_TYPE_MEASURE_PLACING, 0 ),
204  GMAP( "MeasureTextRotate90", XML_NAMESPACE_DRAW, XML_PARALLEL, XML_TYPE_BOOL, 0 ),
205  GMAP( "MeasureDecimalPlaces", XML_NAMESPACE_DRAW, XML_DECIMAL_PLACES, XML_TYPE_NUMBER16, 0 ),
206 
207  // 3D geometry attributes
208  GMAP( "D3DHorizontalSegments", XML_NAMESPACE_DR3D, XML_HORIZONTAL_SEGMENTS, XML_TYPE_NUMBER, 0 ),
209  GMAP( "D3DVerticalSegments", XML_NAMESPACE_DR3D, XML_VERTICAL_SEGMENTS, XML_TYPE_NUMBER, 0 ),
210  GMAP( "D3DPercentDiagonal", XML_NAMESPACE_DR3D, XML_EDGE_ROUNDING, XML_TYPE_PERCENT, 0 ),
211  GMAP( "D3DBackscale", XML_NAMESPACE_DR3D, XML_BACK_SCALE, XML_TYPE_PERCENT, 0 ),
212  GMAP( "D3DEndAngle", XML_NAMESPACE_DR3D, XML_END_ANGLE, XML_TYPE_NUMBER, 0 ),
215 
216  // #107245# New 3D properties which are possible for lathe and extrude 3d objects
217  GMAP( "D3DCloseFront", XML_NAMESPACE_DR3D, XML_CLOSE_FRONT, XML_TYPE_BOOL, 0 ),
218  GMAP( "D3DCloseBack", XML_NAMESPACE_DR3D, XML_CLOSE_BACK, XML_TYPE_BOOL, 0 ),
219 
220  // 3D lighting attributes
223 
224  // 3D texture attributes
227  GMAP( "D3DTextureKind", XML_NAMESPACE_DR3D, XML_TEX_KIND, XML_SD_TYPE_TEX_KIND, 0 ),
228  GMAP( "D3DTextureMode", XML_NAMESPACE_DR3D, XML_TEX_MODE, XML_SD_TYPE_TEX_MODE, 0 ),
230 
231  // 3D material attributes
232  GMAP( "D3DMaterialColor", XML_NAMESPACE_DR3D, XML_DIFFUSE_COLOR, XML_TYPE_COLOR, 0 ),
233  GMAP( "D3DMaterialEmission", XML_NAMESPACE_DR3D, XML_EMISSIVE_COLOR, XML_TYPE_COLOR, 0 ),
234  GMAP( "D3DMaterialSpecular", XML_NAMESPACE_DR3D, XML_SPECULAR_COLOR, XML_TYPE_COLOR, 0 ),
235  GMAP( "D3DMaterialSpecularIntensity", XML_NAMESPACE_DR3D, XML_SHININESS, XML_TYPE_PERCENT, 0 ),
236 
237  // 3D shadow attributes
239 
240  // #FontWork# attributes
254 
255  // #FontWork# attributes
269 
270  // control attributes (border exists one more time for the text additions of shapes)
271  GMAP( "ControlSymbolColor", XML_NAMESPACE_DRAW, XML_SYMBOL_COLOR, XML_TYPE_COLOR, 0 ),
279 
280  // special entries for floating frames
294 
296 
297  // caption properties
307  GMAP( "CaptionIsFitLineLength", XML_NAMESPACE_DRAW, XML_CAPTION_FIT_LINE_LENGTH, XML_TYPE_BOOL, 0 ),
308 
309  // misc object properties
312 
313  MAP_END()
314 };
315 
316 // entry list for presentation page properties
317 
319 {
320  DPMAP( "UserDefinedAttributes", XML_NAMESPACE_TEXT, XML_XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
321 
329 
332 
336  DPMAP( "FillGradientStepCount", XML_NAMESPACE_DRAW, XML_GRADIENT_STEP_COUNT, XML_TYPE_NUMBER, 0 ),
338  GMAP( "FillBackground", XML_NAMESPACE_DRAW, XML_FILL_HATCH_SOLID, XML_TYPE_BOOL, 0 ),
347  DPMAP( "FillBitmapPositionOffsetX", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_REF_POINT_X, XML_TYPE_PERCENT, 0 ),
348  DPMAP( "FillBitmapPositionOffsetY", XML_NAMESPACE_DRAW, XML_FILL_IMAGE_REF_POINT_Y, XML_TYPE_PERCENT, 0 ),
352 
357 
362  MAP_END()
363 };
364 
369 {
372  MAP_( "UseFirstColumnStyle", XML_NAMESPACE_TABLE, XML_USE_FIRST_COLUMN_STYLES, XML_TYPE_BOOL, 0 ),
375  MAP_( "UseBandingColumnStyle", XML_NAMESPACE_TABLE, XML_USE_BANDING_COLUMNS_STYLES, XML_TYPE_BOOL, 0 ),
376  MAP_END()
377 };
378 
379 // implementation of factory for own graphic properties
380 
382 {
383  { XML_NONE, drawing::LineStyle_NONE },
384  { XML_SOLID, drawing::LineStyle_SOLID },
385  { XML_DASH, drawing::LineStyle_DASH },
386  { XML_TOKEN_INVALID, drawing::LineStyle(0) }
387 };
388 
390 {
391  { XML_NONE, drawing::LineJoint_NONE },
392  { XML_MITER, drawing::LineJoint_MITER },
393  { XML_ROUND, drawing::LineJoint_ROUND },
394  { XML_BEVEL, drawing::LineJoint_BEVEL },
395  { XML_MIDDLE, drawing::LineJoint_MIDDLE },
396  { XML_TOKEN_INVALID, drawing::LineJoint(0) }
397 };
398 
400 {
401  { XML_BUTT, drawing::LineCap_BUTT },
402  { XML_ROUND, drawing::LineCap_ROUND },
403  // use XML_GRADIENTSTYLE_SQUARE as XML_SQUARE, is defined as "square" already
404  { XML_GRADIENTSTYLE_SQUARE, drawing::LineCap_SQUARE },
405  { XML_TOKEN_INVALID, drawing::LineCap(0) }
406 };
407 
409 {
410  { XML_NONE, drawing::FillStyle_NONE },
411  { XML_SOLID, drawing::FillStyle_SOLID },
412  { XML_BITMAP, drawing::FillStyle_BITMAP },
413  { XML_GRADIENT, drawing::FillStyle_GRADIENT },
414  { XML_HATCH, drawing::FillStyle_HATCH },
415  { XML_TOKEN_INVALID, drawing::FillStyle(0) }
416 };
417 
419 {
420  { XML_MANUAL, 0 },
421  { XML_AUTOMATIC, 1 },
422  { XML_SEMI_AUTOMATIC, 2 },
423  { XML_TOKEN_INVALID, 0 }
424 };
425 
427 {
428  { XML_FAST, presentation::AnimationSpeed_FAST },
429  { XML_MEDIUM, presentation::AnimationSpeed_MEDIUM },
430  { XML_SLOW, presentation::AnimationSpeed_SLOW },
431  { XML_TOKEN_INVALID, presentation::AnimationSpeed(0) }
432 };
433 
435 {
436  { XML_NONE, presentation::FadeEffect_NONE },
437  { XML_FADE_FROM_LEFT, presentation::FadeEffect_FADE_FROM_LEFT },
438  { XML_FADE_FROM_TOP, presentation::FadeEffect_FADE_FROM_TOP },
439  { XML_FADE_FROM_RIGHT, presentation::FadeEffect_FADE_FROM_RIGHT },
440  { XML_FADE_FROM_BOTTOM, presentation::FadeEffect_FADE_FROM_BOTTOM },
441  { XML_FADE_TO_CENTER, presentation::FadeEffect_FADE_TO_CENTER },
442  { XML_FADE_FROM_CENTER, presentation::FadeEffect_FADE_FROM_CENTER },
443  { XML_MOVE_FROM_LEFT, presentation::FadeEffect_MOVE_FROM_LEFT },
444  { XML_MOVE_FROM_TOP, presentation::FadeEffect_MOVE_FROM_TOP },
445  { XML_MOVE_FROM_RIGHT, presentation::FadeEffect_MOVE_FROM_RIGHT },
446  { XML_MOVE_FROM_BOTTOM, presentation::FadeEffect_MOVE_FROM_BOTTOM },
447  { XML_ROLL_FROM_TOP, presentation::FadeEffect_ROLL_FROM_TOP },
448  { XML_ROLL_FROM_LEFT, presentation::FadeEffect_ROLL_FROM_LEFT },
449  { XML_ROLL_FROM_RIGHT, presentation::FadeEffect_ROLL_FROM_RIGHT },
450  { XML_ROLL_FROM_BOTTOM, presentation::FadeEffect_ROLL_FROM_BOTTOM },
451  { XML_VERTICAL_STRIPES, presentation::FadeEffect_VERTICAL_STRIPES },
452  { XML_HORIZONTAL_STRIPES, presentation::FadeEffect_HORIZONTAL_STRIPES },
453  { XML_CLOCKWISE, presentation::FadeEffect_CLOCKWISE },
454  { XML_COUNTERCLOCKWISE, presentation::FadeEffect_COUNTERCLOCKWISE },
455  { XML_FADE_FROM_UPPERLEFT, presentation::FadeEffect_FADE_FROM_UPPERLEFT },
456  { XML_FADE_FROM_UPPERRIGHT, presentation::FadeEffect_FADE_FROM_UPPERRIGHT },
457  { XML_FADE_FROM_LOWERLEFT, presentation::FadeEffect_FADE_FROM_LOWERLEFT },
458  { XML_FADE_FROM_LOWERRIGHT, presentation::FadeEffect_FADE_FROM_LOWERRIGHT },
459  { XML_CLOSE_VERTICAL, presentation::FadeEffect_CLOSE_VERTICAL },
460  { XML_CLOSE_HORIZONTAL, presentation::FadeEffect_CLOSE_HORIZONTAL },
461  { XML_OPEN_VERTICAL, presentation::FadeEffect_OPEN_VERTICAL },
462  { XML_OPEN_HORIZONTAL, presentation::FadeEffect_OPEN_HORIZONTAL },
463  { XML_SPIRALIN_LEFT, presentation::FadeEffect_SPIRALIN_LEFT },
464  { XML_SPIRALIN_RIGHT, presentation::FadeEffect_SPIRALIN_RIGHT },
465  { XML_SPIRALOUT_LEFT, presentation::FadeEffect_SPIRALOUT_LEFT },
466  { XML_SPIRALOUT_RIGHT, presentation::FadeEffect_SPIRALOUT_RIGHT },
467  { XML_DISSOLVE, presentation::FadeEffect_DISSOLVE },
468  { XML_WAVYLINE_FROM_LEFT, presentation::FadeEffect_WAVYLINE_FROM_LEFT },
469  { XML_WAVYLINE_FROM_TOP, presentation::FadeEffect_WAVYLINE_FROM_TOP },
470  { XML_WAVYLINE_FROM_RIGHT, presentation::FadeEffect_WAVYLINE_FROM_RIGHT },
471  { XML_WAVYLINE_FROM_BOTTOM, presentation::FadeEffect_WAVYLINE_FROM_BOTTOM },
472  { XML_RANDOM, presentation::FadeEffect_RANDOM },
473  { XML_STRETCH_FROM_LEFT, presentation::FadeEffect_STRETCH_FROM_LEFT },
474  { XML_STRETCH_FROM_TOP, presentation::FadeEffect_STRETCH_FROM_TOP },
475  { XML_STRETCH_FROM_RIGHT, presentation::FadeEffect_STRETCH_FROM_RIGHT },
476  { XML_STRETCH_FROM_BOTTOM, presentation::FadeEffect_STRETCH_FROM_BOTTOM },
477  { XML_VERTICAL_LINES, presentation::FadeEffect_VERTICAL_LINES },
478  { XML_HORIZONTAL_LINES, presentation::FadeEffect_HORIZONTAL_LINES },
479  { XML_MOVE_FROM_UPPERLEFT, presentation::FadeEffect_MOVE_FROM_UPPERLEFT },
480  { XML_MOVE_FROM_UPPERRIGHT, presentation::FadeEffect_MOVE_FROM_UPPERRIGHT },
481  { XML_MOVE_FROM_LOWERRIGHT, presentation::FadeEffect_MOVE_FROM_LOWERRIGHT },
482  { XML_MOVE_FROM_LOWERLEFT, presentation::FadeEffect_MOVE_FROM_LOWERLEFT },
483  { XML_UNCOVER_TO_LEFT, presentation::FadeEffect_UNCOVER_TO_LEFT },
484  { XML_UNCOVER_TO_UPPERLEFT, presentation::FadeEffect_UNCOVER_TO_UPPERLEFT },
485  { XML_UNCOVER_TO_TOP, presentation::FadeEffect_UNCOVER_TO_TOP },
486  { XML_UNCOVER_TO_UPPERRIGHT,presentation::FadeEffect_UNCOVER_TO_UPPERRIGHT },
487  { XML_UNCOVER_TO_RIGHT, presentation::FadeEffect_UNCOVER_TO_RIGHT },
488  { XML_UNCOVER_TO_LOWERRIGHT,presentation::FadeEffect_UNCOVER_TO_LOWERRIGHT },
489  { XML_UNCOVER_TO_BOTTOM, presentation::FadeEffect_UNCOVER_TO_BOTTOM },
490  { XML_UNCOVER_TO_LOWERLEFT, presentation::FadeEffect_UNCOVER_TO_LOWERLEFT },
491  { XML_VERTICAL_CHECKERBOARD,presentation::FadeEffect_VERTICAL_CHECKERBOARD },
492  { XML_HORIZONTAL_CHECKERBOARD,presentation::FadeEffect_HORIZONTAL_CHECKERBOARD },
493  { XML_TOKEN_INVALID, presentation::FadeEffect(0) }
494 };
495 
497 {
498  { XML_STANDARD, drawing::ConnectorType_STANDARD },
499  { XML_CURVE, drawing::ConnectorType_CURVE },
500  { XML_LINE, drawing::ConnectorType_LINE },
501  { XML_LINES, drawing::ConnectorType_LINES },
502  { XML_TOKEN_INVALID, drawing::ConnectorType(0) }
503 };
504 
506 {
507  { XML_REPEAT, drawing::BitmapMode_REPEAT },
508  { XML_STRETCH, drawing::BitmapMode_STRETCH },
509  { XML_BACKGROUND_NO_REPEAT, drawing::BitmapMode_NO_REPEAT },
510  { XML_TOKEN_INVALID, drawing::BitmapMode(0) }
511 };
512 
513 // 3D EnumMaps
514 
516 {
517  { XML_OBJECT, drawing::NormalsKind_SPECIFIC },
518  { XML_FLAT, drawing::NormalsKind_FLAT },
519  { XML_SPHERE, drawing::NormalsKind_SPHERE },
520  { XML_TOKEN_INVALID, drawing::NormalsKind(0) }
521 };
522 
524 {
525  { XML_OBJECT, drawing::TextureProjectionMode_OBJECTSPECIFIC },
526  { XML_PARALLEL, drawing::TextureProjectionMode_PARALLEL },
527  { XML_SPHERE, drawing::TextureProjectionMode_SPHERE },
528  { XML_TOKEN_INVALID, drawing::TextureProjectionMode(0) }
529 };
530 
532 {
533  { XML_OBJECT, drawing::TextureProjectionMode_OBJECTSPECIFIC },
534  { XML_PARALLEL, drawing::TextureProjectionMode_PARALLEL },
535  { XML_SPHERE, drawing::TextureProjectionMode_SPHERE },
536  { XML_TOKEN_INVALID, drawing::TextureProjectionMode(0) }
537 };
538 
540 {
541  { XML_LUMINANCE, drawing::TextureKind_LUMINANCE },
542  { XML_COLOR, drawing::TextureKind_COLOR },
543  { XML_TOKEN_INVALID, drawing::TextureKind(0) }
544 };
545 
547 {
548  { XML_REPLACE, drawing::TextureMode_REPLACE },
549  { XML_MODULATE, drawing::TextureMode_MODULATE },
550  { XML_BLEND, drawing::TextureMode_BLEND },
551  { XML_TOKEN_INVALID, drawing::TextureMode(0) }
552 };
553 
555 {
556  { XML_TOP_LEFT, drawing::RectanglePoint_LEFT_TOP },
557  { XML_TOP, drawing::RectanglePoint_MIDDLE_TOP },
558  { XML_TOP_RIGHT, drawing::RectanglePoint_RIGHT_TOP },
559  { XML_LEFT, drawing::RectanglePoint_LEFT_MIDDLE },
560  { XML_CENTER, drawing::RectanglePoint_MIDDLE_MIDDLE },
561  { XML_RIGHT, drawing::RectanglePoint_RIGHT_MIDDLE },
562  { XML_BOTTOM_LEFT, drawing::RectanglePoint_LEFT_BOTTOM },
563  { XML_BOTTOM, drawing::RectanglePoint_MIDDLE_BOTTOM },
564  { XML_BOTTOM_RIGHT, drawing::RectanglePoint_RIGHT_BOTTOM },
565  { XML_TOKEN_INVALID, drawing::RectanglePoint(0) }
566 };
567 
569 {
570  { XML_FULL, drawing::CircleKind_FULL },
571  { XML_SECTION, drawing::CircleKind_SECTION },
572  { XML_CUT, drawing::CircleKind_CUT },
573  { XML_ARC, drawing::CircleKind_ARC },
574  { XML_TOKEN_INVALID, drawing::CircleKind(0) }
575 };
576 
578 {
579  { XML_TB_RL, text::WritingMode_TB_RL },
580  { XML_LR_TB, text::WritingMode_LR_TB },
581  { XML_TOKEN_INVALID, text::WritingMode(0) }
582 };
583 
585 {
586  { XML_NONE, drawing::TextAnimationKind_NONE },
587  { XML_BLINKING, drawing::TextAnimationKind_BLINK }, // will be filtered
588  { XML_SCROLL, drawing::TextAnimationKind_SCROLL },
589  { XML_ALTERNATE, drawing::TextAnimationKind_ALTERNATE },
590  { XML_SLIDE, drawing::TextAnimationKind_SLIDE },
591  { XML_TOKEN_INVALID, drawing::TextAnimationKind(0) }
592 };
593 
595 {
596  { XML_FALSE, drawing::TextAnimationKind_NONE },
597  { XML_TRUE, drawing::TextAnimationKind_BLINK },
598  { XML_FALSE, drawing::TextAnimationKind_SCROLL },
599  { XML_FALSE, drawing::TextAnimationKind_ALTERNATE },
600  { XML_FALSE, drawing::TextAnimationKind_SLIDE },
601  { XML_TOKEN_INVALID, drawing::TextAnimationKind(0) }
602 };
603 
605 {
606  { XML_LEFT, drawing::TextAnimationDirection_LEFT },
607  { XML_RIGHT, drawing::TextAnimationDirection_RIGHT }, // will be filtered
608  { XML_UP, drawing::TextAnimationDirection_UP },
609  { XML_DOWN, drawing::TextAnimationDirection_DOWN },
610  { XML_TOKEN_INVALID, drawing::TextAnimationDirection(0) }
611 };
612 
614 {
615  { XML_LEFT, drawing::TextHorizontalAdjust_LEFT },
616  { XML_CENTER, drawing::TextHorizontalAdjust_CENTER },
617  { XML_RIGHT, drawing::TextHorizontalAdjust_RIGHT },
618  { XML_JUSTIFY, drawing::TextHorizontalAdjust_BLOCK },
619  { XML_TOKEN_INVALID, drawing::TextHorizontalAdjust(0) }
620 };
621 
623 {
624  { XML_TOP, drawing::TextVerticalAdjust_TOP },
625  { XML_MIDDLE, drawing::TextVerticalAdjust_CENTER },
626  { XML_BOTTOM, drawing::TextVerticalAdjust_BOTTOM },
627  { XML_JUSTIFY, drawing::TextVerticalAdjust_BLOCK },
628  { XML_TOKEN_INVALID, drawing::TextVerticalAdjust(0) }
629 };
630 
631 // note: PROPORTIONAL and ALLLINES are the same thing now!
633 {
634  { XML_FALSE, drawing::TextFitToSizeType_NONE },
635  { XML_TRUE, drawing::TextFitToSizeType_PROPORTIONAL },
636  { XML_TRUE, drawing::TextFitToSizeType_ALLLINES },
637  { XML_FALSE, drawing::TextFitToSizeType_AUTOFIT },
638  { XML_TOKEN_INVALID, drawing::TextFitToSizeType(0) }
639 };
640 
642 {
643  { XML_FALSE, drawing::TextFitToSizeType_NONE },
644  { XML_TRUE, drawing::TextFitToSizeType_PROPORTIONAL },
645  { XML_ALL, drawing::TextFitToSizeType_ALLLINES },
646  { XML_SHRINK_TO_FIT,drawing::TextFitToSizeType_AUTOFIT },
647  { XML_TOKEN_INVALID, drawing::TextFitToSizeType(0) }
648 };
649 
651 {
652  { XML_FALSE, drawing::TextFitToSizeType_NONE },
653  { XML_FALSE, drawing::TextFitToSizeType_PROPORTIONAL },
654  { XML_FALSE, drawing::TextFitToSizeType_ALLLINES },
655  { XML_TRUE, drawing::TextFitToSizeType_AUTOFIT },
656  { XML_TOKEN_INVALID, drawing::TextFitToSizeType(0) }
657 };
658 
660 {
661  { XML_AUTOMATIC, 0 },
662  { XML_MM, 1 },
663  { XML_UNIT_CM, 2 },
664  { XML_UNIT_M, 3 },
665  { XML_KM, 4 },
666  { XML_UNIT_PT, 6 },
667  { XML_UNIT_PC, 7 },
668  { XML_IN, 8 },
669  { XML_UNIT_FOOT, 9 },
670  { XML_MI, 10 },
671  { XML_TOKEN_INVALID,0 }
672 };
673 
675 {
676  { XML_AUTOMATIC, drawing::MeasureTextHorzPos_AUTO },
677  { XML_LEFT_OUTSIDE, drawing::MeasureTextHorzPos_LEFTOUTSIDE },
678  { XML_INSIDE, drawing::MeasureTextHorzPos_INSIDE },
679  { XML_RIGHT_OUTSIDE, drawing::MeasureTextHorzPos_RIGHTOUTSIDE},
680  { XML_TOKEN_INVALID, drawing::MeasureTextHorzPos(0) }
681 };
682 
684 {
685  { XML_AUTOMATIC, drawing::MeasureTextVertPos_AUTO },
686  { XML_ABOVE, drawing::MeasureTextVertPos_EAST },
687  { XML_BELOW, drawing::MeasureTextVertPos_WEST },
688  { XML_CENTER, drawing::MeasureTextVertPos_CENTERED },
689  { XML_TOKEN_INVALID, drawing::MeasureTextVertPos(0) }
690 };
691 
692 // #FontWork#
694 {
695  { XML_ROTATE, 0 }, //XFormTextStyle::Rotate,
696  { XML_UPRIGHT, 1 }, //XFormTextStyle::Upright,
697  { XML_SLANT_X, 2 }, //XFormTextStyle::SlantX,
698  { XML_SLANT_Y, 3 }, //XFormTextStyle::SlantY,
699  { XML_NONE, 4 }, //XFormTextStyle::NONE
700  { XML_TOKEN_INVALID,0 }
701 };
702 
704 {
705  { XML_LEFT, 0 }, //XFormTextAdjust::Left,
706  { XML_RIGHT, 1 }, //XFormTextAdjust::Right,
707  { XML_AUTOSIZE, 2 }, //XFormTextAdjust::AutoSize,
708  { XML_CENTER, 3 }, //XFormTextAdjust::Center
709  { XML_TOKEN_INVALID,0 }
710 };
711 
713 {
714  { XML_NORMAL, 0 }, //XFormTextShadow::Normal,
715  { XML_SLANT, 1 }, //XFormTextShadow::Slant,
716  { XML_NONE, 2 }, //XFormTextShadow::NONE
717  { XML_TOKEN_INVALID,0 }
718 };
719 
721 {
722  { XML_NONE, 0 }, //XFTFORM_NONE,
723  { XML_TOPCIRCLE, 1 }, //XFTFORM_TOPCIRC,
724  { XML_BOTTOMCIRCLE, 2 }, //XFTFORM_BOTCIRC,
725  { XML_LEFTCIRCLE, 3 }, //XFTFORM_LFTCIRC,
726  { XML_RIGHTCIRCLE, 4 }, //XFTFORM_RGTCIRC,
727  { XML_TOPARC, 5 }, //XFTFORM_TOPARC,
728  { XML_BOTTOMARC, 6 }, //XFTFORM_BOTARC,
729  { XML_LEFTARC, 7 }, //XFTFORM_LFTARC,
730  { XML_RIGHTARC, 8 }, //XFTFORM_RGTARC,
731  { XML_BUTTON1, 9 }, //XFTFORM_BUTTON1,
732  { XML_BUTTON2, 10 }, //XFTFORM_BUTTON2,
733  { XML_BUTTON3, 11 }, //XFTFORM_BUTTON3,
734  { XML_BUTTON4, 12 }, //XFTFORM_BUTTON4
735  { XML_TOKEN_INVALID,0 }
736 };
737 
739 {
740  { XML_HORIZONTAL, 0 }, //SdrCaptionEscDir::Horizontal,
741  { XML_VERTICAL, 1 }, //SdrCaptionEscDir::Vertical,
742  { XML_AUTO, 2 }, //SdrCaptionEscDir::BestFit,
743  { XML_TOKEN_INVALID,0 }
744 };
745 
747 {
748  { XML_STRAIGHT_LINE, 0 }, //SdrCaptionType::Type1,
749  { XML_ANGLED_LINE, 1 }, //SdrCaptionType::Type2,
750  { XML_ANGLED_CONNECTOR_LINE, 2 }, //SdrCaptionType::Type3,
751  { XML_TOKEN_INVALID,0 }
752 };
753 
754 namespace {
755 
756 class XMLCaptionEscapeRelative : public XMLPropertyHandler
757 {
758 public:
759  virtual bool importXML(
760  const OUString& rStrImpValue,
761  css::uno::Any& rValue,
762  const SvXMLUnitConverter& rUnitConverter ) const override;
763  virtual bool exportXML(
764  OUString& rStrExpValue,
765  const css::uno::Any& rValue,
766  const SvXMLUnitConverter& rUnitConverter ) const override;
767 };
768 
769 }
770 
771 bool XMLCaptionEscapeRelative::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
772 {
773  sal_Int32 nValue;
774 
775  if (!::sax::Converter::convertPercent( nValue, rStrImpValue ))
776  return false;
777 
778  nValue *= 100;
779  rValue <<= nValue;
780  return true;
781 }
782 
783 bool XMLCaptionEscapeRelative::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
784 {
785  sal_Int32 nValue = 0;
786  if( !(rValue >>= nValue ) )
787  return false;
788 
789  nValue /= 100;
790  OUStringBuffer aOut;
791  ::sax::Converter::convertPercent( aOut, nValue );
792  rStrExpValue = aOut.makeStringAndClear();
793  return true;
794 }
795 
796 namespace {
797 
798 class XMLMoveSizeProtectHdl : public XMLPropertyHandler
799 {
800 public:
801  explicit XMLMoveSizeProtectHdl( sal_Int32 nType ) : mnType( nType ) {}
802 
803  virtual bool importXML(
804  const OUString& rStrImpValue,
805  css::uno::Any& rValue,
806  const SvXMLUnitConverter& rUnitConverter ) const override;
807  virtual bool exportXML(
808  OUString& rStrExpValue,
809  const css::uno::Any& rValue,
810  const SvXMLUnitConverter& rUnitConverter ) const override;
811 private:
812  const sal_Int32 mnType;
813 };
814 
815 }
816 
817 bool XMLMoveSizeProtectHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
818 {
819  const bool bValue = rStrImpValue.indexOf( GetXMLToken( mnType == XML_SD_TYPE_MOVE_PROTECT ? XML_POSITION : XML_SIZE ) ) != -1;
820  rValue <<= bValue;
821  return true;
822 }
823 
824 bool XMLMoveSizeProtectHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
825 {
826  bool bValue;
827  if( !(rValue >>= bValue ) )
828  return false;
829 
830  if( bValue )
831  {
832  if( !rStrExpValue.isEmpty() )
833  rStrExpValue += " ";
834 
835  rStrExpValue += GetXMLToken( mnType == XML_SD_TYPE_MOVE_PROTECT ? XML_POSITION : XML_SIZE );
836  }
837 
838  return true;
839 }
840 
841 namespace {
842 
843 class XMLSdHeaderFooterVisibilityTypeHdl : public XMLPropertyHandler
844 {
845 public:
846  virtual bool importXML( const OUString& rStrImpValue, css::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const override;
847  virtual bool exportXML( OUString& rStrExpValue, const css::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const override;
848 };
849 
850 }
851 
852 bool XMLSdHeaderFooterVisibilityTypeHdl::importXML(
853  const OUString& rStrImpValue,
854  css::uno::Any& rValue,
855  const SvXMLUnitConverter& ) const
856 {
857  // #i38644#
858  // attributes with this type where saved with VISIBLE|HIDDEN prior
859  // to src680m67. So we have to import that correctly
860  const bool bBool = IsXMLToken(rStrImpValue, XML_TRUE) || IsXMLToken(rStrImpValue, XML_VISIBLE);
861  rValue <<= bBool;
862  return bBool || IsXMLToken(rStrImpValue, XML_FALSE) || IsXMLToken(rStrImpValue, XML_HIDDEN);
863 }
864 
865 bool XMLSdHeaderFooterVisibilityTypeHdl::exportXML(
866  OUString& rStrExpValue,
867  const Any& rValue,
868  const SvXMLUnitConverter& ) const
869 {
870  bool bRet = false;
871  bool bValue;
872 
873  if (rValue >>= bValue)
874  {
875  OUStringBuffer aOut;
876  ::sax::Converter::convertBool( aOut, bValue );
877  rStrExpValue = aOut.makeStringAndClear();
878 
879  bRet = true;
880  }
881 
882  return bRet;
883 }
884 
885 namespace {
886 
887 class XMLSdRotationAngleTypeHdl : public XMLPropertyHandler
888 {
889 public:
890  virtual bool importXML(const OUString& rStrImpValue, css::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter) const override;
891  virtual bool exportXML(OUString& rStrExpValue, const css::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter) const override;
892 };
893 
894 }
895 
896 bool XMLSdRotationAngleTypeHdl::importXML(
897  const OUString& rStrImpValue,
898  css::uno::Any& rValue,
899  const SvXMLUnitConverter&) const
900 {
901  sal_Int32 nValue;
902  bool const bRet = ::sax::Converter::convertNumber(nValue, rStrImpValue);
903  if (bRet)
904  {
905  nValue = (nValue % 360);
906  if (nValue < 0)
907  nValue = 360 + nValue;
908  sal_Int32 nAngle;
909  if (nValue < 45 || nValue > 315)
910  nAngle = 0;
911  else if (nValue < 180)
912  nAngle = 9000;
913  else /* if nValue <= 315 ) */
914  nAngle = 27000;
915 
916  rValue <<= nAngle;
917  }
918  return bRet;
919 }
920 
921 bool XMLSdRotationAngleTypeHdl::exportXML(
922  OUString& rStrExpValue,
923  const Any& rValue,
924  const SvXMLUnitConverter&) const
925 {
926  sal_Int32 nAngle;
927  bool bRet = (rValue >>= nAngle) && nAngle != 0;
928  if (bRet)
929  {
930  rStrExpValue = OUString::number(nAngle / 100);
931  }
932  return bRet;
933 }
934 
935 namespace {
936 
937 class XMLFitToSizeEnumPropertyHdl : public XMLEnumPropertyHdl
938 {
939 public:
940  XMLFitToSizeEnumPropertyHdl(
942  : XMLEnumPropertyHdl(pMap) {}
943 
944  virtual bool importXML(const OUString& rStrImpValue, uno::Any& rValue,
945  const SvXMLUnitConverter& rUC) const override
946  {
947  // we don't know here what the actual attribute name is -
948  // but we can combine the 2 attributes by just taking the
949  // "largest" result value; this can never result in ALLLINES
950  // so the implementation has to interpret PROPORTIONAL as ALLLINES;
951  // both "true" is invalid anyway.
952  Any any;
953  auto const bRet = XMLEnumPropertyHdl::importXML(rStrImpValue, any, rUC);
954  if (!bRet)
955  {
956  return false;
957  }
958  assert(any.hasValue());
959  if (!rValue.hasValue() ||
960  rValue.get<drawing::TextFitToSizeType>() < any.get<drawing::TextFitToSizeType>())
961  {
962  rValue = any;
963  }
964  return true;
965  }
966 };
967 
968 }
969 
970 XMLSdPropHdlFactory::XMLSdPropHdlFactory( uno::Reference< frame::XModel > const & xModel, SvXMLImport& rImport )
971 : mxModel( xModel ), mpExport(nullptr), mpImport( &rImport )
972 {
973 }
974 
975 XMLSdPropHdlFactory::XMLSdPropHdlFactory( uno::Reference< frame::XModel > const & xModel, SvXMLExport& rExport )
976 : mxModel( xModel ), mpExport( &rExport ), mpImport(nullptr)
977 {
978 }
979 
981 {
982 }
983 
985 {
987  if(!pHdl)
988  {
989  switch(nType)
990  {
991  case XML_SD_TYPE_STROKE :
992  {
993  pHdl = new XMLEnumPropertyHdl( aXML_LineStyle_EnumMap);
994  break;
995  }
996  case XML_SD_TYPE_LINEJOIN :
997  {
998  pHdl = new XMLEnumPropertyHdl( aXML_LineJoint_EnumMap);
999  break;
1000  }
1001  case XML_SD_TYPE_LINECAP :
1002  {
1003  pHdl = new XMLEnumPropertyHdl( aXML_LineCap_EnumMap );
1004  break;
1005  }
1006  case XML_SD_TYPE_FILLSTYLE :
1007  {
1008  pHdl = new XMLEnumPropertyHdl( aXML_FillStyle_EnumMap );
1009  break;
1010  }
1012  {
1013  pHdl = new XMLEnumPropertyHdl( aXML_PresChange_EnumMap );
1014  break;
1015  }
1017  {
1019  break;
1020  }
1021  case XML_TYPE_SD_MIRROR:
1022  {
1024  break;
1025  }
1027  {
1028  pHdl = new XMLEnumPropertyHdl( aXML_FadeEffect_EnumMap );
1029  break;
1030  }
1032  {
1033  pHdl = new XMLEnumPropertyHdl( aXML_TransSpeed_EnumMap );
1034  break;
1035  }
1037  {
1038  pHdl = new XMLDurationPropertyHdl;
1039  break;
1040  }
1042  {
1044  break;
1045  }
1046  case XML_SD_TYPE_OPACITY :
1047  {
1048  pHdl = new XMLOpacityPropertyHdl(mpImport);
1049  break;
1050  }
1052  {
1053  pHdl = new XMLEnumPropertyHdl( aXML_WritingMode_EnumMap );
1054  break;
1055  }
1057  {
1059  break;
1060  }
1062  {
1064  break;
1065  }
1066 
1067  // 3D Properties
1068 
1070  {
1071  // #87922# DoubleSided -> BackfaceCulling
1072  // This sal_Bool needs to be flipped, DoubleSided sal_True -> NO Backface culling
1073  // and vice versa.
1075  break;
1076  }
1077 
1079  {
1080  pHdl = new XMLEnumPropertyHdl( aXML_NormalsKind_EnumMap );
1081  break;
1082  }
1084  {
1086  break;
1087  }
1089  {
1090  pHdl = new XMLEnumPropertyHdl( aXML_TexGenerationX_EnumMap );
1091  break;
1092  }
1094  {
1095  pHdl = new XMLEnumPropertyHdl( aXML_TexGenerationY_EnumMap );
1096  break;
1097  }
1098  case XML_SD_TYPE_TEX_KIND:
1099  {
1100  pHdl = new XMLEnumPropertyHdl( aXML_TexKind_EnumMap );
1101  break;
1102  }
1103  case XML_SD_TYPE_TEX_MODE:
1104  {
1105  pHdl = new XMLEnumPropertyHdl( aXML_TexMode_EnumMap );
1106  break;
1107  }
1108  case XML_SD_TYPE_NUMBULLET:
1109  {
1110  uno::Reference<ucb::XAnyCompareFactory> xCompareFac( mxModel, uno::UNO_QUERY );
1111  uno::Reference<ucb::XAnyCompare> xCompare;
1112  if( xCompareFac.is() )
1113  xCompare = xCompareFac->createAnyCompareByName( "NumberingRules" );
1114 
1115  pHdl = new XMLNumRulePropHdl( xCompare );
1116  break;
1117  }
1119  {
1120  pHdl = new XMLEnumPropertyHdl( aXML_BitmapMode_EnumMap );
1121  break;
1122  }
1125  {
1127  break;
1128  }
1130  {
1131  pHdl = new XMLFillBitmapSizePropertyHandler();
1132  break;
1133  }
1135  {
1137  break;
1138  }
1140  {
1141  pHdl = new XMLEnumPropertyHdl( aXML_RefPoint_EnumMap);
1142  break;
1143  }
1145  pHdl = new XMLEnumPropertyHdl( pXML_TextAnimation_Enum);
1146  break;
1148  pHdl = new XMLEnumPropertyHdl( pXML_TextAnimation_Blinking_Enum);
1149  break;
1151  pHdl = new XMLEnumPropertyHdl( pXML_TextAnimationDirection_Enum);
1152  break;
1155  break;
1157  pHdl = new XMLEnumPropertyHdl( pXML_TextAlign_Enum);
1158  break;
1160  pHdl = new XMLEnumPropertyHdl( pXML_VerticalAlign_Enum);
1161  break;
1162  case XML_SD_TYPE_FITTOSIZE:
1163  {
1164  if (mpExport
1165  && (mpExport->getSaneDefaultVersion() // tdf#97630
1167  {
1168  pHdl = new XMLFitToSizeEnumPropertyHdl(pXML_FitToSize_Enum_Odf12);
1169  }
1170  else
1171  { // import all values written by old LO
1172  pHdl = new XMLFitToSizeEnumPropertyHdl(pXML_FitToSize_Enum);
1173  }
1174  }
1175  break;
1177  {
1178  pHdl = new XMLFitToSizeEnumPropertyHdl(pXML_ShrinkToFit_Enum);
1179  }
1180  break;
1182  pHdl = new XMLEnumPropertyHdl( pXML_MeasureUnit_Enum );
1183  break;
1185  pHdl = new XMLEnumPropertyHdl( pXML_Measure_HAlign_Enum);
1186  break;
1188  pHdl = new XMLEnumPropertyHdl( pXML_Measure_VAlign_Enum);
1189  break;
1191  {
1193  }
1194  break;
1195  case XML_TYPE_TEXT_CLIP11:
1196  pHdl = new XMLClipPropertyHandler( true );
1197  break;
1198  case XML_TYPE_TEXT_CLIP:
1199  pHdl = new XMLClipPropertyHandler( false );
1200  break;
1201 
1202  // #FontWork#
1204  pHdl = new XMLEnumPropertyHdl( pXML_Fontwork_Style_Enum );
1205  break;
1207  pHdl = new XMLEnumPropertyHdl( pXML_Fontwork_Adjust_Enum );
1208  break;
1210  pHdl = new XMLEnumPropertyHdl( pXML_Fontwork_Shadow_Enum );
1211  break;
1213  pHdl = new XMLEnumPropertyHdl( pXML_Fontwork_Form_Enum );
1214  break;
1215 
1217  pHdl = new ::xmloff::OControlBorderHandler( ::xmloff::OControlBorderHandler::STYLE );
1218  break;
1220  pHdl = new ::xmloff::OControlBorderHandler( ::xmloff::OControlBorderHandler::COLOR );
1221  break;
1223  pHdl = new ::xmloff::ImageScaleModeHandler;
1224  break;
1226  pHdl = new ::xmloff::OControlTextEmphasisHandler;
1227  break;
1228 
1230  {
1232  break;
1233  }
1235  pHdl = new XMLIsPercentagePropertyHandler;
1236  break;
1238  pHdl = new XMLCaptionEscapeRelative;
1239  break;
1242  break;
1244  pHdl = new XMLEnumPropertyHdl( pXML_Caption_Esc_Dir_Enum );
1245  break;
1247  pHdl = new XMLEnumPropertyHdl( pXML_Caption_Type_Enum );
1248  break;
1251  break;
1253  pHdl = new XMLDateTimeFormatHdl( mpExport );
1254  break;
1257  break;
1260  break;
1263  break;
1264  case XML_TYPE_WRAP_OPTION:
1265  pHdl = new XMLWordWrapPropertyHdl( mpImport );
1266  break;
1267 
1270  pHdl = new XMLMoveSizeProtectHdl( nType );
1271  break;
1273  pHdl = new XMLSdHeaderFooterVisibilityTypeHdl;
1274  break;
1276  pHdl = new XMLSdRotationAngleTypeHdl;
1277  break;
1278  }
1279 
1280  if(pHdl)
1281  PutHdlCache(nType, pHdl);
1282  }
1283 
1284  return pHdl;
1285 }
1286 
1288  bool bForExport)
1289 : XMLPropertySetMapper( aXMLSDProperties, rFactoryRef, bForExport )
1290 {
1291 }
1292 
1294 {
1295 }
1296 
1298 : SvXMLExportPropertyMapper( rMapper )
1299 , maNumRuleExp( rExport )
1300 , mbIsInAutoStyles( true )
1301 {
1302 }
1303 
1305 {
1306 }
1307 
1309  bool bEnableFoFontFamily,
1310  std::vector< XMLPropertyState >& rProperties,
1311  const uno::Reference< beans::XPropertySet >& rPropSet ) const
1312 {
1313  XMLPropertyState* pRepeatOffsetX = nullptr;
1314  XMLPropertyState* pRepeatOffsetY = nullptr;
1315  XMLPropertyState* pTextAnimationBlinking = nullptr;
1316  XMLPropertyState* pTextAnimationKind = nullptr;
1317 
1318  // #FontWork#
1319  XMLPropertyState* pFontWorkStyle = nullptr;
1320  XMLPropertyState* pFontWorkAdjust = nullptr;
1321  XMLPropertyState* pFontWorkDistance = nullptr;
1322  XMLPropertyState* pFontWorkStart = nullptr;
1323  XMLPropertyState* pFontWorkMirror = nullptr;
1324  XMLPropertyState* pFontWorkOutline = nullptr;
1325  XMLPropertyState* pFontWorkShadow = nullptr;
1326  XMLPropertyState* pFontWorkShadowColor = nullptr;
1327  XMLPropertyState* pFontWorkShadowOffsetx = nullptr;
1328  XMLPropertyState* pFontWorkShadowOffsety = nullptr;
1329  XMLPropertyState* pFontWorkForm = nullptr;
1330  XMLPropertyState* pFontWorkHideform = nullptr;
1331  XMLPropertyState* pFontWorkShadowTransparence = nullptr;
1332 
1333  // OLE
1334  XMLPropertyState* pOLEVisAreaLeft = nullptr;
1335  XMLPropertyState* pOLEVisAreaTop = nullptr;
1336  XMLPropertyState* pOLEVisAreaWidth = nullptr;
1337  XMLPropertyState* pOLEVisAreaHeight = nullptr;
1338  XMLPropertyState* pOLEIsInternal = nullptr;
1339 
1340  // caption
1341  XMLPropertyState* pCaptionIsEscRel = nullptr;
1342  XMLPropertyState* pCaptionEscRel = nullptr;
1343  XMLPropertyState* pCaptionEscAbs = nullptr;
1344 
1345  // filter fo:clip
1346  XMLPropertyState* pClip11State = nullptr;
1347  XMLPropertyState* pClipState = nullptr;
1348 
1349  XMLPropertyState* pShapeWritingMode = nullptr;
1350  XMLPropertyState* pTextWritingMode = nullptr;
1351  XMLPropertyState* pControlWritingMode = nullptr;
1352 
1353  // filter properties
1354  for( auto& rProp : rProperties )
1355  {
1356  XMLPropertyState *property = &rProp;
1357  if( property->mnIndex == -1 )
1358  continue;
1359 
1360  // find properties with context
1361  // to prevent writing this property set mnIndex member to -1
1362  switch( getPropertySetMapper()->GetEntryContextId( property->mnIndex ))
1363  {
1364  case CTF_NUMBERINGRULES:
1365  {
1366  if( mbIsInAutoStyles )
1367  property->mnIndex = -1;
1368  }
1369  break;
1371  {
1372  // this property is not exported in the style:properties element
1373  // because it's an XIndexAccess and not a string.
1374  // This will be handled in SvXMLAutoStylePoolP::exportStyleAttributes
1375  // This is suboptimal
1376  if( !mbIsInAutoStyles )
1377  property->mnIndex = -1;
1378  }
1379  break;
1380  case CTF_WRITINGMODE:
1381  pShapeWritingMode = property;
1382  break;
1384  pControlWritingMode = property;
1385  break;
1386  case CTF_TEXTWRITINGMODE:
1387  pTextWritingMode = property;
1388  break;
1389  case CTF_REPEAT_OFFSET_X:
1390  pRepeatOffsetX = property;
1391  break;
1392 
1393  case CTF_REPEAT_OFFSET_Y:
1394  pRepeatOffsetY = property;
1395  break;
1396 
1397  case CTF_DASHNAME:
1398  case CTF_FILLGRADIENTNAME:
1399  case CTF_FILLHATCHNAME:
1400  case CTF_FILLBITMAPNAME:
1401  {
1402  OUString aStr;
1403  if( (property->maValue >>= aStr) && aStr.isEmpty() )
1404  property->mnIndex = -1;
1405  }
1406  break;
1408  pTextAnimationBlinking = property;
1409  break;
1411  pTextAnimationKind = property;
1412  break;
1413 
1414  // #FontWork#
1415  case CTF_FONTWORK_STYLE: pFontWorkStyle = property; break;
1416  case CTF_FONTWORK_ADJUST: pFontWorkAdjust = property; break;
1417  case CTF_FONTWORK_DISTANCE: pFontWorkDistance = property; break;
1418  case CTF_FONTWORK_START: pFontWorkStart = property; break;
1419  case CTF_FONTWORK_MIRROR: pFontWorkMirror = property; break;
1420  case CTF_FONTWORK_OUTLINE: pFontWorkOutline = property; break;
1421  case CTF_FONTWORK_SHADOW: pFontWorkShadow = property; break;
1422  case CTF_FONTWORK_SHADOWCOLOR: pFontWorkShadowColor = property; break;
1423  case CTF_FONTWORK_SHADOWOFFSETX: pFontWorkShadowOffsetx = property; break;
1424  case CTF_FONTWORK_SHADOWOFFSETY: pFontWorkShadowOffsety = property; break;
1425  case CTF_FONTWORK_FORM: pFontWorkForm = property; break;
1426  case CTF_FONTWORK_HIDEFORM: pFontWorkHideform = property; break;
1427  case CTF_FONTWORK_SHADOWTRANSPARENCE: pFontWorkShadowTransparence = property; break;
1428 
1429  // OLE
1430  case CTF_SD_OLE_VIS_AREA_EXPORT_LEFT: pOLEVisAreaLeft = property; break;
1431  case CTF_SD_OLE_VIS_AREA_EXPORT_TOP: pOLEVisAreaTop = property; break;
1432  case CTF_SD_OLE_VIS_AREA_EXPORT_WIDTH: pOLEVisAreaWidth = property; break;
1433  case CTF_SD_OLE_VIS_AREA_EXPORT_HEIGHT: pOLEVisAreaHeight = property; break;
1434  case CTF_SD_OLE_ISINTERNAL: pOLEIsInternal = property; break;
1435 
1437  {
1438  if( !property->maValue.hasValue() )
1439  property->mnIndex = -1;
1440  }
1441  break;
1442  case CTF_FRAME_MARGIN_HORI:
1443  case CTF_FRAME_MARGIN_VERT:
1444  {
1445  sal_Int32 nValue = 0;
1446  if( (property->maValue >>= nValue) && (nValue < 0) )
1447  property->mnIndex = -1;
1448  }
1449  break;
1450 
1451  case CTF_SD_MOVE_PROTECT:
1452  {
1453  bool bProtected;
1454  if( (property->maValue >>= bProtected) && !bProtected )
1455  property->mnIndex = -1;
1456  }
1457  break;
1458  case CTF_SD_SIZE_PROTECT:
1459  {
1460  bool bProtected;
1461  if( (property->maValue >>= bProtected) && !bProtected )
1462  property->mnIndex = -1;
1463  }
1464  break;
1465  case CTF_CAPTION_ISESCREL: pCaptionIsEscRel = property; break;
1466  case CTF_CAPTION_ESCREL: pCaptionEscRel = property; break;
1467  case CTF_CAPTION_ESCABS: pCaptionEscAbs = property; break;
1468  case CTF_TEXT_CLIP11: pClip11State = property; break;
1469  case CTF_TEXT_CLIP: pClipState = property; break;
1470  }
1471  }
1472 
1473  // check for duplicate writing mode
1474  if( pShapeWritingMode && (pTextWritingMode || pControlWritingMode) )
1475  {
1476  if( pTextWritingMode )
1477  pTextWritingMode->mnIndex = -1;
1478  if( pControlWritingMode )
1479  pControlWritingMode->mnIndex = -1;
1480 
1481  text::WritingMode eWritingMode;
1482  if( pShapeWritingMode->maValue >>= eWritingMode )
1483  {
1484  if( text::WritingMode_LR_TB == eWritingMode )
1485  {
1486  pShapeWritingMode->mnIndex = -1;
1487  pShapeWritingMode = nullptr;
1488  }
1489  }
1490  }
1491  else if( pTextWritingMode && pControlWritingMode )
1492  {
1493  pControlWritingMode->mnIndex = -1;
1494 
1495  sal_Int32 eWritingMode;
1496  if (pTextWritingMode->maValue >>= eWritingMode)
1497  {
1498  if (text::WritingMode2::LR_TB == eWritingMode)
1499  {
1500  pTextWritingMode->mnIndex = -1;
1501  pTextWritingMode = nullptr;
1502  }
1503  }
1504  }
1505 
1506  // do not export visual area for internal ole objects
1507  if( pOLEIsInternal )
1508  {
1509  bool bInternal;
1510  if( (pOLEIsInternal->maValue >>= bInternal) && !bInternal )
1511  {
1512  try
1513  {
1514  awt::Rectangle aRect;
1515  if( rPropSet->getPropertyValue( "VisibleArea" ) >>= aRect )
1516  {
1517  if( pOLEVisAreaLeft )
1518  {
1519  pOLEVisAreaLeft->mnIndex = getPropertySetMapper()->FindEntryIndex( CTF_SD_OLE_VIS_AREA_IMPORT_LEFT );
1520  pOLEVisAreaLeft->maValue <<= aRect;
1521  }
1522  if( pOLEVisAreaTop )
1523  {
1524  pOLEVisAreaTop->mnIndex = getPropertySetMapper()->FindEntryIndex( CTF_SD_OLE_VIS_AREA_IMPORT_TOP );
1525  pOLEVisAreaTop->maValue <<= aRect;
1526  }
1527  if( pOLEVisAreaWidth )
1528  {
1529  pOLEVisAreaWidth->mnIndex = getPropertySetMapper()->FindEntryIndex( CTF_SD_OLE_VIS_AREA_IMPORT_WIDTH );
1530  pOLEVisAreaWidth->maValue <<= aRect;
1531  }
1532  if( pOLEVisAreaHeight )
1533  {
1534  pOLEVisAreaHeight->mnIndex = getPropertySetMapper()->FindEntryIndex( CTF_SD_OLE_VIS_AREA_IMPORT_HEIGHT );
1535  pOLEVisAreaHeight->maValue <<= aRect;
1536  }
1537  }
1538  }
1539  catch( uno::Exception& )
1540  {
1541  }
1542  }
1543  else
1544  {
1545  if( pOLEVisAreaLeft ) pOLEVisAreaLeft->mnIndex = -1;
1546  if( pOLEVisAreaTop ) pOLEVisAreaTop->mnIndex = -1;
1547  if( pOLEVisAreaWidth ) pOLEVisAreaWidth->mnIndex = -1;
1548  if( pOLEVisAreaHeight ) pOLEVisAreaHeight->mnIndex = -1;
1549  }
1550 
1551  pOLEIsInternal->mnIndex = -1;
1552  }
1553 
1554  if( pTextAnimationBlinking && pTextAnimationKind )
1555  {
1556  drawing::TextAnimationKind eKind;
1557  if( (pTextAnimationKind->maValue >>= eKind) && eKind != drawing::TextAnimationKind_BLINK )
1558  {
1559  pTextAnimationBlinking->mnIndex = -1;
1560  }
1561  else
1562  {
1563  pTextAnimationKind->mnIndex = -1;
1564  }
1565  }
1566 
1567  if( pRepeatOffsetX && pRepeatOffsetY )
1568  {
1569  sal_Int32 nOffset = 0;
1570  if( ( pRepeatOffsetX->maValue >>= nOffset ) && ( nOffset == 0 ) )
1571  pRepeatOffsetX->mnIndex = -1;
1572  else
1573  pRepeatOffsetY->mnIndex = -1;
1574  }
1575 
1576  if(pFontWorkStyle)
1577  {
1578  // #FontWork#
1579  sal_Int32 nStyle = 0;
1580 
1581  if(pFontWorkStyle->maValue >>= nStyle)
1582  {
1583  if(/*XFormTextStyle::NONE*/4 == nStyle)
1584  {
1585  pFontWorkStyle->mnIndex = -1;
1586  if(pFontWorkAdjust)
1587  pFontWorkAdjust->mnIndex = -1;
1588  if(pFontWorkDistance)
1589  pFontWorkDistance->mnIndex = -1;
1590  if(pFontWorkStart)
1591  pFontWorkStart->mnIndex = -1;
1592  if(pFontWorkMirror)
1593  pFontWorkMirror->mnIndex = -1;
1594  if(pFontWorkOutline)
1595  pFontWorkOutline->mnIndex = -1;
1596  if(pFontWorkShadow)
1597  pFontWorkShadow->mnIndex = -1;
1598  if(pFontWorkShadowColor)
1599  pFontWorkShadowColor->mnIndex = -1;
1600  if(pFontWorkShadowOffsetx)
1601  pFontWorkShadowOffsetx->mnIndex = -1;
1602  if(pFontWorkShadowOffsety)
1603  pFontWorkShadowOffsety->mnIndex = -1;
1604  if(pFontWorkForm)
1605  pFontWorkForm->mnIndex = -1;
1606  if(pFontWorkHideform)
1607  pFontWorkHideform->mnIndex = -1;
1608  if(pFontWorkShadowTransparence)
1609  pFontWorkShadowTransparence->mnIndex = -1;
1610  }
1611  }
1612  }
1613 
1614  if( pCaptionIsEscRel )
1615  {
1616  bool bIsRel = false;
1617  pCaptionIsEscRel->maValue >>= bIsRel;
1618 
1619  if( bIsRel )
1620  {
1621  if( pCaptionEscAbs )
1622  pCaptionEscAbs->mnIndex = -1;
1623  }
1624  else
1625  {
1626  if( pCaptionEscRel )
1627  pCaptionEscRel->mnIndex = -1;
1628  }
1629 
1630  pCaptionIsEscRel->mnIndex = -1;
1631  }
1632 
1633  if( pClipState != nullptr && pClip11State != nullptr )
1634  pClip11State->mnIndex = -1;
1635 
1636  SvXMLExportPropertyMapper::ContextFilter(bEnableFoFontFamily, rProperties, rPropSet);
1637 }
1638 
1640  SvXMLAttributeList& rAttrList,
1641  const XMLPropertyState& rProperty,
1642  const SvXMLUnitConverter& rUnitConverter,
1643  const SvXMLNamespaceMap& rNamespaceMap,
1644  const ::std::vector< XMLPropertyState > *pProperties,
1645  sal_uInt32 nIdx ) const
1646 {
1647  switch( getPropertySetMapper()->GetEntryContextId( rProperty.mnIndex ) )
1648  {
1650  // not to be handled by the base class
1651  break;
1652 
1653  default:
1654  SvXMLExportPropertyMapper::handleSpecialItem( rAttrList, rProperty, rUnitConverter, rNamespaceMap, pProperties, nIdx );
1655  break;
1656  }
1657 }
1658 
1661  const XMLPropertyState& rProperty,
1662  SvXmlExportFlags nFlags,
1663  const ::std::vector< XMLPropertyState > *pProperties,
1664  sal_uInt32 nIdx) const
1665 {
1666  switch( getPropertySetMapper()->GetEntryContextId( rProperty.mnIndex ) )
1667  {
1668  case CTF_NUMBERINGRULES:
1669  {
1670  // only export list-styles as elements in styles section
1671  if( !mbIsInAutoStyles )
1672  {
1673  uno::Reference< container::XIndexReplace > xNumRule( rProperty.maValue, uno::UNO_QUERY );
1674  if( xNumRule.is() )
1675  const_cast<XMLShapeExportPropertyMapper*>(this)->maNumRuleExp.exportNumberingRule(GetStyleName(), false, xNumRule);
1676  }
1677  }
1678  break;
1679  default:
1680  SvXMLExportPropertyMapper::handleElementItem( rExport, rProperty, nFlags, pProperties, nIdx );
1681  break;
1682  }
1683 }
1684 
1686  SvXMLExportPropertyMapper( rMapper ),
1687  mrExport( rExport )
1688 {
1689 }
1690 
1692 {
1693 }
1694 
1696  bool bEnableFoFontFamily,
1697  std::vector< XMLPropertyState >& rProperties,
1698  const uno::Reference< beans::XPropertySet >& rPropSet ) const
1699 {
1700  XMLPropertyState* pRepeatOffsetX = nullptr;
1701  XMLPropertyState* pRepeatOffsetY = nullptr;
1702  XMLPropertyState* pTransType = nullptr;
1703  XMLPropertyState* pTransDuration = nullptr;
1704  XMLPropertyState* pDateTimeUpdate = nullptr;
1705  XMLPropertyState* pDateTimeFormat = nullptr;
1706  XMLPropertyState* pTransitionFadeColor = nullptr;
1707 
1708  sal_Int16 nTransitionType = 0;
1709 
1710  // filter properties
1711  for( auto& rProp : rProperties )
1712  {
1713  XMLPropertyState *property = &rProp;
1714  if( property->mnIndex == -1 )
1715  continue;
1716 
1717  // find properties with context
1718  // to prevent writing this property set mnIndex member to -1
1719  switch( getPropertySetMapper()->GetEntryContextId( property->mnIndex ))
1720  {
1721 
1722  case CTF_REPEAT_OFFSET_X:
1723  pRepeatOffsetX = property;
1724  break;
1725 
1726  case CTF_REPEAT_OFFSET_Y:
1727  pRepeatOffsetY = property;
1728  break;
1729  case CTF_PAGE_TRANS_TYPE:
1730  pTransType = property;
1731  break;
1732  case CTF_PAGE_TRANS_STYLE:
1734  (*property).mnIndex = -1;
1735  break;
1737  {
1739  (((*property).maValue >>= nTransitionType) && (nTransitionType == 0)) )
1740  (*property).mnIndex = -1;
1741  }
1742  break;
1744  {
1745  sal_Int16 nTransitionSubtype = sal_Int16();
1747  (((*property).maValue >>= nTransitionSubtype) && (nTransitionSubtype == 0)) )
1748  (*property).mnIndex = -1;
1749 
1750  }
1751  break;
1753  {
1754  bool bDirection;
1756  (((*property).maValue >>= bDirection) && bDirection) )
1757  (*property).mnIndex = -1;
1758  }
1759  break;
1762  (*property).mnIndex = -1;
1763  else
1764  pTransitionFadeColor = property;
1765  break;
1766  case CTF_PAGE_TRANS_SPEED:
1767  {
1768  presentation::AnimationSpeed aEnum;
1769  if( ((*property).maValue >>= aEnum) && aEnum == presentation::AnimationSpeed_MEDIUM )
1770  (*property).mnIndex = -1;
1771  }
1772  break;
1773  case CTF_PAGE_VISIBLE:
1774  {
1775  bool bVisible = false;
1776  (*property).maValue >>= bVisible;
1777  if( bVisible )
1778  (*property).mnIndex = -1;
1779  }
1780  break;
1782  pTransDuration = property;
1783  break;
1784  case CTF_HEADER_TEXT:
1785  case CTF_FOOTER_TEXT:
1786  case CTF_DATE_TIME_TEXT:
1787  {
1788  OUString aValue;
1789  (*property).maValue >>= aValue;
1790  if( aValue.isEmpty() )
1791  (*property).mnIndex = -1;
1792  }
1793  break;
1794 
1795  case CTF_DATE_TIME_UPDATE:
1796  pDateTimeUpdate = property;
1797  break;
1798 
1799  case CTF_DATE_TIME_FORMAT:
1800  pDateTimeFormat = property;
1801  break;
1802  }
1803  }
1804 
1805  if( pTransitionFadeColor && nTransitionType != css::animations::TransitionType::FADE )
1806  pTransitionFadeColor->mnIndex = -1;
1807 
1808  if( pDateTimeFormat && pDateTimeUpdate )
1809  {
1810  bool bIsFixed = false;
1811  pDateTimeUpdate->maValue >>= bIsFixed;
1812  if( bIsFixed )
1813  pDateTimeFormat->mnIndex = -1;
1814  }
1815 
1816  if( pRepeatOffsetX && pRepeatOffsetY )
1817  {
1818  sal_Int32 nOffset = 0;
1819  if( ( pRepeatOffsetX->maValue >>= nOffset ) && ( nOffset == 0 ) )
1820  pRepeatOffsetX->mnIndex = -1;
1821  else
1822  pRepeatOffsetY->mnIndex = -1;
1823  }
1824 
1825  if( pTransType && pTransDuration )
1826  {
1827  sal_Int32 nChange = 0;
1828  pTransType->maValue >>= nChange;
1829 
1830  // only export duration for automatic
1831  if( nChange != 1 )
1832  pTransDuration->mnIndex = -1;
1833 
1834  // do not export default transition change
1835  if( nChange == 0 )
1836  pTransType->mnIndex = -1;
1837  }
1838 
1839  SvXMLExportPropertyMapper::ContextFilter(bEnableFoFontFamily, rProperties, rPropSet);
1840 }
1841 
1844  const XMLPropertyState& rProperty,
1845  SvXmlExportFlags nFlags,
1846  const ::std::vector< XMLPropertyState > *pProperties,
1847  sal_uInt32 nIdx) const
1848 {
1849  switch( getPropertySetMapper()->GetEntryContextId( rProperty.mnIndex ) )
1850  {
1851  case CTF_PAGE_SOUND_URL:
1852  {
1853  OUString aSoundURL;
1854  if( (rProperty.maValue >>= aSoundURL) && !aSoundURL.isEmpty() )
1855  {
1861  }
1862  }
1863  break;
1864  default:
1865  SvXMLExportPropertyMapper::handleElementItem( rExport, rProperty, nFlags, pProperties, nIdx );
1866  break;
1867  }
1868 }
1869 
1870 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SvXMLEnumMapEntry< drawing::TextAnimationKind > const pXML_TextAnimation_Blinking_Enum[]
Definition: sdpropls.cxx:594
#define XML_TYPE_TEXT_CLIP11
Definition: xmltypes.hxx:217
#define XML_SD_TYPE_FONTWORK_FORM
Definition: xmlsdtypes.hxx:86
#define CTF_DATE_TIME_UPDATE
Definition: xmlsdtypes.hxx:192
#define CTF_CAPTION_ESCREL
Definition: xmlsdtypes.hxx:179
#define XML_SD_TYPE_CELL_ROTATION_ANGLE
Definition: xmlsdtypes.hxx:120
#define XML_TYPE_PERCENT
Definition: xmltypes.hxx:129
#define XML_SD_TYPE_CAPTION_ESC_REL
Definition: xmlsdtypes.hxx:92
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_TransitionSubType[]
#define XML_SD_TYPE_CAPTION_IS_ESC_REL
Definition: xmlsdtypes.hxx:91
SvXMLEnumMapEntry< presentation::FadeEffect > const aXML_FadeEffect_EnumMap[]
Definition: sdpropls.cxx:434
#define XML_SD_TYPE_BACKFACE_CULLING
Definition: xmlsdtypes.hxx:73
css::uno::Reference< css::frame::XModel > mxModel
Definition: sdpropls.hxx:56
#define XML_SD_TYPE_FITTOSIZE_AUTOFIT
Definition: xmlsdtypes.hxx:69
SvXMLEnumMapEntry< drawing::TextVerticalAdjust > const pXML_VerticalAlign_Enum[]
Definition: sdpropls.cxx:622
SvXMLEnumMapEntry< drawing::LineStyle > const aXML_LineStyle_EnumMap[]
Definition: sdpropls.cxx:381
bool hasValue()
#define XML_TYPE_SD_MIRROR
Definition: xmlsdtypes.hxx:109
#define XML_SD_TYPE_TEX_KIND
Definition: xmlsdtypes.hxx:78
SvXMLEnumMapEntry< sal_Int32 > const pXML_Caption_Esc_Dir_Enum[]
Definition: sdpropls.cxx:738
#define MID_FLAG_ELEMENT_ITEM_EXPORT
Definition: xmltypes.hxx:67
bool bVisible
virtual void handleElementItem(SvXMLExport &rExport, const XMLPropertyState &rProperty, SvXmlExportFlags nFlags, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const
this method is called for every item that has the MID_FLAG_ELEMENT_EXPORT flag set ...
Definition: xmlexppr.cxx:862
#define CTF_HEADER_VISIBLE
Definition: xmlsdtypes.hxx:184
virtual const XMLPropertyHandler * GetPropertyHandler(sal_Int32 nType) const
This method retrieves a PropertyHandler for the given XML-type.
Definition: prhdlfac.cxx:138
#define CTF_CONTROLWRITINGMODE
Definition: xmlsdtypes.hxx:123
SvXMLEnumMapEntry< sal_Int32 > const pXML_Fontwork_Shadow_Enum[]
Definition: sdpropls.cxx:712
#define XML_TYPE_BUILDIN_CMP_ONLY
Definition: xmltypes.hxx:142
#define XML_TYPE_NEG_PERCENT16
Definition: xmltypes.hxx:153
This is a handler either only import/exports percent or measure.
#define CTF_TEXTANIMATION_KIND
Definition: xmlsdtypes.hxx:142
constexpr sal_uInt16 XML_NAMESPACE_DR3D
const OUString & GetStyleName() const
Definition: xmlexppr.cxx:1120
virtual ~XMLShapeExportPropertyMapper() override
Definition: sdpropls.cxx:1304
#define CTF_NUMBERINGRULES
Definition: xmlsdtypes.hxx:122
#define XML_TYPE_COLOR_MODE
Definition: xmltypes.hxx:145
constexpr sal_uInt16 XML_NAMESPACE_DRAW_EXT
#define CTF_DATE_TIME_TEXT
Definition: xmlsdtypes.hxx:190
#define CTF_SD_OLE_VIS_AREA_EXPORT_LEFT
Definition: xmlsdtypes.hxx:197
virtual const XMLPropertyHandler * GetPropertyHandler(sal_Int32 nType) const override
This method retrieves a PropertyHandler for the given XML-type.
Definition: sdpropls.cxx:984
the SvXMLTypeConverter converts values of various types from their internal representation to the tex...
Definition: xmluconv.hxx:80
#define CTF_FONTWORK_SHADOWCOLOR
Definition: xmlsdtypes.hxx:158
#define MID_FLAG_NO_PROPERTY_IMPORT
Definition: xmltypes.hxx:76
SvXMLEnumMapEntry< drawing::ConnectorType > const aXML_ConnectionKind_EnumMap[]
Definition: sdpropls.cxx:496
#define XML_TYPE_PERCENT16
Definition: xmltypes.hxx:131
const XMLPropertyMapEntry aXMLSDProperties[]
Definition: sdpropls.cxx:82
virtual ~XMLSdPropHdlFactory() override
Definition: sdpropls.cxx:980
#define CTF_LINEENDNAME
Definition: xmlsdtypes.hxx:136
SvXMLEnumMapEntry< drawing::RectanglePoint > const aXML_RefPoint_EnumMap[]
Definition: sdpropls.cxx:554
#define XML_SD_TYPE_TRANSTIION_DIRECTION
Definition: xmlsdtypes.hxx:115
#define CTF_PAGE_TRANS_TYPE
Definition: xmlsdtypes.hxx:129
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_TransitionType[]
virtual ~XMLShapePropertySetMapper() override
Definition: sdpropls.cxx:1293
#define CTF_PAGE_TRANS_DURATION
Definition: xmlsdtypes.hxx:132
#define CTF_FRAME_MARGIN_HORI
Definition: txtprmap.hxx:132
#define XML_TYPE_WRAP_OPTION
Definition: xmltypes.hxx:264
#define XML_SD_TYPE_BITMAP_MODE
Definition: xmlsdtypes.hxx:49
SvXMLEnumMapEntry< drawing::TextAnimationKind > const pXML_TextAnimation_Enum[]
Definition: sdpropls.cxx:584
#define XML_SD_TYPE_CAPTION_TYPE
Definition: xmlsdtypes.hxx:95
#define CTF_PAGE_TRANSITION_DIRECTION
Definition: xmlsdtypes.hxx:146
constexpr sal_uInt16 XML_NAMESPACE_XLINK
sal_Int32 mnIndex
Definition: maptype.hxx:124
#define CTF_FONTWORK_FORM
Definition: xmlsdtypes.hxx:161
virtual void handleElementItem(SvXMLExport &rExport, const XMLPropertyState &rProperty, SvXmlExportFlags nFlags, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const override
this method is called for every item that has the MID_FLAG_ELEMENT_EXPORT flag set ...
Definition: sdpropls.cxx:1659
#define CTF_FONTWORK_STYLE
Definition: xmlsdtypes.hxx:151
css::uno::Reference< css::frame::XModel2 > mxModel
#define XML_TYPE_TEXT_ANIMATION_BLINKING
Definition: xmlsdtypes.hxx:56
SvXMLEnumMapEntry< drawing::TextureProjectionMode > const aXML_TexGenerationY_EnumMap[]
Definition: sdpropls.cxx:531
SvXMLEnumMapEntry< drawing::TextFitToSizeType > const pXML_FitToSize_Enum_Odf12[]
Definition: sdpropls.cxx:632
#define CTF_SD_OLE_VIS_AREA_EXPORT_WIDTH
Definition: xmlsdtypes.hxx:199
Abstract base-class for different XML-types.
constexpr sal_uInt16 XML_NAMESPACE_LO_EXT
bool IsXMLToken(std::u16string_view rString, enum XMLTokenEnum eToken)
compare eToken to the string
Definition: xmltoken.cxx:3481
#define CTF_FRAME_DISPLAY_SCROLLBAR
Definition: txtprmap.hxx:130
SvXMLEnumMapEntry< drawing::TextureKind > const aXML_TexKind_EnumMap[]
Definition: sdpropls.cxx:539
#define CTF_SD_MOVE_PROTECT
Definition: xmlsdtypes.hxx:173
#define CTF_FILLGRADIENTNAME
Definition: xmlsdtypes.hxx:137
virtual void handleSpecialItem(SvXMLAttributeList &rAttrList, const XMLPropertyState &rProperty, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const
this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set ...
Definition: xmlexppr.cxx:846
PropertyHandler for a named xml bool type:
#define CTF_FILLTRANSNAME
Definition: xmlsdtypes.hxx:140
#define XML_SD_TYPE_NUMBULLET
Definition: xmlsdtypes.hxx:47
#define XML_SD_TYPE_BITMAPREPOFFSETY
Definition: xmlsdtypes.hxx:51
#define CTF_PAGE_TRANS_STYLE
Definition: xmlsdtypes.hxx:130
#define XML_SD_TYPE_MEASURE_UNIT
Definition: xmlsdtypes.hxx:63
#define CTF_DATE_TIME_VISIBLE
Definition: xmlsdtypes.hxx:187
#define CTF_REPEAT_OFFSET_X
Definition: xmlsdtypes.hxx:125
#define GMAP(name, prefix, token, type, context)
Definition: sdpropls.cxx:72
#define TMAP(name, prefix, token, type, context)
Definition: sdpropls.cxx:76
const XMLPropertyMapEntry aXMLSDPresPageProps[]
Definition: sdpropls.cxx:318
#define CTF_CAPTION_ISESCREL
Definition: xmlsdtypes.hxx:178
virtual void handleSpecialItem(SvXMLAttributeList &rAttrList, const XMLPropertyState &rProperty, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const override
this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set ...
Definition: sdpropls.cxx:1639
#define XML_SD_TYPE_DATETIMEUPDATE
Definition: xmlsdtypes.hxx:99
#define CTF_HEADER_TEXT
Definition: xmlsdtypes.hxx:188
PropertyHandler for a generic xml enumeration type:
#define MID_FLAG_MERGE_ATTRIBUTE
Definition: xmltypes.hxx:57
#define XML_TYPE_DURATION16_MS
Definition: xmltypes.hxx:146
css::uno::Any const & rValue
Definition: ImageStyle.hxx:38
#define XML_TYPE_STYLENAME
Definition: xmltypes.hxx:150
SvXMLEnumMapEntry< drawing::FillStyle > const aXML_FillStyle_EnumMap[]
Definition: sdpropls.cxx:408
#define XML_TYPE_DOUBLE_PERCENT
Definition: xmltypes.hxx:154
#define XML_SD_TYPE_TEXT_CROSSEDOUT
Definition: xmlsdtypes.hxx:46
#define XML_SD_TYPE_STROKE
Definition: xmlsdtypes.hxx:33
#define XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT
Definition: xmltypes.hxx:250
#define CTF_FILLBITMAPNAME
Definition: xmlsdtypes.hxx:139
PropertyHandler for the XML-data-type:
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
virtual void ContextFilter(bool bEnableFoFontFamily,::std::vector< XMLPropertyState > &rProperties, const css::uno::Reference< css::beans::XPropertySet > &rPropSet) const
Application-specific filter.
Definition: xmlexppr.cxx:661
#define CTF_SD_CONTROL_SHAPE_DATA_STYLE
Definition: contextid.hxx:35
#define XML_SD_TYPE_BITMAP_REFPOINT
Definition: xmlsdtypes.hxx:54
#define XML_TYPE_TEXT_CLIP
Definition: xmltypes.hxx:272
void AddAttribute(sal_uInt16 nPrefix, const char *pName, const OUString &rValue)
Definition: xmlexp.cxx:906
#define XML_TYPE_RECTANGLE_HEIGHT
Definition: xmltypes.hxx:161
#define MID_FLAG_MULTI_PROPERTY
Definition: xmltypes.hxx:64
#define XML_SD_TYPE_LINECAP
Definition: xmlsdtypes.hxx:68
#define DPMAP(name, prefix, token, type, context)
Definition: sdpropls.cxx:75
#define XML_SD_TYPE_PRESPAGE_VISIBILITY
Definition: xmlsdtypes.hxx:38
#define CTF_SD_SIZE_PROTECT
Definition: xmlsdtypes.hxx:174
#define CTF_FOOTER_VISIBLE
Definition: xmlsdtypes.hxx:185
OUString GetRelativeReference(const OUString &rValue)
Definition: xmlexp.cxx:2084
#define XML_SD_TYPE_PRESPAGE_STYLE
Definition: xmlsdtypes.hxx:35
SvXMLImport * mpImport
Definition: sdpropls.hxx:58
SvXMLEnumMapEntry< sal_Int32 > const pXML_Caption_Type_Enum[]
Definition: sdpropls.cxx:746
SvXMLEnumMapEntry< drawing::NormalsKind > const aXML_NormalsKind_EnumMap[]
Definition: sdpropls.cxx:515
constexpr sal_uInt16 XML_NAMESPACE_DRAW
#define MID_FLAG_ELEMENT_ITEM
Definition: xmltypes.hxx:70
SvXMLEnumMapEntry< drawing::MeasureTextHorzPos > const pXML_Measure_HAlign_Enum[]
Definition: sdpropls.cxx:674
#define CTF_PAGE_TRANS_SPEED
Definition: xmlsdtypes.hxx:131
SvXMLEnumMapEntry< sal_Int32 > const pXML_MeasureUnit_Enum[]
Definition: sdpropls.cxx:659
SvXMLExport * mpExport
Definition: sdpropls.hxx:57
#define CTF_PAGE_TRANSITION_FADECOLOR
Definition: xmlsdtypes.hxx:147
#define CTF_SD_OLE_VIS_AREA_IMPORT_TOP
Definition: xmlsdtypes.hxx:168
SvXMLEnumMapEntry< presentation::AnimationSpeed > const aXML_TransSpeed_EnumMap[]
Definition: sdpropls.cxx:426
#define CTF_CAPTION_ESCABS
Definition: xmlsdtypes.hxx:180
#define CTF_PAGE_SOUND_URL
Definition: xmlsdtypes.hxx:127
const XMLPropertyMapEntry aXMLTableShapeAttributes[]
contains the attribute to property mapping for a drawing layer table WARNING: if attributes are added...
Definition: sdpropls.cxx:368
Abstract base-class for different XML-types.
SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const
returns the deterministic version for odf export
Definition: xmlexp.cxx:2292
#define XML_SD_TYPE_PRESPAGE_TYPE
Definition: xmlsdtypes.hxx:34
#define CTF_SD_OLE_VIS_AREA_IMPORT_HEIGHT
Definition: xmlsdtypes.hxx:170
#define CTF_TEXT_CLIP
Definition: txtprmap.hxx:171
#define CTF_SD_OLE_ISINTERNAL
Definition: xmlsdtypes.hxx:171
constexpr sal_uInt16 XML_NAMESPACE_SVG
#define XML_SD_TYPE_HEADER_FOOTER_VISIBILITY_TYPE
Definition: xmlsdtypes.hxx:116
#define CTF_FONTWORK_SHADOWTRANSPARENCE
Definition: xmlsdtypes.hxx:163
#define XML_SD_TYPE_TRANSITION_TYPE
Definition: xmlsdtypes.hxx:113
constexpr sal_uInt16 XML_NAMESPACE_FO
#define CTF_SD_OLE_VIS_AREA_EXPORT_HEIGHT
Definition: xmlsdtypes.hxx:200
#define CTF_SD_OLE_VIS_AREA_IMPORT_WIDTH
Definition: xmlsdtypes.hxx:169
constexpr sal_uInt16 XML_NAMESPACE_TEXT
sal_Int32 mnType
SvXMLEnumMapEntry< sal_Int32 > const pXML_Fontwork_Form_Enum[]
Definition: sdpropls.cxx:720
#define XML_SD_TYPE_MEASURE_HALIGN
Definition: xmlsdtypes.hxx:61
#define CTF_PAGE_NUMBER_VISIBLE
Definition: xmlsdtypes.hxx:186
#define GMAPV(name, prefix, token, type, context, version)
Definition: sdpropls.cxx:74
#define CTF_FOOTER_TEXT
Definition: xmlsdtypes.hxx:189
#define XML_SD_TYPE_DATETIME_FORMAT
Definition: xmlsdtypes.hxx:100
#define XML_TYPE_ATTRIBUTE_CONTAINER
Definition: xmltypes.hxx:218
#define XML_SD_TYPE_BITMAPREPOFFSETX
Definition: xmlsdtypes.hxx:50
#define XML_TYPE_CONTROL_TEXT_EMPHASIZE
Definition: xmltypes.hxx:246
#define XML_TYPE_TEXT_ANIMATION_DIRECTION
Definition: xmltypes.hxx:238
#define XML_SD_TYPE_SIZE_PROTECT
Definition: xmlsdtypes.hxx:105
const Any & any
#define XML_TYPE_TEXT_ANIMATION_STEPS
Definition: xmlsdtypes.hxx:57
#define XML_SD_TYPE_TEX_MODE
Definition: xmlsdtypes.hxx:79
#define MID_FLAG_NO_PROPERTY
Definition: xmltypes.hxx:78
#define XML_TYPE_TEXT_ANIMATION
Definition: xmltypes.hxx:237
#define CTF_TEXTWRITINGMODE
Definition: txtprmap.hxx:63
#define XML_TYPE_NEG_PERCENT
Definition: xmltypes.hxx:151
#define GMAP_D(name, prefix, token, type, context)
Definition: sdpropls.cxx:73
#define XML_SD_TYPE_PRESPAGE_SPEED
Definition: xmlsdtypes.hxx:36
#define MID_FLAG_NO_PROPERTY_EXPORT
Definition: xmltypes.hxx:73
Represents a property with its API-name, its XML-name and the type of its value.
Definition: maptype.hxx:31
#define XML_TYPE_MEASURE_PX
Definition: xmltypes.hxx:147
#define XML_TYPE_NUMBER
Definition: xmltypes.hxx:134
virtual bool exportXML(OUString &rStrExpValue, const css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const =0
Exports the given value according to the XML-data-type corresponding to the derived class...
#define XML_SD_TYPE_FILLSTYLE
Definition: xmlsdtypes.hxx:42
SvXMLEnumMapEntry< drawing::TextAnimationDirection > const pXML_TextAnimationDirection_Enum[]
Definition: sdpropls.cxx:604
XMLShapeExportPropertyMapper(const rtl::Reference< XMLPropertySetMapper > &rMapper, SvXMLExport &rExport)
Definition: sdpropls.cxx:1297
SvXMLEnumMapEntry< drawing::LineCap > const aXML_LineCap_EnumMap[]
Definition: sdpropls.cxx:399
#define MID_FLAG_SPECIAL_ITEM
Definition: xmltypes.hxx:87
#define XML_SD_TYPE_CAPTION_ESC_ABS
Definition: xmlsdtypes.hxx:93
PropertyHandler for the list-style.
Definition: numithdl.hxx:28
#define CTF_FRAME_DISPLAY_BORDER
Definition: txtprmap.hxx:131
#define XML_SD_TYPE_NORMALS_KIND
Definition: xmlsdtypes.hxx:74
#define XML_TYPE_TEXT_DRAW_ASPECT
Definition: xmltypes.hxx:245
#define XML_TYPE_NUMBER16
Definition: xmltypes.hxx:136
#define CTF_FONTWORK_HIDEFORM
Definition: xmlsdtypes.hxx:162
#define CTF_FRAME_MARGIN_VERT
Definition: txtprmap.hxx:133
virtual void ContextFilter(bool bEnableFoFontFamily,::std::vector< XMLPropertyState > &rProperties, const css::uno::Reference< css::beans::XPropertySet > &rPropSet) const override
Application-specific filter.
Definition: sdpropls.cxx:1308
#define XML_SD_TYPE_FILLBITMAPSIZE
Definition: xmlsdtypes.hxx:52
SvXMLEnumMapEntry< drawing::TextFitToSizeType > const pXML_ShrinkToFit_Enum[]
Definition: sdpropls.cxx:650
#define CTF_FILLHATCHNAME
Definition: xmlsdtypes.hxx:138
#define CTF_TEXTANIMATION_BLINKING
Definition: xmlsdtypes.hxx:141
static bool convertBool(bool &rBool, std::u16string_view rString)
#define XML_SD_TYPE_VISIBLE_HIDDEN
Definition: xmlsdtypes.hxx:45
#define MID_FLAG_MERGE_PROPERTY
Definition: xmltypes.hxx:61
#define CTF_SD_OLE_ASPECT
Definition: xmlsdtypes.hxx:196
#define CTF_LINESTARTNAME
Definition: xmlsdtypes.hxx:135
static bool convertPercent(sal_Int32 &rValue, std::u16string_view rString)
#define XML_TYPE_RECTANGLE_WIDTH
Definition: xmltypes.hxx:160
#define CTF_SD_OLE_VIS_AREA_EXPORT_TOP
Definition: xmlsdtypes.hxx:198
#define CTF_PAGE_BACKSIZE
Definition: xmlsdtypes.hxx:133
#define CTF_PAGE_TRANSITION_TYPE
Definition: xmlsdtypes.hxx:144
#define XML_SD_TYPE_LINEJOIN
Definition: xmlsdtypes.hxx:41
#define XML_SD_TYPE_NORMALS_DIRECTION
Definition: xmlsdtypes.hxx:75
#define MAP_END()
Definition: sdpropls.cxx:78
#define XML_SD_TYPE_FONTWORK_STYLE
Definition: xmlsdtypes.hxx:83
Map an XMLTokenEnum to an enum value.
Definition: ximpshap.hxx:39
constexpr sal_uInt16 XML_NAMESPACE_PRESENTATION
#define CTF_FONTWORK_SHADOW
Definition: xmlsdtypes.hxx:157
#define XML_SD_TYPE_MEASURE_VALIGN
Definition: xmlsdtypes.hxx:62
#define XML_TYPE_STRING
Definition: xmltypes.hxx:132
SvXMLEnumMapEntry< drawing::TextureProjectionMode > const aXML_TexGenerationX_EnumMap[]
Definition: sdpropls.cxx:523
#define CTF_FONTWORK_ADJUST
Definition: xmlsdtypes.hxx:152
#define CTF_FONTWORK_SHADOWOFFSETX
Definition: xmlsdtypes.hxx:159
#define XML_SD_TYPE_CONTROL_BORDER
Definition: xmlsdtypes.hxx:65
SvXMLEnumMapEntry< sal_Int32 > const pXML_Fontwork_Style_Enum[]
Definition: sdpropls.cxx:693
css::uno::Any maValue
Definition: maptype.hxx:125
constexpr sal_uInt16 XML_NAMESPACE_TABLE
#define MAP_(name, prefix, token, type, context)
Definition: sdpropls.cxx:70
SvXMLEnumMapEntry< drawing::BitmapMode > const aXML_BitmapMode_EnumMap[]
Definition: sdpropls.cxx:505
#define XML_SD_TYPE_TRANSTIION_SUBTYPE
Definition: xmlsdtypes.hxx:114
#define XML_SD_TYPE_MEASURE_PLACING
Definition: xmlsdtypes.hxx:64
SvXmlExportFlags
Definition: xmlexppr.hxx:39
#define PMAP(name, prefix, token, type, context)
Definition: sdpropls.cxx:77
#define XML_SD_TYPE_VERTICAL_ALIGN
Definition: xmlsdtypes.hxx:59
#define XML_SD_TYPE_TEXT_ALIGN
Definition: xmlsdtypes.hxx:58
#define XML_SD_TYPE_CONTROL_BORDER_COLOR
Definition: xmlsdtypes.hxx:66
#define CTF_FONTWORK_DISTANCE
Definition: xmlsdtypes.hxx:153
const OUString & GetXMLToken(enum XMLTokenEnum eToken)
return the OUString representation for eToken
Definition: xmltoken.cxx:3425
constexpr sal_uInt16 XML_NAMESPACE_SMIL
Handling of tokens in XML:
#define CTF_DASHNAME
Definition: xmlsdtypes.hxx:134
#define CTF_SD_OLE_VIS_AREA_IMPORT_LEFT
Definition: xmlsdtypes.hxx:167
#define XML_TYPE_MEASURE
Definition: xmltypes.hxx:126
#define CTF_FONTWORK_SHADOWOFFSETY
Definition: xmlsdtypes.hxx:160
XMLPageExportPropertyMapper(const rtl::Reference< XMLPropertySetMapper > &rMapper, SvXMLExport &rExport)
Definition: sdpropls.cxx:1685
Smart struct to transport an Any with an index to the appropriate property-name.
Definition: maptype.hxx:122
#define CTF_FONTWORK_START
Definition: xmlsdtypes.hxx:154
#define XML_SD_TYPE_LOGICAL_SIZE
Definition: xmlsdtypes.hxx:53
virtual bool importXML(const OUString &rStrImpValue, css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const override
Imports the given value according to the XML-data-type corresponding to the derived class...
SvXMLEnumMapEntry< drawing::TextFitToSizeType > const pXML_FitToSize_Enum[]
Definition: sdpropls.cxx:641
#define XML_SD_TYPE_CAPTION_ANGLE_TYPE
Definition: xmlsdtypes.hxx:90
Abstract base-class for different XML-types.
#define XML_SD_TYPE_FONTWORK_ADJUST
Definition: xmlsdtypes.hxx:84
#define CTF_DATE_TIME_FORMAT
Definition: xmlsdtypes.hxx:191
#define XML_SD_TYPE_TEX_GENERATION_MODE_X
Definition: xmlsdtypes.hxx:76
SvXMLEnumMapEntry< drawing::TextureMode > const aXML_TexMode_EnumMap[]
Definition: sdpropls.cxx:546
SvXMLEnumMapEntry< sal_Int32 > const pXML_Fontwork_Adjust_Enum[]
Definition: sdpropls.cxx:703
SvXMLEnumMapEntry< drawing::LineJoint > const aXML_LineJoint_EnumMap[]
Definition: sdpropls.cxx:389
#define CTF_FILLCOLOR
Definition: txtprmap.hxx:203
#define CTF_WRITINGMODE
Definition: xmlsdtypes.hxx:124
#define XML_SD_TYPE_PRESPAGE_DURATION
Definition: xmlsdtypes.hxx:37
#define CTF_TEXT_CLIP11
Definition: txtprmap.hxx:172
#define XML_SD_TYPE_PRESPAGE_BACKSIZE
Definition: xmlsdtypes.hxx:55
SvXMLEnumMapEntry< drawing::TextHorizontalAdjust > const pXML_TextAlign_Enum[]
Definition: sdpropls.cxx:613
#define XML_SD_TYPE_FONTWORK_SHADOW
Definition: xmlsdtypes.hxx:85
#define CTF_PAGE_VISIBLE
Definition: xmlsdtypes.hxx:128
virtual bool importXML(const OUString &rStrImpValue, css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const =0
Imports the given value according to the XML-data-type corresponding to the derived class...
Abstract base-class for different XML-types.
Definition: xmlprhdl.hxx:35
#define XML_TYPE_BOOL
Definition: xmltypes.hxx:125
SvXMLEnumMapEntry< text::WritingMode > const aXML_WritingMode_EnumMap[]
Definition: sdpropls.cxx:577
#define XML_SD_TYPE_OPACITY
Definition: xmlsdtypes.hxx:40
#define XML_SD_TYPE_WRITINGMODE
Definition: xmlsdtypes.hxx:48
#define CTF_FONTWORK_MIRROR
Definition: xmlsdtypes.hxx:155
#define CTF_REPEAT_OFFSET_Y
Definition: xmlsdtypes.hxx:126
#define CTF_FILLSTYLE
Definition: txtprmap.hxx:202
#define XML_SD_TYPE_MOVE_PROTECT
Definition: xmlsdtypes.hxx:104
css::uno::Any const SvXMLExport & rExport
Definition: ImageStyle.hxx:38
virtual void ContextFilter(bool bEnableFoFontFamily,::std::vector< XMLPropertyState > &rProperties, const css::uno::Reference< css::beans::XPropertySet > &rPropSet) const override
Application-specific filter.
Definition: sdpropls.cxx:1695
This is a handler that returns true for import if the attribute string contains a '' value...
SvXMLExportFlags getExportFlags() const
Definition: xmlexp.hxx:476
#define XML_SD_TYPE_IMAGE_SCALE_MODE
Definition: xmlsdtypes.hxx:67
#define XML_SD_TYPE_FITTOSIZE
Definition: xmlsdtypes.hxx:60
#define CTF_FONTWORK_OUTLINE
Definition: xmlsdtypes.hxx:156
aStr
SvXMLEnumMapEntry< drawing::CircleKind > const aXML_CircleKind_EnumMap[]
Definition: sdpropls.cxx:568
XMLShapePropertySetMapper(const rtl::Reference< XMLPropertyHandlerFactory > &rFactoryRef, bool bForExport)
Definition: sdpropls.cxx:1287
#define CTF_PAGE_TRANSITION_SUBTYPE
Definition: xmlsdtypes.hxx:145
constexpr sal_uInt16 XML_NAMESPACE_STYLE
#define XML_TYPE_RECTANGLE_TOP
Definition: xmltypes.hxx:159
#define XML_TYPE_RECTANGLE_LEFT
Definition: xmltypes.hxx:158
SvXMLEnumMapEntry< drawing::MeasureTextVertPos > const pXML_Measure_VAlign_Enum[]
Definition: sdpropls.cxx:683
#define XML_TYPE_COLOR
Definition: xmltypes.hxx:133
#define CTF_SD_NUMBERINGRULES_NAME
Definition: contextid.hxx:36
virtual ~XMLPageExportPropertyMapper() override
Definition: sdpropls.cxx:1691
sal_Int16 nValue
const rtl::Reference< XMLPropertySetMapper > & getPropertySetMapper() const
Definition: xmlexppr.cxx:1110
virtual void handleElementItem(SvXMLExport &rExport, const XMLPropertyState &rProperty, SvXmlExportFlags nFlags, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const override
this method is called for every item that has the MID_FLAG_ELEMENT_EXPORT flag set ...
Definition: sdpropls.cxx:1842
void PutHdlCache(sal_Int32 nType, const XMLPropertyHandler *pHdl) const
Puts a PropertyHandler into the internal cache.
Definition: prhdlfac.cxx:156
XMLSdPropHdlFactory(css::uno::Reference< css::frame::XModel > const &xModel, SvXMLExport &rExport)
SvXMLEnumMapEntry< sal_Int32 > const aXML_PresChange_EnumMap[]
Definition: sdpropls.cxx:418
#define XML_SD_TYPE_CAPTION_ESC_DIR
Definition: xmlsdtypes.hxx:94
static bool convertNumber(sal_Int32 &rValue, std::u16string_view aString, sal_Int32 nMin=SAL_MIN_INT32, sal_Int32 nMax=SAL_MAX_INT32)
#define XML_SD_TYPE_TEX_GENERATION_MODE_Y
Definition: xmlsdtypes.hxx:77