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