Line data Source code
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 : */
10 :
11 : #include <sal/config.h>
12 :
13 : #include <map>
14 :
15 : #include <TextEffectsHandler.hxx>
16 :
17 : #include <rtl/ustrbuf.hxx>
18 : #include <comphelper/string.hxx>
19 : #include <ooxml/resourceids.hxx>
20 : #include "dmapperLoggers.hxx"
21 :
22 : namespace writerfilter {
23 : namespace dmapper
24 : {
25 :
26 : using namespace std;
27 : using namespace oox;
28 : using namespace css::uno;
29 : using namespace css::beans;
30 :
31 : namespace
32 : {
33 :
34 662 : OUString lclGetNameForElementId(sal_uInt32 aId)
35 : {
36 662 : static std::map<sal_uInt32, OUString> aIdMap;
37 662 : if(aIdMap.empty())
38 : {
39 4 : aIdMap[NS_ooxml::LN_EG_ColorChoice_srgbClr] = "srgbClr";
40 4 : aIdMap[NS_ooxml::LN_EG_ColorChoice_schemeClr] = "schemeClr";
41 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_tint] = "tint";
42 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_shade] = "shade";
43 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_alpha] = "alpha";
44 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_hueMod] = "hueMod";
45 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_sat] = "sat";
46 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_satOff] = "satOff";
47 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_satMod] = "satMod";
48 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_lum] = "lum";
49 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_lumOff] = "lumOff";
50 4 : aIdMap[NS_ooxml::LN_EG_ColorTransform_lumMod] = "lumMod";
51 4 : aIdMap[NS_ooxml::LN_EG_FillProperties_noFill] = "noFill";
52 4 : aIdMap[NS_ooxml::LN_EG_FillProperties_solidFill] = "solidFill";
53 4 : aIdMap[NS_ooxml::LN_EG_FillProperties_gradFill] = "gradFill";
54 4 : aIdMap[NS_ooxml::LN_CT_GradientFillProperties_gsLst] = "gsLst";
55 4 : aIdMap[NS_ooxml::LN_CT_GradientStopList_gs] = "gs";
56 4 : aIdMap[NS_ooxml::LN_CT_GradientStop_pos] = "pos";
57 4 : aIdMap[NS_ooxml::LN_EG_ShadeProperties_lin] = "lin";
58 4 : aIdMap[NS_ooxml::LN_EG_ShadeProperties_path] = "path";
59 4 : aIdMap[NS_ooxml::LN_CT_PathShadeProperties_fillToRect] = "fillToRect";
60 4 : aIdMap[NS_ooxml::LN_EG_LineDashProperties_prstDash] = "prstDash";
61 4 : aIdMap[NS_ooxml::LN_EG_LineJoinProperties_round] = "round";
62 4 : aIdMap[NS_ooxml::LN_EG_LineJoinProperties_bevel] = "bevel";
63 4 : aIdMap[NS_ooxml::LN_EG_LineJoinProperties_miter] = "miter";
64 4 : aIdMap[NS_ooxml::LN_CT_Scene3D_camera] = "camera";
65 4 : aIdMap[NS_ooxml::LN_CT_Scene3D_lightRig] = "lightRig";
66 4 : aIdMap[NS_ooxml::LN_CT_LightRig_rot] = "rot";
67 4 : aIdMap[NS_ooxml::LN_CT_Props3D_bevelT] = "bevelT";
68 4 : aIdMap[NS_ooxml::LN_CT_Props3D_bevelB] = "bevelB";
69 4 : aIdMap[NS_ooxml::LN_CT_Props3D_extrusionClr] = "extrusionClr";
70 4 : aIdMap[NS_ooxml::LN_CT_Props3D_contourClr] = "contourClr";
71 4 : aIdMap[NS_ooxml::LN_CT_StylisticSets_styleSet] = "styleSet";
72 : }
73 662 : return aIdMap[aId];
74 : }
75 :
76 : const char constAttributesSequenceName[] = "attributes";
77 :
78 : }
79 :
80 89 : OUString TextEffectsHandler::getSchemeColorValTypeString(sal_Int32 nType)
81 : {
82 89 : switch (nType)
83 : {
84 0 : case NS_ooxml::LN_ST_SchemeColorVal_bg1: return OUString("bg1");
85 0 : case NS_ooxml::LN_ST_SchemeColorVal_tx1: return OUString("tx1");
86 0 : case NS_ooxml::LN_ST_SchemeColorVal_bg2: return OUString("bg2");
87 0 : case NS_ooxml::LN_ST_SchemeColorVal_tx2: return OUString("tx2");
88 64 : case NS_ooxml::LN_ST_SchemeColorVal_accent1: return OUString("accent1");
89 13 : case NS_ooxml::LN_ST_SchemeColorVal_accent2: return OUString("accent2");
90 3 : case NS_ooxml::LN_ST_SchemeColorVal_accent3: return OUString("accent3");
91 6 : case NS_ooxml::LN_ST_SchemeColorVal_accent4: return OUString("accent4");
92 0 : case NS_ooxml::LN_ST_SchemeColorVal_accent5: return OUString("accent5");
93 3 : case NS_ooxml::LN_ST_SchemeColorVal_accent6: return OUString("accent6");
94 0 : case NS_ooxml::LN_ST_SchemeColorVal_hlink: return OUString("hlink");
95 0 : case NS_ooxml::LN_ST_SchemeColorVal_folHlink: return OUString("folHlink");
96 0 : case NS_ooxml::LN_ST_SchemeColorVal_dk1: return OUString("dk1");
97 0 : case NS_ooxml::LN_ST_SchemeColorVal_lt1: return OUString("lt1");
98 0 : case NS_ooxml::LN_ST_SchemeColorVal_dk2: return OUString("dk2");
99 0 : case NS_ooxml::LN_ST_SchemeColorVal_lt2: return OUString("lt2");
100 0 : case NS_ooxml::LN_ST_SchemeColorVal_phClr: return OUString("phClr");
101 0 : default: break;
102 : }
103 0 : return OUString();
104 : }
105 :
106 32 : OUString TextEffectsHandler::getRectAlignmentString(sal_Int32 nType)
107 : {
108 32 : switch (nType)
109 : {
110 4 : case NS_ooxml::LN_ST_RectAlignment_none: return OUString("none");
111 0 : case NS_ooxml::LN_ST_RectAlignment_tl: return OUString("tl");
112 0 : case NS_ooxml::LN_ST_RectAlignment_t: return OUString("t");
113 0 : case NS_ooxml::LN_ST_RectAlignment_tr: return OUString("tr");
114 0 : case NS_ooxml::LN_ST_RectAlignment_l: return OUString("l");
115 5 : case NS_ooxml::LN_ST_RectAlignment_ctr: return OUString("ctr");
116 0 : case NS_ooxml::LN_ST_RectAlignment_r: return OUString("r");
117 16 : case NS_ooxml::LN_ST_RectAlignment_bl: return OUString("bl");
118 7 : case NS_ooxml::LN_ST_RectAlignment_b: return OUString("b");
119 0 : case NS_ooxml::LN_ST_RectAlignment_br: return OUString("br");
120 :
121 0 : default: break;
122 : }
123 0 : return OUString();
124 : }
125 :
126 31 : OUString TextEffectsHandler::getLineCapString(sal_Int32 nType)
127 : {
128 31 : switch (nType)
129 : {
130 28 : case NS_ooxml::LN_ST_LineCap_rnd: return OUString("rnd");
131 0 : case NS_ooxml::LN_ST_LineCap_sq: return OUString("sq");
132 3 : case NS_ooxml::LN_ST_LineCap_flat: return OUString("flat");
133 0 : default: break;
134 : }
135 0 : return OUString();
136 : }
137 :
138 31 : OUString TextEffectsHandler::getCompoundLineString(sal_Int32 nType)
139 : {
140 31 : switch (nType)
141 : {
142 25 : case NS_ooxml::LN_ST_CompoundLine_sng: return OUString("sng");
143 6 : case NS_ooxml::LN_ST_CompoundLine_dbl: return OUString("dbl");
144 0 : case NS_ooxml::LN_ST_CompoundLine_thickThin: return OUString("thickThin");
145 0 : case NS_ooxml::LN_ST_CompoundLine_thinThick: return OUString("thinThick");
146 0 : case NS_ooxml::LN_ST_CompoundLine_tri: return OUString("tri");
147 0 : default: break;
148 : }
149 0 : return OUString();
150 : }
151 :
152 31 : OUString TextEffectsHandler::getPenAlignmentString(sal_Int32 nType)
153 : {
154 31 : switch (nType)
155 : {
156 31 : case NS_ooxml::LN_ST_PenAlignment_ctr: return OUString("ctr");
157 0 : case NS_ooxml::LN_ST_PenAlignment_in: return OUString("in");
158 0 : default: break;
159 : }
160 0 : return OUString();
161 : }
162 :
163 11 : OUString TextEffectsHandler::getOnOffString(sal_Int32 nType)
164 : {
165 11 : switch (nType)
166 : {
167 0 : case NS_ooxml::LN_ST_OnOff_true: return OUString("true");
168 0 : case NS_ooxml::LN_ST_OnOff_false: return OUString("false");
169 0 : case NS_ooxml::LN_ST_OnOff_1: return OUString("1");
170 11 : case NS_ooxml::LN_ST_OnOff_0: return OUString("0");
171 0 : default: break;
172 : }
173 0 : return OUString();
174 : }
175 :
176 7 : OUString TextEffectsHandler::getPathShadeTypeString(sal_Int32 nType)
177 : {
178 7 : switch (nType)
179 : {
180 0 : case NS_ooxml::LN_ST_PathShadeType_shape: return OUString("shape");
181 7 : case NS_ooxml::LN_ST_PathShadeType_circle: return OUString("circle");
182 0 : case NS_ooxml::LN_ST_PathShadeType_rect: return OUString("rect");
183 0 : default: break;
184 : }
185 0 : return OUString();
186 : }
187 :
188 31 : OUString TextEffectsHandler::getPresetLineDashValString(sal_Int32 nType)
189 : {
190 31 : switch (nType)
191 : {
192 25 : case NS_ooxml::LN_ST_PresetLineDashVal_solid: return OUString("solid");
193 0 : case NS_ooxml::LN_ST_PresetLineDashVal_dot: return OUString("dot");
194 0 : case NS_ooxml::LN_ST_PresetLineDashVal_sysDot: return OUString("sysDot");
195 6 : case NS_ooxml::LN_ST_PresetLineDashVal_dash: return OUString("dash");
196 0 : case NS_ooxml::LN_ST_PresetLineDashVal_sysDash: return OUString("sysDash");
197 0 : case NS_ooxml::LN_ST_PresetLineDashVal_lgDash: return OUString("lgDash");
198 0 : case NS_ooxml::LN_ST_PresetLineDashVal_dashDot: return OUString("dashDot");
199 0 : case NS_ooxml::LN_ST_PresetLineDashVal_sysDashDot: return OUString("sysDashDot");
200 0 : case NS_ooxml::LN_ST_PresetLineDashVal_lgDashDot: return OUString("lgDashDot");
201 0 : case NS_ooxml::LN_ST_PresetLineDashVal_lgDashDotDot: return OUString("lgDashDotDot");
202 0 : case NS_ooxml::LN_ST_PresetLineDashVal_sysDashDotDot: return OUString("sysDashDotDot");
203 0 : default: break;
204 : }
205 0 : return OUString();
206 : }
207 :
208 0 : OUString TextEffectsHandler::getPresetCameraTypeString(sal_Int32 nType)
209 : {
210 0 : switch (nType)
211 : {
212 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueTopLeft: return OUString("legacyObliqueTopLeft");
213 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueTop: return OUString("legacyObliqueTop");
214 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueTopRight: return OUString("legacyObliqueTopRight");
215 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueLeft: return OUString("legacyObliqueLeft");
216 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueFront: return OUString("legacyObliqueFront");
217 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueRight: return OUString("legacyObliqueRight");
218 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueBottomLeft: return OUString("legacyObliqueBottomLeft");
219 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueBottom: return OUString("legacyObliqueBottom");
220 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyObliqueBottomRight: return OUString("legacyObliqueBottomRight");
221 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveTopLeft: return OUString("legacyPerspectiveTopLeft");
222 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveTop: return OUString("legacyPerspectiveTop");
223 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveTopRight: return OUString("legacyPerspectiveTopRight");
224 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveLeft: return OUString("legacyPerspectiveLeft");
225 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveFront: return OUString("legacyPerspectiveFront");
226 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveRight: return OUString("legacyPerspectiveRight");
227 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveBottomLeft: return OUString("legacyPerspectiveBottomLeft");
228 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveBottom: return OUString("legacyPerspectiveBottom");
229 0 : case NS_ooxml::LN_ST_PresetCameraType_legacyPerspectiveBottomRight: return OUString("legacyPerspectiveBottomRight");
230 0 : case NS_ooxml::LN_ST_PresetCameraType_orthographicFront: return OUString("orthographicFront");
231 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricTopUp: return OUString("isometricTopUp");
232 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricTopDown: return OUString("isometricTopDown");
233 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricBottomUp: return OUString("isometricBottomUp");
234 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricBottomDown: return OUString("isometricBottomDown");
235 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricLeftUp: return OUString("isometricLeftUp");
236 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricLeftDown: return OUString("isometricLeftDown");
237 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricRightUp: return OUString("isometricRightUp");
238 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricRightDown: return OUString("isometricRightDown");
239 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis1Left: return OUString("isometricOffAxis1Left");
240 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis1Right: return OUString("isometricOffAxis1Right");
241 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis1Top: return OUString("isometricOffAxis1Top");
242 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis2Left: return OUString("isometricOffAxis2Left");
243 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis2Right: return OUString("isometricOffAxis2Right");
244 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis2Top: return OUString("isometricOffAxis2Top");
245 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis3Left: return OUString("isometricOffAxis3Left");
246 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis3Right: return OUString("isometricOffAxis3Right");
247 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis3Bottom: return OUString("isometricOffAxis3Bottom");
248 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis4Left: return OUString("isometricOffAxis4Left");
249 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis4Right: return OUString("isometricOffAxis4Right");
250 0 : case NS_ooxml::LN_ST_PresetCameraType_isometricOffAxis4Bottom: return OUString("isometricOffAxis4Bottom");
251 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueTopLeft: return OUString("obliqueTopLeft");
252 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueTop: return OUString("obliqueTop");
253 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueTopRight: return OUString("obliqueTopRight");
254 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueLeft: return OUString("obliqueLeft");
255 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueRight: return OUString("obliqueRight");
256 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueBottomLeft: return OUString("obliqueBottomLeft");
257 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueBottom: return OUString("obliqueBottom");
258 0 : case NS_ooxml::LN_ST_PresetCameraType_obliqueBottomRight: return OUString("obliqueBottomRight");
259 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveFront: return OUString("perspectiveFront");
260 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveLeft: return OUString("perspectiveLeft");
261 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveRight: return OUString("perspectiveRight");
262 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveAbove: return OUString("perspectiveAbove");
263 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveBelow: return OUString("perspectiveBelow");
264 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveAboveLeftFacing: return OUString("perspectiveAboveLeftFacing");
265 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveAboveRightFacing: return OUString("perspectiveAboveRightFacing");
266 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveContrastingLeftFacing: return OUString("perspectiveContrastingLeftFacing");
267 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveContrastingRightFacing: return OUString("perspectiveContrastingRightFacing");
268 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveHeroicLeftFacing: return OUString("perspectiveHeroicLeftFacing");
269 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveHeroicRightFacing: return OUString("perspectiveHeroicRightFacing");
270 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveHeroicExtremeLeftFacing: return OUString("perspectiveHeroicExtremeLeftFacing");
271 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveHeroicExtremeRightFacing: return OUString("perspectiveHeroicExtremeRightFacing");
272 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveRelaxed: return OUString("perspectiveRelaxed");
273 0 : case NS_ooxml::LN_ST_PresetCameraType_perspectiveRelaxedModerately: return OUString("perspectiveRelaxedModerately");
274 0 : default: break;
275 : }
276 0 : return OUString();
277 : }
278 :
279 :
280 0 : OUString TextEffectsHandler::getLightRigTypeString(sal_Int32 nType)
281 : {
282 0 : switch (nType)
283 : {
284 0 : case NS_ooxml::LN_ST_LightRigType_legacyFlat1: return OUString("legacyFlat1");
285 0 : case NS_ooxml::LN_ST_LightRigType_legacyFlat2: return OUString("legacyFlat2");
286 0 : case NS_ooxml::LN_ST_LightRigType_legacyFlat3: return OUString("legacyFlat3");
287 0 : case NS_ooxml::LN_ST_LightRigType_legacyFlat4: return OUString("legacyFlat4");
288 0 : case NS_ooxml::LN_ST_LightRigType_legacyNormal1: return OUString("legacyNormal1");
289 0 : case NS_ooxml::LN_ST_LightRigType_legacyNormal2: return OUString("legacyNormal2");
290 0 : case NS_ooxml::LN_ST_LightRigType_legacyNormal3: return OUString("legacyNormal3");
291 0 : case NS_ooxml::LN_ST_LightRigType_legacyNormal4: return OUString("legacyNormal4");
292 0 : case NS_ooxml::LN_ST_LightRigType_legacyHarsh1: return OUString("legacyHarsh1");
293 0 : case NS_ooxml::LN_ST_LightRigType_legacyHarsh2: return OUString("legacyHarsh2");
294 0 : case NS_ooxml::LN_ST_LightRigType_legacyHarsh3: return OUString("legacyHarsh3");
295 0 : case NS_ooxml::LN_ST_LightRigType_legacyHarsh4: return OUString("legacyHarsh4");
296 0 : case NS_ooxml::LN_ST_LightRigType_threePt: return OUString("threePt");
297 0 : case NS_ooxml::LN_ST_LightRigType_balanced: return OUString("balanced");
298 0 : case NS_ooxml::LN_ST_LightRigType_soft: return OUString("soft");
299 0 : case NS_ooxml::LN_ST_LightRigType_harsh: return OUString("harsh");
300 0 : case NS_ooxml::LN_ST_LightRigType_flood: return OUString("flood");
301 0 : case NS_ooxml::LN_ST_LightRigType_contrasting: return OUString("contrasting");
302 0 : case NS_ooxml::LN_ST_LightRigType_morning: return OUString("morning");
303 0 : case NS_ooxml::LN_ST_LightRigType_sunrise: return OUString("sunrise");
304 0 : case NS_ooxml::LN_ST_LightRigType_sunset: return OUString("sunset");
305 0 : case NS_ooxml::LN_ST_LightRigType_chilly: return OUString("chilly");
306 0 : case NS_ooxml::LN_ST_LightRigType_freezing: return OUString("freezing");
307 0 : case NS_ooxml::LN_ST_LightRigType_flat: return OUString("flat");
308 0 : case NS_ooxml::LN_ST_LightRigType_twoPt: return OUString("twoPt");
309 0 : case NS_ooxml::LN_ST_LightRigType_glow: return OUString("glow");
310 0 : case NS_ooxml::LN_ST_LightRigType_brightRoom: return OUString("brightRoom");
311 0 : default: break;
312 : }
313 0 : return OUString();
314 : }
315 :
316 0 : OUString TextEffectsHandler::getLightRigDirectionString(sal_Int32 nType)
317 : {
318 0 : switch (nType)
319 : {
320 0 : case NS_ooxml::LN_ST_LightRigDirection_tl: return OUString("tl");
321 0 : case NS_ooxml::LN_ST_LightRigDirection_t: return OUString("t");
322 0 : case NS_ooxml::LN_ST_LightRigDirection_tr: return OUString("tr");
323 0 : case NS_ooxml::LN_ST_LightRigDirection_l: return OUString("l");
324 0 : case NS_ooxml::LN_ST_LightRigDirection_r: return OUString("r");
325 0 : case NS_ooxml::LN_ST_LightRigDirection_bl: return OUString("bl");
326 0 : case NS_ooxml::LN_ST_LightRigDirection_b: return OUString("b");
327 0 : case NS_ooxml::LN_ST_LightRigDirection_br: return OUString("br");
328 :
329 0 : default: break;
330 : }
331 0 : return OUString();
332 : }
333 :
334 26 : OUString TextEffectsHandler::getBevelPresetTypeString(sal_Int32 nType)
335 : {
336 26 : switch (nType)
337 : {
338 6 : case NS_ooxml::LN_ST_BevelPresetType_relaxedInset: return OUString("relaxedInset");
339 0 : case NS_ooxml::LN_ST_BevelPresetType_circle: return OUString("circle");
340 0 : case NS_ooxml::LN_ST_BevelPresetType_slope: return OUString("slope");
341 6 : case NS_ooxml::LN_ST_BevelPresetType_cross: return OUString("cross");
342 7 : case NS_ooxml::LN_ST_BevelPresetType_angle: return OUString("angle");
343 0 : case NS_ooxml::LN_ST_BevelPresetType_softRound: return OUString("softRound");
344 0 : case NS_ooxml::LN_ST_BevelPresetType_convex: return OUString("convex");
345 0 : case NS_ooxml::LN_ST_BevelPresetType_coolSlant: return OUString("coolSlant");
346 7 : case NS_ooxml::LN_ST_BevelPresetType_divot: return OUString("divot");
347 0 : case NS_ooxml::LN_ST_BevelPresetType_riblet: return OUString("riblet");
348 0 : case NS_ooxml::LN_ST_BevelPresetType_hardEdge: return OUString("hardEdge");
349 0 : case NS_ooxml::LN_ST_BevelPresetType_artDeco: return OUString("artDeco");
350 0 : default: break;
351 : }
352 0 : return OUString();
353 : }
354 :
355 13 : OUString TextEffectsHandler::getPresetMaterialTypeString(sal_Int32 nType)
356 : {
357 13 : switch (nType)
358 : {
359 0 : case NS_ooxml::LN_ST_PresetMaterialType_legacyMatte: return OUString("legacyMatte");
360 0 : case NS_ooxml::LN_ST_PresetMaterialType_legacyPlastic: return OUString("legacyPlastic");
361 0 : case NS_ooxml::LN_ST_PresetMaterialType_legacyMetal: return OUString("legacyMetal");
362 0 : case NS_ooxml::LN_ST_PresetMaterialType_legacyWireframe: return OUString("legacyWireframe");
363 0 : case NS_ooxml::LN_ST_PresetMaterialType_matte: return OUString("matte");
364 0 : case NS_ooxml::LN_ST_PresetMaterialType_plastic: return OUString("plastic");
365 7 : case NS_ooxml::LN_ST_PresetMaterialType_metal: return OUString("metal");
366 0 : case NS_ooxml::LN_ST_PresetMaterialType_warmMatte: return OUString("warmMatte");
367 0 : case NS_ooxml::LN_ST_PresetMaterialType_translucentPowder: return OUString("translucentPowder");
368 0 : case NS_ooxml::LN_ST_PresetMaterialType_powder: return OUString("powder");
369 0 : case NS_ooxml::LN_ST_PresetMaterialType_dkEdge: return OUString("dkEdge");
370 6 : case NS_ooxml::LN_ST_PresetMaterialType_softEdge: return OUString("softEdge");
371 0 : case NS_ooxml::LN_ST_PresetMaterialType_clear: return OUString("clear");
372 0 : case NS_ooxml::LN_ST_PresetMaterialType_flat: return OUString("flat");
373 0 : case NS_ooxml::LN_ST_PresetMaterialType_softmetal: return OUString("softmetal");
374 0 : case NS_ooxml::LN_ST_PresetMaterialType_none: return OUString("none");
375 0 : default: break;
376 : }
377 0 : return OUString();
378 : }
379 :
380 16 : OUString TextEffectsHandler::getLigaturesString(sal_Int32 nType)
381 : {
382 16 : switch (nType)
383 : {
384 0 : case NS_ooxml::LN_ST_Ligatures_none: return OUString("none");
385 10 : case NS_ooxml::LN_ST_Ligatures_standard: return OUString("standard");
386 0 : case NS_ooxml::LN_ST_Ligatures_contextual: return OUString("contextual");
387 0 : case NS_ooxml::LN_ST_Ligatures_historical: return OUString("historical");
388 0 : case NS_ooxml::LN_ST_Ligatures_discretional: return OUString("discretional");
389 6 : case NS_ooxml::LN_ST_Ligatures_standardContextual: return OUString("standardContextual");
390 0 : case NS_ooxml::LN_ST_Ligatures_standardHistorical: return OUString("standardHistorical");
391 0 : case NS_ooxml::LN_ST_Ligatures_contextualHistorical: return OUString("contextualHistorical");
392 0 : case NS_ooxml::LN_ST_Ligatures_standardDiscretional: return OUString("standardDiscretional");
393 0 : case NS_ooxml::LN_ST_Ligatures_contextualDiscretional: return OUString("contextualDiscretional");
394 0 : case NS_ooxml::LN_ST_Ligatures_historicalDiscretional: return OUString("historicalDiscretional");
395 0 : case NS_ooxml::LN_ST_Ligatures_standardContextualHistorical: return OUString("standardContextualHistorical");
396 0 : case NS_ooxml::LN_ST_Ligatures_standardContextualDiscretional: return OUString("standardContextualDiscretional");
397 0 : case NS_ooxml::LN_ST_Ligatures_standardHistoricalDiscretional: return OUString("standardHistoricalDiscretional");
398 0 : case NS_ooxml::LN_ST_Ligatures_contextualHistoricalDiscretional: return OUString("contextualHistoricalDiscretional");
399 0 : case NS_ooxml::LN_ST_Ligatures_all: return OUString("all");
400 0 : default: break;
401 : }
402 0 : return OUString();
403 : }
404 :
405 13 : OUString TextEffectsHandler::getNumFormString(sal_Int32 nType)
406 : {
407 13 : switch (nType)
408 : {
409 0 : case NS_ooxml::LN_ST_NumForm_default: return OUString("default");
410 10 : case NS_ooxml::LN_ST_NumForm_lining: return OUString("lining");
411 3 : case NS_ooxml::LN_ST_NumForm_oldStyle: return OUString("oldStyle");
412 0 : default: break;
413 : }
414 0 : return OUString();
415 : }
416 :
417 13 : OUString TextEffectsHandler::getNumSpacingString(sal_Int32 nType)
418 : {
419 13 : switch (nType)
420 : {
421 0 : case NS_ooxml::LN_ST_NumSpacing_default: return OUString("default");
422 10 : case NS_ooxml::LN_ST_NumSpacing_proportional: return OUString("proportional");
423 3 : case NS_ooxml::LN_ST_NumSpacing_tabular: return OUString("tabular");
424 0 : default: break;
425 : }
426 0 : return OUString();
427 : }
428 :
429 205 : void TextEffectsHandler::convertElementIdToPropertyId(sal_Int32 aElementId)
430 : {
431 205 : switch(aElementId)
432 : {
433 : case NS_ooxml::LN_glow_glow:
434 13 : maPropertyId = PROP_CHAR_GLOW_TEXT_EFFECT;
435 13 : maElementName = "glow";
436 13 : break;
437 : case NS_ooxml::LN_shadow_shadow:
438 19 : maPropertyId = PROP_CHAR_SHADOW_TEXT_EFFECT;
439 19 : maElementName = "shadow";
440 19 : break;
441 : case NS_ooxml::LN_reflection_reflection:
442 13 : maPropertyId = PROP_CHAR_REFLECTION_TEXT_EFFECT;
443 13 : maElementName = "reflection";
444 13 : break;
445 : case NS_ooxml::LN_textOutline_textOutline:
446 31 : maPropertyId = PROP_CHAR_TEXTOUTLINE_TEXT_EFFECT;
447 31 : maElementName = "textOutline";
448 31 : break;
449 : case NS_ooxml::LN_textFill_textFill:
450 24 : maPropertyId = PROP_CHAR_TEXTFILL_TEXT_EFFECT;
451 24 : maElementName = "textFill";
452 24 : break;
453 : case NS_ooxml::LN_scene3d_scene3d:
454 0 : maPropertyId = PROP_CHAR_SCENE3D_TEXT_EFFECT;
455 0 : maElementName = "scene3d";
456 0 : break;
457 : case NS_ooxml::LN_props3d_props3d:
458 13 : maPropertyId = PROP_CHAR_PROPS3D_TEXT_EFFECT;
459 13 : maElementName = "props3d";
460 13 : break;
461 : case NS_ooxml::LN_ligatures_ligatures:
462 16 : maPropertyId = PROP_CHAR_LIGATURES_TEXT_EFFECT;
463 16 : maElementName = "ligatures";
464 16 : break;
465 : case NS_ooxml::LN_numForm_numForm:
466 13 : maPropertyId = PROP_CHAR_NUMFORM_TEXT_EFFECT;
467 13 : maElementName = "numForm";
468 13 : break;
469 : case NS_ooxml::LN_numSpacing_numSpacing:
470 13 : maPropertyId = PROP_CHAR_NUMSPACING_TEXT_EFFECT;
471 13 : maElementName = "numSpacing";
472 13 : break;
473 : case NS_ooxml::LN_stylisticSets_stylisticSets:
474 34 : maPropertyId = PROP_CHAR_STYLISTICSETS_TEXT_EFFECT;
475 34 : maElementName = "stylisticSets";
476 34 : break;
477 : case NS_ooxml::LN_cntxtAlts_cntxtAlts:
478 16 : maPropertyId = PROP_CHAR_CNTXTALTS_TEXT_EFFECT;
479 16 : maElementName = "cntxtAlts";
480 16 : break;
481 : default:
482 0 : break;
483 : }
484 205 : }
485 :
486 205 : TextEffectsHandler::TextEffectsHandler(sal_uInt32 aElementId) :
487 : LoggedProperties(dmapper_logger, "TextEffectsHandler"),
488 205 : mpGrabBagStack(NULL)
489 : {
490 205 : convertElementIdToPropertyId(aElementId);
491 205 : mpGrabBagStack.reset(new GrabBagStack(maElementName));
492 205 : }
493 :
494 410 : TextEffectsHandler::~TextEffectsHandler()
495 : {
496 410 : }
497 :
498 205 : boost::optional<PropertyIds> TextEffectsHandler::getGrabBagPropertyId()
499 : {
500 205 : return maPropertyId;
501 : }
502 :
503 1161 : void TextEffectsHandler::lcl_attribute(Id aName, Value& aValue)
504 : {
505 1161 : if (mpGrabBagStack->getCurrentName() != constAttributesSequenceName)
506 669 : mpGrabBagStack->push(constAttributesSequenceName);
507 :
508 1161 : switch(aName)
509 : {
510 : case NS_ooxml::LN_CT_Percentage_val:
511 : case NS_ooxml::LN_CT_PositiveFixedPercentage_val:
512 : case NS_ooxml::LN_CT_PositivePercentage_val:
513 219 : mpGrabBagStack->addInt32("val", sal_Int32(aValue.getInt()));
514 219 : break;
515 : case NS_ooxml::LN_CT_Glow_rad:
516 13 : mpGrabBagStack->addInt32("rad", sal_Int32(aValue.getInt()));
517 13 : break;
518 : case NS_ooxml::LN_CT_SchemeColor_val:
519 : {
520 89 : OUString aString = getSchemeColorValTypeString(sal_Int32(aValue.getInt()));
521 89 : mpGrabBagStack->addString("val", aString);
522 : }
523 89 : break;
524 : case NS_ooxml::LN_CT_SRgbColor_val:
525 : {
526 48 : OUStringBuffer aBuffer = OUString::number(aValue.getInt(), 16);
527 96 : OUStringBuffer aString;
528 48 : comphelper::string::padToLength(aString, 6 - aBuffer.getLength(), '0');
529 48 : aString.append(aBuffer.getStr());
530 96 : mpGrabBagStack->addString("val", aString.makeStringAndClear().toAsciiUpperCase());
531 : }
532 48 : break;
533 : case NS_ooxml::LN_CT_Shadow_blurRad:
534 : case NS_ooxml::LN_CT_Reflection_blurRad:
535 32 : mpGrabBagStack->addInt32("blurRad", sal_Int32(aValue.getInt()));
536 32 : break;
537 : case NS_ooxml::LN_CT_Reflection_stA:
538 13 : mpGrabBagStack->addInt32("stA", sal_Int32(aValue.getInt()));
539 13 : break;
540 : case NS_ooxml::LN_CT_Reflection_stPos:
541 13 : mpGrabBagStack->addInt32("stPos", sal_Int32(aValue.getInt()));
542 13 : break;
543 : case NS_ooxml::LN_CT_Reflection_endA:
544 13 : mpGrabBagStack->addInt32("endA", sal_Int32(aValue.getInt()));
545 13 : break;
546 : case NS_ooxml::LN_CT_Reflection_endPos:
547 13 : mpGrabBagStack->addInt32("endPos", sal_Int32(aValue.getInt()));
548 13 : break;
549 : case NS_ooxml::LN_CT_Shadow_dist:
550 : case NS_ooxml::LN_CT_Reflection_dist:
551 32 : mpGrabBagStack->addInt32("dist", sal_Int32(aValue.getInt()));
552 32 : break;
553 : case NS_ooxml::LN_CT_Shadow_dir:
554 : case NS_ooxml::LN_CT_Reflection_dir:
555 32 : mpGrabBagStack->addInt32("dir", sal_Int32(aValue.getInt()));
556 32 : break;
557 : case NS_ooxml::LN_CT_Reflection_fadeDir:
558 13 : mpGrabBagStack->addInt32("fadeDir", sal_Int32(aValue.getInt()));
559 13 : break;
560 : case NS_ooxml::LN_CT_Shadow_sx:
561 : case NS_ooxml::LN_CT_Reflection_sx:
562 32 : mpGrabBagStack->addInt32("sx", sal_Int32(aValue.getInt()));
563 32 : break;
564 : case NS_ooxml::LN_CT_Shadow_sy:
565 : case NS_ooxml::LN_CT_Reflection_sy:
566 32 : mpGrabBagStack->addInt32("sy", sal_Int32(aValue.getInt()));
567 32 : break;
568 : case NS_ooxml::LN_CT_Shadow_kx:
569 : case NS_ooxml::LN_CT_Reflection_kx:
570 32 : mpGrabBagStack->addInt32("kx", sal_Int32(aValue.getInt()));
571 32 : break;
572 : case NS_ooxml::LN_CT_Shadow_ky:
573 : case NS_ooxml::LN_CT_Reflection_ky:
574 32 : mpGrabBagStack->addInt32("ky", sal_Int32(aValue.getInt()));
575 32 : break;
576 : case NS_ooxml::LN_CT_Shadow_algn:
577 : case NS_ooxml::LN_CT_Reflection_algn:
578 : {
579 32 : uno::Any aAny = makeAny(getRectAlignmentString(sal_Int32(aValue.getInt())));
580 32 : mpGrabBagStack->appendElement("algn", aAny);
581 : }
582 32 : break;
583 : case NS_ooxml::LN_CT_TextOutlineEffect_w:
584 31 : mpGrabBagStack->addInt32("w", sal_Int32(aValue.getInt()));
585 31 : break;
586 : case NS_ooxml::LN_CT_TextOutlineEffect_cap:
587 : {
588 31 : uno::Any aAny = makeAny(getLineCapString(sal_Int32(aValue.getInt())));
589 31 : mpGrabBagStack->appendElement("cap", aAny);
590 : }
591 31 : break;
592 : case NS_ooxml::LN_CT_TextOutlineEffect_cmpd:
593 : {
594 31 : uno::Any aAny = makeAny(getCompoundLineString(sal_Int32(aValue.getInt())));
595 31 : mpGrabBagStack->appendElement("cmpd", aAny);
596 : }
597 31 : break;
598 : case NS_ooxml::LN_CT_TextOutlineEffect_algn:
599 : {
600 31 : uno::Any aAny = makeAny(getPenAlignmentString(sal_Int32(aValue.getInt())));
601 31 : mpGrabBagStack->appendElement("algn", aAny);
602 : }
603 31 : break;
604 : case NS_ooxml::LN_CT_GradientStop_pos:
605 60 : mpGrabBagStack->addInt32("pos", sal_Int32(aValue.getInt()));
606 60 : break;
607 : case NS_ooxml::LN_CT_LinearShadeProperties_ang:
608 11 : mpGrabBagStack->addInt32("ang", sal_Int32(aValue.getInt()));
609 11 : break;
610 : case NS_ooxml::LN_CT_LinearShadeProperties_scaled:
611 : {
612 11 : uno::Any aAny = makeAny(getOnOffString(sal_Int32(aValue.getInt())));
613 11 : mpGrabBagStack->appendElement("scaled", aAny);
614 : }
615 11 : break;
616 : case NS_ooxml::LN_CT_PathShadeProperties_path:
617 : {
618 7 : uno::Any aAny = makeAny(getPathShadeTypeString(sal_Int32(aValue.getInt())));
619 7 : mpGrabBagStack->appendElement("path", aAny);
620 : }
621 7 : break;
622 : case NS_ooxml::LN_CT_RelativeRect_l:
623 7 : mpGrabBagStack->addInt32("l", sal_Int32(aValue.getInt()));
624 7 : break;
625 : case NS_ooxml::LN_CT_RelativeRect_t:
626 7 : mpGrabBagStack->addInt32("t", sal_Int32(aValue.getInt()));
627 7 : break;
628 : case NS_ooxml::LN_CT_RelativeRect_r:
629 7 : mpGrabBagStack->addInt32("r", sal_Int32(aValue.getInt()));
630 7 : break;
631 : case NS_ooxml::LN_CT_RelativeRect_b:
632 7 : mpGrabBagStack->addInt32("b", sal_Int32(aValue.getInt()));
633 7 : break;
634 : case NS_ooxml::LN_CT_PresetLineDashProperties_val:
635 : {
636 31 : uno::Any aAny = makeAny(getPresetLineDashValString(sal_Int32(aValue.getInt())));
637 31 : mpGrabBagStack->appendElement("val", aAny);
638 : }
639 31 : break;
640 : case NS_ooxml::LN_CT_LineJoinMiterProperties_lim:
641 6 : mpGrabBagStack->addInt32("lim", sal_Int32(aValue.getInt()));
642 6 : break;
643 : case NS_ooxml::LN_CT_Camera_prst:
644 : {
645 0 : uno::Any aAny = makeAny(getPresetCameraTypeString(sal_Int32(aValue.getInt())));
646 0 : mpGrabBagStack->appendElement("prst", aAny);
647 : }
648 0 : break;
649 : case NS_ooxml::LN_CT_LightRig_rig:
650 : {
651 0 : uno::Any aAny = makeAny(getLightRigTypeString(sal_Int32(aValue.getInt())));
652 0 : mpGrabBagStack->appendElement("rig", aAny);
653 : }
654 0 : break;
655 : case NS_ooxml::LN_CT_LightRig_dir:
656 : {
657 0 : uno::Any aAny = makeAny(getLightRigDirectionString(sal_Int32(aValue.getInt())));
658 0 : mpGrabBagStack->appendElement("dir", aAny);
659 : }
660 0 : break;
661 : case NS_ooxml::LN_CT_SphereCoords_lat:
662 0 : mpGrabBagStack->addInt32("lat", sal_Int32(aValue.getInt()));
663 0 : break;
664 : case NS_ooxml::LN_CT_SphereCoords_lon:
665 0 : mpGrabBagStack->addInt32("lon", sal_Int32(aValue.getInt()));
666 0 : break;
667 : case NS_ooxml::LN_CT_SphereCoords_rev:
668 0 : mpGrabBagStack->addInt32("rev", sal_Int32(aValue.getInt()));
669 0 : break;
670 : case NS_ooxml::LN_CT_Props3D_extrusionH:
671 13 : mpGrabBagStack->addInt32("extrusionH", sal_Int32(aValue.getInt()));
672 13 : break;
673 : case NS_ooxml::LN_CT_Props3D_contourW:
674 13 : mpGrabBagStack->addInt32("contourW", sal_Int32(aValue.getInt()));
675 13 : break;
676 : case NS_ooxml::LN_CT_Props3D_prstMaterial:
677 : {
678 13 : uno::Any aAny = makeAny(getPresetMaterialTypeString(sal_Int32(aValue.getInt())));
679 13 : mpGrabBagStack->appendElement("prstMaterial", aAny);
680 : }
681 13 : break;
682 : case NS_ooxml::LN_CT_Bevel_w:
683 26 : mpGrabBagStack->addInt32("w", sal_Int32(aValue.getInt()));
684 26 : break;
685 : case NS_ooxml::LN_CT_Bevel_h:
686 26 : mpGrabBagStack->addInt32("h", sal_Int32(aValue.getInt()));
687 26 : break;
688 : case NS_ooxml::LN_CT_Bevel_prst:
689 : {
690 26 : uno::Any aAny = makeAny(getBevelPresetTypeString(sal_Int32(aValue.getInt())));
691 26 : mpGrabBagStack->appendElement("prst", aAny);
692 : }
693 26 : break;
694 : case NS_ooxml::LN_CT_Ligatures_val:
695 : {
696 16 : uno::Any aAny = makeAny(getLigaturesString(sal_Int32(aValue.getInt())));
697 16 : mpGrabBagStack->appendElement("val", aAny);
698 : }
699 16 : break;
700 : case NS_ooxml::LN_CT_NumForm_val:
701 : {
702 13 : uno::Any aAny = makeAny(getNumFormString(sal_Int32(aValue.getInt())));
703 13 : mpGrabBagStack->appendElement("val", aAny);
704 : }
705 13 : break;
706 : case NS_ooxml::LN_CT_NumSpacing_val:
707 : {
708 13 : uno::Any aAny = makeAny(getNumSpacingString(sal_Int32(aValue.getInt())));
709 13 : mpGrabBagStack->appendElement("val", aAny);
710 : }
711 13 : break;
712 : case NS_ooxml::LN_CT_StyleSet_id:
713 34 : mpGrabBagStack->addInt32("id", sal_Int32(aValue.getInt()));
714 34 : break;
715 : case NS_ooxml::LN_CT_StyleSet_val:
716 : case NS_ooxml::LN_CT_OnOff_val:
717 : {
718 0 : uno::Any aAny = makeAny(getOnOffString(sal_Int32(aValue.getInt())));
719 0 : mpGrabBagStack->appendElement("val", aAny);
720 : }
721 0 : break;
722 : default:
723 0 : break;
724 : }
725 1161 : }
726 :
727 662 : void TextEffectsHandler::lcl_sprm(Sprm& rSprm)
728 : {
729 662 : if (mpGrabBagStack->getCurrentName() == constAttributesSequenceName)
730 252 : mpGrabBagStack->pop();
731 :
732 662 : sal_uInt32 nSprmId = rSprm.getId();
733 662 : OUString aElementName = lclGetNameForElementId(nSprmId);
734 662 : if(aElementName.isEmpty())
735 : {
736 : // Element is unknown -> leave.
737 0 : return;
738 : }
739 :
740 662 : mpGrabBagStack->push(aElementName);
741 :
742 1324 : writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
743 662 : if( !pProperties.get())
744 0 : return;
745 :
746 662 : pProperties.get()->resolve( *this );
747 :
748 662 : if (mpGrabBagStack->getCurrentName() == constAttributesSequenceName)
749 362 : mpGrabBagStack->pop();
750 :
751 1324 : mpGrabBagStack->pop();
752 : }
753 :
754 205 : beans::PropertyValue TextEffectsHandler::getInteropGrabBag()
755 : {
756 205 : beans::PropertyValue aReturn = mpGrabBagStack->getRootProperty();
757 205 : mpGrabBagStack.reset();
758 205 : return aReturn;
759 : }
760 :
761 : }//namespace dmapper
762 : } //namespace writerfilter
763 :
764 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|