1 /*
2  *  Copyright (c) 2011 Lukáš Tvrdý lukas.tvrdy@ixonos.com
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18 #include "ODrawToOdf.h"
19 
20 #include "drawstyle.h"
21 #include "writeodf/writeodfdraw.h"
22 
23 using namespace MSO;
24 using namespace writeodf;
25 
26 namespace
27 {
equation(Writer & out,const char * name,const char * formula)28 void equation(Writer& out, const char* name, const char* formula)
29 {
30     draw_equation eq(&out.xml);
31     eq.set_draw_name(name);
32     eq.set_draw_formula(formula);
33 }
equation(draw_enhanced_geometry & eg,const char * name,const char * formula)34 void equation(draw_enhanced_geometry& eg, const char* name, const char* formula)
35 {
36     draw_equation eq(eg.add_draw_equation());
37     eq.set_draw_name(name);
38     eq.set_draw_formula(formula);
39 }
40 
41 }
42 
43 
44 /*void ODrawToOdf::processRectangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
45     out.xml.startElement("draw:custom-shape");
46     processStyleAndText(o, out);
47 
48     out.xml.startElement("draw:enhanced-geometry");
49     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
50     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N");
51     out.xml.addAttribute("draw:type", "rectangle");
52     setShapeMirroring(o, out);
53     out.xml.endElement(); // enhanced geometry
54     out.xml.endElement(); // custom shape
55 }*/
56 
57 
processParallelogram(const MSO::OfficeArtSpContainer & o,Writer & out)58 void ODrawToOdf::processParallelogram(const MSO::OfficeArtSpContainer& o, Writer& out) {
59     draw_custom_shape shape(&out.xml);
60     processStyleAndText(o, out);
61 
62     draw_enhanced_geometry eg(shape.add_draw_enhanced_geometry());
63     eg.set_draw_glue_points("?f6 0 10800 ?f8 ?f11 10800 ?f9 21600 10800 ?f10 ?f5 10800");
64     processModifiers(o, out, QList<int>() << 5400);
65     eg.set_svg_viewBox("0 0 21600 21600");
66     eg.set_draw_enhanced_path("M ?f0 0 L 21600 0 ?f1 21600 0 21600 Z N");
67     eg.set_draw_type("parallelogram");
68     eg.set_draw_text_areas("?f3 ?f3 ?f4 ?f4");
69     setShapeMirroring(o, out);
70     equation(eg,"f0","$0 ");
71     equation(eg,"f1","21600-$0 ");
72     equation(eg,"f2","$0 *10/24");
73     equation(eg,"f3","?f2 +1750");
74     equation(eg,"f4","21600-?f3 ");
75     equation(eg,"f5","?f0 /2");
76     equation(eg,"f6","10800+?f5 ");
77     equation(eg,"f7","?f0 -10800");
78     equation(eg,"f8","if(?f7 ,?f13 ,0)");
79     equation(eg,"f9","10800-?f5 ");
80     equation(eg,"f10","if(?f7 ,?f12 ,21600)");
81     equation(eg,"f11","21600-?f5 ");
82     equation(eg,"f12","21600*10800/?f0 ");
83     equation(eg,"f13","21600-?f12 ");
84     draw_handle handle(eg.add_draw_handle("$0 top"));
85     handle.set_draw_handle_radius_range_maximum("21000");
86     handle.set_draw_handle_radius_range_minimum("0");
87 }
88 
89 
processTrapezoid(const MSO::OfficeArtSpContainer & o,Writer & out)90 void ODrawToOdf::processTrapezoid(const MSO::OfficeArtSpContainer& o, Writer& out) {
91     draw_custom_shape shape(&out.xml);
92     processStyleAndText(o, out);
93 
94     draw_enhanced_geometry eg(shape.add_draw_enhanced_geometry());
95     eg.set_draw_glue_points("?f6 10800 10800 21600 ?f5 10800 10800 0");
96     processModifiers(o, out, QList<int>() << 5400);
97     eg.set_svg_viewBox("0 0 21600 21600");
98     eg.set_draw_enhanced_path("M 0 0 L 21600 0 ?f0 21600 ?f1 21600 Z N");
99     eg.set_draw_type("trapezoid");
100     eg.set_draw_text_areas("?f3 ?f3 ?f4 ?f4");
101     setShapeMirroring(o, out);
102     equation(eg,"f0","21600-$0 ");
103     equation(eg,"f1","$0 ");
104     equation(eg,"f2","$0 *10/18");
105     equation(eg,"f3","?f2 +1750");
106     equation(eg,"f4","21600-?f3 ");
107     equation(eg,"f5","$0 /2");
108     equation(eg,"f6","21600-?f5 ");
109     draw_handle handle(eg.add_draw_handle("$0 bottom"));
110     handle.set_draw_handle_radius_range_maximum("10000");
111     handle.set_draw_handle_radius_range_minimum("0");
112 }
113 
114 
processDiamond(const MSO::OfficeArtSpContainer & o,Writer & out)115 void ODrawToOdf::processDiamond(const MSO::OfficeArtSpContainer& o, Writer& out) {
116     out.xml.startElement("draw:custom-shape");
117     processStyleAndText(o, out);
118 
119     out.xml.startElement("draw:enhanced-geometry");
120     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
121     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
122     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 L 21600 10800 10800 21600 0 10800 10800 0 Z N");
123     out.xml.addAttribute("draw:type", "diamond");
124     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
125     setShapeMirroring(o, out);
126     out.xml.endElement(); // enhanced geometry
127     out.xml.endElement(); // custom shape
128 }
129 
130 
processRoundRectangle(const MSO::OfficeArtSpContainer & o,Writer & out)131 void ODrawToOdf::processRoundRectangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
132     out.xml.startElement("draw:custom-shape");
133     processStyleAndText(o, out);
134 
135     out.xml.startElement("draw:enhanced-geometry");
136     processModifiers(o, out, QList<int>() << 3600);
137     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
138     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
139     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
140     out.xml.addAttribute("draw:enhanced-path", "M ?f7 0 X 0 ?f8 L 0 ?f9 Y ?f7 21600 L ?f10 21600 X 21600 ?f9 L 21600 ?f8 Y ?f10 0 Z N");
141     out.xml.addAttribute("draw:type", "round-rectangle");
142     out.xml.addAttribute("draw:text-areas", "?f3 ?f4 ?f5 ?f6");
143     setShapeMirroring(o, out);
144     equation(out,"f0","45");
145     equation(out,"f1","$0 *sin(?f0 *(pi/180))");
146     equation(out,"f2","?f1 *3163/7636");
147     equation(out,"f3","left+?f2 ");
148     equation(out,"f4","top+?f2 ");
149     equation(out,"f5","right-?f2 ");
150     equation(out,"f6","bottom-?f2 ");
151     equation(out,"f7","left+$0 ");
152     equation(out,"f8","top+$0 ");
153     equation(out,"f9","bottom-$0 ");
154     equation(out,"f10","right-$0 ");
155     out.xml.startElement("draw:handle");
156     out.xml.addAttribute("draw:handle-position", "$0 top");
157     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
158     out.xml.addAttribute("draw:handle-switched", "true");
159     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
160     out.xml.endElement(); // draw:handle
161     out.xml.endElement(); // enhanced geometry
162     out.xml.endElement(); // custom shape
163 }
164 
165 
processOctagon(const MSO::OfficeArtSpContainer & o,Writer & out)166 void ODrawToOdf::processOctagon(const MSO::OfficeArtSpContainer& o, Writer& out) {
167     out.xml.startElement("draw:custom-shape");
168     processStyleAndText(o, out);
169 
170     out.xml.startElement("draw:enhanced-geometry");
171     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
172     processModifiers(o, out, QList<int>() << 5000);
173     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
174     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
175     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
176     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L ?f2 0 21600 ?f1 21600 ?f3 ?f2 21600 ?f0 21600 0 ?f3 0 ?f1 Z N");
177     out.xml.addAttribute("draw:type", "octagon");
178     out.xml.addAttribute("draw:text-areas", "?f5 ?f6 ?f7 ?f8");
179     setShapeMirroring(o, out);
180     equation(out,"f0","left+$0 ");
181     equation(out,"f1","top+$0 ");
182     equation(out,"f2","right-$0 ");
183     equation(out,"f3","bottom-$0 ");
184     equation(out,"f4","$0 /2");
185     equation(out,"f5","left+?f4 ");
186     equation(out,"f6","top+?f4 ");
187     equation(out,"f7","right-?f4 ");
188     equation(out,"f8","bottom-?f4 ");
189     out.xml.startElement("draw:handle");
190     out.xml.addAttribute("draw:handle-position", "$0 top");
191     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
192     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
193     out.xml.endElement(); // draw:handle
194     out.xml.endElement(); // enhanced geometry
195     out.xml.endElement(); // custom shape
196 }
197 
198 
processIsocelesTriangle(const MSO::OfficeArtSpContainer & o,Writer & out)199 void ODrawToOdf::processIsocelesTriangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
200     out.xml.startElement("draw:custom-shape");
201     processStyleAndText(o, out);
202 
203     out.xml.startElement("draw:enhanced-geometry");
204     out.xml.addAttribute("draw:glue-points", "10800 0 ?f1 10800 0 21600 10800 21600 21600 21600 ?f7 10800");
205     processModifiers(o, out, QList<int>() << 10800);
206     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
207     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L 21600 21600 0 21600 Z N");
208     out.xml.addAttribute("draw:type", "isosceles-triangle");
209     out.xml.addAttribute("draw:text-areas", "?f1 10800 ?f2 18000 ?f3 7200 ?f4 21600");
210     setShapeMirroring(o, out);
211     equation(out,"f0","$0 ");
212     equation(out,"f1","$0 /2");
213     equation(out,"f2","?f1 +10800");
214     equation(out,"f3","$0 *2/3");
215     equation(out,"f4","?f3 +7200");
216     equation(out,"f5","21600-?f0 ");
217     equation(out,"f6","?f5 /2");
218     equation(out,"f7","21600-?f6 ");
219     out.xml.startElement("draw:handle");
220     out.xml.addAttribute("draw:handle-position", "$0 top");
221     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
222     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
223     out.xml.endElement(); // draw:handle
224     out.xml.endElement(); // enhanced geometry
225     out.xml.endElement(); // custom shape
226 }
227 
228 
processRightTriangle(const MSO::OfficeArtSpContainer & o,Writer & out)229 void ODrawToOdf::processRightTriangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
230     out.xml.startElement("draw:custom-shape");
231     processStyleAndText(o, out);
232 
233     out.xml.startElement("draw:enhanced-geometry");
234     out.xml.addAttribute("draw:glue-points", "10800 0 5400 10800 0 21600 10800 21600 21600 21600 16200 10800");
235     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
236     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 21600 0 21600 0 0 Z N");
237     out.xml.addAttribute("draw:type", "right-triangle");
238     out.xml.addAttribute("draw:text-areas", "1900 12700 12700 19700");
239     setShapeMirroring(o, out);
240     out.xml.endElement(); // enhanced geometry
241     out.xml.endElement(); // custom shape
242 }
243 
244 
processEllipse(const MSO::OfficeArtSpContainer & o,Writer & out)245 void ODrawToOdf::processEllipse(const MSO::OfficeArtSpContainer& o, Writer& out)
246 {
247     out.xml.startElement("draw:ellipse");
248     processStyleAndText(o, out);
249     out.xml.endElement(); // draw:ellipse
250 }
251 
252 /*
253 void ODrawToOdf::processEllipse(const MSO::OfficeArtSpContainer& o, Writer& out) {
254     out.xml.startElement("draw:custom-shape");
255     processStyleAndText(o, out);
256 
257     out.xml.startElement("draw:enhanced-geometry");
258     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
259     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
260     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z N");
261     out.xml.addAttribute("draw:type", "ellipse");
262     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
263     setShapeMirroring(o, out);
264     out.xml.endElement(); // enhanced geometry
265     out.xml.endElement(); // custom shape
266 }
267 */
268 
processHexagon(const MSO::OfficeArtSpContainer & o,Writer & out)269 void ODrawToOdf::processHexagon(const MSO::OfficeArtSpContainer& o, Writer& out) {
270     out.xml.startElement("draw:custom-shape");
271     processStyleAndText(o, out);
272 
273     out.xml.startElement("draw:enhanced-geometry");
274     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
275     processModifiers(o, out, QList<int>() << 5400);
276     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
277     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L ?f1 0 21600 10800 ?f1 21600 ?f0 21600 0 10800 Z N");
278     out.xml.addAttribute("draw:type", "hexagon");
279     out.xml.addAttribute("draw:text-areas", "?f3 ?f3 ?f4 ?f4");
280     setShapeMirroring(o, out);
281     equation(out,"f0","$0 ");
282     equation(out,"f1","21600-$0 ");
283     equation(out,"f2","$0 *100/234");
284     equation(out,"f3","?f2 +1700");
285     equation(out,"f4","21600-?f3 ");
286     out.xml.startElement("draw:handle");
287     out.xml.addAttribute("draw:handle-position", "$0 top");
288     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
289     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
290     out.xml.endElement(); // draw:handle
291     out.xml.endElement(); // enhanced geometry
292     out.xml.endElement(); // custom shape
293 }
294 
295 
processPlus(const MSO::OfficeArtSpContainer & o,Writer & out)296 void ODrawToOdf::processPlus(const MSO::OfficeArtSpContainer& o, Writer& out) {
297     out.xml.startElement("draw:custom-shape");
298     processStyleAndText(o, out);
299 
300     out.xml.startElement("draw:enhanced-geometry");
301     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
302     processModifiers(o, out, QList<int>() << 5400);
303     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
304     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
305     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
306     out.xml.addAttribute("draw:enhanced-path", "M ?f1 0 L ?f2 0 ?f2 ?f1 21600 ?f1 21600 ?f3 ?f2 ?f3 ?f2 21600 ?f1 21600 ?f1 ?f3 0 ?f3 0 ?f1 ?f1 ?f1 ?f1 0 Z N");
307     out.xml.addAttribute("draw:type", "cross");
308     out.xml.addAttribute("draw:text-areas", "?f1 ?f1 ?f2 ?f3");
309     setShapeMirroring(o, out);
310     equation(out,"f0","$0 *10799/10800");
311     equation(out,"f1","?f0 ");
312     equation(out,"f2","right-?f0 ");
313     equation(out,"f3","bottom-?f0 ");
314     out.xml.startElement("draw:handle");
315     out.xml.addAttribute("draw:handle-position", "$0 top");
316     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
317     out.xml.addAttribute("draw:handle-switched", "true");
318     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
319     out.xml.endElement(); // draw:handle
320     out.xml.endElement(); // enhanced geometry
321     out.xml.endElement(); // custom shape
322 }
323 
324 
processPentagon(const MSO::OfficeArtSpContainer & o,Writer & out)325 void ODrawToOdf::processPentagon(const MSO::OfficeArtSpContainer& o, Writer& out) {
326     out.xml.startElement("draw:custom-shape");
327     processStyleAndText(o, out);
328 
329     out.xml.startElement("draw:enhanced-geometry");
330     out.xml.addAttribute("draw:glue-points", "10800 0 0 8260 4230 21600 10800 21600 17370 21600 21600 8260");
331     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
332     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 L 0 8260 4230 21600 17370 21600 21600 8260 10800 0 Z N");
333     out.xml.addAttribute("draw:type", "pentagon");
334     out.xml.addAttribute("draw:text-areas", "4230 5080 17370 21600");
335     setShapeMirroring(o, out);
336     out.xml.endElement(); // enhanced geometry
337     out.xml.endElement(); // custom shape
338 }
339 
340 
processCan(const MSO::OfficeArtSpContainer & o,Writer & out)341 void ODrawToOdf::processCan(const MSO::OfficeArtSpContainer& o, Writer& out) {
342     out.xml.startElement("draw:custom-shape");
343     processStyleAndText(o, out);
344 
345     out.xml.startElement("draw:enhanced-geometry");
346     out.xml.addAttribute("draw:glue-points", "44 ?f6 44 0 0 10800 44 21600 88 10800");
347     processModifiers(o, out, QList<int>() << 5400);
348     out.xml.addAttribute("svg:viewBox", "0 0 88 21600");
349     out.xml.addAttribute("draw:enhanced-path", "M 44 0 C 20 0 0 ?f2 0 ?f0 L 0 ?f3 C 0 ?f4 20 21600 44 21600 68 21600 88 ?f4 88 ?f3 L 88 ?f0 C 88 ?f2 68 0 44 0 Z N M 44 0 C 20 0 0 ?f2 0 ?f0 0 ?f5 20 ?f6 44 ?f6 68 ?f6 88 ?f5 88 ?f0 88 ?f2 68 0 44 0 Z N");
350     out.xml.addAttribute("draw:type", "can");
351     out.xml.addAttribute("draw:text-areas", "0 ?f6 88 ?f3");
352     setShapeMirroring(o, out);
353     equation(out,"f0","$0 *2/4");
354     equation(out,"f1","?f0 *6/11");
355     equation(out,"f2","?f0 -?f1 ");
356     equation(out,"f3","21600-?f0 ");
357     equation(out,"f4","?f3 +?f1 ");
358     equation(out,"f5","?f0 +?f1 ");
359     equation(out,"f6","$0 *2/2");
360     equation(out,"f7","44");
361     out.xml.startElement("draw:handle");
362     out.xml.addAttribute("draw:handle-position", "?f7 $0");
363     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
364     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
365     out.xml.endElement(); // draw:handle
366     out.xml.endElement(); // enhanced geometry
367     out.xml.endElement(); // custom shape
368 }
369 
370 
processCube(const MSO::OfficeArtSpContainer & o,Writer & out)371 void ODrawToOdf::processCube(const MSO::OfficeArtSpContainer& o, Writer& out) {
372     out.xml.startElement("draw:custom-shape");
373     processStyleAndText(o, out);
374 
375     out.xml.startElement("draw:enhanced-geometry");
376     out.xml.addAttribute("draw:glue-points", "?f7 0 ?f6 ?f1 0 ?f10 ?f6 21600 ?f4 ?f10 21600 ?f9");
377     processModifiers(o, out, QList<int>() << 5400);
378     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
379     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
380     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
381     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f12 L 0 ?f1 ?f2 0 ?f11 0 ?f11 ?f3 ?f4 ?f12 Z N M 0 ?f1 L ?f2 0 ?f11 0 ?f4 ?f1 Z N M ?f4 ?f12 L ?f4 ?f1 ?f11 0 ?f11 ?f3 Z N");
382     out.xml.addAttribute("draw:type", "cube");
383     out.xml.addAttribute("draw:text-areas", "0 ?f1 ?f4 ?f12");
384     setShapeMirroring(o, out);
385     equation(out,"f0","$0 ");
386     equation(out,"f1","top+?f0 ");
387     equation(out,"f2","left+?f0 ");
388     equation(out,"f3","bottom-?f0 ");
389     equation(out,"f4","right-?f0 ");
390     equation(out,"f5","right-?f2 ");
391     equation(out,"f6","?f5 /2");
392     equation(out,"f7","?f2 +?f6 ");
393     equation(out,"f8","bottom-?f1 ");
394     equation(out,"f9","?f8 /2");
395     equation(out,"f10","?f1 +?f9 ");
396     equation(out,"f11","right");
397     equation(out,"f12","bottom");
398     out.xml.startElement("draw:handle");
399     out.xml.addAttribute("draw:handle-position", "left $0");
400     out.xml.addAttribute("draw:handle-switched", "true");
401     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
402     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
403     out.xml.endElement(); // draw:handle
404     out.xml.endElement(); // enhanced geometry
405     out.xml.endElement(); // custom shape
406 }
407 
408 
processBevel(const MSO::OfficeArtSpContainer & o,Writer & out)409 void ODrawToOdf::processBevel(const MSO::OfficeArtSpContainer& o, Writer& out) {
410     out.xml.startElement("draw:custom-shape");
411     processStyleAndText(o, out);
412 
413     out.xml.startElement("draw:enhanced-geometry");
414     processModifiers(o, out, QList<int>() << 2700);
415     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
416     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
417     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
418     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f1 ?f0 ?f0 ?f0 Z N M 21600 0 L 21600 21600 ?f1 ?f2 ?f1 ?f0 Z N M 21600 21600 L 0 21600 ?f0 ?f2 ?f1 ?f2 Z N M 0 21600 L 0 0 ?f0 ?f0 ?f0 ?f2 Z N");
419     out.xml.addAttribute("draw:type", "quad-bevel");
420     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f1 ?f2");
421     setShapeMirroring(o, out);
422     equation(out,"f0","$0 *21599/21600");
423     equation(out,"f1","right-?f0 ");
424     equation(out,"f2","bottom-?f0 ");
425     out.xml.startElement("draw:handle");
426     out.xml.addAttribute("draw:handle-position", "$0 top");
427     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
428     out.xml.addAttribute("draw:handle-switched", "true");
429     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
430     out.xml.endElement(); // draw:handle
431     out.xml.endElement(); // enhanced geometry
432     out.xml.endElement(); // custom shape
433 }
434 
435 
processFoldedCorner(const MSO::OfficeArtSpContainer & o,Writer & out)436 void ODrawToOdf::processFoldedCorner(const MSO::OfficeArtSpContainer& o, Writer& out) {
437     out.xml.startElement("draw:custom-shape");
438     processStyleAndText(o, out);
439 
440     out.xml.startElement("draw:enhanced-geometry");
441     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
442     processModifiers(o, out, QList<int>() << 18900);
443     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
444     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 ?f0 ?f0 21600 0 21600 Z N M ?f0 21600 L ?f3 ?f0 C ?f8 ?f9 ?f10 ?f11 21600 ?f0 Z N");
445     out.xml.addAttribute("draw:type", "paper");
446     out.xml.addAttribute("draw:text-areas", "0 0 21600 ?f11");
447     setShapeMirroring(o, out);
448     equation(out,"f0","$0 ");
449     equation(out,"f1","21600-?f0 ");
450     equation(out,"f2","?f1 *8000/10800");
451     equation(out,"f3","21600-?f2 ");
452     equation(out,"f4","?f1 /2");
453     equation(out,"f5","?f1 /4");
454     equation(out,"f6","?f1 /7");
455     equation(out,"f7","?f1 /16");
456     equation(out,"f8","?f3 +?f5 ");
457     equation(out,"f9","?f0 +?f6 ");
458     equation(out,"f10","21600-?f4 ");
459     equation(out,"f11","?f0 +?f7 ");
460     out.xml.startElement("draw:handle");
461     out.xml.addAttribute("draw:handle-position", "$0 bottom");
462     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
463     out.xml.addAttribute("draw:handle-range-x-minimum", "10800");
464     out.xml.endElement(); // draw:handle
465     out.xml.endElement(); // enhanced geometry
466     out.xml.endElement(); // custom shape
467 }
468 
469 
processSmileyFace(const MSO::OfficeArtSpContainer & o,Writer & out)470 void ODrawToOdf::processSmileyFace(const MSO::OfficeArtSpContainer& o, Writer& out) {
471     out.xml.startElement("draw:custom-shape");
472     processStyleAndText(o, out);
473 
474     out.xml.startElement("draw:enhanced-geometry");
475     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
476     processModifiers(o, out, QList<int>() << 17520);
477     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
478     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z N U 7305 7515 1165 1165 0 360 Z N U 14295 7515 1165 1165 0 360 Z N M 4870 ?f1 C 8680 ?f2 12920 ?f2 16730 ?f1 F N");
479     out.xml.addAttribute("draw:type", "smiley");
480     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
481     setShapeMirroring(o, out);
482     equation(out,"f0","$0 -15510");
483     equation(out,"f1","17520-?f0 ");
484     equation(out,"f2","15510+?f0 ");
485     out.xml.startElement("draw:handle");
486     out.xml.addAttribute("draw:handle-position", "10800 $0");
487     out.xml.addAttribute("draw:handle-range-y-minimum", "15510");
488     out.xml.addAttribute("draw:handle-range-y-maximum", "17520");
489     out.xml.endElement(); // draw:handle
490     out.xml.endElement(); // enhanced geometry
491     out.xml.endElement(); // custom shape
492 }
493 
494 
processDonut(const MSO::OfficeArtSpContainer & o,Writer & out)495 void ODrawToOdf::processDonut(const MSO::OfficeArtSpContainer& o, Writer& out) {
496     out.xml.startElement("draw:custom-shape");
497     processStyleAndText(o, out);
498 
499     out.xml.startElement("draw:enhanced-geometry");
500     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
501     processModifiers(o, out, QList<int>() << 5400);
502     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
503     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z U 10800 10800 ?f1 ?f1 0 360 N");
504     out.xml.addAttribute("draw:type", "ring");
505     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
506     setShapeMirroring(o, out);
507     equation(out,"f0","$0 ");
508     equation(out,"f1","10800-$0 ");
509     out.xml.startElement("draw:handle");
510     out.xml.addAttribute("draw:handle-position", "$0 10800");
511     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
512     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
513     out.xml.endElement(); // draw:handle
514     out.xml.endElement(); // enhanced geometry
515     out.xml.endElement(); // custom shape
516 }
517 
518 
processNoSmoking(const MSO::OfficeArtSpContainer & o,Writer & out)519 void ODrawToOdf::processNoSmoking(const MSO::OfficeArtSpContainer& o, Writer& out) {
520     out.xml.startElement("draw:custom-shape");
521     processStyleAndText(o, out);
522 
523     out.xml.startElement("draw:enhanced-geometry");
524     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
525     processModifiers(o, out, QList<int>() << 2700);
526     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
527     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z B ?f0 ?f0 ?f1 ?f1 ?f9 ?f10 ?f11 ?f12 Z B ?f0 ?f0 ?f1 ?f1 ?f13 ?f14 ?f15 ?f16 Z N");
528     out.xml.addAttribute("draw:type", "forbidden");
529     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
530     setShapeMirroring(o, out);
531     equation(out,"f0","$0 ");
532     equation(out,"f1","21600-$0 ");
533     equation(out,"f2","10800-$0 ");
534     equation(out,"f3","$0 /2");
535     equation(out,"f4","sqrt(?f2 *?f2 -?f3 *?f3 )");
536     equation(out,"f5","10800-?f3 ");
537     equation(out,"f6","10800+?f3 ");
538     equation(out,"f7","10800-?f4 ");
539     equation(out,"f8","10800+?f4 ");
540     equation(out,"f9","(cos(45*(pi/180))*(?f5 -10800)+sin(45*(pi/180))*(?f7 -10800))+10800");
541     equation(out,"f10","-(sin(45*(pi/180))*(?f5 -10800)-cos(45*(pi/180))*(?f7 -10800))+10800");
542     equation(out,"f11","(cos(45*(pi/180))*(?f5 -10800)+sin(45*(pi/180))*(?f8 -10800))+10800");
543     equation(out,"f12","-(sin(45*(pi/180))*(?f5 -10800)-cos(45*(pi/180))*(?f8 -10800))+10800");
544     equation(out,"f13","(cos(45*(pi/180))*(?f6 -10800)+sin(45*(pi/180))*(?f8 -10800))+10800");
545     equation(out,"f14","-(sin(45*(pi/180))*(?f6 -10800)-cos(45*(pi/180))*(?f8 -10800))+10800");
546     equation(out,"f15","(cos(45*(pi/180))*(?f6 -10800)+sin(45*(pi/180))*(?f7 -10800))+10800");
547     equation(out,"f16","-(sin(45*(pi/180))*(?f6 -10800)-cos(45*(pi/180))*(?f7 -10800))+10800");
548     out.xml.startElement("draw:handle");
549     out.xml.addAttribute("draw:handle-position", "$0 10800");
550     out.xml.addAttribute("draw:handle-range-x-maximum", "7200");
551     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
552     out.xml.endElement(); // draw:handle
553     out.xml.endElement(); // enhanced geometry
554     out.xml.endElement(); // custom shape
555 }
556 
557 
processBlockArc(const MSO::OfficeArtSpContainer & o,Writer & out)558 void ODrawToOdf::processBlockArc(const MSO::OfficeArtSpContainer& o, Writer& out) {
559     out.xml.startElement("draw:custom-shape");
560     processStyleAndText(o, out);
561 
562     out.xml.startElement("draw:enhanced-geometry");
563     processModifiers(o, out, QList<int>() << 180<< 5400);
564     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
565     out.xml.addAttribute("draw:enhanced-path", "B 0 0 21600 21600 ?f4 ?f3 ?f2 ?f3 W ?f5 ?f5 ?f6 ?f6 ?f2 ?f3 ?f4 ?f3 Z N");
566     out.xml.addAttribute("draw:type", "block-arc");
567     setShapeMirroring(o, out);
568     equation(out,"f0","10800*cos($0 *(pi/180))");
569     equation(out,"f1","10800*sin($0 *(pi/180))");
570     equation(out,"f2","?f0 +10800");
571     equation(out,"f3","?f1 +10800");
572     equation(out,"f4","21600-?f2 ");
573     equation(out,"f5","10800-$1 ");
574     equation(out,"f6","10800+$1 ");
575     equation(out,"f7","?f5 *cos($0 *(pi/180))");
576     equation(out,"f8","?f5 *sin($0 *(pi/180))");
577     out.xml.startElement("draw:handle");
578     out.xml.addAttribute("draw:handle-position", "$1 $0");
579     out.xml.addAttribute("draw:handle-radius-range-minimum", "0");
580     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
581     out.xml.addAttribute("draw:handle-polar", "10800 10800");
582     out.xml.endElement(); // draw:handle
583     out.xml.endElement(); // enhanced geometry
584     out.xml.endElement(); // custom shape
585 }
586 
587 
processHeart(const MSO::OfficeArtSpContainer & o,Writer & out)588 void ODrawToOdf::processHeart(const MSO::OfficeArtSpContainer& o, Writer& out) {
589     out.xml.startElement("draw:custom-shape");
590     processStyleAndText(o, out);
591 
592     out.xml.startElement("draw:enhanced-geometry");
593     out.xml.addAttribute("draw:glue-points", "10800 2180 3090 10800 10800 21600 18490 10800");
594     out.xml.addAttribute("svg:viewBox", "0 0 21615 21602");
595     out.xml.addAttribute("draw:enhanced-path", "M 10800 21599 L 321 6886 70 6036 C -9 5766 -1 5474 2 5192 6 4918 43 4641 101 4370 159 4103 245 3837 353 3582 460 3326 591 3077 741 2839 892 2598 1066 2369 1253 2155 1443 1938 1651 1732 1874 1543 2097 1351 2337 1174 2587 1014 2839 854 3106 708 3380 584 3656 459 3945 350 4237 264 4533 176 4838 108 5144 66 5454 22 5771 1 6086 3 6407 7 6731 35 7048 89 7374 144 7700 226 8015 335 8344 447 8667 590 8972 756 9297 932 9613 1135 9907 1363 10224 1609 10504 1900 10802 2169 L 11697 1363 C 11971 1116 12304 934 12630 756 12935 590 13528 450 13589 335 13901 226 14227 144 14556 89 14872 35 15195 7 15517 3 15830 0 16147 22 16458 66 16764 109 17068 177 17365 264 17658 349 17946 458 18222 584 18496 708 18762 854 19015 1014 19264 1172 19504 1349 19730 1543 19950 1731 20158 1937 20350 2155 20536 2369 20710 2598 20861 2839 21010 3074 21143 3323 21251 3582 21357 3835 21443 4099 21502 4370 21561 4639 21595 4916 21600 5192 21606 5474 21584 5760 21532 6036 21478 6326 21366 6603 21282 6887 L 10802 21602 Z N");
596     out.xml.addAttribute("draw:type", "heart");
597     out.xml.addAttribute("draw:text-areas", "5080 2540 16520 13550");
598     setShapeMirroring(o, out);
599     out.xml.endElement(); // enhanced geometry
600     out.xml.endElement(); // custom shape
601 }
602 
603 
processLightningBolt(const MSO::OfficeArtSpContainer & o,Writer & out)604 void ODrawToOdf::processLightningBolt(const MSO::OfficeArtSpContainer& o, Writer& out) {
605     out.xml.startElement("draw:custom-shape");
606     processStyleAndText(o, out);
607 
608     out.xml.startElement("draw:enhanced-geometry");
609     out.xml.addAttribute("draw:glue-points", "8458 0 0 3923 4993 9720 9987 14934 21600 21600 16558 12016 12831 6120");
610     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
611     out.xml.addAttribute("draw:enhanced-path", "M 8458 0 L 0 3923 7564 8416 4993 9720 12197 13904 9987 14934 21600 21600 14768 12911 16558 12016 11030 6840 12831 6120 8458 0 Z N");
612     out.xml.addAttribute("draw:type", "lightning");
613     out.xml.addAttribute("draw:text-areas", "8680 7410 13970 14190");
614     setShapeMirroring(o, out);
615     out.xml.endElement(); // enhanced geometry
616     out.xml.endElement(); // custom shape
617 }
618 
619 
processSun(const MSO::OfficeArtSpContainer & o,Writer & out)620 void ODrawToOdf::processSun(const MSO::OfficeArtSpContainer& o, Writer& out) {
621     out.xml.startElement("draw:custom-shape");
622     processStyleAndText(o, out);
623 
624     out.xml.startElement("draw:enhanced-geometry");
625     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
626     processModifiers(o, out, QList<int>() << 5400);
627     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
628     out.xml.addAttribute("draw:enhanced-path", "M 0 10800 L ?f4 ?f8 ?f4 ?f9 Z N M ?f10 ?f11 L ?f12 ?f13 ?f14 ?f15 Z N M ?f16 ?f17 L ?f18 ?f19 ?f20 ?f21 Z N M ?f22 ?f23 L ?f24 ?f25 ?f26 ?f27 Z N M ?f28 ?f29 L ?f30 ?f31 ?f32 ?f33 Z N M ?f34 ?f35 L ?f36 ?f37 ?f38 ?f39 Z N M ?f40 ?f41 L ?f42 ?f43 ?f44 ?f45 Z N M ?f46 ?f47 L ?f48 ?f49 ?f50 ?f51 Z N U 10800 10800 ?f54 ?f54 0 360 Z N");
629     out.xml.addAttribute("draw:type", "sun");
630     out.xml.addAttribute("draw:text-areas", "?f52 ?f52 ?f53 ?f53");
631     setShapeMirroring(o, out);
632     equation(out,"f0","$0 ");
633     equation(out,"f1","21600-$0 ");
634     equation(out,"f2","$0 -2700");
635     equation(out,"f3","?f2 *5080/7425");
636     equation(out,"f4","?f3 +2540");
637     equation(out,"f5","10125-$0 ");
638     equation(out,"f6","?f5 *2120/7425");
639     equation(out,"f7","?f6 +210");
640     equation(out,"f8","10800+?f7 ");
641     equation(out,"f9","10800-?f7 ");
642     equation(out,"f10","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
643     equation(out,"f11","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
644     equation(out,"f12","(cos(45*(pi/180))*(?f4 -10800)+sin(45*(pi/180))*(?f8 -10800))+10800");
645     equation(out,"f13","-(sin(45*(pi/180))*(?f4 -10800)-cos(45*(pi/180))*(?f8 -10800))+10800");
646     equation(out,"f14","(cos(45*(pi/180))*(?f4 -10800)+sin(45*(pi/180))*(?f9 -10800))+10800");
647     equation(out,"f15","-(sin(45*(pi/180))*(?f4 -10800)-cos(45*(pi/180))*(?f9 -10800))+10800");
648     equation(out,"f16","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
649     equation(out,"f17","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
650     equation(out,"f18","(cos(90*(pi/180))*(?f4 -10800)+sin(90*(pi/180))*(?f8 -10800))+10800");
651     equation(out,"f19","-(sin(90*(pi/180))*(?f4 -10800)-cos(90*(pi/180))*(?f8 -10800))+10800");
652     equation(out,"f20","(cos(90*(pi/180))*(?f4 -10800)+sin(90*(pi/180))*(?f9 -10800))+10800");
653     equation(out,"f21","-(sin(90*(pi/180))*(?f4 -10800)-cos(90*(pi/180))*(?f9 -10800))+10800");
654     equation(out,"f22","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
655     equation(out,"f23","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
656     equation(out,"f24","(cos(135*(pi/180))*(?f4 -10800)+sin(135*(pi/180))*(?f8 -10800))+10800");
657     equation(out,"f25","-(sin(135*(pi/180))*(?f4 -10800)-cos(135*(pi/180))*(?f8 -10800))+10800");
658     equation(out,"f26","(cos(135*(pi/180))*(?f4 -10800)+sin(135*(pi/180))*(?f9 -10800))+10800");
659     equation(out,"f27","-(sin(135*(pi/180))*(?f4 -10800)-cos(135*(pi/180))*(?f9 -10800))+10800");
660     equation(out,"f28","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
661     equation(out,"f29","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
662     equation(out,"f30","(cos(180*(pi/180))*(?f4 -10800)+sin(180*(pi/180))*(?f8 -10800))+10800");
663     equation(out,"f31","-(sin(180*(pi/180))*(?f4 -10800)-cos(180*(pi/180))*(?f8 -10800))+10800");
664     equation(out,"f32","(cos(180*(pi/180))*(?f4 -10800)+sin(180*(pi/180))*(?f9 -10800))+10800");
665     equation(out,"f33","-(sin(180*(pi/180))*(?f4 -10800)-cos(180*(pi/180))*(?f9 -10800))+10800");
666     equation(out,"f34","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
667     equation(out,"f35","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
668     equation(out,"f36","(cos(225*(pi/180))*(?f4 -10800)+sin(225*(pi/180))*(?f8 -10800))+10800");
669     equation(out,"f37","-(sin(225*(pi/180))*(?f4 -10800)-cos(225*(pi/180))*(?f8 -10800))+10800");
670     equation(out,"f38","(cos(225*(pi/180))*(?f4 -10800)+sin(225*(pi/180))*(?f9 -10800))+10800");
671     equation(out,"f39","-(sin(225*(pi/180))*(?f4 -10800)-cos(225*(pi/180))*(?f9 -10800))+10800");
672     equation(out,"f40","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
673     equation(out,"f41","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
674     equation(out,"f42","(cos(270*(pi/180))*(?f4 -10800)+sin(270*(pi/180))*(?f8 -10800))+10800");
675     equation(out,"f43","-(sin(270*(pi/180))*(?f4 -10800)-cos(270*(pi/180))*(?f8 -10800))+10800");
676     equation(out,"f44","(cos(270*(pi/180))*(?f4 -10800)+sin(270*(pi/180))*(?f9 -10800))+10800");
677     equation(out,"f45","-(sin(270*(pi/180))*(?f4 -10800)-cos(270*(pi/180))*(?f9 -10800))+10800");
678     equation(out,"f46","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
679     equation(out,"f47","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
680     equation(out,"f48","(cos(315*(pi/180))*(?f4 -10800)+sin(315*(pi/180))*(?f8 -10800))+10800");
681     equation(out,"f49","-(sin(315*(pi/180))*(?f4 -10800)-cos(315*(pi/180))*(?f8 -10800))+10800");
682     equation(out,"f50","(cos(315*(pi/180))*(?f4 -10800)+sin(315*(pi/180))*(?f9 -10800))+10800");
683     equation(out,"f51","-(sin(315*(pi/180))*(?f4 -10800)-cos(315*(pi/180))*(?f9 -10800))+10800");
684     equation(out,"f52","(cos(45*(pi/180))*($0 -10800)+sin(45*(pi/180))*(10800-10800))+10800");
685     equation(out,"f53","(cos(225*(pi/180))*($0 -10800)+sin(225*(pi/180))*(10800-10800))+10800");
686     equation(out,"f54","10800-$0 ");
687     out.xml.startElement("draw:handle");
688     out.xml.addAttribute("draw:handle-position", "$0 10800");
689     out.xml.addAttribute("draw:handle-range-x-maximum", "10125");
690     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
691     out.xml.endElement(); // draw:handle
692     out.xml.endElement(); // enhanced geometry
693     out.xml.endElement(); // custom shape
694 }
695 
696 
processMoon(const MSO::OfficeArtSpContainer & o,Writer & out)697 void ODrawToOdf::processMoon(const MSO::OfficeArtSpContainer& o, Writer& out) {
698     out.xml.startElement("draw:custom-shape");
699     processStyleAndText(o, out);
700 
701     out.xml.startElement("draw:enhanced-geometry");
702     out.xml.addAttribute("draw:glue-points", "21600 0 0 10800 21600 21600 ?f0 10800");
703     processModifiers(o, out, QList<int>() << 10800);
704     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
705     out.xml.addAttribute("draw:enhanced-path", "M 21600 0 C ?f3 ?f4 ?f0 5080 ?f0 10800 ?f0 16520 ?f3 ?f5 21600 21600 9740 21600 0 16730 0 10800 0 4870 9740 0 21600 0 Z N");
706     out.xml.addAttribute("draw:type", "moon");
707     out.xml.addAttribute("draw:text-areas", "?f9 ?f8 ?f0 ?f10");
708     setShapeMirroring(o, out);
709     equation(out,"f0","$0 ");
710     equation(out,"f1","21600-$0 ");
711     equation(out,"f2","?f1 /2");
712     equation(out,"f3","?f2 +$0 ");
713     equation(out,"f4","$0 *1794/10000");
714     equation(out,"f5","21600-?f4 ");
715     equation(out,"f6","$0 *400/18900");
716     equation(out,"f7","(cos(?f6 *(pi/180))*(0-10800)+sin(?f6 *(pi/180))*(10800-10800))+10800");
717     equation(out,"f8","-(sin(?f6 *(pi/180))*(0-10800)-cos(?f6 *(pi/180))*(10800-10800))+10800");
718     equation(out,"f9","?f7 +?f7 ");
719     equation(out,"f10","21600-?f8 ");
720     out.xml.startElement("draw:handle");
721     out.xml.addAttribute("draw:handle-position", "$0 10800");
722     out.xml.addAttribute("draw:handle-range-x-maximum", "18900");
723     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
724     out.xml.endElement(); // draw:handle
725     out.xml.endElement(); // enhanced geometry
726     out.xml.endElement(); // custom shape
727 }
728 
processNotchedCircularArrow(const MSO::OfficeArtSpContainer & o,Writer & out)729 void ODrawToOdf::processNotchedCircularArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
730     out.xml.startElement("draw:custom-shape");
731     processStyleAndText(o, out);
732 
733     out.xml.startElement("draw:enhanced-geometry");
734 
735     // custom way for processing modifieres as this shape
736     // return the AdjustValue, AdjustValue2 16-bit shifted
737     const AdjustValue* val1 = get<AdjustValue>(o);
738     const Adjust2Value* val2 = get<Adjust2Value>(o);
739     QString modifiers = QString::number(val1 ? val1->adjustvalue >> 16 : 270);
740     modifiers += QString(" %1").arg(val2 ? val2->adjust2value >> 16 : 0);
741     out.xml.addAttribute("draw:modifiers", modifiers);
742 
743     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
744     out.xml.addAttribute("draw:enhanced-path", "W 0 0 21600 21600 ?f3 ?f1 ?f7 ?f5 S L 10800 10800 Z N W 0 0 21600 21600 ?f3 ?f1 ?f7 ?f5 F N");
745     out.xml.addAttribute("draw:type", "mso-spt100");
746     out.xml.addAttribute("draw:text-areas", "10799 0 21599 10799");
747     setShapeMirroring(o, out);
748     equation(out,"f0","10800*sin($0 *(pi/180))");
749     equation(out,"f1","?f0 +10800");
750     equation(out,"f2","10800*cos($0 *(pi/180))");
751     equation(out,"f3","?f2 +10800");
752     equation(out,"f4","10800*sin($1 *(pi/180))");
753     equation(out,"f5","?f4 +10800");
754     equation(out,"f6","10800*cos($1 *(pi/180))");
755     equation(out,"f7","?f6 +10800");
756     out.xml.startElement("draw:handle");
757     out.xml.addAttribute("draw:handle-position", "10800 $0");
758     out.xml.addAttribute("draw:handle-radius-range-minimum", "10800");
759     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
760     out.xml.addAttribute("draw:handle-polar", "10800 10800");
761     out.xml.endElement(); // draw:handle
762     out.xml.startElement("draw:handle");
763     out.xml.addAttribute("draw:handle-position", "10800 $1");
764     out.xml.addAttribute("draw:handle-radius-range-minimum", "10800");
765     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
766     out.xml.addAttribute("draw:handle-polar", "10800 10800");
767     out.xml.endElement(); // draw:handle
768     out.xml.endElement(); // enhanced geometry
769     out.xml.endElement(); // custom shape
770 }
771 
processBracketPair(const MSO::OfficeArtSpContainer & o,Writer & out)772 void ODrawToOdf::processBracketPair(const MSO::OfficeArtSpContainer& o, Writer& out) {
773     out.xml.startElement("draw:custom-shape");
774     processStyleAndText(o, out);
775 
776     out.xml.startElement("draw:enhanced-geometry");
777     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
778     processModifiers(o, out, QList<int>() << 3700);
779     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
780     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
781     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 X 0 ?f1 L 0 ?f2 Y ?f0 21600 N M ?f3 21600 X 21600 ?f2 L 21600 ?f1 Y ?f3 0 N");
782     out.xml.addAttribute("draw:type", "bracket-pair");
783     out.xml.addAttribute("draw:text-areas", "?f8 ?f9 ?f10 ?f11");
784     setShapeMirroring(o, out);
785     equation(out,"f0","left+$0 ");
786     equation(out,"f1","top+$0 ");
787     equation(out,"f2","bottom-$0 ");
788     equation(out,"f3","right-$0 ");
789     equation(out,"f4","-(sin(45*(pi/180))*($0 -10800)-cos(45*(pi/180))*(0-10800))+10800");
790     equation(out,"f5","?f4 -10800");
791     equation(out,"f6","-$0 ");
792     equation(out,"f7","?f6 -?f5 ");
793     equation(out,"f8","left-?f7 ");
794     equation(out,"f9","top-?f7 ");
795     equation(out,"f10","right+?f7 ");
796     equation(out,"f11","bottom+?f7 ");
797     equation(out,"f12","left-?f5 ");
798     equation(out,"f13","top-?f5 ");
799     equation(out,"f14","right+?f5 ");
800     equation(out,"f15","bottom+?f5 ");
801     out.xml.startElement("draw:handle");
802     out.xml.addAttribute("draw:handle-position", "$0 top");
803     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
804     out.xml.addAttribute("draw:handle-switched", "true");
805     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
806     out.xml.endElement(); // draw:handle
807     out.xml.endElement(); // enhanced geometry
808     out.xml.endElement(); // custom shape
809 }
810 
811 
processBracePair(const MSO::OfficeArtSpContainer & o,Writer & out)812 void ODrawToOdf::processBracePair(const MSO::OfficeArtSpContainer& o, Writer& out) {
813     out.xml.startElement("draw:custom-shape");
814     processStyleAndText(o, out);
815 
816     out.xml.startElement("draw:enhanced-geometry");
817     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
818     processModifiers(o, out, QList<int>() << 1800);
819     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
820     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
821     out.xml.addAttribute("draw:enhanced-path", "M ?f4 0 X ?f0 ?f1 L ?f0 ?f6 Y 0 10800 X ?f0 ?f7 L ?f0 ?f2 Y ?f4 21600 N M ?f8 21600 X ?f3 ?f2 L ?f3 ?f7 Y 21600 10800 X ?f3 ?f6 L ?f3 ?f1 Y ?f8 0 N");
822     out.xml.addAttribute("draw:type", "brace-pair");
823     out.xml.addAttribute("draw:text-areas", "?f11 ?f12 ?f13 ?f14");
824     setShapeMirroring(o, out);
825     equation(out,"f0","left+$0 ");
826     equation(out,"f1","top+$0 ");
827     equation(out,"f2","bottom-$0 ");
828     equation(out,"f3","right-$0 ");
829     equation(out,"f4","?f0 *2");
830     equation(out,"f5","$0 *2");
831     equation(out,"f6","10800-$0 ");
832     equation(out,"f7","21600-?f6 ");
833     equation(out,"f8","right-?f5 ");
834     equation(out,"f9","$0 /3");
835     equation(out,"f10","?f9 +$0 ");
836     equation(out,"f11","left+?f10 ");
837     equation(out,"f12","top+?f9 ");
838     equation(out,"f13","right-?f10 ");
839     equation(out,"f14","bottom-?f9 ");
840     out.xml.startElement("draw:handle");
841     out.xml.addAttribute("draw:handle-position", "left $0");
842     out.xml.addAttribute("draw:handle-switched", "true");
843     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
844     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
845     out.xml.endElement(); // draw:handle
846     out.xml.endElement(); // enhanced geometry
847     out.xml.endElement(); // custom shape
848 }
849 
850 
processPlaque(const MSO::OfficeArtSpContainer & o,Writer & out)851 void ODrawToOdf::processPlaque(const MSO::OfficeArtSpContainer& o, Writer& out) {
852     out.xml.startElement("draw:custom-shape");
853     processStyleAndText(o, out);
854 
855     out.xml.startElement("draw:enhanced-geometry");
856     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
857     processModifiers(o, out, QList<int>() << 3600);
858     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
859     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
860     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
861     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 Y 0 ?f1 L 0 ?f2 X ?f0 21600 L ?f3 21600 Y 21600 ?f2 L 21600 ?f1 X ?f3 0 Z N");
862     out.xml.addAttribute("draw:type", "mso-spt21");
863     out.xml.addAttribute("draw:text-areas", "?f12 ?f13 ?f14 ?f15");
864     setShapeMirroring(o, out);
865     equation(out,"f0","left+$0 ");
866     equation(out,"f1","top+$0 ");
867     equation(out,"f2","bottom-$0 ");
868     equation(out,"f3","right-$0 ");
869     equation(out,"f4","-(sin(45*(pi/180))*($0 -10800)-cos(45*(pi/180))*(0-10800))+10800");
870     equation(out,"f5","?f4 -10800");
871     equation(out,"f6","-$0 ");
872     equation(out,"f7","?f6 -?f5 ");
873     equation(out,"f8","left-?f7 ");
874     equation(out,"f9","top-?f7 ");
875     equation(out,"f10","right+?f7 ");
876     equation(out,"f11","bottom+?f7 ");
877     equation(out,"f12","left-?f5 ");
878     equation(out,"f13","top-?f5 ");
879     equation(out,"f14","right+?f5 ");
880     equation(out,"f15","bottom+?f5 ");
881     out.xml.startElement("draw:handle");
882     out.xml.addAttribute("draw:handle-position", "$0 top");
883     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
884     out.xml.addAttribute("draw:handle-switched", "true");
885     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
886     out.xml.endElement(); // draw:handle
887     out.xml.endElement(); // enhanced geometry
888     out.xml.endElement(); // custom shape
889 }
890 
891 
processLeftBracket(const MSO::OfficeArtSpContainer & o,Writer & out)892 void ODrawToOdf::processLeftBracket(const MSO::OfficeArtSpContainer& o, Writer& out) {
893     out.xml.startElement("draw:custom-shape");
894     processStyleAndText(o, out);
895 
896     out.xml.startElement("draw:enhanced-geometry");
897     out.xml.addAttribute("draw:glue-points", "21600 0 0 10800 21600 21600");
898     processModifiers(o, out, QList<int>() << 1800);
899     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
900     out.xml.addAttribute("draw:enhanced-path", "M 21600 0 C 10800 0 0 ?f3 0 ?f1 L 0 ?f2 C 0 ?f4 10800 21600 21600 21600 N");
901     out.xml.addAttribute("draw:type", "left-bracket");
902     out.xml.addAttribute("draw:text-areas", "6350 ?f3 21600 ?f4");
903     setShapeMirroring(o, out);
904     equation(out,"f0","$0 /2");
905     equation(out,"f1","top+$0 ");
906     equation(out,"f2","bottom-$0 ");
907     equation(out,"f3","top+?f0 ");
908     equation(out,"f4","bottom-?f0 ");
909     out.xml.startElement("draw:handle");
910     out.xml.addAttribute("draw:handle-position", "left $0");
911     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
912     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
913     out.xml.endElement(); // draw:handle
914     out.xml.endElement(); // enhanced geometry
915     out.xml.endElement(); // custom shape
916 }
917 
918 
processRightBracket(const MSO::OfficeArtSpContainer & o,Writer & out)919 void ODrawToOdf::processRightBracket(const MSO::OfficeArtSpContainer& o, Writer& out) {
920     out.xml.startElement("draw:custom-shape");
921     processStyleAndText(o, out);
922 
923     out.xml.startElement("draw:enhanced-geometry");
924     out.xml.addAttribute("draw:glue-points", "0 0 0 21600 21600 10800");
925     processModifiers(o, out, QList<int>() << 1800);
926     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
927     out.xml.addAttribute("draw:enhanced-path", "M 0 0 C 10800 0 21600 ?f3 21600 ?f1 L 21600 ?f2 C 21600 ?f4 10800 21600 0 21600 N");
928     out.xml.addAttribute("draw:type", "right-bracket");
929     out.xml.addAttribute("draw:text-areas", "0 ?f3 15150 ?f4");
930     setShapeMirroring(o, out);
931     equation(out,"f0","$0 /2");
932     equation(out,"f1","top+$0 ");
933     equation(out,"f2","bottom-$0 ");
934     equation(out,"f3","top+?f0 ");
935     equation(out,"f4","bottom-?f0 ");
936     out.xml.startElement("draw:handle");
937     out.xml.addAttribute("draw:handle-position", "right $0");
938     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
939     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
940     out.xml.endElement(); // draw:handle
941     out.xml.endElement(); // enhanced geometry
942     out.xml.endElement(); // custom shape
943 }
944 
945 
processLeftBrace(const MSO::OfficeArtSpContainer & o,Writer & out)946 void ODrawToOdf::processLeftBrace(const MSO::OfficeArtSpContainer& o, Writer& out) {
947     out.xml.startElement("draw:custom-shape");
948     processStyleAndText(o, out);
949 
950     out.xml.startElement("draw:enhanced-geometry");
951     out.xml.addAttribute("draw:glue-points", "21600 0 0 10800 21600 21600");
952     processModifiers(o, out, QList<int>() << 1800<< 10800);
953     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
954     out.xml.addAttribute("draw:enhanced-path", "M 21600 0 C 16200 0 10800 ?f0 10800 ?f1 L 10800 ?f2 C 10800 ?f3 5400 ?f4 0 ?f4 5400 ?f4 10800 ?f5 10800 ?f6 L 10800 ?f7 C 10800 ?f8 16200 21600 21600 21600 N");
955     out.xml.addAttribute("draw:type", "left-brace");
956     out.xml.addAttribute("draw:text-areas", "13800 ?f9 21600 ?f10");
957     setShapeMirroring(o, out);
958     equation(out,"f0","$0 /2");
959     equation(out,"f1","$0 ");
960     equation(out,"f2","?f4 -$0 ");
961     equation(out,"f3","?f4 -?f0 ");
962     equation(out,"f4","$1 ");
963     equation(out,"f5","?f4 +?f0 ");
964     equation(out,"f6","?f4 +$0 ");
965     equation(out,"f7","21600-$0 ");
966     equation(out,"f8","21600-?f0 ");
967     equation(out,"f9","$0 *10000/31953");
968     equation(out,"f10","21600-?f9 ");
969     out.xml.startElement("draw:handle");
970     out.xml.addAttribute("draw:handle-position", "10800 $0");
971     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
972     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
973     out.xml.endElement(); // draw:handle
974     out.xml.startElement("draw:handle");
975     out.xml.addAttribute("draw:handle-position", "left $1");
976     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
977     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
978     out.xml.endElement(); // draw:handle
979     out.xml.endElement(); // enhanced geometry
980     out.xml.endElement(); // custom shape
981 }
982 
983 
processRightBrace(const MSO::OfficeArtSpContainer & o,Writer & out)984 void ODrawToOdf::processRightBrace(const MSO::OfficeArtSpContainer& o, Writer& out) {
985     out.xml.startElement("draw:custom-shape");
986     processStyleAndText(o, out);
987 
988     out.xml.startElement("draw:enhanced-geometry");
989     out.xml.addAttribute("draw:glue-points", "0 0 0 21600 21600 10800");
990     processModifiers(o, out, QList<int>() << 1800<< 10800);
991     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
992     out.xml.addAttribute("draw:enhanced-path", "M 0 0 C 5400 0 10800 ?f0 10800 ?f1 L 10800 ?f2 C 10800 ?f3 16200 ?f4 21600 ?f4 16200 ?f4 10800 ?f5 10800 ?f6 L 10800 ?f7 C 10800 ?f8 5400 21600 0 21600 N");
993     out.xml.addAttribute("draw:type", "right-brace");
994     out.xml.addAttribute("draw:text-areas", "0 ?f9 7800 ?f10");
995     setShapeMirroring(o, out);
996     equation(out,"f0","$0 /2");
997     equation(out,"f1","$0 ");
998     equation(out,"f2","?f4 -$0 ");
999     equation(out,"f3","?f4 -?f0 ");
1000     equation(out,"f4","$1 ");
1001     equation(out,"f5","?f4 +?f0 ");
1002     equation(out,"f6","?f4 +$0 ");
1003     equation(out,"f7","21600-$0 ");
1004     equation(out,"f8","21600-?f0 ");
1005     equation(out,"f9","$0 *10000/31953");
1006     equation(out,"f10","21600-?f9 ");
1007     out.xml.startElement("draw:handle");
1008     out.xml.addAttribute("draw:handle-position", "10800 $0");
1009     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1010     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
1011     out.xml.endElement(); // draw:handle
1012     out.xml.startElement("draw:handle");
1013     out.xml.addAttribute("draw:handle-position", "right $1");
1014     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1015     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1016     out.xml.endElement(); // draw:handle
1017     out.xml.endElement(); // enhanced geometry
1018     out.xml.endElement(); // custom shape
1019 }
1020 
1021 
processArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1022 void ODrawToOdf::processArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1023     out.xml.startElement("draw:custom-shape");
1024     processStyleAndText(o, out);
1025 
1026     out.xml.startElement("draw:enhanced-geometry");
1027     processModifiers(o, out, QList<int>() << 16200<< 5400);
1028     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1029     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f0 L ?f1 ?f0 ?f1 0 21600 10800 ?f1 21600 ?f1 ?f2 0 ?f2 Z N");
1030     out.xml.addAttribute("draw:type", "right-arrow");
1031     out.xml.addAttribute("draw:text-areas", "0 ?f0 ?f5 ?f2");
1032     setShapeMirroring(o, out);
1033     equation(out,"f0","$1 ");
1034     equation(out,"f1","$0 ");
1035     equation(out,"f2","21600-$1 ");
1036     equation(out,"f3","21600-?f1 ");
1037     equation(out,"f4","?f3 *?f0 /10800");
1038     equation(out,"f5","?f1 +?f4 ");
1039     equation(out,"f6","?f1 *?f0 /10800");
1040     equation(out,"f7","?f1 -?f6 ");
1041     out.xml.startElement("draw:handle");
1042     out.xml.addAttribute("draw:handle-position", "$0 $1");
1043     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1044     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1045     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1046     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1047     out.xml.endElement(); // draw:handle
1048     out.xml.endElement(); // enhanced geometry
1049     out.xml.endElement(); // custom shape
1050 }
1051 
1052 
processLeftArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1053 void ODrawToOdf::processLeftArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1054     out.xml.startElement("draw:custom-shape");
1055     processStyleAndText(o, out);
1056 
1057     out.xml.startElement("draw:enhanced-geometry");
1058     processModifiers(o, out, QList<int>() << 5400<< 5400);
1059     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1060     out.xml.addAttribute("draw:enhanced-path", "M 21600 ?f0 L ?f1 ?f0 ?f1 0 0 10800 ?f1 21600 ?f1 ?f2 21600 ?f2 Z N");
1061     out.xml.addAttribute("draw:type", "left-arrow");
1062     out.xml.addAttribute("draw:text-areas", "?f7 ?f0 21600 ?f2");
1063     setShapeMirroring(o, out);
1064     equation(out,"f0","$1 ");
1065     equation(out,"f1","$0 ");
1066     equation(out,"f2","21600-$1 ");
1067     equation(out,"f3","21600-?f1 ");
1068     equation(out,"f4","?f3 *?f0 /10800");
1069     equation(out,"f5","?f1 +?f4 ");
1070     equation(out,"f6","?f1 *?f0 /10800");
1071     equation(out,"f7","?f1 -?f6 ");
1072     out.xml.startElement("draw:handle");
1073     out.xml.addAttribute("draw:handle-position", "$0 $1");
1074     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1075     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1076     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1077     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1078     out.xml.endElement(); // draw:handle
1079     out.xml.endElement(); // enhanced geometry
1080     out.xml.endElement(); // custom shape
1081 }
1082 
1083 
processUpArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1084 void ODrawToOdf::processUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1085     out.xml.startElement("draw:custom-shape");
1086     processStyleAndText(o, out);
1087 
1088     out.xml.startElement("draw:enhanced-geometry");
1089     processModifiers(o, out, QList<int>() << 5400<< 5400);
1090     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1091     out.xml.addAttribute("draw:enhanced-path", "M ?f0 21600 L ?f0 ?f1 0 ?f1 10800 0 21600 ?f1 ?f2 ?f1 ?f2 21600 Z N");
1092     out.xml.addAttribute("draw:type", "up-arrow");
1093     out.xml.addAttribute("draw:text-areas", "?f0 ?f7 ?f2 21600");
1094     setShapeMirroring(o, out);
1095     equation(out,"f0","$1 ");
1096     equation(out,"f1","$0 ");
1097     equation(out,"f2","21600-$1 ");
1098     equation(out,"f3","21600-?f1 ");
1099     equation(out,"f4","?f3 *?f0 /10800");
1100     equation(out,"f5","?f1 +?f4 ");
1101     equation(out,"f6","?f1 *?f0 /10800");
1102     equation(out,"f7","?f1 -?f6 ");
1103     out.xml.startElement("draw:handle");
1104     out.xml.addAttribute("draw:handle-position", "$1 $0");
1105     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1106     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1107     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1108     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1109     out.xml.endElement(); // draw:handle
1110     out.xml.endElement(); // enhanced geometry
1111     out.xml.endElement(); // custom shape
1112 }
1113 
1114 
processDownArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1115 void ODrawToOdf::processDownArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1116     out.xml.startElement("draw:custom-shape");
1117     processStyleAndText(o, out);
1118 
1119     out.xml.startElement("draw:enhanced-geometry");
1120     processModifiers(o, out, QList<int>() << 16200<< 5400);
1121     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1122     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L ?f0 ?f1 0 ?f1 10800 21600 21600 ?f1 ?f2 ?f1 ?f2 0 Z N");
1123     out.xml.addAttribute("draw:type", "down-arrow");
1124     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f2 ?f5");
1125     setShapeMirroring(o, out);
1126     equation(out,"f0","$1 ");
1127     equation(out,"f1","$0 ");
1128     equation(out,"f2","21600-$1 ");
1129     equation(out,"f3","21600-?f1 ");
1130     equation(out,"f4","?f3 *?f0 /10800");
1131     equation(out,"f5","?f1 +?f4 ");
1132     equation(out,"f6","?f1 *?f0 /10800");
1133     equation(out,"f7","?f1 -?f6 ");
1134     out.xml.startElement("draw:handle");
1135     out.xml.addAttribute("draw:handle-position", "$1 $0");
1136     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1137     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1138     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1139     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1140     out.xml.endElement(); // draw:handle
1141     out.xml.endElement(); // enhanced geometry
1142     out.xml.endElement(); // custom shape
1143 }
1144 
1145 
processLeftRightArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1146 void ODrawToOdf::processLeftRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1147     out.xml.startElement("draw:custom-shape");
1148     processStyleAndText(o, out);
1149 
1150     out.xml.startElement("draw:enhanced-geometry");
1151     processModifiers(o, out, QList<int>() << 4300<< 5400);
1152     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1153     out.xml.addAttribute("draw:enhanced-path", "M 0 10800 L ?f0 0 ?f0 ?f1 ?f2 ?f1 ?f2 0 21600 10800 ?f2 21600 ?f2 ?f3 ?f0 ?f3 ?f0 21600 Z N");
1154     out.xml.addAttribute("draw:type", "left-right-arrow");
1155     out.xml.addAttribute("draw:text-areas", "?f5 ?f1 ?f6 ?f3");
1156     setShapeMirroring(o, out);
1157     equation(out,"f0","$0 ");
1158     equation(out,"f1","$1 ");
1159     equation(out,"f2","21600-$0 ");
1160     equation(out,"f3","21600-$1 ");
1161     equation(out,"f4","10800-$1 ");
1162     equation(out,"f5","$0 *?f4 /10800");
1163     equation(out,"f6","21600-?f5 ");
1164     equation(out,"f7","10800-$0 ");
1165     equation(out,"f8","$1 *?f7 /10800");
1166     equation(out,"f9","21600-?f8 ");
1167     out.xml.startElement("draw:handle");
1168     out.xml.addAttribute("draw:handle-position", "$0 $1");
1169     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1170     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1171     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1172     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1173     out.xml.endElement(); // draw:handle
1174     out.xml.endElement(); // enhanced geometry
1175     out.xml.endElement(); // custom shape
1176 }
1177 
1178 
processUpDownArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1179 void ODrawToOdf::processUpDownArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1180     out.xml.startElement("draw:custom-shape");
1181     processStyleAndText(o, out);
1182 
1183     out.xml.startElement("draw:enhanced-geometry");
1184     processModifiers(o, out, QList<int>() << 5400<< 4300);
1185     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1186     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f1 L 10800 0 21600 ?f1 ?f2 ?f1 ?f2 ?f3 21600 ?f3 10800 21600 0 ?f3 ?f0 ?f3 ?f0 ?f1 Z N");
1187     out.xml.addAttribute("draw:type", "up-down-arrow");
1188     out.xml.addAttribute("draw:text-areas", "?f0 ?f8 ?f2 ?f9");
1189     setShapeMirroring(o, out);
1190     equation(out,"f0","$0 ");
1191     equation(out,"f1","$1 ");
1192     equation(out,"f2","21600-$0 ");
1193     equation(out,"f3","21600-$1 ");
1194     equation(out,"f4","10800-$1 ");
1195     equation(out,"f5","$0 *?f4 /10800");
1196     equation(out,"f6","21600-?f5 ");
1197     equation(out,"f7","10800-$0 ");
1198     equation(out,"f8","$1 *?f7 /10800");
1199     equation(out,"f9","21600-?f8 ");
1200     out.xml.startElement("draw:handle");
1201     out.xml.addAttribute("draw:handle-position", "$0 $1");
1202     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1203     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1204     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1205     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1206     out.xml.endElement(); // draw:handle
1207     out.xml.endElement(); // enhanced geometry
1208     out.xml.endElement(); // custom shape
1209 }
1210 
1211 
processQuadArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1212 void ODrawToOdf::processQuadArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1213     out.xml.startElement("draw:custom-shape");
1214     processStyleAndText(o, out);
1215 
1216     out.xml.startElement("draw:enhanced-geometry");
1217     processModifiers(o, out, QList<int>() << 6500<< 8600<< 4300);
1218     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1219     out.xml.addAttribute("draw:enhanced-path", "M 0 10800 L ?f0 ?f1 ?f0 ?f2 ?f2 ?f2 ?f2 ?f0 ?f1 ?f0 10800 0 ?f3 ?f0 ?f4 ?f0 ?f4 ?f2 ?f5 ?f2 ?f5 ?f1 21600 10800 ?f5 ?f3 ?f5 ?f4 ?f4 ?f4 ?f4 ?f5 ?f3 ?f5 10800 21600 ?f1 ?f5 ?f2 ?f5 ?f2 ?f4 ?f0 ?f4 ?f0 ?f3 Z N");
1220     out.xml.addAttribute("draw:type", "quad-arrow");
1221     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1222     setShapeMirroring(o, out);
1223     equation(out,"f0","$2 ");
1224     equation(out,"f1","$0 ");
1225     equation(out,"f2","$1 ");
1226     equation(out,"f3","21600-$0 ");
1227     equation(out,"f4","21600-$1 ");
1228     equation(out,"f5","21600-$2 ");
1229     out.xml.startElement("draw:handle");
1230     out.xml.addAttribute("draw:handle-position", "$1 $2");
1231     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1232     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1233     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1234     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
1235     out.xml.endElement(); // draw:handle
1236     out.xml.startElement("draw:handle");
1237     out.xml.addAttribute("draw:handle-position", "$0 top");
1238     out.xml.addAttribute("draw:handle-range-x-maximum", "$1");
1239     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1240     out.xml.endElement(); // draw:handle
1241     out.xml.endElement(); // enhanced geometry
1242     out.xml.endElement(); // custom shape
1243 }
1244 
1245 
processLeftRightUpArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1246 void ODrawToOdf::processLeftRightUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1247     out.xml.startElement("draw:custom-shape");
1248     processStyleAndText(o, out);
1249 
1250     out.xml.startElement("draw:enhanced-geometry");
1251     processModifiers(o, out, QList<int>() << 6500<< 8600<< 6200);
1252     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1253     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 L ?f3 ?f2 ?f4 ?f2 ?f4 ?f1 ?f5 ?f1 ?f5 ?f0 21600 10800 ?f5 ?f3 ?f5 ?f4 ?f2 ?f4 ?f2 ?f3 0 10800 ?f2 ?f0 ?f2 ?f1 ?f1 ?f1 ?f1 ?f2 ?f0 ?f2 Z N");
1254     out.xml.addAttribute("draw:type", "mso-spt182");
1255     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1256     setShapeMirroring(o, out);
1257     equation(out,"f0","$0 ");
1258     equation(out,"f1","$1 ");
1259     equation(out,"f2","?f3 *$2 /21600");
1260     equation(out,"f3","21600-$0 ");
1261     equation(out,"f4","21600-$1 ");
1262     equation(out,"f5","21600-?f2 ");
1263     out.xml.startElement("draw:handle");
1264     out.xml.addAttribute("draw:handle-position", "$1 $2");
1265     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1266     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1267     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1268     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
1269     out.xml.endElement(); // draw:handle
1270     out.xml.startElement("draw:handle");
1271     out.xml.addAttribute("draw:handle-position", "$0 top");
1272     out.xml.addAttribute("draw:handle-range-x-maximum", "$1");
1273     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1274     out.xml.endElement(); // draw:handle
1275     out.xml.endElement(); // enhanced geometry
1276     out.xml.endElement(); // custom shape
1277 }
1278 
1279 
processBentArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1280 void ODrawToOdf::processBentArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1281     out.xml.startElement("draw:custom-shape");
1282     processStyleAndText(o, out);
1283 
1284     out.xml.startElement("draw:enhanced-geometry");
1285     processModifiers(o, out, QList<int>() << 15100<< 2900);
1286     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1287     out.xml.addAttribute("draw:enhanced-path", "M 0 21600 L 0 12160 Y 12427 ?f1 L ?f0 ?f1 ?f0 0 21600 6079 ?f0 12158 ?f0 ?f2 12427 ?f2 X ?f4 12160 L ?f4 21600 Z N");
1288     out.xml.addAttribute("draw:type", "mso-spt91");
1289     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1290     setShapeMirroring(o, out);
1291     equation(out,"f0","$0 ");
1292     equation(out,"f1","$1 ");
1293     equation(out,"f2","12158-$1 ");
1294     equation(out,"f3","6079-$1 ");
1295     equation(out,"f4","?f3 *2");
1296     out.xml.startElement("draw:handle");
1297     out.xml.addAttribute("draw:handle-position", "$0 $1");
1298     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1299     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1300     out.xml.addAttribute("draw:handle-range-y-maximum", "6079");
1301     out.xml.addAttribute("draw:handle-range-x-minimum", "12427");
1302     out.xml.endElement(); // draw:handle
1303     out.xml.endElement(); // enhanced geometry
1304     out.xml.endElement(); // custom shape
1305 }
1306 
1307 
processUturnArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1308 void ODrawToOdf::processUturnArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1309     out.xml.startElement("draw:custom-shape");
1310     processStyleAndText(o, out);
1311 
1312     out.xml.startElement("draw:enhanced-geometry");
1313     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1314     out.xml.addAttribute("draw:enhanced-path", "M 0 21600 L 0 8550 C 0 3540 4370 0 9270 0 13890 0 18570 3230 18600 8300 L 21600 8300 15680 14260 9700 8300 12500 8300 C 12320 6380 10870 5850 9320 5850 7770 5850 6040 6410 6110 8520 L 6110 21600 Z N");
1315     out.xml.addAttribute("draw:type", "mso-spt101");
1316     out.xml.addAttribute("draw:text-areas", "0 8280 6110 21600");
1317     setShapeMirroring(o, out);
1318     out.xml.endElement(); // enhanced geometry
1319     out.xml.endElement(); // custom shape
1320 }
1321 
1322 
processLeftUpArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1323 void ODrawToOdf::processLeftUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1324     out.xml.startElement("draw:custom-shape");
1325     processStyleAndText(o, out);
1326 
1327     out.xml.startElement("draw:enhanced-geometry");
1328     processModifiers(o, out, QList<int>() << 9340<< 18500<< 6200);
1329     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1330     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f5 L ?f2 ?f0 ?f2 ?f7 ?f7 ?f7 ?f7 ?f2 ?f0 ?f2 ?f5 0 21600 ?f2 ?f1 ?f2 ?f1 ?f1 ?f2 ?f1 ?f2 21600 Z N");
1331     out.xml.addAttribute("draw:type", "mso-spt89");
1332     out.xml.addAttribute("draw:text-areas", "?f2 ?f7 ?f1 ?f1 ?f7 ?f2 ?f1 ?f1");
1333     setShapeMirroring(o, out);
1334     equation(out,"f0","$0 ");
1335     equation(out,"f1","$1 ");
1336     equation(out,"f2","$2 ");
1337     equation(out,"f3","21600-$0 ");
1338     equation(out,"f4","?f3 /2");
1339     equation(out,"f5","$0 +?f4 ");
1340     equation(out,"f6","21600-$1 ");
1341     equation(out,"f7","$0 +?f6 ");
1342     equation(out,"f8","21600-?f6 ");
1343     equation(out,"f9","?f8 -?f6 ");
1344     out.xml.startElement("draw:handle");
1345     out.xml.addAttribute("draw:handle-position", "$1 $2");
1346     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1347     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1348     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1349     out.xml.addAttribute("draw:handle-range-x-minimum", "?f5");
1350     out.xml.endElement(); // draw:handle
1351     out.xml.startElement("draw:handle");
1352     out.xml.addAttribute("draw:handle-position", "$0 top");
1353     out.xml.addAttribute("draw:handle-range-x-maximum", "?f9");
1354     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1355     out.xml.endElement(); // draw:handle
1356     out.xml.endElement(); // enhanced geometry
1357     out.xml.endElement(); // custom shape
1358 }
1359 
1360 
processBentUpArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1361 void ODrawToOdf::processBentUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1362     out.xml.startElement("draw:custom-shape");
1363     processStyleAndText(o, out);
1364 
1365     out.xml.startElement("draw:enhanced-geometry");
1366     processModifiers(o, out, QList<int>() << 9340<< 18500<< 7200);
1367     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1368     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f8 L ?f7 ?f8 ?f7 ?f2 ?f0 ?f2 ?f5 0 21600 ?f2 ?f1 ?f2 ?f1 21600 0 21600 Z N");
1369     out.xml.addAttribute("draw:type", "mso-spt90");
1370     out.xml.addAttribute("draw:text-areas", "?f2 ?f7 ?f1 ?f1 ?f7 ?f2 ?f1 ?f1");
1371     setShapeMirroring(o, out);
1372     equation(out,"f0","$0 ");
1373     equation(out,"f1","$1 ");
1374     equation(out,"f2","$2 ");
1375     equation(out,"f3","21600-$0 ");
1376     equation(out,"f4","?f3 /2");
1377     equation(out,"f5","$0 +?f4 ");
1378     equation(out,"f6","21600-$1 ");
1379     equation(out,"f7","$0 +?f6 ");
1380     equation(out,"f8","?f7 +?f6 ");
1381     equation(out,"f9","21600-?f6 ");
1382     equation(out,"f10","?f9 -?f6 ");
1383     out.xml.startElement("draw:handle");
1384     out.xml.addAttribute("draw:handle-position", "$1 $2");
1385     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1386     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1387     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1388     out.xml.addAttribute("draw:handle-range-x-minimum", "?f5");
1389     out.xml.endElement(); // draw:handle
1390     out.xml.startElement("draw:handle");
1391     out.xml.addAttribute("draw:handle-position", "$0 top");
1392     out.xml.addAttribute("draw:handle-range-x-maximum", "?f10");
1393     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1394     out.xml.endElement(); // draw:handle
1395     out.xml.endElement(); // enhanced geometry
1396     out.xml.endElement(); // custom shape
1397 }
1398 
1399 
processCurvedRightArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1400 void ODrawToOdf::processCurvedRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1401     out.xml.startElement("draw:custom-shape");
1402     processStyleAndText(o, out);
1403 
1404     out.xml.startElement("draw:enhanced-geometry");
1405     out.xml.addAttribute("draw:glue-points", "0 ?f17 ?f2 ?f14 ?f22 ?f8 ?f2 ?f12 ?f22 ?f16");
1406     processModifiers(o, out, QList<int>() << 12960<< 19440<< 14400);
1407     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1408     out.xml.addAttribute("draw:enhanced-path", "B 0 0 ?f23 ?f3 ?f22 0 0 ?f4 A 0 ?f15 ?f23 ?f1 0 ?f7 ?f2 ?f13 L ?f2 ?f14 ?f22 ?f8 ?f2 ?f12 W 0 0 ?f23 ?f3 ?f2 ?f11 ?f26 ?f17 0 ?f15 ?f23 ?f1 ?f26 ?f17 ?f22 ?f15 Z N B 0 0 ?f23 ?f3 0 ?f4 ?f26 ?f17 F N");
1409     out.xml.addAttribute("draw:type", "mso-spt102");
1410     out.xml.addAttribute("draw:text-areas", "?f47 ?f45 ?f48 ?f46");
1411     setShapeMirroring(o, out);
1412     equation(out,"f0","$0 ");
1413     equation(out,"f1","$1 ");
1414     equation(out,"f2","$2 ");
1415     equation(out,"f3","$0 +21600-$1 ");
1416     equation(out,"f4","?f3 /2");
1417     equation(out,"f5","$1 +$1 -21600");
1418     equation(out,"f6","?f5 +$1 -$0 ");
1419     equation(out,"f7","?f6 /2");
1420     equation(out,"f8","(21600+$0 )/2");
1421     equation(out,"f9","21600-$2 ");
1422     equation(out,"f10","?f4 *sqrt(1-(?f9 /21600)*(?f9 /21600))");
1423     equation(out,"f11","?f4 +?f10 ");
1424     equation(out,"f12","?f11 +$1 -21600");
1425     equation(out,"f13","?f7 +?f10 ");
1426     equation(out,"f14","?f12 +21600-$0 ");
1427     equation(out,"f15","?f5 -$0 ");
1428     equation(out,"f16","?f15 /2");
1429     equation(out,"f17","(?f4 +?f7 )/2");
1430     equation(out,"f18","$0 +$1 -21600");
1431     equation(out,"f19","?f18 /2");
1432     equation(out,"f20","?f17 -?f19 ");
1433     equation(out,"f21","21600");
1434     equation(out,"f22","21600");
1435     equation(out,"f23","21600*2");
1436     equation(out,"f24","?f17 -?f4 ");
1437     equation(out,"f25","21600*sqrt(1-(?f24 /?f4 )*(?f24 /?f4 ))");
1438     equation(out,"f26","21600-?f25 ");
1439     equation(out,"f27","?f8 +128");
1440     equation(out,"f28","?f5 /2");
1441     equation(out,"f29","?f5 -128");
1442     equation(out,"f30","$0 +?f17 -?f12 ");
1443     equation(out,"f31","21600*sqrt(1-(?f20 /?f4 )*(?f20 /?f4 ))");
1444     equation(out,"f32","21600-$0 ");
1445     equation(out,"f33","?f32 /2");
1446     equation(out,"f34","21600*21600");
1447     equation(out,"f35","?f9 *?f9 ");
1448     equation(out,"f36","?f34 -?f35 ");
1449     equation(out,"f37","sqrt(?f36 )");
1450     equation(out,"f38","?f37 +21600");
1451     equation(out,"f39","21600*21600/?f38 ");
1452     equation(out,"f40","?f39 +64");
1453     equation(out,"f41","$0 /2");
1454     equation(out,"f42","21600*sqrt(1-(?f33 /?f41 )*(?f33 /?f41 ))");
1455     equation(out,"f43","21600-?f42 ");
1456     equation(out,"f44","?f43 +64");
1457     equation(out,"f45","?f4 /2");
1458     equation(out,"f46","$1 -?f45 ");
1459     equation(out,"f47","21600*2195/16384");
1460     equation(out,"f48","21600*14189/16384");
1461     out.xml.startElement("draw:handle");
1462     out.xml.addAttribute("draw:handle-position", "21600 $0");
1463     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1464     out.xml.addAttribute("draw:handle-range-y-minimum", "?f40");
1465     out.xml.addAttribute("draw:handle-range-y-maximum", "?f29");
1466     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1467     out.xml.endElement(); // draw:handle
1468     out.xml.startElement("draw:handle");
1469     out.xml.addAttribute("draw:handle-position", "21600 $1");
1470     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1471     out.xml.addAttribute("draw:handle-range-y-minimum", "?f27");
1472     out.xml.addAttribute("draw:handle-range-y-maximum", "?f21");
1473     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1474     out.xml.endElement(); // draw:handle
1475     out.xml.startElement("draw:handle");
1476     out.xml.addAttribute("draw:handle-position", "$2 21600");
1477     out.xml.addAttribute("draw:handle-range-x-maximum", "?f22");
1478     out.xml.addAttribute("draw:handle-range-y-minimum", "3375");
1479     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1480     out.xml.addAttribute("draw:handle-range-x-minimum", "?f44");
1481     out.xml.endElement(); // draw:handle
1482     out.xml.endElement(); // enhanced geometry
1483     out.xml.endElement(); // custom shape
1484 }
1485 
1486 
processCurvedLeftArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1487 void ODrawToOdf::processCurvedLeftArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1488     out.xml.startElement("draw:custom-shape");
1489     processStyleAndText(o, out);
1490 
1491     out.xml.startElement("draw:enhanced-geometry");
1492     out.xml.addAttribute("draw:glue-points", "0 ?f15 ?f2 ?f11 0 ?f8 ?f2 ?f13 ?f21 ?f16");
1493     processModifiers(o, out, QList<int>() << 12960<< 19440<< 7200);
1494     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1495     out.xml.addAttribute("draw:enhanced-path", "V ?f22 0 ?f21 ?f3 0 0 ?f21 ?f4 W ?f22 ?f14 ?f21 ?f1 ?f21 ?f7 ?f2 ?f12 L ?f2 ?f13 0 ?f8 ?f2 ?f11 A ?f22 0 ?f21 ?f3 ?f2 ?f10 ?f24 ?f16 ?f22 ?f14 ?f21 ?f1 ?f24 ?f16 0 ?f14 Z N B ?f22 ?f14 ?f21 ?f1 ?f21 ?f7 ?f24 ?f16 F N");
1496     out.xml.addAttribute("draw:type", "mso-spt103");
1497     out.xml.addAttribute("draw:text-areas", "?f43 ?f41 ?f44 ?f42");
1498     setShapeMirroring(o, out);
1499     equation(out,"f0","$0 ");
1500     equation(out,"f1","$1 ");
1501     equation(out,"f2","$2 ");
1502     equation(out,"f3","$0 +21600-$1 ");
1503     equation(out,"f4","?f3 /2");
1504     equation(out,"f5","$1 +$1 -21600");
1505     equation(out,"f6","?f5 +$1 -$0 ");
1506     equation(out,"f7","?f6 /2");
1507     equation(out,"f8","(21600+$0 )/2");
1508     equation(out,"f9","?f4 *sqrt(1-($2 /21600)*($2 /21600))");
1509     equation(out,"f10","?f4 +?f9 ");
1510     equation(out,"f11","?f10 +$1 -21600");
1511     equation(out,"f12","?f7 +?f9 ");
1512     equation(out,"f13","?f11 +21600-$0 ");
1513     equation(out,"f14","?f5 -$0 ");
1514     equation(out,"f15","?f14 /2");
1515     equation(out,"f16","(?f4 +?f7 )/2");
1516     equation(out,"f17","$0 +$1 -21600");
1517     equation(out,"f18","?f17 /2");
1518     equation(out,"f19","?f16 -?f18 ");
1519     equation(out,"f20","21600");
1520     equation(out,"f21","21600");
1521     equation(out,"f22","-21600");
1522     equation(out,"f23","?f16 -?f4 ");
1523     equation(out,"f24","21600*sqrt(1-(?f23 /?f4 )*(?f23 /?f4 ))");
1524     equation(out,"f25","?f8 +128");
1525     equation(out,"f26","?f5 /2");
1526     equation(out,"f27","?f5 -128");
1527     equation(out,"f28","$0 +?f16 -?f11 ");
1528     equation(out,"f29","21600-$0 ");
1529     equation(out,"f30","?f29 /2");
1530     equation(out,"f31","21600*21600");
1531     equation(out,"f32","$2 *$2 ");
1532     equation(out,"f33","?f31 -?f32 ");
1533     equation(out,"f34","sqrt(?f33 )");
1534     equation(out,"f35","?f34 +21600");
1535     equation(out,"f36","21600*21600/?f35 ");
1536     equation(out,"f37","?f36 +64");
1537     equation(out,"f38","$0 /2");
1538     equation(out,"f39","21600*sqrt(1-(?f30 /?f38 )*(?f30 /?f38 ))");
1539     equation(out,"f40","?f39 -64");
1540     equation(out,"f41","?f4 /2");
1541     equation(out,"f42","$1 -?f41 ");
1542     equation(out,"f43","21600*2195/16384");
1543     equation(out,"f44","21600*14189/16384");
1544     out.xml.startElement("draw:handle");
1545     out.xml.addAttribute("draw:handle-position", "left $0");
1546     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1547     out.xml.addAttribute("draw:handle-range-y-minimum", "?f37");
1548     out.xml.addAttribute("draw:handle-range-y-maximum", "?f27");
1549     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1550     out.xml.endElement(); // draw:handle
1551     out.xml.startElement("draw:handle");
1552     out.xml.addAttribute("draw:handle-position", "left $1");
1553     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1554     out.xml.addAttribute("draw:handle-range-y-minimum", "?f25");
1555     out.xml.addAttribute("draw:handle-range-y-maximum", "?f20");
1556     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1557     out.xml.endElement(); // draw:handle
1558     out.xml.startElement("draw:handle");
1559     out.xml.addAttribute("draw:handle-position", "$2 21600");
1560     out.xml.addAttribute("draw:handle-range-x-maximum", "?f40");
1561     out.xml.addAttribute("draw:handle-range-y-minimum", "3375");
1562     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1563     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1564     out.xml.endElement(); // draw:handle
1565     out.xml.endElement(); // enhanced geometry
1566     out.xml.endElement(); // custom shape
1567 }
1568 
1569 
processCurvedUpArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1570 void ODrawToOdf::processCurvedUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1571     out.xml.startElement("draw:custom-shape");
1572     processStyleAndText(o, out);
1573 
1574     out.xml.startElement("draw:enhanced-geometry");
1575     out.xml.addAttribute("draw:glue-points", "?f8 0 ?f11 ?f2 ?f15 0 ?f16 ?f21 ?f13 ?f2");
1576     processModifiers(o, out, QList<int>() << 12960<< 19440<< 7200);
1577     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1578     out.xml.addAttribute("draw:enhanced-path", "B 0 ?f22 ?f3 ?f21 0 0 ?f4 ?f21 A ?f14 ?f22 ?f1 ?f21 ?f7 ?f21 ?f12 ?f2 L ?f13 ?f2 ?f8 0 ?f11 ?f2 W 0 ?f22 ?f3 ?f21 ?f10 ?f2 ?f16 ?f24 ?f14 ?f22 ?f1 ?f21 ?f16 ?f24 ?f14 0 Z N V ?f14 ?f22 ?f1 ?f21 ?f7 ?f21 ?f16 ?f24 F N");
1579     out.xml.addAttribute("draw:type", "mso-spt104");
1580     out.xml.addAttribute("draw:text-areas", "?f41 ?f43 ?f42 ?f44");
1581     setShapeMirroring(o, out);
1582     equation(out,"f0","$0 ");
1583     equation(out,"f1","$1 ");
1584     equation(out,"f2","$2 ");
1585     equation(out,"f3","$0 +21600-$1 ");
1586     equation(out,"f4","?f3 /2");
1587     equation(out,"f5","$1 +$1 -21600");
1588     equation(out,"f6","?f5 +$1 -$0 ");
1589     equation(out,"f7","?f6 /2");
1590     equation(out,"f8","(21600+$0 )/2");
1591     equation(out,"f9","?f4 *sqrt(1-($2 /21600)*($2 /21600))");
1592     equation(out,"f10","?f4 +?f9 ");
1593     equation(out,"f11","?f10 +$1 -21600");
1594     equation(out,"f12","?f7 +?f9 ");
1595     equation(out,"f13","?f11 +21600-$0 ");
1596     equation(out,"f14","?f5 -$0 ");
1597     equation(out,"f15","?f14 /2");
1598     equation(out,"f16","(?f4 +?f7 )/2");
1599     equation(out,"f17","$0 +$1 -21600");
1600     equation(out,"f18","?f17 /2");
1601     equation(out,"f19","?f16 -?f18 ");
1602     equation(out,"f20","21600");
1603     equation(out,"f21","21600");
1604     equation(out,"f22","-21600");
1605     equation(out,"f23","?f16 -?f4 ");
1606     equation(out,"f24","21600*sqrt(1-(?f23 /?f4 )*(?f23 /?f4 ))");
1607     equation(out,"f25","?f8 +128");
1608     equation(out,"f26","?f5 /2");
1609     equation(out,"f27","?f5 -128");
1610     equation(out,"f28","$0 +?f16 -?f11 ");
1611     equation(out,"f29","21600-$0 ");
1612     equation(out,"f30","?f29 /2");
1613     equation(out,"f31","21600*21600");
1614     equation(out,"f32","$2 *$2 ");
1615     equation(out,"f33","?f31 -?f32 ");
1616     equation(out,"f34","sqrt(?f33 )");
1617     equation(out,"f35","?f34 +21600");
1618     equation(out,"f36","21600*21600/?f35 ");
1619     equation(out,"f37","?f36 +64");
1620     equation(out,"f38","$0 /2");
1621     equation(out,"f39","21600*sqrt(1-(?f30 /?f38 )*(?f30 /?f38 ))");
1622     equation(out,"f40","?f39 -64");
1623     equation(out,"f41","?f4 /2");
1624     equation(out,"f42","$1 -?f41 ");
1625     equation(out,"f43","21600*2195/16384");
1626     equation(out,"f44","21600*14189/16384");
1627     out.xml.startElement("draw:handle");
1628     out.xml.addAttribute("draw:handle-position", "$0 top");
1629     out.xml.addAttribute("draw:handle-range-x-maximum", "?f27");
1630     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1631     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1632     out.xml.addAttribute("draw:handle-range-x-minimum", "?f37");
1633     out.xml.endElement(); // draw:handle
1634     out.xml.startElement("draw:handle");
1635     out.xml.addAttribute("draw:handle-position", "$1 top");
1636     out.xml.addAttribute("draw:handle-range-x-maximum", "?f20");
1637     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1638     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1639     out.xml.addAttribute("draw:handle-range-x-minimum", "?f25");
1640     out.xml.endElement(); // draw:handle
1641     out.xml.startElement("draw:handle");
1642     out.xml.addAttribute("draw:handle-position", "21600 $2");
1643     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1644     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1645     out.xml.addAttribute("draw:handle-range-y-maximum", "?f40");
1646     out.xml.addAttribute("draw:handle-range-x-minimum", "3375");
1647     out.xml.endElement(); // draw:handle
1648     out.xml.endElement(); // enhanced geometry
1649     out.xml.endElement(); // custom shape
1650 }
1651 
1652 
processCurvedDownArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1653 void ODrawToOdf::processCurvedDownArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1654     out.xml.startElement("draw:custom-shape");
1655     processStyleAndText(o, out);
1656 
1657     out.xml.startElement("draw:enhanced-geometry");
1658     out.xml.addAttribute("draw:glue-points", "?f17 0 ?f16 21600 ?f12 ?f2 ?f8 21600 ?f14 ?f2");
1659     processModifiers(o, out, QList<int>() << 12960<< 19440<< 14400);
1660     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1661     out.xml.addAttribute("draw:enhanced-path", "W 0 0 ?f3 ?f21 0 21600 ?f4 0 0 0 ?f3 ?f21 ?f4 0 ?f17 ?f24 A ?f15 0 ?f1 ?f21 ?f17 ?f24 ?f15 21600 Z N V ?f15 0 ?f1 ?f21 ?f7 0 ?f13 ?f2 L ?f14 ?f2 ?f8 21600 ?f12 ?f2 A 0 0 ?f3 ?f21 ?f11 ?f2 ?f17 ?f24 0 0 ?f3 ?f21 ?f17 ?f24 ?f4 0 Z N");
1662     out.xml.addAttribute("draw:type", "mso-spt105");
1663     out.xml.addAttribute("draw:text-areas", "?f43 ?f45 ?f44 ?f46");
1664     setShapeMirroring(o, out);
1665     equation(out,"f0","$0 ");
1666     equation(out,"f1","$1 ");
1667     equation(out,"f2","$2 ");
1668     equation(out,"f3","$0 +21600-$1 ");
1669     equation(out,"f4","?f3 /2");
1670     equation(out,"f5","$1 +$1 -21600");
1671     equation(out,"f6","?f5 +$1 -$0 ");
1672     equation(out,"f7","?f6 /2");
1673     equation(out,"f8","(21600+$0 )/2");
1674     equation(out,"f9","21600-$2 ");
1675     equation(out,"f10","?f4 *sqrt(1-(?f9 /21600)*(?f9 /21600))");
1676     equation(out,"f11","?f4 +?f10 ");
1677     equation(out,"f12","?f11 +$1 -21600");
1678     equation(out,"f13","?f7 +?f10 ");
1679     equation(out,"f14","?f12 +21600-$0 ");
1680     equation(out,"f15","?f5 -$0 ");
1681     equation(out,"f16","?f15 /2");
1682     equation(out,"f17","(?f4 +?f7 )/2");
1683     equation(out,"f18","$0 +$1 -21600");
1684     equation(out,"f19","?f18 /2");
1685     equation(out,"f20","?f17 -?f19 ");
1686     equation(out,"f21","21600*2");
1687     equation(out,"f22","?f17 -?f4 ");
1688     equation(out,"f23","21600*sqrt(1-(?f22 /?f4 )*(?f22 /?f4 ))");
1689     equation(out,"f24","21600-?f23 ");
1690     equation(out,"f25","?f8 +128");
1691     equation(out,"f26","?f5 /2");
1692     equation(out,"f27","?f5 -128");
1693     equation(out,"f28","$0 +?f17 -?f12 ");
1694     equation(out,"f29","21600*sqrt(1-(?f20 /?f4 )*(?f20 /?f4 ))");
1695     equation(out,"f30","21600-$0 ");
1696     equation(out,"f31","?f30 /2");
1697     equation(out,"f32","21600*21600");
1698     equation(out,"f33","?f9 *?f9 ");
1699     equation(out,"f34","?f32 -?f33 ");
1700     equation(out,"f35","sqrt(?f34 )");
1701     equation(out,"f36","?f35 +21600");
1702     equation(out,"f37","21600*21600/?f36 ");
1703     equation(out,"f38","?f37 +64");
1704     equation(out,"f39","$0 /2");
1705     equation(out,"f40","21600*sqrt(1-(?f31 /?f39 )*(?f31 /?f39 ))");
1706     equation(out,"f41","21600-?f40 ");
1707     equation(out,"f42","?f41 +64");
1708     equation(out,"f43","?f4 /2");
1709     equation(out,"f44","$1 -?f43 ");
1710     equation(out,"f45","21600*2195/16384");
1711     equation(out,"f46","21600*14189/16384");
1712     out.xml.startElement("draw:handle");
1713     out.xml.addAttribute("draw:handle-position", "$0 21600");
1714     out.xml.addAttribute("draw:handle-range-x-maximum", "?f27");
1715     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1716     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1717     out.xml.addAttribute("draw:handle-range-x-minimum", "?f38");
1718     out.xml.endElement(); // draw:handle
1719     out.xml.startElement("draw:handle");
1720     out.xml.addAttribute("draw:handle-position", "$1 21600");
1721     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1722     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1723     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1724     out.xml.addAttribute("draw:handle-range-x-minimum", "?f25");
1725     out.xml.endElement(); // draw:handle
1726     out.xml.startElement("draw:handle");
1727     out.xml.addAttribute("draw:handle-position", "21600 $2");
1728     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1729     out.xml.addAttribute("draw:handle-range-y-minimum", "?f42");
1730     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1731     out.xml.addAttribute("draw:handle-range-x-minimum", "3375");
1732     out.xml.endElement(); // draw:handle
1733     out.xml.endElement(); // enhanced geometry
1734     out.xml.endElement(); // custom shape
1735 }
1736 
1737 
processStripedRightArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1738 void ODrawToOdf::processStripedRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1739     out.xml.startElement("draw:custom-shape");
1740     processStyleAndText(o, out);
1741 
1742     out.xml.startElement("draw:enhanced-geometry");
1743     processModifiers(o, out, QList<int>() << 16200<< 5400);
1744     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1745     out.xml.addAttribute("draw:enhanced-path", "M 3375 ?f0 L ?f1 ?f0 ?f1 0 21600 10800 ?f1 21600 ?f1 ?f2 3375 ?f2 Z N M 0 ?f0 L 675 ?f0 675 ?f2 0 ?f2 Z N M 1350 ?f0 L 2700 ?f0 2700 ?f2 1350 ?f2 Z N");
1746     out.xml.addAttribute("draw:type", "striped-right-arrow");
1747     out.xml.addAttribute("draw:text-areas", "3375 ?f0 ?f5 ?f2");
1748     setShapeMirroring(o, out);
1749     equation(out,"f0","$1 ");
1750     equation(out,"f1","$0 ");
1751     equation(out,"f2","21600-$1 ");
1752     equation(out,"f3","21600-?f1 ");
1753     equation(out,"f4","?f3 *?f0 /10800");
1754     equation(out,"f5","?f1 +?f4 ");
1755     out.xml.startElement("draw:handle");
1756     out.xml.addAttribute("draw:handle-position", "$0 $1");
1757     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1758     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1759     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1760     out.xml.addAttribute("draw:handle-range-x-minimum", "3375");
1761     out.xml.endElement(); // draw:handle
1762     out.xml.endElement(); // enhanced geometry
1763     out.xml.endElement(); // custom shape
1764 }
1765 
1766 
processNotchedRightArrow(const MSO::OfficeArtSpContainer & o,Writer & out)1767 void ODrawToOdf::processNotchedRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1768     out.xml.startElement("draw:custom-shape");
1769     processStyleAndText(o, out);
1770 
1771     out.xml.startElement("draw:enhanced-geometry");
1772     processModifiers(o, out, QList<int>() << 16200<< 5400);
1773     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1774     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f1 L ?f0 ?f1 ?f0 0 21600 10800 ?f0 21600 ?f0 ?f2 0 ?f2 ?f5 10800 0 ?f1 Z N");
1775     out.xml.addAttribute("draw:type", "notched-right-arrow");
1776     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1777     setShapeMirroring(o, out);
1778     equation(out,"f0","$0 ");
1779     equation(out,"f1","$1 ");
1780     equation(out,"f2","21600-$1 ");
1781     equation(out,"f3","21600-$0 ");
1782     equation(out,"f4","10800-$1 ");
1783     equation(out,"f5","?f3 *?f4 /10800");
1784     out.xml.startElement("draw:handle");
1785     out.xml.addAttribute("draw:handle-position", "$0 $1");
1786     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1787     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1788     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1789     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1790     out.xml.endElement(); // draw:handle
1791     out.xml.endElement(); // enhanced geometry
1792     out.xml.endElement(); // custom shape
1793 }
1794 
1795 
processHomePlate(const MSO::OfficeArtSpContainer & o,Writer & out)1796 void ODrawToOdf::processHomePlate(const MSO::OfficeArtSpContainer& o, Writer& out) {
1797     out.xml.startElement("draw:custom-shape");
1798     processStyleAndText(o, out);
1799 
1800     out.xml.startElement("draw:enhanced-geometry");
1801     processModifiers(o, out, QList<int>() << 16200);
1802     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1803     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L ?f0 0 21600 10800 ?f0 21600 0 21600 Z N");
1804     out.xml.addAttribute("draw:type", "pentagon-right");
1805     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1806     setShapeMirroring(o, out);
1807     equation(out,"f0","$0 ");
1808     out.xml.startElement("draw:handle");
1809     out.xml.addAttribute("draw:handle-position", "$0 top");
1810     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1811     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1812     out.xml.endElement(); // draw:handle
1813     out.xml.endElement(); // enhanced geometry
1814     out.xml.endElement(); // custom shape
1815 }
1816 
1817 
processChevron(const MSO::OfficeArtSpContainer & o,Writer & out)1818 void ODrawToOdf::processChevron(const MSO::OfficeArtSpContainer& o, Writer& out) {
1819     out.xml.startElement("draw:custom-shape");
1820     processStyleAndText(o, out);
1821 
1822     out.xml.startElement("draw:enhanced-geometry");
1823     processModifiers(o, out, QList<int>() << 16200);
1824     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1825     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L ?f0 0 21600 10800 ?f0 21600 0 21600 ?f1 10800 Z N");
1826     out.xml.addAttribute("draw:type", "chevron");
1827     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1828     setShapeMirroring(o, out);
1829     equation(out,"f0","$0 ");
1830     equation(out,"f1","21600-?f0 ");
1831     out.xml.startElement("draw:handle");
1832     out.xml.addAttribute("draw:handle-position", "$0 top");
1833     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1834     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1835     out.xml.endElement(); // draw:handle
1836     out.xml.endElement(); // enhanced geometry
1837     out.xml.endElement(); // custom shape
1838 }
1839 
1840 
processRightArrowCallout(const MSO::OfficeArtSpContainer & o,Writer & out)1841 void ODrawToOdf::processRightArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1842     out.xml.startElement("draw:custom-shape");
1843     processStyleAndText(o, out);
1844 
1845     out.xml.startElement("draw:enhanced-geometry");
1846     processModifiers(o, out, QList<int>() << 14400<< 5400<< 18000<< 8100);
1847     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1848     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L ?f0 0 ?f0 ?f3 ?f2 ?f3 ?f2 ?f1 21600 10800 ?f2 ?f4 ?f2 ?f5 ?f0 ?f5 ?f0 21600 0 21600 Z N");
1849     out.xml.addAttribute("draw:type", "right-arrow-callout");
1850     out.xml.addAttribute("draw:text-areas", "0 0 ?f0 21600");
1851     setShapeMirroring(o, out);
1852     equation(out,"f0","$0 ");
1853     equation(out,"f1","$1 ");
1854     equation(out,"f2","$2 ");
1855     equation(out,"f3","$3 ");
1856     equation(out,"f4","21600-?f1 ");
1857     equation(out,"f5","21600-?f3 ");
1858     out.xml.startElement("draw:handle");
1859     out.xml.addAttribute("draw:handle-position", "$0 top");
1860     out.xml.addAttribute("draw:handle-range-x-maximum", "$2");
1861     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1862     out.xml.endElement(); // draw:handle
1863     out.xml.startElement("draw:handle");
1864     out.xml.addAttribute("draw:handle-position", "$2 $3");
1865     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1866     out.xml.addAttribute("draw:handle-range-y-minimum", "$1");
1867     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1868     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
1869     out.xml.endElement(); // draw:handle
1870     out.xml.startElement("draw:handle");
1871     out.xml.addAttribute("draw:handle-position", "right $1");
1872     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1873     out.xml.addAttribute("draw:handle-range-y-maximum", "$3");
1874     out.xml.endElement(); // draw:handle
1875     out.xml.endElement(); // enhanced geometry
1876     out.xml.endElement(); // custom shape
1877 }
1878 
1879 
processLeftArrowCallout(const MSO::OfficeArtSpContainer & o,Writer & out)1880 void ODrawToOdf::processLeftArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1881     out.xml.startElement("draw:custom-shape");
1882     processStyleAndText(o, out);
1883 
1884     out.xml.startElement("draw:enhanced-geometry");
1885     processModifiers(o, out, QList<int>() << 7200<< 5400<< 3600<< 8100);
1886     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1887     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L 21600 0 21600 21600 ?f0 21600 ?f0 ?f5 ?f2 ?f5 ?f2 ?f4 0 10800 ?f2 ?f1 ?f2 ?f3 ?f0 ?f3 Z N");
1888     out.xml.addAttribute("draw:type", "left-arrow-callout");
1889     out.xml.addAttribute("draw:text-areas", "?f0 0 21600 21600");
1890     setShapeMirroring(o, out);
1891     equation(out,"f0","$0 ");
1892     equation(out,"f1","$1 ");
1893     equation(out,"f2","$2 ");
1894     equation(out,"f3","$3 ");
1895     equation(out,"f4","21600-?f1 ");
1896     equation(out,"f5","21600-?f3 ");
1897     out.xml.startElement("draw:handle");
1898     out.xml.addAttribute("draw:handle-position", "$0 top");
1899     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1900     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1901     out.xml.endElement(); // draw:handle
1902     out.xml.startElement("draw:handle");
1903     out.xml.addAttribute("draw:handle-position", "$2 $3");
1904     out.xml.addAttribute("draw:handle-range-x-maximum", "$0");
1905     out.xml.addAttribute("draw:handle-range-y-minimum", "$1");
1906     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1907     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1908     out.xml.endElement(); // draw:handle
1909     out.xml.startElement("draw:handle");
1910     out.xml.addAttribute("draw:handle-position", "left $1");
1911     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1912     out.xml.addAttribute("draw:handle-range-y-maximum", "$3");
1913     out.xml.endElement(); // draw:handle
1914     out.xml.endElement(); // enhanced geometry
1915     out.xml.endElement(); // custom shape
1916 }
1917 
1918 
processUpArrowCallout(const MSO::OfficeArtSpContainer & o,Writer & out)1919 void ODrawToOdf::processUpArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1920     out.xml.startElement("draw:custom-shape");
1921     processStyleAndText(o, out);
1922 
1923     out.xml.startElement("draw:enhanced-geometry");
1924     processModifiers(o, out, QList<int>() << 7200<< 5400<< 3600<< 8100);
1925     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1926     out.xml.addAttribute("draw:enhanced-path", "M 21600 ?f0 L 21600 21600 0 21600 0 ?f0 ?f3 ?f0 ?f3 ?f2 ?f1 ?f2 10800 0 ?f4 ?f2 ?f5 ?f2 ?f5 ?f0 Z N");
1927     out.xml.addAttribute("draw:type", "up-arrow-callout");
1928     out.xml.addAttribute("draw:text-areas", "0 ?f0 21600 21600");
1929     setShapeMirroring(o, out);
1930     equation(out,"f0","$0 ");
1931     equation(out,"f1","$1 ");
1932     equation(out,"f2","$2 ");
1933     equation(out,"f3","$3 ");
1934     equation(out,"f4","21600-?f1 ");
1935     equation(out,"f5","21600-?f3 ");
1936     out.xml.startElement("draw:handle");
1937     out.xml.addAttribute("draw:handle-position", "left $0");
1938     out.xml.addAttribute("draw:handle-range-y-minimum", "$2");
1939     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1940     out.xml.endElement(); // draw:handle
1941     out.xml.startElement("draw:handle");
1942     out.xml.addAttribute("draw:handle-position", "$3 $2");
1943     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1944     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1945     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1946     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
1947     out.xml.endElement(); // draw:handle
1948     out.xml.startElement("draw:handle");
1949     out.xml.addAttribute("draw:handle-position", "$1 top");
1950     out.xml.addAttribute("draw:handle-range-x-maximum", "$3");
1951     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1952     out.xml.endElement(); // draw:handle
1953     out.xml.endElement(); // enhanced geometry
1954     out.xml.endElement(); // custom shape
1955 }
1956 
1957 
processDownArrowCallout(const MSO::OfficeArtSpContainer & o,Writer & out)1958 void ODrawToOdf::processDownArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1959     out.xml.startElement("draw:custom-shape");
1960     processStyleAndText(o, out);
1961 
1962     out.xml.startElement("draw:enhanced-geometry");
1963     processModifiers(o, out, QList<int>() << 14400<< 5400<< 18000<< 8100);
1964     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1965     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f0 L 0 0 21600 0 21600 ?f0 ?f5 ?f0 ?f5 ?f2 ?f4 ?f2 10800 21600 ?f1 ?f2 ?f3 ?f2 ?f3 ?f0 Z N");
1966     out.xml.addAttribute("draw:type", "down-arrow-callout");
1967     out.xml.addAttribute("draw:text-areas", "0 0 21600 ?f0");
1968     setShapeMirroring(o, out);
1969     equation(out,"f0","$0 ");
1970     equation(out,"f1","$1 ");
1971     equation(out,"f2","$2 ");
1972     equation(out,"f3","$3 ");
1973     equation(out,"f4","21600-?f1 ");
1974     equation(out,"f5","21600-?f3 ");
1975     out.xml.startElement("draw:handle");
1976     out.xml.addAttribute("draw:handle-position", "left $0");
1977     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1978     out.xml.addAttribute("draw:handle-range-y-maximum", "$2");
1979     out.xml.endElement(); // draw:handle
1980     out.xml.startElement("draw:handle");
1981     out.xml.addAttribute("draw:handle-position", "$3 $2");
1982     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1983     out.xml.addAttribute("draw:handle-range-y-minimum", "$0");
1984     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1985     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
1986     out.xml.endElement(); // draw:handle
1987     out.xml.startElement("draw:handle");
1988     out.xml.addAttribute("draw:handle-position", "$1 bottom");
1989     out.xml.addAttribute("draw:handle-range-x-maximum", "$3");
1990     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1991     out.xml.endElement(); // draw:handle
1992     out.xml.endElement(); // enhanced geometry
1993     out.xml.endElement(); // custom shape
1994 }
1995 
1996 
processLeftRightArrowCallout(const MSO::OfficeArtSpContainer & o,Writer & out)1997 void ODrawToOdf::processLeftRightArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1998     out.xml.startElement("draw:custom-shape");
1999     processStyleAndText(o, out);
2000 
2001     out.xml.startElement("draw:enhanced-geometry");
2002     processModifiers(o, out, QList<int>() << 5400<< 5500<< 2700<< 8100);
2003     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2004     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L ?f4 0 ?f4 ?f3 ?f6 ?f3 ?f6 ?f1 21600 10800 ?f6 ?f5 ?f6 ?f7 ?f4 ?f7 ?f4 21600 ?f0 21600 ?f0 ?f7 ?f2 ?f7 ?f2 ?f5 0 10800 ?f2 ?f1 ?f2 ?f3 ?f0 ?f3 Z N");
2005     out.xml.addAttribute("draw:type", "left-right-arrow-callout");
2006     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f4 21600");
2007     setShapeMirroring(o, out);
2008     equation(out,"f0","$0 ");
2009     equation(out,"f1","$1 ");
2010     equation(out,"f2","$2 ");
2011     equation(out,"f3","$3 ");
2012     equation(out,"f4","21600-?f0 ");
2013     equation(out,"f5","21600-?f1 ");
2014     equation(out,"f6","21600-?f2 ");
2015     equation(out,"f7","21600-?f3 ");
2016     out.xml.startElement("draw:handle");
2017     out.xml.addAttribute("draw:handle-position", "$0 top");
2018     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2019     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
2020     out.xml.endElement(); // draw:handle
2021     out.xml.startElement("draw:handle");
2022     out.xml.addAttribute("draw:handle-position", "$2 $3");
2023     out.xml.addAttribute("draw:handle-range-x-maximum", "$0");
2024     out.xml.addAttribute("draw:handle-range-y-minimum", "$1");
2025     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
2026     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2027     out.xml.endElement(); // draw:handle
2028     out.xml.startElement("draw:handle");
2029     out.xml.addAttribute("draw:handle-position", "left $1");
2030     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
2031     out.xml.addAttribute("draw:handle-range-y-maximum", "$3");
2032     out.xml.endElement(); // draw:handle
2033     out.xml.endElement(); // enhanced geometry
2034     out.xml.endElement(); // custom shape
2035 }
2036 
2037 
processUpDownArrowCallout(const MSO::OfficeArtSpContainer & o,Writer & out)2038 void ODrawToOdf::processUpDownArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
2039     out.xml.startElement("draw:custom-shape");
2040     processStyleAndText(o, out);
2041 
2042     out.xml.startElement("draw:enhanced-geometry");
2043     processModifiers(o, out, QList<int>() << 5400<< 5500<< 2700<< 8100);
2044     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2045     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f0 L 0 ?f4 ?f3 ?f4 ?f3 ?f6 ?f1 ?f6 10800 21600 ?f5 ?f6 ?f7 ?f6 ?f7 ?f4 21600 ?f4 21600 ?f0 ?f7 ?f0 ?f7 ?f2 ?f5 ?f2 10800 0 ?f1 ?f2 ?f3 ?f2 ?f3 ?f0 Z N");
2046     out.xml.addAttribute("draw:type", "up-down-arrow-callout");
2047     out.xml.addAttribute("draw:text-areas", "0 ?f0 21600 ?f4");
2048     setShapeMirroring(o, out);
2049     equation(out,"f0","$0 ");
2050     equation(out,"f1","$1 ");
2051     equation(out,"f2","$2 ");
2052     equation(out,"f3","$3 ");
2053     equation(out,"f4","21600-?f0 ");
2054     equation(out,"f5","21600-?f1 ");
2055     equation(out,"f6","21600-?f2 ");
2056     equation(out,"f7","21600-?f3 ");
2057     out.xml.startElement("draw:handle");
2058     out.xml.addAttribute("draw:handle-position", "left $0");
2059     out.xml.addAttribute("draw:handle-range-y-minimum", "$2");
2060     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
2061     out.xml.endElement(); // draw:handle
2062     out.xml.startElement("draw:handle");
2063     out.xml.addAttribute("draw:handle-position", "$3 $2");
2064     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2065     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
2066     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
2067     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
2068     out.xml.endElement(); // draw:handle
2069     out.xml.startElement("draw:handle");
2070     out.xml.addAttribute("draw:handle-position", "$1 top");
2071     out.xml.addAttribute("draw:handle-range-x-maximum", "$3");
2072     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2073     out.xml.endElement(); // draw:handle
2074     out.xml.endElement(); // enhanced geometry
2075     out.xml.endElement(); // custom shape
2076 }
2077 
2078 
processQuadArrowCallout(const MSO::OfficeArtSpContainer & o,Writer & out)2079 void ODrawToOdf::processQuadArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
2080     out.xml.startElement("draw:custom-shape");
2081     processStyleAndText(o, out);
2082 
2083     out.xml.startElement("draw:enhanced-geometry");
2084     processModifiers(o, out, QList<int>() << 5400<< 8100<< 2700<< 9400);
2085     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2086     out.xml.addAttribute("draw:enhanced-path", "M ?f0 ?f0 L ?f3 ?f0 ?f3 ?f2 ?f1 ?f2 10800 0 ?f5 ?f2 ?f7 ?f2 ?f7 ?f0 ?f4 ?f0 ?f4 ?f3 ?f6 ?f3 ?f6 ?f1 21600 10800 ?f6 ?f5 ?f6 ?f7 ?f4 ?f7 ?f4 ?f4 ?f7 ?f4 ?f7 ?f6 ?f5 ?f6 10800 21600 ?f1 ?f6 ?f3 ?f6 ?f3 ?f4 ?f0 ?f4 ?f0 ?f7 ?f2 ?f7 ?f2 ?f5 0 10800 ?f2 ?f1 ?f2 ?f3 ?f0 ?f3 Z N");
2087     out.xml.addAttribute("draw:type", "quad-arrow-callout");
2088     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f4 ?f4");
2089     setShapeMirroring(o, out);
2090     equation(out,"f0","$0 ");
2091     equation(out,"f1","$1 ");
2092     equation(out,"f2","$2 ");
2093     equation(out,"f3","$3 ");
2094     equation(out,"f4","21600-?f0 ");
2095     equation(out,"f5","21600-?f1 ");
2096     equation(out,"f6","21600-?f2 ");
2097     equation(out,"f7","21600-?f3 ");
2098     out.xml.startElement("draw:handle");
2099     out.xml.addAttribute("draw:handle-position", "left $0");
2100     out.xml.addAttribute("draw:handle-range-y-minimum", "$2");
2101     out.xml.addAttribute("draw:handle-range-y-maximum", "$1");
2102     out.xml.endElement(); // draw:handle
2103     out.xml.startElement("draw:handle");
2104     out.xml.addAttribute("draw:handle-position", "$1 top");
2105     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2106     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
2107     out.xml.endElement(); // draw:handle
2108     out.xml.startElement("draw:handle");
2109     out.xml.addAttribute("draw:handle-position", "$3 $2");
2110     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2111     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
2112     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
2113     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
2114     out.xml.endElement(); // draw:handle
2115     out.xml.endElement(); // enhanced geometry
2116     out.xml.endElement(); // custom shape
2117 }
2118 
2119 
processCircularArrow(const MSO::OfficeArtSpContainer & o,Writer & out)2120 void ODrawToOdf::processCircularArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
2121     out.xml.startElement("draw:custom-shape");
2122     processStyleAndText(o, out);
2123 
2124     out.xml.startElement("draw:enhanced-geometry");
2125     // custom way for processing modifieres as this shape
2126     // return the AdjustValue, AdjustValue2 16-bit shifted
2127     // see bug 274684, file mp03_cycle_default.ppt
2128     const AdjustValue* val1 = get<AdjustValue>(o);
2129     const Adjust2Value* val2 = get<Adjust2Value>(o);
2130     const Adjust3Value* val3 = get<Adjust3Value>(o);
2131     QString modifiers = QString::number(val1 ? val1->adjustvalue >> 16 : 180) +
2132             QString(" %1").arg(val2 ? val2->adjust2value >> 16 : 0) +
2133             QString(" %1").arg(val3 ? val3->adjust3value : 5500);
2134     out.xml.addAttribute("draw:modifiers", modifiers);
2135 
2136     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2137     out.xml.addAttribute("draw:enhanced-path", "B ?f3 ?f3 ?f20 ?f20 ?f19 ?f18 ?f17 ?f16 W 0 0 21600 21600 ?f9 ?f8 ?f11 ?f10 L ?f24 ?f23 ?f47 ?f46 ?f29 ?f28 Z N");
2138     out.xml.addAttribute("draw:type", "circular-arrow");
2139     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
2140     setShapeMirroring(o, out);
2141     equation(out,"f0","$0 ");
2142     equation(out,"f1","$1 ");
2143     equation(out,"f2","$2 ");
2144     equation(out,"f3","10800+$2 ");
2145     equation(out,"f4","10800*sin($0 *(pi/180))");
2146     equation(out,"f5","10800*cos($0 *(pi/180))");
2147     equation(out,"f6","10800*sin($1 *(pi/180))");
2148     equation(out,"f7","10800*cos($1 *(pi/180))");
2149     equation(out,"f8","?f4 +10800");
2150     equation(out,"f9","?f5 +10800");
2151     equation(out,"f10","?f6 +10800");
2152     equation(out,"f11","?f7 +10800");
2153     equation(out,"f12","?f3 *sin($0 *(pi/180))");
2154     equation(out,"f13","?f3 *cos($0 *(pi/180))");
2155     equation(out,"f14","?f3 *sin($1 *(pi/180))");
2156     equation(out,"f15","?f3 *cos($1 *(pi/180))");
2157     equation(out,"f16","?f12 +10800");
2158     equation(out,"f17","?f13 +10800");
2159     equation(out,"f18","?f14 +10800");
2160     equation(out,"f19","?f15 +10800");
2161     equation(out,"f20","21600-?f3 ");
2162     equation(out,"f21","13500*sin($1 *(pi/180))");
2163     equation(out,"f22","13500*cos($1 *(pi/180))");
2164     equation(out,"f23","?f21 +10800");
2165     equation(out,"f24","?f22 +10800");
2166     equation(out,"f25","$2 -2700");
2167     equation(out,"f26","?f25 *sin($1 *(pi/180))");
2168     equation(out,"f27","?f25 *cos($1 *(pi/180))");
2169     equation(out,"f28","?f26 +10800");
2170     equation(out,"f29","?f27 +10800");
2171     equation(out,"f30","?f29 -?f24 ");
2172     equation(out,"f31","?f29 -?f24 ");
2173     equation(out,"f32","?f30 *?f31 ");
2174     equation(out,"f33","?f28 -?f23 ");
2175     equation(out,"f34","?f28 -?f23 ");
2176     equation(out,"f35","?f33 *?f34 ");
2177     equation(out,"f36","?f32 +?f35 ");
2178     equation(out,"f37","sqrt(?f36 )");
2179     equation(out,"f38","$1 +45");
2180     equation(out,"f39","?f37 *sin(?f38 *(pi/180))");
2181     equation(out,"f40","$1 +45");
2182     equation(out,"f41","?f37 *cos(?f40 *(pi/180))");
2183     equation(out,"f42","45");
2184     equation(out,"f43","?f39 *sin(?f42 *(pi/180))");
2185     equation(out,"f44","45");
2186     equation(out,"f45","?f41 *sin(?f44 *(pi/180))");
2187     equation(out,"f46","?f28 +?f43 ");
2188     equation(out,"f47","?f29 +?f45 ");
2189     out.xml.startElement("draw:handle");
2190     out.xml.addAttribute("draw:handle-position", "10800 $0");
2191     out.xml.addAttribute("draw:handle-radius-range-minimum", "10800");
2192     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
2193     out.xml.addAttribute("draw:handle-polar", "10800 10800");
2194     out.xml.endElement(); // draw:handle
2195     out.xml.startElement("draw:handle");
2196     out.xml.addAttribute("draw:handle-position", "$2 $1");
2197     out.xml.addAttribute("draw:handle-radius-range-minimum", "0");
2198     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
2199     out.xml.addAttribute("draw:handle-polar", "10800 10800");
2200     out.xml.endElement(); // draw:handle
2201     out.xml.endElement(); // enhanced geometry
2202     out.xml.endElement(); // custom shape
2203 }
2204 
2205 
processFlowChartProcess(const MSO::OfficeArtSpContainer & o,Writer & out)2206 void ODrawToOdf::processFlowChartProcess(const MSO::OfficeArtSpContainer& o, Writer& out) {
2207     out.xml.startElement("draw:custom-shape");
2208     processStyleAndText(o, out);
2209 
2210     out.xml.startElement("draw:enhanced-geometry");
2211     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2212     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2213     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N");
2214     out.xml.addAttribute("draw:type", "flowchart-process");
2215     setShapeMirroring(o, out);
2216     out.xml.endElement(); // enhanced geometry
2217     out.xml.endElement(); // custom shape
2218 }
2219 
2220 
processFlowChartAlternateProcess(const MSO::OfficeArtSpContainer & o,Writer & out)2221 void ODrawToOdf::processFlowChartAlternateProcess(const MSO::OfficeArtSpContainer& o, Writer& out) {
2222     out.xml.startElement("draw:custom-shape");
2223     processStyleAndText(o, out);
2224 
2225     out.xml.startElement("draw:enhanced-geometry");
2226     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2227     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2228     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f2 Y ?f0 0 L ?f1 0 X 21600 ?f2 L 21600 ?f3 Y ?f1 21600 L ?f0 21600 X 0 ?f3 Z N");
2229     out.xml.addAttribute("draw:type", "flowchart-alternate-process");
2230     out.xml.addAttribute("draw:text-areas", "?f4 ?f6 ?f5 ?f7");
2231     setShapeMirroring(o, out);
2232     equation(out,"f0","left+2540");
2233     equation(out,"f1","right-2540");
2234     equation(out,"f2","top+2540");
2235     equation(out,"f3","bottom-2540");
2236     equation(out,"f4","left+800");
2237     equation(out,"f5","right-800");
2238     equation(out,"f6","top+800");
2239     equation(out,"f7","bottom-800");
2240     out.xml.endElement(); // enhanced geometry
2241     out.xml.endElement(); // custom shape
2242 }
2243 
2244 
processFlowChartDecision(const MSO::OfficeArtSpContainer & o,Writer & out)2245 void ODrawToOdf::processFlowChartDecision(const MSO::OfficeArtSpContainer& o, Writer& out) {
2246     out.xml.startElement("draw:custom-shape");
2247     processStyleAndText(o, out);
2248 
2249     out.xml.startElement("draw:enhanced-geometry");
2250     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2251     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2252     out.xml.addAttribute("draw:enhanced-path", "M 0 10800 L 10800 0 21600 10800 10800 21600 0 10800 Z N");
2253     out.xml.addAttribute("draw:type", "flowchart-decision");
2254     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
2255     setShapeMirroring(o, out);
2256     out.xml.endElement(); // enhanced geometry
2257     out.xml.endElement(); // custom shape
2258 }
2259 
2260 
processFlowChartInputOutput(const MSO::OfficeArtSpContainer & o,Writer & out)2261 void ODrawToOdf::processFlowChartInputOutput(const MSO::OfficeArtSpContainer& o, Writer& out) {
2262     out.xml.startElement("draw:custom-shape");
2263     processStyleAndText(o, out);
2264 
2265     out.xml.startElement("draw:enhanced-geometry");
2266     out.xml.addAttribute("draw:glue-points", "12960 0 10800 0 2160 10800 8600 21600 10800 21600 19400 10800");
2267     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2268     out.xml.addAttribute("draw:enhanced-path", "M 4230 0 L 21600 0 17370 21600 0 21600 4230 0 Z N");
2269     out.xml.addAttribute("draw:type", "flowchart-data");
2270     out.xml.addAttribute("draw:text-areas", "4230 0 17370 21600");
2271     setShapeMirroring(o, out);
2272     out.xml.endElement(); // enhanced geometry
2273     out.xml.endElement(); // custom shape
2274 }
2275 
2276 
processFlowChartPredefinedProcess(const MSO::OfficeArtSpContainer & o,Writer & out)2277 void ODrawToOdf::processFlowChartPredefinedProcess(const MSO::OfficeArtSpContainer& o, Writer& out) {
2278     out.xml.startElement("draw:custom-shape");
2279     processStyleAndText(o, out);
2280 
2281     out.xml.startElement("draw:enhanced-geometry");
2282     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2283     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 2540 0 L 2540 21600 N M 19060 0 L 19060 21600 N");
2284     out.xml.addAttribute("draw:type", "flowchart-predefined-process");
2285     out.xml.addAttribute("draw:text-areas", "2540 0 19060 21600");
2286     setShapeMirroring(o, out);
2287     out.xml.endElement(); // enhanced geometry
2288     out.xml.endElement(); // custom shape
2289 }
2290 
2291 
processFlowChartInternalStorage(const MSO::OfficeArtSpContainer & o,Writer & out)2292 void ODrawToOdf::processFlowChartInternalStorage(const MSO::OfficeArtSpContainer& o, Writer& out) {
2293     out.xml.startElement("draw:custom-shape");
2294     processStyleAndText(o, out);
2295 
2296     out.xml.startElement("draw:enhanced-geometry");
2297     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2298     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 4230 0 L 4230 21600 N M 0 4230 L 21600 4230 N");
2299     out.xml.addAttribute("draw:type", "flowchart-internal-storage");
2300     out.xml.addAttribute("draw:text-areas", "4230 4230 21600 21600");
2301     setShapeMirroring(o, out);
2302     out.xml.endElement(); // enhanced geometry
2303     out.xml.endElement(); // custom shape
2304 }
2305 
2306 
processFlowChartDocument(const MSO::OfficeArtSpContainer & o,Writer & out)2307 void ODrawToOdf::processFlowChartDocument(const MSO::OfficeArtSpContainer& o, Writer& out) {
2308     out.xml.startElement("draw:custom-shape");
2309     processStyleAndText(o, out);
2310 
2311     out.xml.startElement("draw:enhanced-geometry");
2312     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 20320 21600 10800");
2313     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2314     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 17360 C 13050 17220 13340 20770 5620 21600 2860 21100 1850 20700 0 20120 Z N");
2315     out.xml.addAttribute("draw:type", "flowchart-document");
2316     out.xml.addAttribute("draw:text-areas", "0 0 21600 17360");
2317     setShapeMirroring(o, out);
2318     out.xml.endElement(); // enhanced geometry
2319     out.xml.endElement(); // custom shape
2320 }
2321 
2322 
processFlowChartMultidocument(const MSO::OfficeArtSpContainer & o,Writer & out)2323 void ODrawToOdf::processFlowChartMultidocument(const MSO::OfficeArtSpContainer& o, Writer& out) {
2324     out.xml.startElement("draw:custom-shape");
2325     processStyleAndText(o, out);
2326 
2327     out.xml.startElement("draw:enhanced-geometry");
2328     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 19890 21600 10800");
2329     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2330     out.xml.addAttribute("draw:enhanced-path", "M 0 3600 L 1500 3600 1500 1800 3000 1800 3000 0 21600 0 21600 14409 20100 14409 20100 16209 18600 16209 18600 18009 C 11610 17893 11472 20839 4833 21528 2450 21113 1591 20781 0 20300 Z N M 1500 3600 F L 18600 3600 18600 16209 N M 3000 1800 F L 20100 1800 20100 14409 N");
2331     out.xml.addAttribute("draw:type", "flowchart-multidocument");
2332     out.xml.addAttribute("draw:text-areas", "0 3600 18600 18009");
2333     setShapeMirroring(o, out);
2334     out.xml.endElement(); // enhanced geometry
2335     out.xml.endElement(); // custom shape
2336 }
2337 
2338 
processFlowChartTerminator(const MSO::OfficeArtSpContainer & o,Writer & out)2339 void ODrawToOdf::processFlowChartTerminator(const MSO::OfficeArtSpContainer& o, Writer& out) {
2340     out.xml.startElement("draw:custom-shape");
2341     processStyleAndText(o, out);
2342 
2343     out.xml.startElement("draw:enhanced-geometry");
2344     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2345     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2346     out.xml.addAttribute("draw:enhanced-path", "M 3470 21600 X 0 10800 3470 0 L 18130 0 X 21600 10800 18130 21600 Z N");
2347     out.xml.addAttribute("draw:type", "flowchart-terminator");
2348     out.xml.addAttribute("draw:text-areas", "1060 3180 20540 18420");
2349     setShapeMirroring(o, out);
2350     out.xml.endElement(); // enhanced geometry
2351     out.xml.endElement(); // custom shape
2352 }
2353 
2354 
processFlowChartPreparation(const MSO::OfficeArtSpContainer & o,Writer & out)2355 void ODrawToOdf::processFlowChartPreparation(const MSO::OfficeArtSpContainer& o, Writer& out) {
2356     out.xml.startElement("draw:custom-shape");
2357     processStyleAndText(o, out);
2358 
2359     out.xml.startElement("draw:enhanced-geometry");
2360     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2361     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2362     out.xml.addAttribute("draw:enhanced-path", "M 4350 0 L 17250 0 21600 10800 17250 21600 4350 21600 0 10800 4350 0 Z N");
2363     out.xml.addAttribute("draw:type", "flowchart-preparation");
2364     out.xml.addAttribute("draw:text-areas", "4350 0 17250 21600");
2365     setShapeMirroring(o, out);
2366     out.xml.endElement(); // enhanced geometry
2367     out.xml.endElement(); // custom shape
2368 }
2369 
2370 
processFlowChartManualInput(const MSO::OfficeArtSpContainer & o,Writer & out)2371 void ODrawToOdf::processFlowChartManualInput(const MSO::OfficeArtSpContainer& o, Writer& out) {
2372     out.xml.startElement("draw:custom-shape");
2373     processStyleAndText(o, out);
2374 
2375     out.xml.startElement("draw:enhanced-geometry");
2376     out.xml.addAttribute("draw:glue-points", "10800 2150 0 10800 10800 19890 21600 10800");
2377     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2378     out.xml.addAttribute("draw:enhanced-path", "M 0 4300 L 21600 0 21600 21600 0 21600 0 4300 Z N");
2379     out.xml.addAttribute("draw:type", "flowchart-manual-input");
2380     out.xml.addAttribute("draw:text-areas", "0 4300 21600 21600");
2381     setShapeMirroring(o, out);
2382     out.xml.endElement(); // enhanced geometry
2383     out.xml.endElement(); // custom shape
2384 }
2385 
2386 
processFlowChartManualOperation(const MSO::OfficeArtSpContainer & o,Writer & out)2387 void ODrawToOdf::processFlowChartManualOperation(const MSO::OfficeArtSpContainer& o, Writer& out) {
2388     out.xml.startElement("draw:custom-shape");
2389     processStyleAndText(o, out);
2390 
2391     out.xml.startElement("draw:enhanced-geometry");
2392     out.xml.addAttribute("draw:glue-points", "10800 0 2160 10800 10800 21600 19440 10800");
2393     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2394     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 17250 21600 4350 21600 0 0 Z N");
2395     out.xml.addAttribute("draw:type", "flowchart-manual-operation");
2396     out.xml.addAttribute("draw:text-areas", "4350 0 17250 21600");
2397     setShapeMirroring(o, out);
2398     out.xml.endElement(); // enhanced geometry
2399     out.xml.endElement(); // custom shape
2400 }
2401 
2402 
processFlowChartConnector(const MSO::OfficeArtSpContainer & o,Writer & out)2403 void ODrawToOdf::processFlowChartConnector(const MSO::OfficeArtSpContainer& o, Writer& out) {
2404     out.xml.startElement("draw:custom-shape");
2405     processStyleAndText(o, out);
2406 
2407     out.xml.startElement("draw:enhanced-geometry");
2408     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
2409     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2410     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z N");
2411     out.xml.addAttribute("draw:type", "flowchart-connector");
2412     out.xml.addAttribute("draw:text-areas", "3180 3180 18420 18420");
2413     setShapeMirroring(o, out);
2414     out.xml.endElement(); // enhanced geometry
2415     out.xml.endElement(); // custom shape
2416 }
2417 
2418 
processFlowChartOffpageConnector(const MSO::OfficeArtSpContainer & o,Writer & out)2419 void ODrawToOdf::processFlowChartOffpageConnector(const MSO::OfficeArtSpContainer& o, Writer& out) {
2420     out.xml.startElement("draw:custom-shape");
2421     processStyleAndText(o, out);
2422 
2423     out.xml.startElement("draw:enhanced-geometry");
2424     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2425     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2426     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 17150 10800 21600 0 17150 0 0 Z N");
2427     out.xml.addAttribute("draw:type", "flowchart-off-page-connector");
2428     out.xml.addAttribute("draw:text-areas", "0 0 21600 17150");
2429     setShapeMirroring(o, out);
2430     out.xml.endElement(); // enhanced geometry
2431     out.xml.endElement(); // custom shape
2432 }
2433 
2434 
processFlowChartPunchedCard(const MSO::OfficeArtSpContainer & o,Writer & out)2435 void ODrawToOdf::processFlowChartPunchedCard(const MSO::OfficeArtSpContainer& o, Writer& out) {
2436     out.xml.startElement("draw:custom-shape");
2437     processStyleAndText(o, out);
2438 
2439     out.xml.startElement("draw:enhanced-geometry");
2440     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2441     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2442     out.xml.addAttribute("draw:enhanced-path", "M 4300 0 L 21600 0 21600 21600 0 21600 0 4300 4300 0 Z N");
2443     out.xml.addAttribute("draw:type", "flowchart-card");
2444     out.xml.addAttribute("draw:text-areas", "0 4300 21600 21600");
2445     setShapeMirroring(o, out);
2446     out.xml.endElement(); // enhanced geometry
2447     out.xml.endElement(); // custom shape
2448 }
2449 
2450 
processFlowChartPunchedTape(const MSO::OfficeArtSpContainer & o,Writer & out)2451 void ODrawToOdf::processFlowChartPunchedTape(const MSO::OfficeArtSpContainer& o, Writer& out) {
2452     out.xml.startElement("draw:custom-shape");
2453     processStyleAndText(o, out);
2454 
2455     out.xml.startElement("draw:enhanced-geometry");
2456     out.xml.addAttribute("draw:glue-points", "10800 2020 0 10800 10800 19320 21600 10800");
2457     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2458     out.xml.addAttribute("draw:enhanced-path", "M 0 2230 C 820 3990 3410 3980 5370 4360 7430 4030 10110 3890 10690 2270 11440 300 14200 160 16150 0 18670 170 20690 390 21600 2230 L 21600 19420 C 20640 17510 18320 17490 16140 17240 14710 17370 11310 17510 10770 19430 10150 21150 7380 21290 5290 21600 3220 21250 610 21130 0 19420 Z N");
2459     out.xml.addAttribute("draw:type", "flowchart-punched-tape");
2460     out.xml.addAttribute("draw:text-areas", "0 4360 21600 17240");
2461     setShapeMirroring(o, out);
2462     out.xml.endElement(); // enhanced geometry
2463     out.xml.endElement(); // custom shape
2464 }
2465 
2466 
processFlowChartSummingJunction(const MSO::OfficeArtSpContainer & o,Writer & out)2467 void ODrawToOdf::processFlowChartSummingJunction(const MSO::OfficeArtSpContainer& o, Writer& out) {
2468     out.xml.startElement("draw:custom-shape");
2469     processStyleAndText(o, out);
2470 
2471     out.xml.startElement("draw:enhanced-geometry");
2472     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
2473     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2474     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z N M 3100 3100 L 18500 18500 N M 3100 18500 L 18500 3100 N");
2475     out.xml.addAttribute("draw:type", "flowchart-summing-junction");
2476     out.xml.addAttribute("draw:text-areas", "3100 3100 18500 18500");
2477     setShapeMirroring(o, out);
2478     out.xml.endElement(); // enhanced geometry
2479     out.xml.endElement(); // custom shape
2480 }
2481 
2482 
processFlowChartOr(const MSO::OfficeArtSpContainer & o,Writer & out)2483 void ODrawToOdf::processFlowChartOr(const MSO::OfficeArtSpContainer& o, Writer& out) {
2484     out.xml.startElement("draw:custom-shape");
2485     processStyleAndText(o, out);
2486 
2487     out.xml.startElement("draw:enhanced-geometry");
2488     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
2489     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2490     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z N M 0 10800 L 21600 10800 N M 10800 0 L 10800 21600 N");
2491     out.xml.addAttribute("draw:type", "flowchart-or");
2492     out.xml.addAttribute("draw:text-areas", "3100 3100 18500 18500");
2493     setShapeMirroring(o, out);
2494     out.xml.endElement(); // enhanced geometry
2495     out.xml.endElement(); // custom shape
2496 }
2497 
2498 
processFlowChartCollate(const MSO::OfficeArtSpContainer & o,Writer & out)2499 void ODrawToOdf::processFlowChartCollate(const MSO::OfficeArtSpContainer& o, Writer& out) {
2500     out.xml.startElement("draw:custom-shape");
2501     processStyleAndText(o, out);
2502 
2503     out.xml.startElement("draw:enhanced-geometry");
2504     out.xml.addAttribute("draw:glue-points", "10800 0 10800 10800 10800 21600");
2505     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2506     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 21600 0 21600 21600 0 0 0 Z N");
2507     out.xml.addAttribute("draw:type", "flowchart-collate");
2508     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
2509     setShapeMirroring(o, out);
2510     out.xml.endElement(); // enhanced geometry
2511     out.xml.endElement(); // custom shape
2512 }
2513 
2514 
processFlowChartSort(const MSO::OfficeArtSpContainer & o,Writer & out)2515 void ODrawToOdf::processFlowChartSort(const MSO::OfficeArtSpContainer& o, Writer& out) {
2516     out.xml.startElement("draw:custom-shape");
2517     processStyleAndText(o, out);
2518 
2519     out.xml.startElement("draw:enhanced-geometry");
2520     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2521     out.xml.addAttribute("draw:enhanced-path", "M 0 10800 L 10800 0 21600 10800 10800 21600 Z N M 0 10800 L 21600 10800 N");
2522     out.xml.addAttribute("draw:type", "flowchart-sort");
2523     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
2524     setShapeMirroring(o, out);
2525     out.xml.endElement(); // enhanced geometry
2526     out.xml.endElement(); // custom shape
2527 }
2528 
2529 
processFlowChartExtract(const MSO::OfficeArtSpContainer & o,Writer & out)2530 void ODrawToOdf::processFlowChartExtract(const MSO::OfficeArtSpContainer& o, Writer& out) {
2531     out.xml.startElement("draw:custom-shape");
2532     processStyleAndText(o, out);
2533 
2534     out.xml.startElement("draw:enhanced-geometry");
2535     out.xml.addAttribute("draw:glue-points", "10800 0 5400 10800 10800 21600 16200 10800");
2536     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2537     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 L 21600 21600 0 21600 10800 0 Z N");
2538     out.xml.addAttribute("draw:type", "flowchart-extract");
2539     out.xml.addAttribute("draw:text-areas", "5400 10800 16200 21600");
2540     setShapeMirroring(o, out);
2541     out.xml.endElement(); // enhanced geometry
2542     out.xml.endElement(); // custom shape
2543 }
2544 
2545 
processFlowChartMerge(const MSO::OfficeArtSpContainer & o,Writer & out)2546 void ODrawToOdf::processFlowChartMerge(const MSO::OfficeArtSpContainer& o, Writer& out) {
2547     out.xml.startElement("draw:custom-shape");
2548     processStyleAndText(o, out);
2549 
2550     out.xml.startElement("draw:enhanced-geometry");
2551     out.xml.addAttribute("draw:glue-points", "10800 0 5400 10800 10800 21600 16200 10800");
2552     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2553     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 10800 21600 0 0 Z N");
2554     out.xml.addAttribute("draw:type", "flowchart-merge");
2555     out.xml.addAttribute("draw:text-areas", "5400 0 16200 10800");
2556     setShapeMirroring(o, out);
2557     out.xml.endElement(); // enhanced geometry
2558     out.xml.endElement(); // custom shape
2559 }
2560 
2561 
processFlowChartOnlineStorage(const MSO::OfficeArtSpContainer & o,Writer & out)2562 void ODrawToOdf::processFlowChartOnlineStorage(const MSO::OfficeArtSpContainer& o, Writer& out) {
2563     out.xml.startElement("draw:custom-shape");
2564     processStyleAndText(o, out);
2565 
2566     out.xml.startElement("draw:enhanced-geometry");
2567     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 18000 10800");
2568     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2569     out.xml.addAttribute("draw:enhanced-path", "M 3600 21600 X 0 10800 3600 0 L 21600 0 X 18000 10800 21600 21600 Z N");
2570     out.xml.addAttribute("draw:type", "flowchart-stored-data");
2571     out.xml.addAttribute("draw:text-areas", "3600 0 18000 21600");
2572     setShapeMirroring(o, out);
2573     out.xml.endElement(); // enhanced geometry
2574     out.xml.endElement(); // custom shape
2575 }
2576 
2577 
processFlowChartDelay(const MSO::OfficeArtSpContainer & o,Writer & out)2578 void ODrawToOdf::processFlowChartDelay(const MSO::OfficeArtSpContainer& o, Writer& out) {
2579     out.xml.startElement("draw:custom-shape");
2580     processStyleAndText(o, out);
2581 
2582     out.xml.startElement("draw:enhanced-geometry");
2583     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2584     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2585     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 X 21600 10800 10800 21600 L 0 21600 0 0 Z N");
2586     out.xml.addAttribute("draw:type", "flowchart-delay");
2587     out.xml.addAttribute("draw:text-areas", "0 3100 18500 18500");
2588     setShapeMirroring(o, out);
2589     out.xml.endElement(); // enhanced geometry
2590     out.xml.endElement(); // custom shape
2591 }
2592 
2593 
processFlowChartMagneticTape(const MSO::OfficeArtSpContainer & o,Writer & out)2594 void ODrawToOdf::processFlowChartMagneticTape(const MSO::OfficeArtSpContainer& o, Writer& out) {
2595     out.xml.startElement("draw:custom-shape");
2596     processStyleAndText(o, out);
2597 
2598     out.xml.startElement("draw:enhanced-geometry");
2599     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2600     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2601     out.xml.addAttribute("draw:enhanced-path", "M 20980 18150 L 20980 21600 10670 21600 C 4770 21540 0 16720 0 10800 0 4840 4840 0 10800 0 16740 0 21600 4840 21600 10800 21600 13520 20550 16160 18670 18170 Z N");
2602     out.xml.addAttribute("draw:type", "flowchart-sequential-access");
2603     out.xml.addAttribute("draw:text-areas", "3100 3100 18500 18500");
2604     setShapeMirroring(o, out);
2605     out.xml.endElement(); // enhanced geometry
2606     out.xml.endElement(); // custom shape
2607 }
2608 
2609 
processFlowChartMagneticDisk(const MSO::OfficeArtSpContainer & o,Writer & out)2610 void ODrawToOdf::processFlowChartMagneticDisk(const MSO::OfficeArtSpContainer& o, Writer& out) {
2611     out.xml.startElement("draw:custom-shape");
2612     processStyleAndText(o, out);
2613 
2614     out.xml.startElement("draw:enhanced-geometry");
2615     out.xml.addAttribute("draw:glue-points", "10800 6800 10800 0 0 10800 10800 21600 21600 10800");
2616     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2617     out.xml.addAttribute("draw:enhanced-path", "M 0 3400 Y 10800 0 21600 3400 L 21600 18200 Y 10800 21600 0 18200 Z N M 0 3400 Y 10800 6800 21600 3400 N");
2618     out.xml.addAttribute("draw:type", "flowchart-magnetic-disk");
2619     out.xml.addAttribute("draw:text-areas", "0 6800 21600 18200");
2620     setShapeMirroring(o, out);
2621     out.xml.endElement(); // enhanced geometry
2622     out.xml.endElement(); // custom shape
2623 }
2624 
2625 
processFlowChartMagneticDrum(const MSO::OfficeArtSpContainer & o,Writer & out)2626 void ODrawToOdf::processFlowChartMagneticDrum(const MSO::OfficeArtSpContainer& o, Writer& out) {
2627     out.xml.startElement("draw:custom-shape");
2628     processStyleAndText(o, out);
2629 
2630     out.xml.startElement("draw:enhanced-geometry");
2631     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 14800 10800 21600 10800");
2632     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2633     out.xml.addAttribute("draw:enhanced-path", "M 18200 0 X 21600 10800 18200 21600 L 3400 21600 X 0 10800 3400 0 Z N M 18200 0 X 14800 10800 18200 21600 N");
2634     out.xml.addAttribute("draw:type", "flowchart-direct-access-storage");
2635     out.xml.addAttribute("draw:text-areas", "3400 0 14800 21600");
2636     setShapeMirroring(o, out);
2637     out.xml.endElement(); // enhanced geometry
2638     out.xml.endElement(); // custom shape
2639 }
2640 
2641 
processFlowChartDisplay(const MSO::OfficeArtSpContainer & o,Writer & out)2642 void ODrawToOdf::processFlowChartDisplay(const MSO::OfficeArtSpContainer& o, Writer& out) {
2643     out.xml.startElement("draw:custom-shape");
2644     processStyleAndText(o, out);
2645 
2646     out.xml.startElement("draw:enhanced-geometry");
2647     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2648     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2649     out.xml.addAttribute("draw:enhanced-path", "M 3600 0 L 17800 0 X 21600 10800 17800 21600 L 3600 21600 0 10800 Z N");
2650     out.xml.addAttribute("draw:type", "flowchart-display");
2651     out.xml.addAttribute("draw:text-areas", "3600 0 17800 21600");
2652     setShapeMirroring(o, out);
2653     out.xml.endElement(); // enhanced geometry
2654     out.xml.endElement(); // custom shape
2655 }
2656 
2657 
processIrregularSeal1(const MSO::OfficeArtSpContainer & o,Writer & out)2658 void ODrawToOdf::processIrregularSeal1(const MSO::OfficeArtSpContainer& o, Writer& out) {
2659     out.xml.startElement("draw:custom-shape");
2660     processStyleAndText(o, out);
2661 
2662     out.xml.startElement("draw:enhanced-geometry");
2663     out.xml.addAttribute("draw:glue-points", "14623 106 106 8718 8590 21600 21600 13393");
2664     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2665     out.xml.addAttribute("draw:enhanced-path", "M 10901 5905 L 8458 2399 7417 6425 476 2399 4732 7722 106 8718 3828 11880 243 14689 5772 14041 4868 17719 7819 15730 8590 21600 10637 15038 13349 19840 14125 14561 18248 18195 16938 13044 21600 13393 17710 10579 21198 8242 16806 7417 18482 4560 14257 5429 14623 106 10901 5905 Z N");
2666     out.xml.addAttribute("draw:type", "mso-spt71");
2667     out.xml.addAttribute("draw:text-areas", "4680 6570 16140 13280");
2668     setShapeMirroring(o, out);
2669     out.xml.endElement(); // enhanced geometry
2670     out.xml.endElement(); // custom shape
2671 }
2672 
2673 
processIrregularSeal2(const MSO::OfficeArtSpContainer & o,Writer & out)2674 void ODrawToOdf::processIrregularSeal2(const MSO::OfficeArtSpContainer& o, Writer& out) {
2675     out.xml.startElement("draw:custom-shape");
2676     processStyleAndText(o, out);
2677 
2678     out.xml.startElement("draw:enhanced-geometry");
2679     out.xml.addAttribute("draw:glue-points", "9722 1887 0 12875 11614 18844 21600 6646");
2680     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2681     out.xml.addAttribute("draw:enhanced-path", "M 11464 4340 L 9722 1887 8548 6383 4503 3626 5373 7816 1174 8270 3934 11592 0 12875 3329 15372 1283 17824 4804 18239 4918 21600 7525 18125 8698 19712 9871 17371 11614 18844 12178 15937 14943 17371 14640 14348 18878 15632 16382 12311 18270 11292 16986 9404 21600 6646 16382 6533 18005 3172 14524 5778 14789 0 11464 4340 Z N");
2682     out.xml.addAttribute("draw:type", "bang");
2683     out.xml.addAttribute("draw:text-areas", "5400 6570 14160 15290");
2684     setShapeMirroring(o, out);
2685     out.xml.endElement(); // enhanced geometry
2686     out.xml.endElement(); // custom shape
2687 }
2688 
2689 
processSeal4(const MSO::OfficeArtSpContainer & o,Writer & out)2690 void ODrawToOdf::processSeal4(const MSO::OfficeArtSpContainer& o, Writer& out) {
2691     out.xml.startElement("draw:custom-shape");
2692     processStyleAndText(o, out);
2693 
2694     out.xml.startElement("draw:enhanced-geometry");
2695     processModifiers(o, out, QList<int>() << 8100);
2696     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2697     out.xml.addAttribute("draw:enhanced-path", "M 0 10800 L ?f4 ?f4 10800 0 ?f3 ?f4 21600 10800 ?f3 ?f3 10800 21600 ?f4 ?f3 0 10800 Z N");
2698     out.xml.addAttribute("draw:type", "star4");
2699     out.xml.addAttribute("draw:text-areas", "?f4 ?f4 ?f3 ?f3");
2700     setShapeMirroring(o, out);
2701     equation(out,"f0","7600");
2702     equation(out,"f1","?f0 *$0 /10800");
2703     equation(out,"f2","?f0 -?f1 ");
2704     equation(out,"f3","10800+?f2 ");
2705     equation(out,"f4","10800-?f2 ");
2706     out.xml.startElement("draw:handle");
2707     out.xml.addAttribute("draw:handle-position", "$0 10800");
2708     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2709     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2710     out.xml.endElement(); // draw:handle
2711     out.xml.endElement(); // enhanced geometry
2712     out.xml.endElement(); // custom shape
2713 }
2714 
2715 
processStar(const MSO::OfficeArtSpContainer & o,Writer & out)2716 void ODrawToOdf::processStar(const MSO::OfficeArtSpContainer& o, Writer& out) {
2717     out.xml.startElement("draw:custom-shape");
2718     processStyleAndText(o, out);
2719 
2720     out.xml.startElement("draw:enhanced-geometry");
2721     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2722     out.xml.addAttribute("draw:enhanced-path", "M 10797 0 L 8278 8256 0 8256 6722 13405 4198 21600 10797 16580 17401 21600 14878 13405 21600 8256 13321 8256 10797 0 Z N");
2723     out.xml.addAttribute("draw:type", "star5");
2724     out.xml.addAttribute("draw:text-areas", "6722 8256 14878 15460");
2725     setShapeMirroring(o, out);
2726     out.xml.endElement(); // enhanced geometry
2727     out.xml.endElement(); // custom shape
2728 }
2729 
2730 
processSeal8(const MSO::OfficeArtSpContainer & o,Writer & out)2731 void ODrawToOdf::processSeal8(const MSO::OfficeArtSpContainer& o, Writer& out) {
2732     out.xml.startElement("draw:custom-shape");
2733     processStyleAndText(o, out);
2734 
2735     out.xml.startElement("draw:enhanced-geometry");
2736     processModifiers(o, out, QList<int>() << 2500);
2737     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2738     out.xml.addAttribute("draw:enhanced-path", "M ?f5 ?f6 L ?f11 ?f12 ?f17 ?f18 ?f23 ?f24 ?f29 ?f30 ?f35 ?f36 ?f41 ?f42 ?f47 ?f48 ?f53 ?f54 ?f59 ?f60 ?f65 ?f66 ?f71 ?f72 ?f77 ?f78 ?f83 ?f84 ?f89 ?f90 ?f95 ?f96 ?f5 ?f6 Z N");
2739     out.xml.addAttribute("draw:type", "star8");
2740     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
2741     setShapeMirroring(o, out);
2742     equation(out,"f0","$0 ");
2743     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
2744     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
2745     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
2746     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
2747     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
2748     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
2749     equation(out,"f7","(cos(7*(pi/180))*(?f0 -10800)+sin(7*(pi/180))*(10800-10800))+10800");
2750     equation(out,"f8","-(sin(7*(pi/180))*(?f0 -10800)-cos(7*(pi/180))*(10800-10800))+10800");
2751     equation(out,"f9","(cos(15*(pi/180))*(0-10800)+sin(15*(pi/180))*(10800-10800))+10800");
2752     equation(out,"f10","-(sin(15*(pi/180))*(0-10800)-cos(15*(pi/180))*(10800-10800))+10800");
2753     equation(out,"f11","(cos(22*(pi/180))*(?f0 -10800)+sin(22*(pi/180))*(10800-10800))+10800");
2754     equation(out,"f12","-(sin(22*(pi/180))*(?f0 -10800)-cos(22*(pi/180))*(10800-10800))+10800");
2755     equation(out,"f13","(cos(30*(pi/180))*(0-10800)+sin(30*(pi/180))*(10800-10800))+10800");
2756     equation(out,"f14","-(sin(30*(pi/180))*(0-10800)-cos(30*(pi/180))*(10800-10800))+10800");
2757     equation(out,"f15","(cos(37*(pi/180))*(?f0 -10800)+sin(37*(pi/180))*(10800-10800))+10800");
2758     equation(out,"f16","-(sin(37*(pi/180))*(?f0 -10800)-cos(37*(pi/180))*(10800-10800))+10800");
2759     equation(out,"f17","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
2760     equation(out,"f18","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
2761     equation(out,"f19","(cos(52*(pi/180))*(?f0 -10800)+sin(52*(pi/180))*(10800-10800))+10800");
2762     equation(out,"f20","-(sin(52*(pi/180))*(?f0 -10800)-cos(52*(pi/180))*(10800-10800))+10800");
2763     equation(out,"f21","(cos(60*(pi/180))*(0-10800)+sin(60*(pi/180))*(10800-10800))+10800");
2764     equation(out,"f22","-(sin(60*(pi/180))*(0-10800)-cos(60*(pi/180))*(10800-10800))+10800");
2765     equation(out,"f23","(cos(67*(pi/180))*(?f0 -10800)+sin(67*(pi/180))*(10800-10800))+10800");
2766     equation(out,"f24","-(sin(67*(pi/180))*(?f0 -10800)-cos(67*(pi/180))*(10800-10800))+10800");
2767     equation(out,"f25","(cos(75*(pi/180))*(0-10800)+sin(75*(pi/180))*(10800-10800))+10800");
2768     equation(out,"f26","-(sin(75*(pi/180))*(0-10800)-cos(75*(pi/180))*(10800-10800))+10800");
2769     equation(out,"f27","(cos(82*(pi/180))*(?f0 -10800)+sin(82*(pi/180))*(10800-10800))+10800");
2770     equation(out,"f28","-(sin(82*(pi/180))*(?f0 -10800)-cos(82*(pi/180))*(10800-10800))+10800");
2771     equation(out,"f29","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
2772     equation(out,"f30","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
2773     equation(out,"f31","(cos(97*(pi/180))*(?f0 -10800)+sin(97*(pi/180))*(10800-10800))+10800");
2774     equation(out,"f32","-(sin(97*(pi/180))*(?f0 -10800)-cos(97*(pi/180))*(10800-10800))+10800");
2775     equation(out,"f33","(cos(105*(pi/180))*(0-10800)+sin(105*(pi/180))*(10800-10800))+10800");
2776     equation(out,"f34","-(sin(105*(pi/180))*(0-10800)-cos(105*(pi/180))*(10800-10800))+10800");
2777     equation(out,"f35","(cos(112*(pi/180))*(?f0 -10800)+sin(112*(pi/180))*(10800-10800))+10800");
2778     equation(out,"f36","-(sin(112*(pi/180))*(?f0 -10800)-cos(112*(pi/180))*(10800-10800))+10800");
2779     equation(out,"f37","(cos(120*(pi/180))*(0-10800)+sin(120*(pi/180))*(10800-10800))+10800");
2780     equation(out,"f38","-(sin(120*(pi/180))*(0-10800)-cos(120*(pi/180))*(10800-10800))+10800");
2781     equation(out,"f39","(cos(127*(pi/180))*(?f0 -10800)+sin(127*(pi/180))*(10800-10800))+10800");
2782     equation(out,"f40","-(sin(127*(pi/180))*(?f0 -10800)-cos(127*(pi/180))*(10800-10800))+10800");
2783     equation(out,"f41","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
2784     equation(out,"f42","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
2785     equation(out,"f43","(cos(142*(pi/180))*(?f0 -10800)+sin(142*(pi/180))*(10800-10800))+10800");
2786     equation(out,"f44","-(sin(142*(pi/180))*(?f0 -10800)-cos(142*(pi/180))*(10800-10800))+10800");
2787     equation(out,"f45","(cos(150*(pi/180))*(0-10800)+sin(150*(pi/180))*(10800-10800))+10800");
2788     equation(out,"f46","-(sin(150*(pi/180))*(0-10800)-cos(150*(pi/180))*(10800-10800))+10800");
2789     equation(out,"f47","(cos(157*(pi/180))*(?f0 -10800)+sin(157*(pi/180))*(10800-10800))+10800");
2790     equation(out,"f48","-(sin(157*(pi/180))*(?f0 -10800)-cos(157*(pi/180))*(10800-10800))+10800");
2791     equation(out,"f49","(cos(165*(pi/180))*(0-10800)+sin(165*(pi/180))*(10800-10800))+10800");
2792     equation(out,"f50","-(sin(165*(pi/180))*(0-10800)-cos(165*(pi/180))*(10800-10800))+10800");
2793     equation(out,"f51","(cos(172*(pi/180))*(?f0 -10800)+sin(172*(pi/180))*(10800-10800))+10800");
2794     equation(out,"f52","-(sin(172*(pi/180))*(?f0 -10800)-cos(172*(pi/180))*(10800-10800))+10800");
2795     equation(out,"f53","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
2796     equation(out,"f54","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
2797     equation(out,"f55","(cos(187*(pi/180))*(?f0 -10800)+sin(187*(pi/180))*(10800-10800))+10800");
2798     equation(out,"f56","-(sin(187*(pi/180))*(?f0 -10800)-cos(187*(pi/180))*(10800-10800))+10800");
2799     equation(out,"f57","(cos(195*(pi/180))*(0-10800)+sin(195*(pi/180))*(10800-10800))+10800");
2800     equation(out,"f58","-(sin(195*(pi/180))*(0-10800)-cos(195*(pi/180))*(10800-10800))+10800");
2801     equation(out,"f59","(cos(202*(pi/180))*(?f0 -10800)+sin(202*(pi/180))*(10800-10800))+10800");
2802     equation(out,"f60","-(sin(202*(pi/180))*(?f0 -10800)-cos(202*(pi/180))*(10800-10800))+10800");
2803     equation(out,"f61","(cos(210*(pi/180))*(0-10800)+sin(210*(pi/180))*(10800-10800))+10800");
2804     equation(out,"f62","-(sin(210*(pi/180))*(0-10800)-cos(210*(pi/180))*(10800-10800))+10800");
2805     equation(out,"f63","(cos(217*(pi/180))*(?f0 -10800)+sin(217*(pi/180))*(10800-10800))+10800");
2806     equation(out,"f64","-(sin(217*(pi/180))*(?f0 -10800)-cos(217*(pi/180))*(10800-10800))+10800");
2807     equation(out,"f65","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
2808     equation(out,"f66","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
2809     equation(out,"f67","(cos(232*(pi/180))*(?f0 -10800)+sin(232*(pi/180))*(10800-10800))+10800");
2810     equation(out,"f68","-(sin(232*(pi/180))*(?f0 -10800)-cos(232*(pi/180))*(10800-10800))+10800");
2811     equation(out,"f69","(cos(240*(pi/180))*(0-10800)+sin(240*(pi/180))*(10800-10800))+10800");
2812     equation(out,"f70","-(sin(240*(pi/180))*(0-10800)-cos(240*(pi/180))*(10800-10800))+10800");
2813     equation(out,"f71","(cos(247*(pi/180))*(?f0 -10800)+sin(247*(pi/180))*(10800-10800))+10800");
2814     equation(out,"f72","-(sin(247*(pi/180))*(?f0 -10800)-cos(247*(pi/180))*(10800-10800))+10800");
2815     equation(out,"f73","(cos(255*(pi/180))*(0-10800)+sin(255*(pi/180))*(10800-10800))+10800");
2816     equation(out,"f74","-(sin(255*(pi/180))*(0-10800)-cos(255*(pi/180))*(10800-10800))+10800");
2817     equation(out,"f75","(cos(262*(pi/180))*(?f0 -10800)+sin(262*(pi/180))*(10800-10800))+10800");
2818     equation(out,"f76","-(sin(262*(pi/180))*(?f0 -10800)-cos(262*(pi/180))*(10800-10800))+10800");
2819     equation(out,"f77","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
2820     equation(out,"f78","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
2821     equation(out,"f79","(cos(277*(pi/180))*(?f0 -10800)+sin(277*(pi/180))*(10800-10800))+10800");
2822     equation(out,"f80","-(sin(277*(pi/180))*(?f0 -10800)-cos(277*(pi/180))*(10800-10800))+10800");
2823     equation(out,"f81","(cos(285*(pi/180))*(0-10800)+sin(285*(pi/180))*(10800-10800))+10800");
2824     equation(out,"f82","-(sin(285*(pi/180))*(0-10800)-cos(285*(pi/180))*(10800-10800))+10800");
2825     equation(out,"f83","(cos(292*(pi/180))*(?f0 -10800)+sin(292*(pi/180))*(10800-10800))+10800");
2826     equation(out,"f84","-(sin(292*(pi/180))*(?f0 -10800)-cos(292*(pi/180))*(10800-10800))+10800");
2827     equation(out,"f85","(cos(300*(pi/180))*(0-10800)+sin(300*(pi/180))*(10800-10800))+10800");
2828     equation(out,"f86","-(sin(300*(pi/180))*(0-10800)-cos(300*(pi/180))*(10800-10800))+10800");
2829     equation(out,"f87","(cos(307*(pi/180))*(?f0 -10800)+sin(307*(pi/180))*(10800-10800))+10800");
2830     equation(out,"f88","-(sin(307*(pi/180))*(?f0 -10800)-cos(307*(pi/180))*(10800-10800))+10800");
2831     equation(out,"f89","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
2832     equation(out,"f90","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
2833     equation(out,"f91","(cos(322*(pi/180))*(?f0 -10800)+sin(322*(pi/180))*(10800-10800))+10800");
2834     equation(out,"f92","-(sin(322*(pi/180))*(?f0 -10800)-cos(322*(pi/180))*(10800-10800))+10800");
2835     equation(out,"f93","(cos(330*(pi/180))*(0-10800)+sin(330*(pi/180))*(10800-10800))+10800");
2836     equation(out,"f94","-(sin(330*(pi/180))*(0-10800)-cos(330*(pi/180))*(10800-10800))+10800");
2837     equation(out,"f95","(cos(337*(pi/180))*(?f0 -10800)+sin(337*(pi/180))*(10800-10800))+10800");
2838     equation(out,"f96","-(sin(337*(pi/180))*(?f0 -10800)-cos(337*(pi/180))*(10800-10800))+10800");
2839     equation(out,"f97","(cos(345*(pi/180))*(0-10800)+sin(345*(pi/180))*(10800-10800))+10800");
2840     equation(out,"f98","-(sin(345*(pi/180))*(0-10800)-cos(345*(pi/180))*(10800-10800))+10800");
2841     equation(out,"f99","(cos(352*(pi/180))*(?f0 -10800)+sin(352*(pi/180))*(10800-10800))+10800");
2842     equation(out,"f100","-(sin(352*(pi/180))*(?f0 -10800)-cos(352*(pi/180))*(10800-10800))+10800");
2843     out.xml.startElement("draw:handle");
2844     out.xml.addAttribute("draw:handle-position", "$0 10800");
2845     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2846     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2847     out.xml.endElement(); // draw:handle
2848     out.xml.endElement(); // enhanced geometry
2849     out.xml.endElement(); // custom shape
2850 }
2851 
2852 
processSeal16(const MSO::OfficeArtSpContainer & o,Writer & out)2853 void ODrawToOdf::processSeal16(const MSO::OfficeArtSpContainer& o, Writer& out) {
2854     out.xml.startElement("draw:custom-shape");
2855     processStyleAndText(o, out);
2856 
2857     out.xml.startElement("draw:enhanced-geometry");
2858     processModifiers(o, out, QList<int>() << 2500);
2859     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2860     out.xml.addAttribute("draw:enhanced-path", "M ?f5 ?f6 L ?f7 ?f8 ?f9 ?f10 ?f11 ?f12 ?f13 ?f14 ?f15 ?f16 ?f17 ?f18 ?f19 ?f20 ?f21 ?f22 ?f23 ?f24 ?f25 ?f26 ?f27 ?f28 ?f29 ?f30 ?f31 ?f32 ?f33 ?f34 ?f35 ?f36 ?f37 ?f38 ?f39 ?f40 ?f41 ?f42 ?f43 ?f44 ?f45 ?f46 ?f47 ?f48 ?f49 ?f50 ?f51 ?f52 ?f53 ?f54 ?f55 ?f56 ?f57 ?f58 ?f59 ?f60 ?f61 ?f62 ?f63 ?f64 ?f65 ?f66 ?f67 ?f68 ?f5 ?f6 Z N");
2861     out.xml.addAttribute("draw:type", "mso-spt59");
2862     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
2863     setShapeMirroring(o, out);
2864     equation(out,"f0","$0 ");
2865     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
2866     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
2867     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
2868     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
2869     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
2870     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
2871     equation(out,"f7","(cos(11*(pi/180))*(?f0 -10800)+sin(11*(pi/180))*(10800-10800))+10800");
2872     equation(out,"f8","-(sin(11*(pi/180))*(?f0 -10800)-cos(11*(pi/180))*(10800-10800))+10800");
2873     equation(out,"f9","(cos(22*(pi/180))*(0-10800)+sin(22*(pi/180))*(10800-10800))+10800");
2874     equation(out,"f10","-(sin(22*(pi/180))*(0-10800)-cos(22*(pi/180))*(10800-10800))+10800");
2875     equation(out,"f11","(cos(33*(pi/180))*(?f0 -10800)+sin(33*(pi/180))*(10800-10800))+10800");
2876     equation(out,"f12","-(sin(33*(pi/180))*(?f0 -10800)-cos(33*(pi/180))*(10800-10800))+10800");
2877     equation(out,"f13","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
2878     equation(out,"f14","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
2879     equation(out,"f15","(cos(56*(pi/180))*(?f0 -10800)+sin(56*(pi/180))*(10800-10800))+10800");
2880     equation(out,"f16","-(sin(56*(pi/180))*(?f0 -10800)-cos(56*(pi/180))*(10800-10800))+10800");
2881     equation(out,"f17","(cos(67*(pi/180))*(0-10800)+sin(67*(pi/180))*(10800-10800))+10800");
2882     equation(out,"f18","-(sin(67*(pi/180))*(0-10800)-cos(67*(pi/180))*(10800-10800))+10800");
2883     equation(out,"f19","(cos(78*(pi/180))*(?f0 -10800)+sin(78*(pi/180))*(10800-10800))+10800");
2884     equation(out,"f20","-(sin(78*(pi/180))*(?f0 -10800)-cos(78*(pi/180))*(10800-10800))+10800");
2885     equation(out,"f21","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
2886     equation(out,"f22","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
2887     equation(out,"f23","(cos(101*(pi/180))*(?f0 -10800)+sin(101*(pi/180))*(10800-10800))+10800");
2888     equation(out,"f24","-(sin(101*(pi/180))*(?f0 -10800)-cos(101*(pi/180))*(10800-10800))+10800");
2889     equation(out,"f25","(cos(112*(pi/180))*(0-10800)+sin(112*(pi/180))*(10800-10800))+10800");
2890     equation(out,"f26","-(sin(112*(pi/180))*(0-10800)-cos(112*(pi/180))*(10800-10800))+10800");
2891     equation(out,"f27","(cos(123*(pi/180))*(?f0 -10800)+sin(123*(pi/180))*(10800-10800))+10800");
2892     equation(out,"f28","-(sin(123*(pi/180))*(?f0 -10800)-cos(123*(pi/180))*(10800-10800))+10800");
2893     equation(out,"f29","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
2894     equation(out,"f30","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
2895     equation(out,"f31","(cos(146*(pi/180))*(?f0 -10800)+sin(146*(pi/180))*(10800-10800))+10800");
2896     equation(out,"f32","-(sin(146*(pi/180))*(?f0 -10800)-cos(146*(pi/180))*(10800-10800))+10800");
2897     equation(out,"f33","(cos(157*(pi/180))*(0-10800)+sin(157*(pi/180))*(10800-10800))+10800");
2898     equation(out,"f34","-(sin(157*(pi/180))*(0-10800)-cos(157*(pi/180))*(10800-10800))+10800");
2899     equation(out,"f35","(cos(168*(pi/180))*(?f0 -10800)+sin(168*(pi/180))*(10800-10800))+10800");
2900     equation(out,"f36","-(sin(168*(pi/180))*(?f0 -10800)-cos(168*(pi/180))*(10800-10800))+10800");
2901     equation(out,"f37","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
2902     equation(out,"f38","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
2903     equation(out,"f39","(cos(191*(pi/180))*(?f0 -10800)+sin(191*(pi/180))*(10800-10800))+10800");
2904     equation(out,"f40","-(sin(191*(pi/180))*(?f0 -10800)-cos(191*(pi/180))*(10800-10800))+10800");
2905     equation(out,"f41","(cos(202*(pi/180))*(0-10800)+sin(202*(pi/180))*(10800-10800))+10800");
2906     equation(out,"f42","-(sin(202*(pi/180))*(0-10800)-cos(202*(pi/180))*(10800-10800))+10800");
2907     equation(out,"f43","(cos(213*(pi/180))*(?f0 -10800)+sin(213*(pi/180))*(10800-10800))+10800");
2908     equation(out,"f44","-(sin(213*(pi/180))*(?f0 -10800)-cos(213*(pi/180))*(10800-10800))+10800");
2909     equation(out,"f45","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
2910     equation(out,"f46","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
2911     equation(out,"f47","(cos(236*(pi/180))*(?f0 -10800)+sin(236*(pi/180))*(10800-10800))+10800");
2912     equation(out,"f48","-(sin(236*(pi/180))*(?f0 -10800)-cos(236*(pi/180))*(10800-10800))+10800");
2913     equation(out,"f49","(cos(247*(pi/180))*(0-10800)+sin(247*(pi/180))*(10800-10800))+10800");
2914     equation(out,"f50","-(sin(247*(pi/180))*(0-10800)-cos(247*(pi/180))*(10800-10800))+10800");
2915     equation(out,"f51","(cos(258*(pi/180))*(?f0 -10800)+sin(258*(pi/180))*(10800-10800))+10800");
2916     equation(out,"f52","-(sin(258*(pi/180))*(?f0 -10800)-cos(258*(pi/180))*(10800-10800))+10800");
2917     equation(out,"f53","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
2918     equation(out,"f54","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
2919     equation(out,"f55","(cos(281*(pi/180))*(?f0 -10800)+sin(281*(pi/180))*(10800-10800))+10800");
2920     equation(out,"f56","-(sin(281*(pi/180))*(?f0 -10800)-cos(281*(pi/180))*(10800-10800))+10800");
2921     equation(out,"f57","(cos(292*(pi/180))*(0-10800)+sin(292*(pi/180))*(10800-10800))+10800");
2922     equation(out,"f58","-(sin(292*(pi/180))*(0-10800)-cos(292*(pi/180))*(10800-10800))+10800");
2923     equation(out,"f59","(cos(303*(pi/180))*(?f0 -10800)+sin(303*(pi/180))*(10800-10800))+10800");
2924     equation(out,"f60","-(sin(303*(pi/180))*(?f0 -10800)-cos(303*(pi/180))*(10800-10800))+10800");
2925     equation(out,"f61","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
2926     equation(out,"f62","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
2927     equation(out,"f63","(cos(326*(pi/180))*(?f0 -10800)+sin(326*(pi/180))*(10800-10800))+10800");
2928     equation(out,"f64","-(sin(326*(pi/180))*(?f0 -10800)-cos(326*(pi/180))*(10800-10800))+10800");
2929     equation(out,"f65","(cos(337*(pi/180))*(0-10800)+sin(337*(pi/180))*(10800-10800))+10800");
2930     equation(out,"f66","-(sin(337*(pi/180))*(0-10800)-cos(337*(pi/180))*(10800-10800))+10800");
2931     equation(out,"f67","(cos(348*(pi/180))*(?f0 -10800)+sin(348*(pi/180))*(10800-10800))+10800");
2932     equation(out,"f68","-(sin(348*(pi/180))*(?f0 -10800)-cos(348*(pi/180))*(10800-10800))+10800");
2933     out.xml.startElement("draw:handle");
2934     out.xml.addAttribute("draw:handle-position", "$0 10800");
2935     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2936     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2937     out.xml.endElement(); // draw:handle
2938     out.xml.endElement(); // enhanced geometry
2939     out.xml.endElement(); // custom shape
2940 }
2941 
2942 
processSeal24(const MSO::OfficeArtSpContainer & o,Writer & out)2943 void ODrawToOdf::processSeal24(const MSO::OfficeArtSpContainer& o, Writer& out) {
2944     out.xml.startElement("draw:custom-shape");
2945     processStyleAndText(o, out);
2946 
2947     out.xml.startElement("draw:enhanced-geometry");
2948     processModifiers(o, out, QList<int>() << 2500);
2949     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2950     out.xml.addAttribute("draw:enhanced-path", "M ?f5 ?f6 L ?f7 ?f8 ?f9 ?f10 ?f11 ?f12 ?f13 ?f14 ?f15 ?f16 ?f17 ?f18 ?f19 ?f20 ?f21 ?f22 ?f23 ?f24 ?f25 ?f26 ?f27 ?f28 ?f29 ?f30 ?f31 ?f32 ?f33 ?f34 ?f35 ?f36 ?f37 ?f38 ?f39 ?f40 ?f41 ?f42 ?f43 ?f44 ?f45 ?f46 ?f47 ?f48 ?f49 ?f50 ?f51 ?f52 ?f53 ?f54 ?f55 ?f56 ?f57 ?f58 ?f59 ?f60 ?f61 ?f62 ?f63 ?f64 ?f65 ?f66 ?f67 ?f68 ?f69 ?f70 ?f71 ?f72 ?f73 ?f74 ?f75 ?f76 ?f77 ?f78 ?f79 ?f80 ?f81 ?f82 ?f83 ?f84 ?f85 ?f86 ?f87 ?f88 ?f89 ?f90 ?f91 ?f92 ?f93 ?f94 ?f95 ?f96 ?f97 ?f98 ?f99 ?f100 ?f5 ?f6 Z N");
2951     out.xml.addAttribute("draw:type", "star24");
2952     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
2953     setShapeMirroring(o, out);
2954     equation(out,"f0","$0 ");
2955     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
2956     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
2957     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
2958     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
2959     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
2960     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
2961     equation(out,"f7","(cos(7*(pi/180))*(?f0 -10800)+sin(7*(pi/180))*(10800-10800))+10800");
2962     equation(out,"f8","-(sin(7*(pi/180))*(?f0 -10800)-cos(7*(pi/180))*(10800-10800))+10800");
2963     equation(out,"f9","(cos(15*(pi/180))*(0-10800)+sin(15*(pi/180))*(10800-10800))+10800");
2964     equation(out,"f10","-(sin(15*(pi/180))*(0-10800)-cos(15*(pi/180))*(10800-10800))+10800");
2965     equation(out,"f11","(cos(22*(pi/180))*(?f0 -10800)+sin(22*(pi/180))*(10800-10800))+10800");
2966     equation(out,"f12","-(sin(22*(pi/180))*(?f0 -10800)-cos(22*(pi/180))*(10800-10800))+10800");
2967     equation(out,"f13","(cos(30*(pi/180))*(0-10800)+sin(30*(pi/180))*(10800-10800))+10800");
2968     equation(out,"f14","-(sin(30*(pi/180))*(0-10800)-cos(30*(pi/180))*(10800-10800))+10800");
2969     equation(out,"f15","(cos(37*(pi/180))*(?f0 -10800)+sin(37*(pi/180))*(10800-10800))+10800");
2970     equation(out,"f16","-(sin(37*(pi/180))*(?f0 -10800)-cos(37*(pi/180))*(10800-10800))+10800");
2971     equation(out,"f17","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
2972     equation(out,"f18","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
2973     equation(out,"f19","(cos(52*(pi/180))*(?f0 -10800)+sin(52*(pi/180))*(10800-10800))+10800");
2974     equation(out,"f20","-(sin(52*(pi/180))*(?f0 -10800)-cos(52*(pi/180))*(10800-10800))+10800");
2975     equation(out,"f21","(cos(60*(pi/180))*(0-10800)+sin(60*(pi/180))*(10800-10800))+10800");
2976     equation(out,"f22","-(sin(60*(pi/180))*(0-10800)-cos(60*(pi/180))*(10800-10800))+10800");
2977     equation(out,"f23","(cos(67*(pi/180))*(?f0 -10800)+sin(67*(pi/180))*(10800-10800))+10800");
2978     equation(out,"f24","-(sin(67*(pi/180))*(?f0 -10800)-cos(67*(pi/180))*(10800-10800))+10800");
2979     equation(out,"f25","(cos(75*(pi/180))*(0-10800)+sin(75*(pi/180))*(10800-10800))+10800");
2980     equation(out,"f26","-(sin(75*(pi/180))*(0-10800)-cos(75*(pi/180))*(10800-10800))+10800");
2981     equation(out,"f27","(cos(82*(pi/180))*(?f0 -10800)+sin(82*(pi/180))*(10800-10800))+10800");
2982     equation(out,"f28","-(sin(82*(pi/180))*(?f0 -10800)-cos(82*(pi/180))*(10800-10800))+10800");
2983     equation(out,"f29","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
2984     equation(out,"f30","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
2985     equation(out,"f31","(cos(97*(pi/180))*(?f0 -10800)+sin(97*(pi/180))*(10800-10800))+10800");
2986     equation(out,"f32","-(sin(97*(pi/180))*(?f0 -10800)-cos(97*(pi/180))*(10800-10800))+10800");
2987     equation(out,"f33","(cos(105*(pi/180))*(0-10800)+sin(105*(pi/180))*(10800-10800))+10800");
2988     equation(out,"f34","-(sin(105*(pi/180))*(0-10800)-cos(105*(pi/180))*(10800-10800))+10800");
2989     equation(out,"f35","(cos(112*(pi/180))*(?f0 -10800)+sin(112*(pi/180))*(10800-10800))+10800");
2990     equation(out,"f36","-(sin(112*(pi/180))*(?f0 -10800)-cos(112*(pi/180))*(10800-10800))+10800");
2991     equation(out,"f37","(cos(120*(pi/180))*(0-10800)+sin(120*(pi/180))*(10800-10800))+10800");
2992     equation(out,"f38","-(sin(120*(pi/180))*(0-10800)-cos(120*(pi/180))*(10800-10800))+10800");
2993     equation(out,"f39","(cos(127*(pi/180))*(?f0 -10800)+sin(127*(pi/180))*(10800-10800))+10800");
2994     equation(out,"f40","-(sin(127*(pi/180))*(?f0 -10800)-cos(127*(pi/180))*(10800-10800))+10800");
2995     equation(out,"f41","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
2996     equation(out,"f42","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
2997     equation(out,"f43","(cos(142*(pi/180))*(?f0 -10800)+sin(142*(pi/180))*(10800-10800))+10800");
2998     equation(out,"f44","-(sin(142*(pi/180))*(?f0 -10800)-cos(142*(pi/180))*(10800-10800))+10800");
2999     equation(out,"f45","(cos(150*(pi/180))*(0-10800)+sin(150*(pi/180))*(10800-10800))+10800");
3000     equation(out,"f46","-(sin(150*(pi/180))*(0-10800)-cos(150*(pi/180))*(10800-10800))+10800");
3001     equation(out,"f47","(cos(157*(pi/180))*(?f0 -10800)+sin(157*(pi/180))*(10800-10800))+10800");
3002     equation(out,"f48","-(sin(157*(pi/180))*(?f0 -10800)-cos(157*(pi/180))*(10800-10800))+10800");
3003     equation(out,"f49","(cos(165*(pi/180))*(0-10800)+sin(165*(pi/180))*(10800-10800))+10800");
3004     equation(out,"f50","-(sin(165*(pi/180))*(0-10800)-cos(165*(pi/180))*(10800-10800))+10800");
3005     equation(out,"f51","(cos(172*(pi/180))*(?f0 -10800)+sin(172*(pi/180))*(10800-10800))+10800");
3006     equation(out,"f52","-(sin(172*(pi/180))*(?f0 -10800)-cos(172*(pi/180))*(10800-10800))+10800");
3007     equation(out,"f53","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
3008     equation(out,"f54","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
3009     equation(out,"f55","(cos(187*(pi/180))*(?f0 -10800)+sin(187*(pi/180))*(10800-10800))+10800");
3010     equation(out,"f56","-(sin(187*(pi/180))*(?f0 -10800)-cos(187*(pi/180))*(10800-10800))+10800");
3011     equation(out,"f57","(cos(195*(pi/180))*(0-10800)+sin(195*(pi/180))*(10800-10800))+10800");
3012     equation(out,"f58","-(sin(195*(pi/180))*(0-10800)-cos(195*(pi/180))*(10800-10800))+10800");
3013     equation(out,"f59","(cos(202*(pi/180))*(?f0 -10800)+sin(202*(pi/180))*(10800-10800))+10800");
3014     equation(out,"f60","-(sin(202*(pi/180))*(?f0 -10800)-cos(202*(pi/180))*(10800-10800))+10800");
3015     equation(out,"f61","(cos(210*(pi/180))*(0-10800)+sin(210*(pi/180))*(10800-10800))+10800");
3016     equation(out,"f62","-(sin(210*(pi/180))*(0-10800)-cos(210*(pi/180))*(10800-10800))+10800");
3017     equation(out,"f63","(cos(217*(pi/180))*(?f0 -10800)+sin(217*(pi/180))*(10800-10800))+10800");
3018     equation(out,"f64","-(sin(217*(pi/180))*(?f0 -10800)-cos(217*(pi/180))*(10800-10800))+10800");
3019     equation(out,"f65","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
3020     equation(out,"f66","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
3021     equation(out,"f67","(cos(232*(pi/180))*(?f0 -10800)+sin(232*(pi/180))*(10800-10800))+10800");
3022     equation(out,"f68","-(sin(232*(pi/180))*(?f0 -10800)-cos(232*(pi/180))*(10800-10800))+10800");
3023     equation(out,"f69","(cos(240*(pi/180))*(0-10800)+sin(240*(pi/180))*(10800-10800))+10800");
3024     equation(out,"f70","-(sin(240*(pi/180))*(0-10800)-cos(240*(pi/180))*(10800-10800))+10800");
3025     equation(out,"f71","(cos(247*(pi/180))*(?f0 -10800)+sin(247*(pi/180))*(10800-10800))+10800");
3026     equation(out,"f72","-(sin(247*(pi/180))*(?f0 -10800)-cos(247*(pi/180))*(10800-10800))+10800");
3027     equation(out,"f73","(cos(255*(pi/180))*(0-10800)+sin(255*(pi/180))*(10800-10800))+10800");
3028     equation(out,"f74","-(sin(255*(pi/180))*(0-10800)-cos(255*(pi/180))*(10800-10800))+10800");
3029     equation(out,"f75","(cos(262*(pi/180))*(?f0 -10800)+sin(262*(pi/180))*(10800-10800))+10800");
3030     equation(out,"f76","-(sin(262*(pi/180))*(?f0 -10800)-cos(262*(pi/180))*(10800-10800))+10800");
3031     equation(out,"f77","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
3032     equation(out,"f78","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
3033     equation(out,"f79","(cos(277*(pi/180))*(?f0 -10800)+sin(277*(pi/180))*(10800-10800))+10800");
3034     equation(out,"f80","-(sin(277*(pi/180))*(?f0 -10800)-cos(277*(pi/180))*(10800-10800))+10800");
3035     equation(out,"f81","(cos(285*(pi/180))*(0-10800)+sin(285*(pi/180))*(10800-10800))+10800");
3036     equation(out,"f82","-(sin(285*(pi/180))*(0-10800)-cos(285*(pi/180))*(10800-10800))+10800");
3037     equation(out,"f83","(cos(292*(pi/180))*(?f0 -10800)+sin(292*(pi/180))*(10800-10800))+10800");
3038     equation(out,"f84","-(sin(292*(pi/180))*(?f0 -10800)-cos(292*(pi/180))*(10800-10800))+10800");
3039     equation(out,"f85","(cos(300*(pi/180))*(0-10800)+sin(300*(pi/180))*(10800-10800))+10800");
3040     equation(out,"f86","-(sin(300*(pi/180))*(0-10800)-cos(300*(pi/180))*(10800-10800))+10800");
3041     equation(out,"f87","(cos(307*(pi/180))*(?f0 -10800)+sin(307*(pi/180))*(10800-10800))+10800");
3042     equation(out,"f88","-(sin(307*(pi/180))*(?f0 -10800)-cos(307*(pi/180))*(10800-10800))+10800");
3043     equation(out,"f89","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
3044     equation(out,"f90","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
3045     equation(out,"f91","(cos(322*(pi/180))*(?f0 -10800)+sin(322*(pi/180))*(10800-10800))+10800");
3046     equation(out,"f92","-(sin(322*(pi/180))*(?f0 -10800)-cos(322*(pi/180))*(10800-10800))+10800");
3047     equation(out,"f93","(cos(330*(pi/180))*(0-10800)+sin(330*(pi/180))*(10800-10800))+10800");
3048     equation(out,"f94","-(sin(330*(pi/180))*(0-10800)-cos(330*(pi/180))*(10800-10800))+10800");
3049     equation(out,"f95","(cos(337*(pi/180))*(?f0 -10800)+sin(337*(pi/180))*(10800-10800))+10800");
3050     equation(out,"f96","-(sin(337*(pi/180))*(?f0 -10800)-cos(337*(pi/180))*(10800-10800))+10800");
3051     equation(out,"f97","(cos(345*(pi/180))*(0-10800)+sin(345*(pi/180))*(10800-10800))+10800");
3052     equation(out,"f98","-(sin(345*(pi/180))*(0-10800)-cos(345*(pi/180))*(10800-10800))+10800");
3053     equation(out,"f99","(cos(352*(pi/180))*(?f0 -10800)+sin(352*(pi/180))*(10800-10800))+10800");
3054     equation(out,"f100","-(sin(352*(pi/180))*(?f0 -10800)-cos(352*(pi/180))*(10800-10800))+10800");
3055     out.xml.startElement("draw:handle");
3056     out.xml.addAttribute("draw:handle-position", "$0 10800");
3057     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
3058     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
3059     out.xml.endElement(); // draw:handle
3060     out.xml.endElement(); // enhanced geometry
3061     out.xml.endElement(); // custom shape
3062 }
3063 
3064 
processSeal32(const MSO::OfficeArtSpContainer & o,Writer & out)3065 void ODrawToOdf::processSeal32(const MSO::OfficeArtSpContainer& o, Writer& out) {
3066     out.xml.startElement("draw:custom-shape");
3067     processStyleAndText(o, out);
3068 
3069     out.xml.startElement("draw:enhanced-geometry");
3070     processModifiers(o, out, QList<int>() << 2500);
3071     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3072     out.xml.addAttribute("draw:enhanced-path", "M ?f5 ?f6 L ?f7 ?f8 ?f9 ?f10 ?f11 ?f12 ?f13 ?f14 ?f15 ?f16 ?f17 ?f18 ?f19 ?f20 ?f21 ?f22 ?f23 ?f24 ?f25 ?f26 ?f27 ?f28 ?f29 ?f30 ?f31 ?f32 ?f33 ?f34 ?f35 ?f36 ?f37 ?f38 ?f39 ?f40 ?f41 ?f42 ?f43 ?f44 ?f45 ?f46 ?f47 ?f48 ?f49 ?f50 ?f51 ?f52 ?f53 ?f54 ?f55 ?f56 ?f57 ?f58 ?f59 ?f60 ?f61 ?f62 ?f63 ?f64 ?f65 ?f66 ?f67 ?f68 ?f69 ?f70 ?f71 ?f72 ?f73 ?f74 ?f75 ?f76 ?f77 ?f78 ?f79 ?f80 ?f81 ?f82 ?f83 ?f84 ?f85 ?f86 ?f87 ?f88 ?f89 ?f90 ?f91 ?f92 ?f93 ?f94 ?f95 ?f96 ?f97 ?f98 ?f99 ?f100 ?f101 ?f102 ?f103 ?f104 ?f105 ?f106 ?f107 ?f108 ?f109 ?f110 ?f111 ?f112 ?f113 ?f114 ?f115 ?f116 ?f117 ?f118 ?f119 ?f120 ?f121 ?f122 ?f123 ?f124 ?f125 ?f126 ?f127 ?f128 ?f129 ?f130 ?f131 ?f132 ?f5 ?f6 Z N");
3073     out.xml.addAttribute("draw:type", "mso-spt60");
3074     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
3075     setShapeMirroring(o, out);
3076     equation(out,"f0","$0 ");
3077     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
3078     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
3079     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
3080     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
3081     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
3082     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
3083     equation(out,"f7","(cos(5*(pi/180))*(?f0 -10800)+sin(5*(pi/180))*(10800-10800))+10800");
3084     equation(out,"f8","-(sin(5*(pi/180))*(?f0 -10800)-cos(5*(pi/180))*(10800-10800))+10800");
3085     equation(out,"f9","(cos(11*(pi/180))*(0-10800)+sin(11*(pi/180))*(10800-10800))+10800");
3086     equation(out,"f10","-(sin(11*(pi/180))*(0-10800)-cos(11*(pi/180))*(10800-10800))+10800");
3087     equation(out,"f11","(cos(16*(pi/180))*(?f0 -10800)+sin(16*(pi/180))*(10800-10800))+10800");
3088     equation(out,"f12","-(sin(16*(pi/180))*(?f0 -10800)-cos(16*(pi/180))*(10800-10800))+10800");
3089     equation(out,"f13","(cos(22*(pi/180))*(0-10800)+sin(22*(pi/180))*(10800-10800))+10800");
3090     equation(out,"f14","-(sin(22*(pi/180))*(0-10800)-cos(22*(pi/180))*(10800-10800))+10800");
3091     equation(out,"f15","(cos(28*(pi/180))*(?f0 -10800)+sin(28*(pi/180))*(10800-10800))+10800");
3092     equation(out,"f16","-(sin(28*(pi/180))*(?f0 -10800)-cos(28*(pi/180))*(10800-10800))+10800");
3093     equation(out,"f17","(cos(33*(pi/180))*(0-10800)+sin(33*(pi/180))*(10800-10800))+10800");
3094     equation(out,"f18","-(sin(33*(pi/180))*(0-10800)-cos(33*(pi/180))*(10800-10800))+10800");
3095     equation(out,"f19","(cos(39*(pi/180))*(?f0 -10800)+sin(39*(pi/180))*(10800-10800))+10800");
3096     equation(out,"f20","-(sin(39*(pi/180))*(?f0 -10800)-cos(39*(pi/180))*(10800-10800))+10800");
3097     equation(out,"f21","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
3098     equation(out,"f22","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
3099     equation(out,"f23","(cos(50*(pi/180))*(?f0 -10800)+sin(50*(pi/180))*(10800-10800))+10800");
3100     equation(out,"f24","-(sin(50*(pi/180))*(?f0 -10800)-cos(50*(pi/180))*(10800-10800))+10800");
3101     equation(out,"f25","(cos(56*(pi/180))*(0-10800)+sin(56*(pi/180))*(10800-10800))+10800");
3102     equation(out,"f26","-(sin(56*(pi/180))*(0-10800)-cos(56*(pi/180))*(10800-10800))+10800");
3103     equation(out,"f27","(cos(61*(pi/180))*(?f0 -10800)+sin(61*(pi/180))*(10800-10800))+10800");
3104     equation(out,"f28","-(sin(61*(pi/180))*(?f0 -10800)-cos(61*(pi/180))*(10800-10800))+10800");
3105     equation(out,"f29","(cos(67*(pi/180))*(0-10800)+sin(67*(pi/180))*(10800-10800))+10800");
3106     equation(out,"f30","-(sin(67*(pi/180))*(0-10800)-cos(67*(pi/180))*(10800-10800))+10800");
3107     equation(out,"f31","(cos(73*(pi/180))*(?f0 -10800)+sin(73*(pi/180))*(10800-10800))+10800");
3108     equation(out,"f32","-(sin(73*(pi/180))*(?f0 -10800)-cos(73*(pi/180))*(10800-10800))+10800");
3109     equation(out,"f33","(cos(78*(pi/180))*(0-10800)+sin(78*(pi/180))*(10800-10800))+10800");
3110     equation(out,"f34","-(sin(78*(pi/180))*(0-10800)-cos(78*(pi/180))*(10800-10800))+10800");
3111     equation(out,"f35","(cos(84*(pi/180))*(?f0 -10800)+sin(84*(pi/180))*(10800-10800))+10800");
3112     equation(out,"f36","-(sin(84*(pi/180))*(?f0 -10800)-cos(84*(pi/180))*(10800-10800))+10800");
3113     equation(out,"f37","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
3114     equation(out,"f38","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
3115     equation(out,"f39","(cos(95*(pi/180))*(?f0 -10800)+sin(95*(pi/180))*(10800-10800))+10800");
3116     equation(out,"f40","-(sin(95*(pi/180))*(?f0 -10800)-cos(95*(pi/180))*(10800-10800))+10800");
3117     equation(out,"f41","(cos(101*(pi/180))*(0-10800)+sin(101*(pi/180))*(10800-10800))+10800");
3118     equation(out,"f42","-(sin(101*(pi/180))*(0-10800)-cos(101*(pi/180))*(10800-10800))+10800");
3119     equation(out,"f43","(cos(106*(pi/180))*(?f0 -10800)+sin(106*(pi/180))*(10800-10800))+10800");
3120     equation(out,"f44","-(sin(106*(pi/180))*(?f0 -10800)-cos(106*(pi/180))*(10800-10800))+10800");
3121     equation(out,"f45","(cos(112*(pi/180))*(0-10800)+sin(112*(pi/180))*(10800-10800))+10800");
3122     equation(out,"f46","-(sin(112*(pi/180))*(0-10800)-cos(112*(pi/180))*(10800-10800))+10800");
3123     equation(out,"f47","(cos(118*(pi/180))*(?f0 -10800)+sin(118*(pi/180))*(10800-10800))+10800");
3124     equation(out,"f48","-(sin(118*(pi/180))*(?f0 -10800)-cos(118*(pi/180))*(10800-10800))+10800");
3125     equation(out,"f49","(cos(123*(pi/180))*(0-10800)+sin(123*(pi/180))*(10800-10800))+10800");
3126     equation(out,"f50","-(sin(123*(pi/180))*(0-10800)-cos(123*(pi/180))*(10800-10800))+10800");
3127     equation(out,"f51","(cos(129*(pi/180))*(?f0 -10800)+sin(129*(pi/180))*(10800-10800))+10800");
3128     equation(out,"f52","-(sin(129*(pi/180))*(?f0 -10800)-cos(129*(pi/180))*(10800-10800))+10800");
3129     equation(out,"f53","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
3130     equation(out,"f54","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
3131     equation(out,"f55","(cos(140*(pi/180))*(?f0 -10800)+sin(140*(pi/180))*(10800-10800))+10800");
3132     equation(out,"f56","-(sin(140*(pi/180))*(?f0 -10800)-cos(140*(pi/180))*(10800-10800))+10800");
3133     equation(out,"f57","(cos(146*(pi/180))*(0-10800)+sin(146*(pi/180))*(10800-10800))+10800");
3134     equation(out,"f58","-(sin(146*(pi/180))*(0-10800)-cos(146*(pi/180))*(10800-10800))+10800");
3135     equation(out,"f59","(cos(151*(pi/180))*(?f0 -10800)+sin(151*(pi/180))*(10800-10800))+10800");
3136     equation(out,"f60","-(sin(151*(pi/180))*(?f0 -10800)-cos(151*(pi/180))*(10800-10800))+10800");
3137     equation(out,"f61","(cos(157*(pi/180))*(0-10800)+sin(157*(pi/180))*(10800-10800))+10800");
3138     equation(out,"f62","-(sin(157*(pi/180))*(0-10800)-cos(157*(pi/180))*(10800-10800))+10800");
3139     equation(out,"f63","(cos(163*(pi/180))*(?f0 -10800)+sin(163*(pi/180))*(10800-10800))+10800");
3140     equation(out,"f64","-(sin(163*(pi/180))*(?f0 -10800)-cos(163*(pi/180))*(10800-10800))+10800");
3141     equation(out,"f65","(cos(168*(pi/180))*(0-10800)+sin(168*(pi/180))*(10800-10800))+10800");
3142     equation(out,"f66","-(sin(168*(pi/180))*(0-10800)-cos(168*(pi/180))*(10800-10800))+10800");
3143     equation(out,"f67","(cos(174*(pi/180))*(?f0 -10800)+sin(174*(pi/180))*(10800-10800))+10800");
3144     equation(out,"f68","-(sin(174*(pi/180))*(?f0 -10800)-cos(174*(pi/180))*(10800-10800))+10800");
3145     equation(out,"f69","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
3146     equation(out,"f70","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
3147     equation(out,"f71","(cos(185*(pi/180))*(?f0 -10800)+sin(185*(pi/180))*(10800-10800))+10800");
3148     equation(out,"f72","-(sin(185*(pi/180))*(?f0 -10800)-cos(185*(pi/180))*(10800-10800))+10800");
3149     equation(out,"f73","(cos(191*(pi/180))*(0-10800)+sin(191*(pi/180))*(10800-10800))+10800");
3150     equation(out,"f74","-(sin(191*(pi/180))*(0-10800)-cos(191*(pi/180))*(10800-10800))+10800");
3151     equation(out,"f75","(cos(196*(pi/180))*(?f0 -10800)+sin(196*(pi/180))*(10800-10800))+10800");
3152     equation(out,"f76","-(sin(196*(pi/180))*(?f0 -10800)-cos(196*(pi/180))*(10800-10800))+10800");
3153     equation(out,"f77","(cos(202*(pi/180))*(0-10800)+sin(202*(pi/180))*(10800-10800))+10800");
3154     equation(out,"f78","-(sin(202*(pi/180))*(0-10800)-cos(202*(pi/180))*(10800-10800))+10800");
3155     equation(out,"f79","(cos(208*(pi/180))*(?f0 -10800)+sin(208*(pi/180))*(10800-10800))+10800");
3156     equation(out,"f80","-(sin(208*(pi/180))*(?f0 -10800)-cos(208*(pi/180))*(10800-10800))+10800");
3157     equation(out,"f81","(cos(213*(pi/180))*(0-10800)+sin(213*(pi/180))*(10800-10800))+10800");
3158     equation(out,"f82","-(sin(213*(pi/180))*(0-10800)-cos(213*(pi/180))*(10800-10800))+10800");
3159     equation(out,"f83","(cos(219*(pi/180))*(?f0 -10800)+sin(219*(pi/180))*(10800-10800))+10800");
3160     equation(out,"f84","-(sin(219*(pi/180))*(?f0 -10800)-cos(219*(pi/180))*(10800-10800))+10800");
3161     equation(out,"f85","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
3162     equation(out,"f86","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
3163     equation(out,"f87","(cos(230*(pi/180))*(?f0 -10800)+sin(230*(pi/180))*(10800-10800))+10800");
3164     equation(out,"f88","-(sin(230*(pi/180))*(?f0 -10800)-cos(230*(pi/180))*(10800-10800))+10800");
3165     equation(out,"f89","(cos(236*(pi/180))*(0-10800)+sin(236*(pi/180))*(10800-10800))+10800");
3166     equation(out,"f90","-(sin(236*(pi/180))*(0-10800)-cos(236*(pi/180))*(10800-10800))+10800");
3167     equation(out,"f91","(cos(241*(pi/180))*(?f0 -10800)+sin(241*(pi/180))*(10800-10800))+10800");
3168     equation(out,"f92","-(sin(241*(pi/180))*(?f0 -10800)-cos(241*(pi/180))*(10800-10800))+10800");
3169     equation(out,"f93","(cos(247*(pi/180))*(0-10800)+sin(247*(pi/180))*(10800-10800))+10800");
3170     equation(out,"f94","-(sin(247*(pi/180))*(0-10800)-cos(247*(pi/180))*(10800-10800))+10800");
3171     equation(out,"f95","(cos(253*(pi/180))*(?f0 -10800)+sin(253*(pi/180))*(10800-10800))+10800");
3172     equation(out,"f96","-(sin(253*(pi/180))*(?f0 -10800)-cos(253*(pi/180))*(10800-10800))+10800");
3173     equation(out,"f97","(cos(258*(pi/180))*(0-10800)+sin(258*(pi/180))*(10800-10800))+10800");
3174     equation(out,"f98","-(sin(258*(pi/180))*(0-10800)-cos(258*(pi/180))*(10800-10800))+10800");
3175     equation(out,"f99","(cos(264*(pi/180))*(?f0 -10800)+sin(264*(pi/180))*(10800-10800))+10800");
3176     equation(out,"f100","-(sin(264*(pi/180))*(?f0 -10800)-cos(264*(pi/180))*(10800-10800))+10800");
3177     equation(out,"f101","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
3178     equation(out,"f102","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
3179     equation(out,"f103","(cos(275*(pi/180))*(?f0 -10800)+sin(275*(pi/180))*(10800-10800))+10800");
3180     equation(out,"f104","-(sin(275*(pi/180))*(?f0 -10800)-cos(275*(pi/180))*(10800-10800))+10800");
3181     equation(out,"f105","(cos(281*(pi/180))*(0-10800)+sin(281*(pi/180))*(10800-10800))+10800");
3182     equation(out,"f106","-(sin(281*(pi/180))*(0-10800)-cos(281*(pi/180))*(10800-10800))+10800");
3183     equation(out,"f107","(cos(286*(pi/180))*(?f0 -10800)+sin(286*(pi/180))*(10800-10800))+10800");
3184     equation(out,"f108","-(sin(286*(pi/180))*(?f0 -10800)-cos(286*(pi/180))*(10800-10800))+10800");
3185     equation(out,"f109","(cos(292*(pi/180))*(0-10800)+sin(292*(pi/180))*(10800-10800))+10800");
3186     equation(out,"f110","-(sin(292*(pi/180))*(0-10800)-cos(292*(pi/180))*(10800-10800))+10800");
3187     equation(out,"f111","(cos(298*(pi/180))*(?f0 -10800)+sin(298*(pi/180))*(10800-10800))+10800");
3188     equation(out,"f112","-(sin(298*(pi/180))*(?f0 -10800)-cos(298*(pi/180))*(10800-10800))+10800");
3189     equation(out,"f113","(cos(303*(pi/180))*(0-10800)+sin(303*(pi/180))*(10800-10800))+10800");
3190     equation(out,"f114","-(sin(303*(pi/180))*(0-10800)-cos(303*(pi/180))*(10800-10800))+10800");
3191     equation(out,"f115","(cos(309*(pi/180))*(?f0 -10800)+sin(309*(pi/180))*(10800-10800))+10800");
3192     equation(out,"f116","-(sin(309*(pi/180))*(?f0 -10800)-cos(309*(pi/180))*(10800-10800))+10800");
3193     equation(out,"f117","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
3194     equation(out,"f118","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
3195     equation(out,"f119","(cos(320*(pi/180))*(?f0 -10800)+sin(320*(pi/180))*(10800-10800))+10800");
3196     equation(out,"f120","-(sin(320*(pi/180))*(?f0 -10800)-cos(320*(pi/180))*(10800-10800))+10800");
3197     equation(out,"f121","(cos(326*(pi/180))*(0-10800)+sin(326*(pi/180))*(10800-10800))+10800");
3198     equation(out,"f122","-(sin(326*(pi/180))*(0-10800)-cos(326*(pi/180))*(10800-10800))+10800");
3199     equation(out,"f123","(cos(331*(pi/180))*(?f0 -10800)+sin(331*(pi/180))*(10800-10800))+10800");
3200     equation(out,"f124","-(sin(331*(pi/180))*(?f0 -10800)-cos(331*(pi/180))*(10800-10800))+10800");
3201     equation(out,"f125","(cos(337*(pi/180))*(0-10800)+sin(337*(pi/180))*(10800-10800))+10800");
3202     equation(out,"f126","-(sin(337*(pi/180))*(0-10800)-cos(337*(pi/180))*(10800-10800))+10800");
3203     equation(out,"f127","(cos(343*(pi/180))*(?f0 -10800)+sin(343*(pi/180))*(10800-10800))+10800");
3204     equation(out,"f128","-(sin(343*(pi/180))*(?f0 -10800)-cos(343*(pi/180))*(10800-10800))+10800");
3205     equation(out,"f129","(cos(348*(pi/180))*(0-10800)+sin(348*(pi/180))*(10800-10800))+10800");
3206     equation(out,"f130","-(sin(348*(pi/180))*(0-10800)-cos(348*(pi/180))*(10800-10800))+10800");
3207     equation(out,"f131","(cos(354*(pi/180))*(?f0 -10800)+sin(354*(pi/180))*(10800-10800))+10800");
3208     equation(out,"f132","-(sin(354*(pi/180))*(?f0 -10800)-cos(354*(pi/180))*(10800-10800))+10800");
3209     out.xml.startElement("draw:handle");
3210     out.xml.addAttribute("draw:handle-position", "$0 10800");
3211     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
3212     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
3213     out.xml.endElement(); // draw:handle
3214     out.xml.endElement(); // enhanced geometry
3215     out.xml.endElement(); // custom shape
3216 }
3217 
3218 
processRibbon2(const MSO::OfficeArtSpContainer & o,Writer & out)3219 void ODrawToOdf::processRibbon2(const MSO::OfficeArtSpContainer& o, Writer& out) {
3220     out.xml.startElement("draw:custom-shape");
3221     processStyleAndText(o, out);
3222 
3223     out.xml.startElement("draw:enhanced-geometry");
3224     processModifiers(o, out, QList<int>() << 5400<< 18900);
3225     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3226     out.xml.addAttribute("draw:enhanced-path", "M ?f12 ?f1 L ?f12 ?f13 C ?f12 ?f14 ?f15 21600 ?f16 21600 L 0 21600 2750 ?f7 0 ?f2 ?f0 ?f2 ?f0 ?f4 C ?f0 ?f5 ?f10 0 ?f11 0 L ?f17 0 C ?f18 0 ?f19 ?f5 ?f19 ?f4 L ?f19 ?f2 21600 ?f2 18850 ?f7 21600 21600 ?f20 21600 C ?f21 21600 ?f22 ?f14 ?f22 ?f13 L ?f22 ?f1 Z N M ?f12 ?f1 L ?f12 ?f13 C ?f12 ?f23 ?f15 ?f24 ?f16 ?f24 L ?f11 ?f24 C ?f10 ?f24 ?f0 ?f26 ?f0 ?f25 ?f0 ?f27 ?f10 ?f1 ?f11 ?f1 Z N M ?f22 ?f1 L ?f22 ?f13 C ?f22 ?f23 ?f21 ?f24 ?f20 ?f24 L ?f17 ?f24 C ?f18 ?f24 ?f19 ?f26 ?f19 ?f25 ?f19 ?f27 ?f18 ?f1 ?f17 ?f1 Z N M ?f0 ?f25 L ?f0 ?f2 N M ?f19 ?f25 L ?f19 ?f2 N");
3227     out.xml.addAttribute("draw:type", "mso-spt54");
3228     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f19 ?f1");
3229     setShapeMirroring(o, out);
3230     equation(out,"f0","$0 ");
3231     equation(out,"f1","$1 ");
3232     equation(out,"f2","21600-?f1 ");
3233     equation(out,"f3","?f2 /2");
3234     equation(out,"f4","?f3 /2");
3235     equation(out,"f5","?f4 /2");
3236     equation(out,"f6","?f1 /2");
3237     equation(out,"f7","21600-?f6 ");
3238     equation(out,"f8","420");
3239     equation(out,"f9","?f8 *2");
3240     equation(out,"f10","?f0 +?f8 ");
3241     equation(out,"f11","?f0 +?f9 ");
3242     equation(out,"f12","?f0 +2700");
3243     equation(out,"f13","21600-?f4 ");
3244     equation(out,"f14","21600-?f5 ");
3245     equation(out,"f15","?f12 -?f8 ");
3246     equation(out,"f16","?f12 -?f9 ");
3247     equation(out,"f17","21600-?f11 ");
3248     equation(out,"f18","21600-?f10 ");
3249     equation(out,"f19","21600-?f0 ");
3250     equation(out,"f20","21600-?f16 ");
3251     equation(out,"f21","21600-?f15 ");
3252     equation(out,"f22","21600-?f12 ");
3253     equation(out,"f23","?f13 -?f5 ");
3254     equation(out,"f24","?f1 +?f3 ");
3255     equation(out,"f25","?f1 +?f4 ");
3256     equation(out,"f26","?f25 +?f5 ");
3257     equation(out,"f27","?f25 -?f5 ");
3258     out.xml.startElement("draw:handle");
3259     out.xml.addAttribute("draw:handle-position", "$0 top");
3260     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3261     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3262     out.xml.endElement(); // draw:handle
3263     out.xml.startElement("draw:handle");
3264     out.xml.addAttribute("draw:handle-position", "10800 $1");
3265     out.xml.addAttribute("draw:handle-range-y-minimum", "14400");
3266     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
3267     out.xml.endElement(); // draw:handle
3268     out.xml.endElement(); // enhanced geometry
3269     out.xml.endElement(); // custom shape
3270 }
3271 
3272 
processRibbon(const MSO::OfficeArtSpContainer & o,Writer & out)3273 void ODrawToOdf::processRibbon(const MSO::OfficeArtSpContainer& o, Writer& out) {
3274     out.xml.startElement("draw:custom-shape");
3275     processStyleAndText(o, out);
3276 
3277     out.xml.startElement("draw:enhanced-geometry");
3278     out.xml.addAttribute("draw:glue-points", "?f17 ?f10 2700 ?f14 ?f17 21600 ?f18 ?f14");
3279     processModifiers(o, out, QList<int>() << 5400<< 2700);
3280     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3281     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L ?f3 0 X ?f4 ?f11 L ?f4 ?f10 ?f5 ?f10 ?f5 ?f11 Y ?f6 0 L 21600 0 ?f18 ?f14 21600 ?f15 ?f9 ?f15 ?f9 ?f16 Y ?f8 21600 L ?f1 21600 X ?f0 ?f16 L ?f0 ?f15 0 ?f15 2700 ?f14 Z N M ?f4 ?f11 F Y ?f3 ?f12 L ?f1 ?f12 X ?f0 ?f13 ?f1 ?f10 L ?f4 ?f10 N M ?f5 ?f11 F Y ?f6 ?f12 L ?f8 ?f12 X ?f9 ?f13 ?f8 ?f10 L ?f5 ?f10 N M ?f0 ?f13 F L ?f0 ?f15 N M ?f9 ?f13 F L ?f9 ?f15 N");
3282     out.xml.addAttribute("draw:type", "mso-spt53");
3283     out.xml.addAttribute("draw:text-areas", "?f0 ?f10 ?f9 21600");
3284     setShapeMirroring(o, out);
3285     equation(out,"f0","$0 ");
3286     equation(out,"f1","?f0 +675");
3287     equation(out,"f2","?f1 +675");
3288     equation(out,"f3","?f2 +675");
3289     equation(out,"f4","?f3 +675");
3290     equation(out,"f5","21600-?f4 ");
3291     equation(out,"f6","21600-?f3 ");
3292     equation(out,"f7","21600-?f2 ");
3293     equation(out,"f8","21600-?f1 ");
3294     equation(out,"f9","21600-?f0 ");
3295     equation(out,"f10","$1 ");
3296     equation(out,"f11","?f10 /4");
3297     equation(out,"f12","?f11 *2");
3298     equation(out,"f13","?f11 *3");
3299     equation(out,"f14","10800-?f12 ");
3300     equation(out,"f15","21600-?f10 ");
3301     equation(out,"f16","21600-?f11 ");
3302     equation(out,"f17","21600/2");
3303     equation(out,"f18","21600-2700");
3304     equation(out,"f19","?f17 -2700");
3305     out.xml.startElement("draw:handle");
3306     out.xml.addAttribute("draw:handle-position", "$0 top");
3307     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3308     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3309     out.xml.endElement(); // draw:handle
3310     out.xml.startElement("draw:handle");
3311     out.xml.addAttribute("draw:handle-position", "10800 $1");
3312     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3313     out.xml.addAttribute("draw:handle-range-y-maximum", "7200");
3314     out.xml.endElement(); // draw:handle
3315     out.xml.endElement(); // enhanced geometry
3316     out.xml.endElement(); // custom shape
3317 }
3318 
3319 
processEllipseRibbon2(const MSO::OfficeArtSpContainer & o,Writer & out)3320 void ODrawToOdf::processEllipseRibbon2(const MSO::OfficeArtSpContainer& o, Writer& out) {
3321     out.xml.startElement("draw:custom-shape");
3322     processStyleAndText(o, out);
3323 
3324     out.xml.startElement("draw:enhanced-geometry");
3325     processModifiers(o, out, QList<int>() << 5400<< 18900);
3326     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3327     out.xml.addAttribute("draw:enhanced-path", "M ?f12 ?f1 L ?f12 ?f13 C ?f12 ?f14 ?f15 21600 ?f16 21600 L 0 21600 2750 ?f7 0 ?f2 ?f0 ?f2 ?f0 ?f4 C ?f0 ?f5 ?f10 0 ?f11 0 L ?f17 0 C ?f18 0 ?f19 ?f5 ?f19 ?f4 L ?f19 ?f2 21600 ?f2 18850 ?f7 21600 21600 ?f20 21600 C ?f21 21600 ?f22 ?f14 ?f22 ?f13 L ?f22 ?f1 Z N M ?f12 ?f1 L ?f12 ?f13 C ?f12 ?f23 ?f15 ?f24 ?f16 ?f24 L ?f11 ?f24 C ?f10 ?f24 ?f0 ?f26 ?f0 ?f25 ?f0 ?f27 ?f10 ?f1 ?f11 ?f1 Z N M ?f22 ?f1 L ?f22 ?f13 C ?f22 ?f23 ?f21 ?f24 ?f20 ?f24 L ?f17 ?f24 C ?f18 ?f24 ?f19 ?f26 ?f19 ?f25 ?f19 ?f27 ?f18 ?f1 ?f17 ?f1 Z N M ?f0 ?f25 L ?f0 ?f2 N M ?f19 ?f25 L ?f19 ?f2 N");
3328     out.xml.addAttribute("draw:type", "mso-spt108");
3329     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f19 ?f1");
3330     setShapeMirroring(o, out);
3331     equation(out,"f0","$0 ");
3332     equation(out,"f1","$1 ");
3333     equation(out,"f2","21600-?f1 ");
3334     equation(out,"f3","?f2 /2");
3335     equation(out,"f4","?f3 /2");
3336     equation(out,"f5","?f4 /2");
3337     equation(out,"f6","?f1 /2");
3338     equation(out,"f7","21600-?f6 ");
3339     equation(out,"f8","420");
3340     equation(out,"f9","?f8 *2");
3341     equation(out,"f10","?f0 +?f8 ");
3342     equation(out,"f11","?f0 +?f9 ");
3343     equation(out,"f12","?f0 +2700");
3344     equation(out,"f13","21600-?f4 ");
3345     equation(out,"f14","21600-?f5 ");
3346     equation(out,"f15","?f12 -?f8 ");
3347     equation(out,"f16","?f12 -?f9 ");
3348     equation(out,"f17","21600-?f11 ");
3349     equation(out,"f18","21600-?f10 ");
3350     equation(out,"f19","21600-?f0 ");
3351     equation(out,"f20","21600-?f16 ");
3352     equation(out,"f21","21600-?f15 ");
3353     equation(out,"f22","21600-?f12 ");
3354     equation(out,"f23","?f13 -?f5 ");
3355     equation(out,"f24","?f1 +?f3 ");
3356     equation(out,"f25","?f1 +?f4 ");
3357     equation(out,"f26","?f25 +?f5 ");
3358     equation(out,"f27","?f25 -?f5 ");
3359     out.xml.startElement("draw:handle");
3360     out.xml.addAttribute("draw:handle-position", "$0 top");
3361     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3362     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3363     out.xml.endElement(); // draw:handle
3364     out.xml.startElement("draw:handle");
3365     out.xml.addAttribute("draw:handle-position", "10800 $1");
3366     out.xml.addAttribute("draw:handle-range-y-minimum", "14400");
3367     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
3368     out.xml.endElement(); // draw:handle
3369     out.xml.endElement(); // enhanced geometry
3370     out.xml.endElement(); // custom shape
3371 }
3372 
3373 
processEllipseRibbon(const MSO::OfficeArtSpContainer & o,Writer & out)3374 void ODrawToOdf::processEllipseRibbon(const MSO::OfficeArtSpContainer& o, Writer& out) {
3375     out.xml.startElement("draw:custom-shape");
3376     processStyleAndText(o, out);
3377 
3378     out.xml.startElement("draw:enhanced-geometry");
3379     out.xml.addAttribute("draw:glue-points", "?f17 ?f10 2700 ?f14 ?f17 21600 ?f18 ?f14");
3380     processModifiers(o, out, QList<int>() << 5400<< 2700);
3381     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3382     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L ?f3 0 X ?f4 ?f11 L ?f4 ?f10 ?f5 ?f10 ?f5 ?f11 Y ?f6 0 L 21600 0 ?f18 ?f14 21600 ?f15 ?f9 ?f15 ?f9 ?f16 Y ?f8 21600 L ?f1 21600 X ?f0 ?f16 L ?f0 ?f15 0 ?f15 2700 ?f14 Z N M ?f4 ?f11 F Y ?f3 ?f12 L ?f1 ?f12 X ?f0 ?f13 ?f1 ?f10 L ?f4 ?f10 N M ?f5 ?f11 F Y ?f6 ?f12 L ?f8 ?f12 X ?f9 ?f13 ?f8 ?f10 L ?f5 ?f10 N M ?f0 ?f13 F L ?f0 ?f15 N M ?f9 ?f13 F L ?f9 ?f15 N");
3383     out.xml.addAttribute("draw:type", "mso-spt107");
3384     out.xml.addAttribute("draw:text-areas", "?f0 ?f10 ?f9 21600");
3385     setShapeMirroring(o, out);
3386     equation(out,"f0","$0 ");
3387     equation(out,"f1","?f0 +675");
3388     equation(out,"f2","?f1 +675");
3389     equation(out,"f3","?f2 +675");
3390     equation(out,"f4","?f3 +675");
3391     equation(out,"f5","21600-?f4 ");
3392     equation(out,"f6","21600-?f3 ");
3393     equation(out,"f7","21600-?f2 ");
3394     equation(out,"f8","21600-?f1 ");
3395     equation(out,"f9","21600-?f0 ");
3396     equation(out,"f10","$1 ");
3397     equation(out,"f11","?f10 /4");
3398     equation(out,"f12","?f11 *2");
3399     equation(out,"f13","?f11 *3");
3400     equation(out,"f14","10800-?f12 ");
3401     equation(out,"f15","21600-?f10 ");
3402     equation(out,"f16","21600-?f11 ");
3403     equation(out,"f17","21600/2");
3404     equation(out,"f18","21600-2700");
3405     equation(out,"f19","?f17 -2700");
3406     out.xml.startElement("draw:handle");
3407     out.xml.addAttribute("draw:handle-position", "$0 top");
3408     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3409     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3410     out.xml.endElement(); // draw:handle
3411     out.xml.startElement("draw:handle");
3412     out.xml.addAttribute("draw:handle-position", "10800 $1");
3413     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3414     out.xml.addAttribute("draw:handle-range-y-maximum", "7200");
3415     out.xml.endElement(); // draw:handle
3416     out.xml.endElement(); // enhanced geometry
3417     out.xml.endElement(); // custom shape
3418 }
3419 
3420 
processVerticalScroll(const MSO::OfficeArtSpContainer & o,Writer & out)3421 void ODrawToOdf::processVerticalScroll(const MSO::OfficeArtSpContainer& o, Writer& out) {
3422     out.xml.startElement("draw:custom-shape");
3423     processStyleAndText(o, out);
3424 
3425     out.xml.startElement("draw:enhanced-geometry");
3426     processModifiers(o, out, QList<int>() << 2700);
3427     out.xml.addAttribute("draw:path-stretchpoint-x", "11000");
3428     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
3429     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3430     out.xml.addAttribute("draw:enhanced-path", "M ?f1 21600 X 0 ?f11 ?f1 ?f12 L ?f0 ?f12 ?f0 ?f1 Y ?f4 0 L ?f2 0 X 21600 ?f1 ?f2 ?f0 L ?f3 ?f0 ?f3 ?f11 Y ?f5 21600 Z N M ?f6 ?f1 Y ?f4 ?f0 X ?f8 ?f9 ?f4 ?f1 Z N M ?f0 ?f11 Y ?f1 21600 0 ?f11 ?f1 ?f12 X ?f9 ?f10 ?f1 ?f11 Z N M ?f4 0 X ?f6 ?f1 N M ?f0 ?f12 L ?f0 ?f11 N M ?f4 ?f0 L ?f2 ?f0 N");
3431     out.xml.addAttribute("draw:type", "vertical-scroll");
3432     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f3 ?f12");
3433     setShapeMirroring(o, out);
3434     equation(out,"f0","$0 ");
3435     equation(out,"f1","?f0 /2");
3436     equation(out,"f2","right-?f1 ");
3437     equation(out,"f3","right-?f0 ");
3438     equation(out,"f4","?f0 +?f1 ");
3439     equation(out,"f5","right-?f4 ");
3440     equation(out,"f6","?f0 *2");
3441     equation(out,"f7","?f1 /2");
3442     equation(out,"f8","?f0 +?f7 ");
3443     equation(out,"f9","?f1 +?f7 ");
3444     equation(out,"f10","bottom-?f9 ");
3445     equation(out,"f11","bottom-?f1 ");
3446     equation(out,"f12","bottom-?f0 ");
3447     equation(out,"f13","bottom-?f4 ");
3448     out.xml.startElement("draw:handle");
3449     out.xml.addAttribute("draw:handle-position", "left $0");
3450     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3451     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
3452     out.xml.endElement(); // draw:handle
3453     out.xml.endElement(); // enhanced geometry
3454     out.xml.endElement(); // custom shape
3455 }
3456 
3457 
processHorizontalScroll(const MSO::OfficeArtSpContainer & o,Writer & out)3458 void ODrawToOdf::processHorizontalScroll(const MSO::OfficeArtSpContainer& o, Writer& out) {
3459     out.xml.startElement("draw:custom-shape");
3460     processStyleAndText(o, out);
3461 
3462     out.xml.startElement("draw:enhanced-geometry");
3463     processModifiers(o, out, QList<int>() << 2700);
3464     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
3465     out.xml.addAttribute("draw:path-stretchpoint-y", "11000");
3466     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3467     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f4 Y ?f1 ?f0 L ?f3 ?f0 ?f3 ?f1 Y ?f2 0 21600 ?f1 L 21600 ?f13 Y ?f2 ?f12 L ?f0 ?f12 ?f0 ?f11 Y ?f1 21600 0 ?f11 Z N M ?f1 ?f4 Y ?f9 ?f8 ?f0 ?f4 ?f1 ?f6 Z N M ?f2 ?f1 Y ?f3 ?f9 ?f3 ?f1 ?f2 0 X 21600 ?f1 ?f2 ?f0 Z N M ?f1 ?f6 X 0 ?f4 N M ?f2 ?f0 L ?f3 ?f0 N M ?f0 ?f4 L ?f0 ?f11 N");
3468     out.xml.addAttribute("draw:type", "horizontal-scroll");
3469     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f3 ?f12");
3470     setShapeMirroring(o, out);
3471     equation(out,"f0","$0 ");
3472     equation(out,"f1","?f0 /2");
3473     equation(out,"f2","right-?f1 ");
3474     equation(out,"f3","right-?f0 ");
3475     equation(out,"f4","?f0 +?f1 ");
3476     equation(out,"f5","right-?f4 ");
3477     equation(out,"f6","?f0 *2");
3478     equation(out,"f7","?f1 /2");
3479     equation(out,"f8","?f0 +?f7 ");
3480     equation(out,"f9","?f1 +?f7 ");
3481     equation(out,"f10","bottom-?f9 ");
3482     equation(out,"f11","bottom-?f1 ");
3483     equation(out,"f12","bottom-?f0 ");
3484     equation(out,"f13","bottom-?f4 ");
3485     out.xml.startElement("draw:handle");
3486     out.xml.addAttribute("draw:handle-position", "$0 top");
3487     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
3488     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
3489     out.xml.endElement(); // draw:handle
3490     out.xml.endElement(); // enhanced geometry
3491     out.xml.endElement(); // custom shape
3492 }
3493 
3494 
processWave(const MSO::OfficeArtSpContainer & o,Writer & out)3495 void ODrawToOdf::processWave(const MSO::OfficeArtSpContainer& o, Writer& out) {
3496     out.xml.startElement("draw:custom-shape");
3497     processStyleAndText(o, out);
3498 
3499     out.xml.startElement("draw:enhanced-geometry");
3500     out.xml.addAttribute("draw:glue-points", "?f18 ?f0 ?f20 10800 ?f19 ?f1 ?f21 10800");
3501     processModifiers(o, out, QList<int>() << 1400<< 10800);
3502     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3503     out.xml.addAttribute("draw:enhanced-path", "M ?f7 ?f0 C ?f15 ?f9 ?f16 ?f10 ?f12 ?f0 L ?f24 ?f1 C ?f25 ?f26 ?f27 ?f28 ?f29 ?f1 Z N");
3504     out.xml.addAttribute("draw:type", "mso-spt64");
3505     out.xml.addAttribute("draw:text-areas", "?f5 ?f22 ?f11 ?f23");
3506     setShapeMirroring(o, out);
3507     equation(out,"f0","$0 ");
3508     equation(out,"f1","21600-?f0 ");
3509     equation(out,"f2","$1 ");
3510     equation(out,"f3","?f2 -10800");
3511     equation(out,"f4","?f3 *2");
3512     equation(out,"f5","abs(?f4 )");
3513     equation(out,"f6","4320-?f5 ");
3514     equation(out,"f7","if(?f3 ,0,?f5 )");
3515     equation(out,"f8","15800*?f0 /4460");
3516     equation(out,"f9","?f0 -?f8 ");
3517     equation(out,"f10","?f0 +?f8 ");
3518     equation(out,"f11","21600-?f4 ");
3519     equation(out,"f12","if(?f3 ,?f11 ,21600)");
3520     equation(out,"f13","?f12 -?f7 ");
3521     equation(out,"f14","?f5 /2");
3522     equation(out,"f15","?f7 +7200-?f14 ");
3523     equation(out,"f16","?f12 +?f14 -7200");
3524     equation(out,"f17","?f13 /2");
3525     equation(out,"f18","?f7 +?f17 ");
3526     equation(out,"f19","21600-?f18 ");
3527     equation(out,"f20","?f5 /2");
3528     equation(out,"f21","21600-?f20 ");
3529     equation(out,"f22","?f0 *2");
3530     equation(out,"f23","21600-?f22 ");
3531     equation(out,"f24","21600-?f7 ");
3532     equation(out,"f25","21600-?f15 ");
3533     equation(out,"f26","?f1 +?f8 ");
3534     equation(out,"f27","21600-?f16 ");
3535     equation(out,"f28","?f1 -?f8 ");
3536     equation(out,"f29","21600-?f12 ");
3537     out.xml.startElement("draw:handle");
3538     out.xml.addAttribute("draw:handle-position", "left $0");
3539     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3540     out.xml.addAttribute("draw:handle-range-y-maximum", "4460");
3541     out.xml.endElement(); // draw:handle
3542     out.xml.startElement("draw:handle");
3543     out.xml.addAttribute("draw:handle-position", "$1 21600");
3544     out.xml.addAttribute("draw:handle-range-x-maximum", "12960");
3545     out.xml.addAttribute("draw:handle-range-x-minimum", "8640");
3546     out.xml.endElement(); // draw:handle
3547     out.xml.endElement(); // enhanced geometry
3548     out.xml.endElement(); // custom shape
3549 }
3550 
3551 
processDoubleWave(const MSO::OfficeArtSpContainer & o,Writer & out)3552 void ODrawToOdf::processDoubleWave(const MSO::OfficeArtSpContainer& o, Writer& out) {
3553     out.xml.startElement("draw:custom-shape");
3554     processStyleAndText(o, out);
3555 
3556     out.xml.startElement("draw:enhanced-geometry");
3557     out.xml.addAttribute("draw:glue-points", "?f18 ?f0 ?f20 10800 ?f19 ?f1 ?f21 10800");
3558     processModifiers(o, out, QList<int>() << 1400<< 10800);
3559     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3560     out.xml.addAttribute("draw:enhanced-path", "M ?f7 ?f0 C ?f15 ?f9 ?f30 ?f10 ?f18 ?f0 ?f31 ?f9 ?f16 ?f10 ?f12 ?f0 L ?f24 ?f1 C ?f25 ?f26 ?f33 ?f28 ?f19 ?f1 ?f32 ?f26 ?f27 ?f28 ?f29 ?f1 Z N");
3561     out.xml.addAttribute("draw:type", "mso-spt188");
3562     out.xml.addAttribute("draw:text-areas", "?f5 ?f22 ?f11 ?f23");
3563     setShapeMirroring(o, out);
3564     equation(out,"f0","$0 ");
3565     equation(out,"f1","21600-?f0 ");
3566     equation(out,"f2","$1 ");
3567     equation(out,"f3","?f2 -10800");
3568     equation(out,"f4","?f3 *2");
3569     equation(out,"f5","abs(?f4 )");
3570     equation(out,"f6","4320-?f5 ");
3571     equation(out,"f7","if(?f3 ,0,?f5 )");
3572     equation(out,"f8","7900*?f0 /2230");
3573     equation(out,"f9","?f0 -?f8 ");
3574     equation(out,"f10","?f0 +?f8 ");
3575     equation(out,"f11","21600-?f4 ");
3576     equation(out,"f12","if(?f3 ,?f11 ,21600)");
3577     equation(out,"f13","?f12 -?f7 ");
3578     equation(out,"f14","?f5 /2");
3579     equation(out,"f15","?f7 +3600-?f14 ");
3580     equation(out,"f16","?f12 +?f14 -3600");
3581     equation(out,"f17","?f13 /2");
3582     equation(out,"f18","?f7 +?f17 ");
3583     equation(out,"f19","21600-?f18 ");
3584     equation(out,"f20","?f5 /2");
3585     equation(out,"f21","21600-?f20 ");
3586     equation(out,"f22","?f0 *2");
3587     equation(out,"f23","21600-?f22 ");
3588     equation(out,"f24","21600-?f7 ");
3589     equation(out,"f25","21600-?f15 ");
3590     equation(out,"f26","?f1 +?f8 ");
3591     equation(out,"f27","21600-?f16 ");
3592     equation(out,"f28","?f1 -?f8 ");
3593     equation(out,"f29","21600-?f12 ");
3594     equation(out,"f30","?f18 -?f14 ");
3595     equation(out,"f31","?f18 +?f14 ");
3596     equation(out,"f32","?f19 -?f14 ");
3597     equation(out,"f33","?f19 +?f14 ");
3598     out.xml.startElement("draw:handle");
3599     out.xml.addAttribute("draw:handle-position", "left $0");
3600     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3601     out.xml.addAttribute("draw:handle-range-y-maximum", "2230");
3602     out.xml.endElement(); // draw:handle
3603     out.xml.startElement("draw:handle");
3604     out.xml.addAttribute("draw:handle-position", "$1 21600");
3605     out.xml.addAttribute("draw:handle-range-x-maximum", "12960");
3606     out.xml.addAttribute("draw:handle-range-x-minimum", "8640");
3607     out.xml.endElement(); // draw:handle
3608     out.xml.endElement(); // enhanced geometry
3609     out.xml.endElement(); // custom shape
3610 }
3611 
3612 
processWedgeRectCallout(const MSO::OfficeArtSpContainer & o,Writer & out)3613 void ODrawToOdf::processWedgeRectCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3614     out.xml.startElement("draw:custom-shape");
3615     processStyleAndText(o, out);
3616 
3617     out.xml.startElement("draw:enhanced-geometry");
3618     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800 ?f40 ?f41");
3619     processModifiers(o, out, QList<int>() << 1400<< 25920);
3620     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3621     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 0 3590 ?f2 ?f3 0 8970 0 12630 ?f4 ?f5 0 18010 0 21600 3590 21600 ?f6 ?f7 8970 21600 12630 21600 ?f8 ?f9 18010 21600 21600 21600 21600 18010 ?f10 ?f11 21600 12630 21600 8970 ?f12 ?f13 21600 3590 21600 0 18010 0 ?f14 ?f15 12630 0 8970 0 ?f16 ?f17 3590 0 0 0 Z N");
3622     out.xml.addAttribute("draw:type", "rectangular-callout");
3623     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
3624     setShapeMirroring(o, out);
3625     equation(out,"f0","$0 -10800");
3626     equation(out,"f1","$1 -10800");
3627     equation(out,"f2","if(?f18 ,$0 ,0)");
3628     equation(out,"f3","if(?f18 ,$1 ,6280)");
3629     equation(out,"f4","if(?f23 ,$0 ,0)");
3630     equation(out,"f5","if(?f23 ,$1 ,15320)");
3631     equation(out,"f6","if(?f26 ,$0 ,6280)");
3632     equation(out,"f7","if(?f26 ,$1 ,21600)");
3633     equation(out,"f8","if(?f29 ,$0 ,15320)");
3634     equation(out,"f9","if(?f29 ,$1 ,21600)");
3635     equation(out,"f10","if(?f32 ,$0 ,21600)");
3636     equation(out,"f11","if(?f32 ,$1 ,15320)");
3637     equation(out,"f12","if(?f34 ,$0 ,21600)");
3638     equation(out,"f13","if(?f34 ,$1 ,6280)");
3639     equation(out,"f14","if(?f36 ,$0 ,15320)");
3640     equation(out,"f15","if(?f36 ,$1 ,0)");
3641     equation(out,"f16","if(?f38 ,$0 ,6280)");
3642     equation(out,"f17","if(?f38 ,$1 ,0)");
3643     equation(out,"f18","if($0 ,-1,?f19 )");
3644     equation(out,"f19","if(?f1 ,-1,?f22 )");
3645     equation(out,"f20","abs(?f0 )");
3646     equation(out,"f21","abs(?f1 )");
3647     equation(out,"f22","?f20 -?f21 ");
3648     equation(out,"f23","if($0 ,-1,?f24 )");
3649     equation(out,"f24","if(?f1 ,?f22 ,-1)");
3650     equation(out,"f25","$1 -21600");
3651     equation(out,"f26","if(?f25 ,?f27 ,-1)");
3652     equation(out,"f27","if(?f0 ,-1,?f28 )");
3653     equation(out,"f28","?f21 -?f20 ");
3654     equation(out,"f29","if(?f25 ,?f30 ,-1)");
3655     equation(out,"f30","if(?f0 ,?f28 ,-1)");
3656     equation(out,"f31","$0 -21600");
3657     equation(out,"f32","if(?f31 ,?f33 ,-1)");
3658     equation(out,"f33","if(?f1 ,?f22 ,-1)");
3659     equation(out,"f34","if(?f31 ,?f35 ,-1)");
3660     equation(out,"f35","if(?f1 ,-1,?f22 )");
3661     equation(out,"f36","if($1 ,-1,?f37 )");
3662     equation(out,"f37","if(?f0 ,?f28 ,-1)");
3663     equation(out,"f38","if($1 ,-1,?f39 )");
3664     equation(out,"f39","if(?f0 ,-1,?f28 )");
3665     equation(out,"f40","$0 ");
3666     equation(out,"f41","$1 ");
3667     out.xml.startElement("draw:handle");
3668     out.xml.addAttribute("draw:handle-position", "$0 $1");
3669     out.xml.endElement(); // draw:handle
3670     out.xml.endElement(); // enhanced geometry
3671     out.xml.endElement(); // custom shape
3672 }
3673 
3674 
processWedgeRRectCallout(const MSO::OfficeArtSpContainer & o,Writer & out)3675 void ODrawToOdf::processWedgeRRectCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3676     out.xml.startElement("draw:custom-shape");
3677     processStyleAndText(o, out);
3678 
3679     out.xml.startElement("draw:enhanced-geometry");
3680     processModifiers(o, out, QList<int>() << 1400<< 25920);
3681     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3682     out.xml.addAttribute("draw:enhanced-path", "M 3590 0 X 0 3590 L ?f2 ?f3 0 8970 0 12630 ?f4 ?f5 0 18010 Y 3590 21600 L ?f6 ?f7 8970 21600 12630 21600 ?f8 ?f9 18010 21600 X 21600 18010 L ?f10 ?f11 21600 12630 21600 8970 ?f12 ?f13 21600 3590 Y 18010 0 L ?f14 ?f15 12630 0 8970 0 ?f16 ?f17 Z N");
3683     out.xml.addAttribute("draw:type", "round-rectangular-callout");
3684     out.xml.addAttribute("draw:text-areas", "800 800 20800 20800");
3685     setShapeMirroring(o, out);
3686     equation(out,"f0","$0 -10800");
3687     equation(out,"f1","$1 -10800");
3688     equation(out,"f2","if(?f18 ,$0 ,0)");
3689     equation(out,"f3","if(?f18 ,$1 ,6280)");
3690     equation(out,"f4","if(?f23 ,$0 ,0)");
3691     equation(out,"f5","if(?f23 ,$1 ,15320)");
3692     equation(out,"f6","if(?f26 ,$0 ,6280)");
3693     equation(out,"f7","if(?f26 ,$1 ,21600)");
3694     equation(out,"f8","if(?f29 ,$0 ,15320)");
3695     equation(out,"f9","if(?f29 ,$1 ,21600)");
3696     equation(out,"f10","if(?f32 ,$0 ,21600)");
3697     equation(out,"f11","if(?f32 ,$1 ,15320)");
3698     equation(out,"f12","if(?f34 ,$0 ,21600)");
3699     equation(out,"f13","if(?f34 ,$1 ,6280)");
3700     equation(out,"f14","if(?f36 ,$0 ,15320)");
3701     equation(out,"f15","if(?f36 ,$1 ,0)");
3702     equation(out,"f16","if(?f38 ,$0 ,6280)");
3703     equation(out,"f17","if(?f38 ,$1 ,0)");
3704     equation(out,"f18","if($0 ,-1,?f19 )");
3705     equation(out,"f19","if(?f1 ,-1,?f22 )");
3706     equation(out,"f20","abs(?f0 )");
3707     equation(out,"f21","abs(?f1 )");
3708     equation(out,"f22","?f20 -?f21 ");
3709     equation(out,"f23","if($0 ,-1,?f24 )");
3710     equation(out,"f24","if(?f1 ,?f22 ,-1)");
3711     equation(out,"f25","$1 -21600");
3712     equation(out,"f26","if(?f25 ,?f27 ,-1)");
3713     equation(out,"f27","if(?f0 ,-1,?f28 )");
3714     equation(out,"f28","?f21 -?f20 ");
3715     equation(out,"f29","if(?f25 ,?f30 ,-1)");
3716     equation(out,"f30","if(?f0 ,?f28 ,-1)");
3717     equation(out,"f31","$0 -21600");
3718     equation(out,"f32","if(?f31 ,?f33 ,-1)");
3719     equation(out,"f33","if(?f1 ,?f22 ,-1)");
3720     equation(out,"f34","if(?f31 ,?f35 ,-1)");
3721     equation(out,"f35","if(?f1 ,-1,?f22 )");
3722     equation(out,"f36","if($1 ,-1,?f37 )");
3723     equation(out,"f37","if(?f0 ,?f28 ,-1)");
3724     equation(out,"f38","if($1 ,-1,?f39 )");
3725     equation(out,"f39","if(?f0 ,-1,?f28 )");
3726     equation(out,"f40","$0 ");
3727     equation(out,"f41","$1 ");
3728     out.xml.startElement("draw:handle");
3729     out.xml.addAttribute("draw:handle-position", "$0 $1");
3730     out.xml.endElement(); // draw:handle
3731     out.xml.endElement(); // enhanced geometry
3732     out.xml.endElement(); // custom shape
3733 }
3734 
3735 
processWedgeEllipseCallout(const MSO::OfficeArtSpContainer & o,Writer & out)3736 void ODrawToOdf::processWedgeEllipseCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3737     out.xml.startElement("draw:custom-shape");
3738     processStyleAndText(o, out);
3739 
3740     out.xml.startElement("draw:enhanced-geometry");
3741     out.xml.addAttribute("draw:glue-points", "10800 0 3160 3160 0 10800 3160 18440 10800 21600 18440 18440 21600 10800 18440 3160 ?f14 ?f15");
3742     processModifiers(o, out, QList<int>() << 1350<< 25920);
3743     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3744     out.xml.addAttribute("draw:enhanced-path", "V 0 0 21600 21600 ?f22 ?f23 ?f18 ?f19 L ?f14 ?f15 Z N");
3745     out.xml.addAttribute("draw:type", "round-callout");
3746     out.xml.addAttribute("draw:text-areas", "3200 3200 18400 18400");
3747     setShapeMirroring(o, out);
3748     equation(out,"f0","$0 -10800");
3749     equation(out,"f1","$1 -10800");
3750     equation(out,"f2","?f0 *?f0 ");
3751     equation(out,"f3","?f1 *?f1 ");
3752     equation(out,"f4","?f2 +?f3 ");
3753     equation(out,"f5","sqrt(?f4 )");
3754     equation(out,"f6","?f5 -10800");
3755     equation(out,"f7","atan2(?f1 ,?f0 )/(pi/180)");
3756     equation(out,"f8","?f7 -10");
3757     equation(out,"f9","?f7 +10");
3758     equation(out,"f10","10800*cos(?f7 *(pi/180))");
3759     equation(out,"f11","10800*sin(?f7 *(pi/180))");
3760     equation(out,"f12","?f10 +10800");
3761     equation(out,"f13","?f11 +10800");
3762     equation(out,"f14","if(?f6 ,$0 ,?f12 )");
3763     equation(out,"f15","if(?f6 ,$1 ,?f13 )");
3764     equation(out,"f16","10800*cos(?f8 *(pi/180))");
3765     equation(out,"f17","10800*sin(?f8 *(pi/180))");
3766     equation(out,"f18","?f16 +10800");
3767     equation(out,"f19","?f17 +10800");
3768     equation(out,"f20","10800*cos(?f9 *(pi/180))");
3769     equation(out,"f21","10800*sin(?f9 *(pi/180))");
3770     equation(out,"f22","?f20 +10800");
3771     equation(out,"f23","?f21 +10800");
3772     out.xml.startElement("draw:handle");
3773     out.xml.addAttribute("draw:handle-position", "$0 $1");
3774     out.xml.endElement(); // draw:handle
3775     out.xml.endElement(); // enhanced geometry
3776     out.xml.endElement(); // custom shape
3777 }
3778 
3779 
processCloudCallout(const MSO::OfficeArtSpContainer & o,Writer & out)3780 void ODrawToOdf::processCloudCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3781     out.xml.startElement("draw:custom-shape");
3782     processStyleAndText(o, out);
3783 
3784     out.xml.startElement("draw:enhanced-geometry");
3785     processModifiers(o, out, QList<int>() << 1350<< 25920);
3786     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3787     out.xml.addAttribute("draw:enhanced-path", "M 1930 7160 C 1530 4490 3400 1970 5270 1970 5860 1950 6470 2210 6970 2600 7450 1390 8340 650 9340 650 10004 690 10710 1050 11210 1700 11570 630 12330 0 13150 0 13840 0 14470 460 14870 1160 15330 440 16020 0 16740 0 17910 0 18900 1130 19110 2710 20240 3150 21060 4580 21060 6220 21060 6720 21000 7200 20830 7660 21310 8460 21600 9450 21600 10460 21600 12750 20310 14680 18650 15010 18650 17200 17370 18920 15770 18920 15220 18920 14700 18710 14240 18310 13820 20240 12490 21600 11000 21600 9890 21600 8840 20790 8210 19510 7620 20000 7930 20290 6240 20290 4850 20290 3570 19280 2900 17640 1300 17600 480 16300 480 14660 480 13900 690 13210 1070 12640 380 12160 0 11210 0 10120 0 8590 840 7330 1930 7160 Z N M 1930 7160 C 1950 7410 2040 7690 2090 7920 F N M 6970 2600 C 7200 2790 7480 3050 7670 3310 F N M 11210 1700 C 11130 1910 11080 2160 11030 2400 F N M 14870 1160 C 14720 1400 14640 1720 14540 2010 F N M 19110 2710 C 19130 2890 19230 3290 19190 3380 F N M 20830 7660 C 20660 8170 20430 8620 20110 8990 F N M 18660 15010 C 18740 14200 18280 12200 17000 11450 F N M 14240 18310 C 14320 17980 14350 17680 14370 17360 F N M 8220 19510 C 8060 19250 7960 18950 7860 18640 F N M 2900 17640 C 3090 17600 3280 17540 3460 17450 F N M 1070 12640 C 1400 12900 1780 13130 2330 13040 F N U ?f17 ?f18 1800 1800 0 360 Z N U ?f19 ?f20 1200 1200 0 360 Z N U ?f13 ?f14 700 700 0 360 Z N");
3788     out.xml.addAttribute("draw:type", "cloud-callout");
3789     out.xml.addAttribute("draw:text-areas", "3000 3320 17110 17330");
3790     setShapeMirroring(o, out);
3791     equation(out,"f0","$0 -10800");
3792     equation(out,"f1","$1 -10800");
3793     equation(out,"f2","atan2(?f1 ,?f0 )/(pi/180)");
3794     equation(out,"f3","10800*cos(?f2 *(pi/180))");
3795     equation(out,"f4","10800*sin(?f2 *(pi/180))");
3796     equation(out,"f5","?f3 +10800");
3797     equation(out,"f6","?f4 +10800");
3798     equation(out,"f7","$0 -?f5 ");
3799     equation(out,"f8","$1 -?f6 ");
3800     equation(out,"f9","?f7 /3");
3801     equation(out,"f10","?f8 /3");
3802     equation(out,"f11","?f7 *2/3");
3803     equation(out,"f12","?f8 *2/3");
3804     equation(out,"f13","$0 ");
3805     equation(out,"f14","$1 ");
3806     equation(out,"f15","?f3 /12");
3807     equation(out,"f16","?f4 /12");
3808     equation(out,"f17","?f9 +?f5 -?f15 ");
3809     equation(out,"f18","?f10 +?f6 -?f16 ");
3810     equation(out,"f19","?f11 +?f5 ");
3811     equation(out,"f20","?f12 +?f6 ");
3812     out.xml.startElement("draw:handle");
3813     out.xml.addAttribute("draw:handle-position", "$0 $1");
3814     out.xml.endElement(); // draw:handle
3815     out.xml.endElement(); // enhanced geometry
3816     out.xml.endElement(); // custom shape
3817 }
3818 
3819 
processBorderCallout90(const MSO::OfficeArtSpContainer & o,Writer & out)3820 void ODrawToOdf::processBorderCallout90(const MSO::OfficeArtSpContainer& o, Writer& out) {
3821     out.xml.startElement("draw:custom-shape");
3822     processStyleAndText(o, out);
3823 
3824     out.xml.startElement("draw:enhanced-geometry");
3825     processModifiers(o, out, QList<int>() << -1800<< 22950<< -1800<< 2700);
3826     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3827     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N");
3828     out.xml.addAttribute("draw:type", "mso-spt180");
3829     setShapeMirroring(o, out);
3830     equation(out,"f0","$0 ");
3831     equation(out,"f1","$1 ");
3832     equation(out,"f2","$2 ");
3833     equation(out,"f3","$3 ");
3834     equation(out,"f4","$4 ");
3835     equation(out,"f5","$5 ");
3836     equation(out,"f6","$6 ");
3837     equation(out,"f7","$7 ");
3838     out.xml.startElement("draw:handle");
3839     out.xml.addAttribute("draw:handle-position", "$0 $1");
3840     out.xml.endElement(); // draw:handle
3841     out.xml.startElement("draw:handle");
3842     out.xml.addAttribute("draw:handle-position", "$2 $3");
3843     out.xml.endElement(); // draw:handle
3844     out.xml.endElement(); // enhanced geometry
3845     out.xml.endElement(); // custom shape
3846 }
3847 
3848 
processBorderCallout1(const MSO::OfficeArtSpContainer & o,Writer & out)3849 void ODrawToOdf::processBorderCallout1(const MSO::OfficeArtSpContainer& o, Writer& out) {
3850     out.xml.startElement("draw:custom-shape");
3851     processStyleAndText(o, out);
3852 
3853     out.xml.startElement("draw:enhanced-geometry");
3854     processModifiers(o, out, QList<int>() << -8288<< 24500<< -1800<< 4000);
3855     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3856     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N");
3857     out.xml.addAttribute("draw:type", "line-callout-1");
3858     setShapeMirroring(o, out);
3859     equation(out,"f0","$0 ");
3860     equation(out,"f1","$1 ");
3861     equation(out,"f2","$2 ");
3862     equation(out,"f3","$3 ");
3863     equation(out,"f4","$4 ");
3864     equation(out,"f5","$5 ");
3865     equation(out,"f6","$6 ");
3866     equation(out,"f7","$7 ");
3867     out.xml.startElement("draw:handle");
3868     out.xml.addAttribute("draw:handle-position", "$0 $1");
3869     out.xml.endElement(); // draw:handle
3870     out.xml.startElement("draw:handle");
3871     out.xml.addAttribute("draw:handle-position", "$2 $3");
3872     out.xml.endElement(); // draw:handle
3873     out.xml.endElement(); // enhanced geometry
3874     out.xml.endElement(); // custom shape
3875 }
3876 
3877 
processBorderCallout2(const MSO::OfficeArtSpContainer & o,Writer & out)3878 void ODrawToOdf::processBorderCallout2(const MSO::OfficeArtSpContainer& o, Writer& out) {
3879     out.xml.startElement("draw:custom-shape");
3880     processStyleAndText(o, out);
3881 
3882     out.xml.startElement("draw:enhanced-geometry");
3883     processModifiers(o, out, QList<int>() << -10088<< 24500<< -3600<< 4000<< -1800<< 4000);
3884     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3885     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N M ?f2 ?f3 L ?f4 ?f5 N M");
3886     out.xml.addAttribute("draw:type", "line-callout-2");
3887     setShapeMirroring(o, out);
3888     equation(out,"f0","$0 ");
3889     equation(out,"f1","$1 ");
3890     equation(out,"f2","$2 ");
3891     equation(out,"f3","$3 ");
3892     equation(out,"f4","$4 ");
3893     equation(out,"f5","$5 ");
3894     equation(out,"f6","$6 ");
3895     equation(out,"f7","$7 ");
3896     out.xml.startElement("draw:handle");
3897     out.xml.addAttribute("draw:handle-position", "$0 $1");
3898     out.xml.endElement(); // draw:handle
3899     out.xml.startElement("draw:handle");
3900     out.xml.addAttribute("draw:handle-position", "$2 $3");
3901     out.xml.endElement(); // draw:handle
3902     out.xml.startElement("draw:handle");
3903     out.xml.addAttribute("draw:handle-position", "$4 $5");
3904     out.xml.endElement(); // draw:handle
3905     out.xml.endElement(); // enhanced geometry
3906     out.xml.endElement(); // custom shape
3907 }
3908 
3909 
processBorderCallout3(const MSO::OfficeArtSpContainer & o,Writer & out)3910 void ODrawToOdf::processBorderCallout3(const MSO::OfficeArtSpContainer& o, Writer& out) {
3911     out.xml.startElement("draw:custom-shape");
3912     processStyleAndText(o, out);
3913 
3914     out.xml.startElement("draw:enhanced-geometry");
3915     processModifiers(o, out, QList<int>() << 23400<< 24413<< 25200<< 21600<< 25200<< 4000<< 23400<< 4000);
3916     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3917     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f6 ?f7 F L ?f4 ?f5 ?f2 ?f3 ?f0 ?f1 N");
3918     out.xml.addAttribute("draw:type", "mso-spt49");
3919     setShapeMirroring(o, out);
3920     equation(out,"f0","$0 ");
3921     equation(out,"f1","$1 ");
3922     equation(out,"f2","$2 ");
3923     equation(out,"f3","$3 ");
3924     equation(out,"f4","$4 ");
3925     equation(out,"f5","$5 ");
3926     equation(out,"f6","$6 ");
3927     equation(out,"f7","$7 ");
3928     out.xml.startElement("draw:handle");
3929     out.xml.addAttribute("draw:handle-position", "$0 $1");
3930     out.xml.endElement(); // draw:handle
3931     out.xml.startElement("draw:handle");
3932     out.xml.addAttribute("draw:handle-position", "$2 $3");
3933     out.xml.endElement(); // draw:handle
3934     out.xml.startElement("draw:handle");
3935     out.xml.addAttribute("draw:handle-position", "$4 $5");
3936     out.xml.endElement(); // draw:handle
3937     out.xml.startElement("draw:handle");
3938     out.xml.addAttribute("draw:handle-position", "$6 $7");
3939     out.xml.endElement(); // draw:handle
3940     out.xml.endElement(); // enhanced geometry
3941     out.xml.endElement(); // custom shape
3942 }
3943 
3944 
processAccentCallout90(const MSO::OfficeArtSpContainer & o,Writer & out)3945 void ODrawToOdf::processAccentCallout90(const MSO::OfficeArtSpContainer& o, Writer& out) {
3946     out.xml.startElement("draw:custom-shape");
3947     processStyleAndText(o, out);
3948 
3949     out.xml.startElement("draw:enhanced-geometry");
3950     processModifiers(o, out, QList<int>() << -1800<< 22950<< -1800<< 2700);
3951     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3952     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N");
3953     out.xml.addAttribute("draw:type", "mso-spt179");
3954     setShapeMirroring(o, out);
3955     equation(out,"f0","$0 ");
3956     equation(out,"f1","$1 ");
3957     equation(out,"f2","$2 ");
3958     equation(out,"f3","$3 ");
3959     equation(out,"f4","$4 ");
3960     equation(out,"f5","$5 ");
3961     equation(out,"f6","$6 ");
3962     equation(out,"f7","$7 ");
3963     out.xml.startElement("draw:handle");
3964     out.xml.addAttribute("draw:handle-position", "$0 $1");
3965     out.xml.endElement(); // draw:handle
3966     out.xml.startElement("draw:handle");
3967     out.xml.addAttribute("draw:handle-position", "$2 $3");
3968     out.xml.endElement(); // draw:handle
3969     out.xml.endElement(); // enhanced geometry
3970     out.xml.endElement(); // custom shape
3971 }
3972 
3973 
processAccentCallout1(const MSO::OfficeArtSpContainer & o,Writer & out)3974 void ODrawToOdf::processAccentCallout1(const MSO::OfficeArtSpContainer& o, Writer& out) {
3975     out.xml.startElement("draw:custom-shape");
3976     processStyleAndText(o, out);
3977 
3978     out.xml.startElement("draw:enhanced-geometry");
3979     processModifiers(o, out, QList<int>() << -8288<< 24500<< -1800<< 4000);
3980     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3981     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N M ?f2 0 L ?f2 21600 N");
3982     out.xml.addAttribute("draw:type", "mso-spt44");
3983     setShapeMirroring(o, out);
3984     equation(out,"f0","$0 ");
3985     equation(out,"f1","$1 ");
3986     equation(out,"f2","$2 ");
3987     equation(out,"f3","$3 ");
3988     equation(out,"f4","$4 ");
3989     equation(out,"f5","$5 ");
3990     equation(out,"f6","$6 ");
3991     equation(out,"f7","$7 ");
3992     out.xml.startElement("draw:handle");
3993     out.xml.addAttribute("draw:handle-position", "$0 $1");
3994     out.xml.endElement(); // draw:handle
3995     out.xml.startElement("draw:handle");
3996     out.xml.addAttribute("draw:handle-position", "$2 $3");
3997     out.xml.endElement(); // draw:handle
3998     out.xml.endElement(); // enhanced geometry
3999     out.xml.endElement(); // custom shape
4000 }
4001 
4002 
processAccentCallout2(const MSO::OfficeArtSpContainer & o,Writer & out)4003 void ODrawToOdf::processAccentCallout2(const MSO::OfficeArtSpContainer& o, Writer& out) {
4004     out.xml.startElement("draw:custom-shape");
4005     processStyleAndText(o, out);
4006 
4007     out.xml.startElement("draw:enhanced-geometry");
4008     processModifiers(o, out, QList<int>() << -10088<< 24500<< -3600<< 4000<< -1800<< 4000);
4009     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4010     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N M ?f2 ?f3 L ?f4 ?f5 N M ?f4 0 L ?f4 21600 N M");
4011     out.xml.addAttribute("draw:type", "mso-spt45");
4012     setShapeMirroring(o, out);
4013     equation(out,"f0","$0 ");
4014     equation(out,"f1","$1 ");
4015     equation(out,"f2","$2 ");
4016     equation(out,"f3","$3 ");
4017     equation(out,"f4","$4 ");
4018     equation(out,"f5","$5 ");
4019     equation(out,"f6","$6 ");
4020     equation(out,"f7","$7 ");
4021     out.xml.startElement("draw:handle");
4022     out.xml.addAttribute("draw:handle-position", "$0 $1");
4023     out.xml.endElement(); // draw:handle
4024     out.xml.startElement("draw:handle");
4025     out.xml.addAttribute("draw:handle-position", "$2 $3");
4026     out.xml.endElement(); // draw:handle
4027     out.xml.startElement("draw:handle");
4028     out.xml.addAttribute("draw:handle-position", "$4 $5");
4029     out.xml.endElement(); // draw:handle
4030     out.xml.endElement(); // enhanced geometry
4031     out.xml.endElement(); // custom shape
4032 }
4033 
4034 
processAccentCallout3(const MSO::OfficeArtSpContainer & o,Writer & out)4035 void ODrawToOdf::processAccentCallout3(const MSO::OfficeArtSpContainer& o, Writer& out) {
4036     out.xml.startElement("draw:custom-shape");
4037     processStyleAndText(o, out);
4038 
4039     out.xml.startElement("draw:enhanced-geometry");
4040     processModifiers(o, out, QList<int>() << 23400<< 24413<< 25200<< 21600<< 25200<< 4000<< 23400<< 4000);
4041     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4042     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f6 ?f7 F L ?f4 ?f5 ?f2 ?f3 ?f0 ?f1 N M ?f6 0 L ?f6 21600 N");
4043     out.xml.addAttribute("draw:type", "mso-spt46");
4044     setShapeMirroring(o, out);
4045     equation(out,"f0","$0 ");
4046     equation(out,"f1","$1 ");
4047     equation(out,"f2","$2 ");
4048     equation(out,"f3","$3 ");
4049     equation(out,"f4","$4 ");
4050     equation(out,"f5","$5 ");
4051     equation(out,"f6","$6 ");
4052     equation(out,"f7","$7 ");
4053     out.xml.startElement("draw:handle");
4054     out.xml.addAttribute("draw:handle-position", "$0 $1");
4055     out.xml.endElement(); // draw:handle
4056     out.xml.startElement("draw:handle");
4057     out.xml.addAttribute("draw:handle-position", "$2 $3");
4058     out.xml.endElement(); // draw:handle
4059     out.xml.startElement("draw:handle");
4060     out.xml.addAttribute("draw:handle-position", "$4 $5");
4061     out.xml.endElement(); // draw:handle
4062     out.xml.startElement("draw:handle");
4063     out.xml.addAttribute("draw:handle-position", "$6 $7");
4064     out.xml.endElement(); // draw:handle
4065     out.xml.endElement(); // enhanced geometry
4066     out.xml.endElement(); // custom shape
4067 }
4068 
4069 
processCallout90(const MSO::OfficeArtSpContainer & o,Writer & out)4070 void ODrawToOdf::processCallout90(const MSO::OfficeArtSpContainer& o, Writer& out) {
4071     out.xml.startElement("draw:custom-shape");
4072     processStyleAndText(o, out);
4073 
4074     out.xml.startElement("draw:enhanced-geometry");
4075     processModifiers(o, out, QList<int>() << -1800<< 22950<< -1800<< 2700);
4076     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4077     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N");
4078     out.xml.addAttribute("draw:type", "mso-spt178");
4079     setShapeMirroring(o, out);
4080     equation(out,"f0","$0 ");
4081     equation(out,"f1","$1 ");
4082     equation(out,"f2","$2 ");
4083     equation(out,"f3","$3 ");
4084     equation(out,"f4","$4 ");
4085     equation(out,"f5","$5 ");
4086     equation(out,"f6","$6 ");
4087     equation(out,"f7","$7 ");
4088     out.xml.startElement("draw:handle");
4089     out.xml.addAttribute("draw:handle-position", "$0 $1");
4090     out.xml.endElement(); // draw:handle
4091     out.xml.startElement("draw:handle");
4092     out.xml.addAttribute("draw:handle-position", "$2 $3");
4093     out.xml.endElement(); // draw:handle
4094     out.xml.endElement(); // enhanced geometry
4095     out.xml.endElement(); // custom shape
4096 }
4097 
4098 
processCallout1(const MSO::OfficeArtSpContainer & o,Writer & out)4099 void ODrawToOdf::processCallout1(const MSO::OfficeArtSpContainer& o, Writer& out) {
4100     out.xml.startElement("draw:custom-shape");
4101     processStyleAndText(o, out);
4102 
4103     out.xml.startElement("draw:enhanced-geometry");
4104     processModifiers(o, out, QList<int>() << -8288<< 24500<< -1800<< 4000);
4105     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4106     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N");
4107     out.xml.addAttribute("draw:type", "mso-spt41");
4108     setShapeMirroring(o, out);
4109     equation(out,"f0","$0 ");
4110     equation(out,"f1","$1 ");
4111     equation(out,"f2","$2 ");
4112     equation(out,"f3","$3 ");
4113     equation(out,"f4","$4 ");
4114     equation(out,"f5","$5 ");
4115     equation(out,"f6","$6 ");
4116     equation(out,"f7","$7 ");
4117     out.xml.startElement("draw:handle");
4118     out.xml.addAttribute("draw:handle-position", "$0 $1");
4119     out.xml.endElement(); // draw:handle
4120     out.xml.startElement("draw:handle");
4121     out.xml.addAttribute("draw:handle-position", "$2 $3");
4122     out.xml.endElement(); // draw:handle
4123     out.xml.endElement(); // enhanced geometry
4124     out.xml.endElement(); // custom shape
4125 }
4126 
4127 
processCallout2(const MSO::OfficeArtSpContainer & o,Writer & out)4128 void ODrawToOdf::processCallout2(const MSO::OfficeArtSpContainer& o, Writer& out) {
4129     out.xml.startElement("draw:custom-shape");
4130     processStyleAndText(o, out);
4131 
4132     out.xml.startElement("draw:enhanced-geometry");
4133     processModifiers(o, out, QList<int>() << -10088<< 24500<< -3600<< 4000<< -1800<< 4000);
4134     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4135     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N M ?f2 ?f3 L ?f4 ?f5 N M");
4136     out.xml.addAttribute("draw:type", "mso-spt42");
4137     setShapeMirroring(o, out);
4138     equation(out,"f0","$0 ");
4139     equation(out,"f1","$1 ");
4140     equation(out,"f2","$2 ");
4141     equation(out,"f3","$3 ");
4142     equation(out,"f4","$4 ");
4143     equation(out,"f5","$5 ");
4144     equation(out,"f6","$6 ");
4145     equation(out,"f7","$7 ");
4146     out.xml.startElement("draw:handle");
4147     out.xml.addAttribute("draw:handle-position", "$0 $1");
4148     out.xml.endElement(); // draw:handle
4149     out.xml.startElement("draw:handle");
4150     out.xml.addAttribute("draw:handle-position", "$2 $3");
4151     out.xml.endElement(); // draw:handle
4152     out.xml.startElement("draw:handle");
4153     out.xml.addAttribute("draw:handle-position", "$4 $5");
4154     out.xml.endElement(); // draw:handle
4155     out.xml.endElement(); // enhanced geometry
4156     out.xml.endElement(); // custom shape
4157 }
4158 
4159 
processCallout3(const MSO::OfficeArtSpContainer & o,Writer & out)4160 void ODrawToOdf::processCallout3(const MSO::OfficeArtSpContainer& o, Writer& out) {
4161     out.xml.startElement("draw:custom-shape");
4162     processStyleAndText(o, out);
4163 
4164     out.xml.startElement("draw:enhanced-geometry");
4165     processModifiers(o, out, QList<int>() << 23400<< 24413<< 25200<< 21600<< 25200<< 4000<< 23400<< 4000);
4166     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4167     out.xml.addAttribute("draw:enhanced-path", "M 0 0 S L 21600 0 21600 21600 0 21600 Z N M ?f6 ?f7 F L ?f4 ?f5 ?f2 ?f3 ?f0 ?f1 N");
4168     out.xml.addAttribute("draw:type", "mso-spt43");
4169     setShapeMirroring(o, out);
4170     equation(out,"f0","$0 ");
4171     equation(out,"f1","$1 ");
4172     equation(out,"f2","$2 ");
4173     equation(out,"f3","$3 ");
4174     equation(out,"f4","$4 ");
4175     equation(out,"f5","$5 ");
4176     equation(out,"f6","$6 ");
4177     equation(out,"f7","$7 ");
4178     out.xml.startElement("draw:handle");
4179     out.xml.addAttribute("draw:handle-position", "$0 $1");
4180     out.xml.endElement(); // draw:handle
4181     out.xml.startElement("draw:handle");
4182     out.xml.addAttribute("draw:handle-position", "$2 $3");
4183     out.xml.endElement(); // draw:handle
4184     out.xml.startElement("draw:handle");
4185     out.xml.addAttribute("draw:handle-position", "$4 $5");
4186     out.xml.endElement(); // draw:handle
4187     out.xml.startElement("draw:handle");
4188     out.xml.addAttribute("draw:handle-position", "$6 $7");
4189     out.xml.endElement(); // draw:handle
4190     out.xml.endElement(); // enhanced geometry
4191     out.xml.endElement(); // custom shape
4192 }
4193 
4194 
processAccentBorderCallout90(const MSO::OfficeArtSpContainer & o,Writer & out)4195 void ODrawToOdf::processAccentBorderCallout90(const MSO::OfficeArtSpContainer& o, Writer& out) {
4196     out.xml.startElement("draw:custom-shape");
4197     processStyleAndText(o, out);
4198 
4199     out.xml.startElement("draw:enhanced-geometry");
4200     processModifiers(o, out, QList<int>() << -1800<< 22950<< -1800<< 2700);
4201     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4202     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N");
4203     out.xml.addAttribute("draw:type", "line-callout-3");
4204     setShapeMirroring(o, out);
4205     equation(out,"f0","$0 ");
4206     equation(out,"f1","$1 ");
4207     equation(out,"f2","$2 ");
4208     equation(out,"f3","$3 ");
4209     equation(out,"f4","$4 ");
4210     equation(out,"f5","$5 ");
4211     equation(out,"f6","$6 ");
4212     equation(out,"f7","$7 ");
4213     out.xml.startElement("draw:handle");
4214     out.xml.addAttribute("draw:handle-position", "$0 $1");
4215     out.xml.endElement(); // draw:handle
4216     out.xml.startElement("draw:handle");
4217     out.xml.addAttribute("draw:handle-position", "$2 $3");
4218     out.xml.endElement(); // draw:handle
4219     out.xml.endElement(); // enhanced geometry
4220     out.xml.endElement(); // custom shape
4221 }
4222 
4223 
processAccentBorderCallout1(const MSO::OfficeArtSpContainer & o,Writer & out)4224 void ODrawToOdf::processAccentBorderCallout1(const MSO::OfficeArtSpContainer& o, Writer& out) {
4225     out.xml.startElement("draw:custom-shape");
4226     processStyleAndText(o, out);
4227 
4228     out.xml.startElement("draw:enhanced-geometry");
4229     processModifiers(o, out, QList<int>() << -8288<< 24500<< -1800<< 4000);
4230     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4231     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N M ?f2 0 L ?f2 21600 N");
4232     out.xml.addAttribute("draw:type", "mso-spt50");
4233     setShapeMirroring(o, out);
4234     equation(out,"f0","$0 ");
4235     equation(out,"f1","$1 ");
4236     equation(out,"f2","$2 ");
4237     equation(out,"f3","$3 ");
4238     equation(out,"f4","$4 ");
4239     equation(out,"f5","$5 ");
4240     equation(out,"f6","$6 ");
4241     equation(out,"f7","$7 ");
4242     out.xml.startElement("draw:handle");
4243     out.xml.addAttribute("draw:handle-position", "$0 $1");
4244     out.xml.endElement(); // draw:handle
4245     out.xml.startElement("draw:handle");
4246     out.xml.addAttribute("draw:handle-position", "$2 $3");
4247     out.xml.endElement(); // draw:handle
4248     out.xml.endElement(); // enhanced geometry
4249     out.xml.endElement(); // custom shape
4250 }
4251 
4252 
processAccentBorderCallout2(const MSO::OfficeArtSpContainer & o,Writer & out)4253 void ODrawToOdf::processAccentBorderCallout2(const MSO::OfficeArtSpContainer& o, Writer& out) {
4254     out.xml.startElement("draw:custom-shape");
4255     processStyleAndText(o, out);
4256 
4257     out.xml.startElement("draw:enhanced-geometry");
4258     processModifiers(o, out, QList<int>() << -10088<< 24500<< -3600<< 4000<< -1800<< 4000);
4259     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4260     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f0 ?f1 L ?f2 ?f3 N M ?f2 ?f3 L ?f4 ?f5 N M ?f4 0 L ?f4 21600 N M");
4261     out.xml.addAttribute("draw:type", "mso-spt51");
4262     setShapeMirroring(o, out);
4263     equation(out,"f0","$0 ");
4264     equation(out,"f1","$1 ");
4265     equation(out,"f2","$2 ");
4266     equation(out,"f3","$3 ");
4267     equation(out,"f4","$4 ");
4268     equation(out,"f5","$5 ");
4269     equation(out,"f6","$6 ");
4270     equation(out,"f7","$7 ");
4271     out.xml.startElement("draw:handle");
4272     out.xml.addAttribute("draw:handle-position", "$0 $1");
4273     out.xml.endElement(); // draw:handle
4274     out.xml.startElement("draw:handle");
4275     out.xml.addAttribute("draw:handle-position", "$2 $3");
4276     out.xml.endElement(); // draw:handle
4277     out.xml.startElement("draw:handle");
4278     out.xml.addAttribute("draw:handle-position", "$4 $5");
4279     out.xml.endElement(); // draw:handle
4280     out.xml.endElement(); // enhanced geometry
4281     out.xml.endElement(); // custom shape
4282 }
4283 
4284 
processAccentBorderCallout3(const MSO::OfficeArtSpContainer & o,Writer & out)4285 void ODrawToOdf::processAccentBorderCallout3(const MSO::OfficeArtSpContainer& o, Writer& out) {
4286     out.xml.startElement("draw:custom-shape");
4287     processStyleAndText(o, out);
4288 
4289     out.xml.startElement("draw:enhanced-geometry");
4290     processModifiers(o, out, QList<int>() << 23400<< 24413<< 25200<< 21600<< 25200<< 4000<< 23400<< 4000);
4291     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4292     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M ?f6 ?f7 F L ?f4 ?f5 ?f2 ?f3 ?f0 ?f1 N M ?f6 0 L ?f6 21600 N");
4293     out.xml.addAttribute("draw:type", "mso-spt52");
4294     setShapeMirroring(o, out);
4295     equation(out,"f0","$0 ");
4296     equation(out,"f1","$1 ");
4297     equation(out,"f2","$2 ");
4298     equation(out,"f3","$3 ");
4299     equation(out,"f4","$4 ");
4300     equation(out,"f5","$5 ");
4301     equation(out,"f6","$6 ");
4302     equation(out,"f7","$7 ");
4303     out.xml.startElement("draw:handle");
4304     out.xml.addAttribute("draw:handle-position", "$0 $1");
4305     out.xml.endElement(); // draw:handle
4306     out.xml.startElement("draw:handle");
4307     out.xml.addAttribute("draw:handle-position", "$2 $3");
4308     out.xml.endElement(); // draw:handle
4309     out.xml.startElement("draw:handle");
4310     out.xml.addAttribute("draw:handle-position", "$4 $5");
4311     out.xml.endElement(); // draw:handle
4312     out.xml.startElement("draw:handle");
4313     out.xml.addAttribute("draw:handle-position", "$6 $7");
4314     out.xml.endElement(); // draw:handle
4315     out.xml.endElement(); // enhanced geometry
4316     out.xml.endElement(); // custom shape
4317 }
4318 
4319 
processActionButtonBlank(const MSO::OfficeArtSpContainer & o,Writer & out)4320 void ODrawToOdf::processActionButtonBlank(const MSO::OfficeArtSpContainer& o, Writer& out) {
4321     out.xml.startElement("draw:custom-shape");
4322     processStyleAndText(o, out);
4323 
4324     out.xml.startElement("draw:enhanced-geometry");
4325     processModifiers(o, out, QList<int>() << 1400);
4326     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4327     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4328     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4329     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f1 ?f0 ?f0 ?f0 Z N M 21600 0 L 21600 21600 ?f1 ?f2 ?f1 ?f0 Z N M 21600 21600 L 0 21600 ?f0 ?f2 ?f1 ?f2 Z N M 0 21600 L 0 0 ?f0 ?f0 ?f0 ?f2 Z N");
4330     out.xml.addAttribute("draw:type", "mso-spt189");
4331     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f1 ?f2");
4332     setShapeMirroring(o, out);
4333     equation(out,"f0","$0 *21599/21600");
4334     equation(out,"f1","right-?f0 ");
4335     equation(out,"f2","bottom-?f0 ");
4336     out.xml.startElement("draw:handle");
4337     out.xml.addAttribute("draw:handle-position", "$0 top");
4338     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4339     out.xml.addAttribute("draw:handle-switched", "true");
4340     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4341     out.xml.endElement(); // draw:handle
4342     out.xml.endElement(); // enhanced geometry
4343     out.xml.endElement(); // custom shape
4344 }
4345 
4346 
processActionButtonHome(const MSO::OfficeArtSpContainer & o,Writer & out)4347 void ODrawToOdf::processActionButtonHome(const MSO::OfficeArtSpContainer& o, Writer& out) {
4348     out.xml.startElement("draw:custom-shape");
4349     processStyleAndText(o, out);
4350 
4351     out.xml.startElement("draw:enhanced-geometry");
4352     processModifiers(o, out, QList<int>() << 1400);
4353     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4354     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4355     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4356     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f7 ?f10 L ?f12 ?f14 ?f12 ?f16 ?f18 ?f16 ?f18 ?f20 ?f22 ?f8 ?f24 ?f8 ?f24 ?f26 ?f28 ?f26 ?f28 ?f8 ?f30 ?f8 Z N M ?f12 ?f14 L ?f12 ?f16 ?f18 ?f16 ?f18 ?f20 Z N M ?f32 ?f36 L ?f34 ?f36 ?f34 ?f26 ?f24 ?f26 ?f24 ?f8 ?f28 ?f8 ?f28 ?f26 ?f32 ?f26 Z N");
4357     out.xml.addAttribute("draw:type", "mso-spt190");
4358     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4359     setShapeMirroring(o, out);
4360     equation(out,"f0","$0 ");
4361     equation(out,"f1","left+$0 ");
4362     equation(out,"f2","top+$0 ");
4363     equation(out,"f3","right-$0 ");
4364     equation(out,"f4","bottom-$0 ");
4365     equation(out,"f5","10800-$0 ");
4366     equation(out,"f6","?f5 /10800");
4367     equation(out,"f7","right/2");
4368     equation(out,"f8","bottom/2");
4369     equation(out,"f9","-8000*?f6 ");
4370     equation(out,"f10","?f9 +?f8 ");
4371     equation(out,"f11","2960*?f6 ");
4372     equation(out,"f12","?f11 +?f7 ");
4373     equation(out,"f13","-5000*?f6 ");
4374     equation(out,"f14","?f13 +?f8 ");
4375     equation(out,"f15","-7000*?f6 ");
4376     equation(out,"f16","?f15 +?f8 ");
4377     equation(out,"f17","5000*?f6 ");
4378     equation(out,"f18","?f17 +?f7 ");
4379     equation(out,"f19","-2960*?f6 ");
4380     equation(out,"f20","?f19 +?f8 ");
4381     equation(out,"f21","8000*?f6 ");
4382     equation(out,"f22","?f21 +?f7 ");
4383     equation(out,"f23","6100*?f6 ");
4384     equation(out,"f24","?f23 +?f7 ");
4385     equation(out,"f25","8260*?f6 ");
4386     equation(out,"f26","?f25 +?f8 ");
4387     equation(out,"f27","-6100*?f6 ");
4388     equation(out,"f28","?f27 +?f7 ");
4389     equation(out,"f29","-8000*?f6 ");
4390     equation(out,"f30","?f29 +?f7 ");
4391     equation(out,"f31","-1060*?f6 ");
4392     equation(out,"f32","?f31 +?f7 ");
4393     equation(out,"f33","1060*?f6 ");
4394     equation(out,"f34","?f33 +?f7 ");
4395     equation(out,"f35","4020*?f6 ");
4396     equation(out,"f36","?f35 +?f8 ");
4397     out.xml.startElement("draw:handle");
4398     out.xml.addAttribute("draw:handle-position", "$0 top");
4399     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4400     out.xml.addAttribute("draw:handle-switched", "true");
4401     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4402     out.xml.endElement(); // draw:handle
4403     out.xml.endElement(); // enhanced geometry
4404     out.xml.endElement(); // custom shape
4405 }
4406 
4407 
processActionButtonHelp(const MSO::OfficeArtSpContainer & o,Writer & out)4408 void ODrawToOdf::processActionButtonHelp(const MSO::OfficeArtSpContainer& o, Writer& out) {
4409     out.xml.startElement("draw:custom-shape");
4410     processStyleAndText(o, out);
4411 
4412     out.xml.startElement("draw:enhanced-geometry");
4413     processModifiers(o, out, QList<int>() << 1400);
4414     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4415     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4416     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4417     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f7 ?f12 X ?f10 ?f62 ?f7 ?f16 ?f14 ?f62 ?f7 ?f12 Z N M ?f18 ?f20 L ?f18 ?f22 C ?f18 ?f24 ?f26 ?f8 ?f28 ?f8 ?f30 ?f8 ?f32 ?f34 ?f32 ?f36 ?f32 ?f38 ?f40 ?f42 ?f7 ?f42 ?f44 ?f42 ?f46 ?f38 ?f46 ?f36 L ?f48 ?f36 C ?f48 ?f50 ?f52 ?f54 ?f7 ?f54 ?f18 ?f54 ?f28 ?f50 ?f28 ?f36 ?f28 ?f56 ?f58 ?f60 ?f18 ?f60 ?f7 ?f60 ?f52 ?f8 ?f52 ?f22 L ?f52 ?f20 Z N");
4418     out.xml.addAttribute("draw:type", "mso-spt191");
4419     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4420     setShapeMirroring(o, out);
4421     equation(out,"f0","$0 ");
4422     equation(out,"f1","left+$0 ");
4423     equation(out,"f2","top+$0 ");
4424     equation(out,"f3","right-$0 ");
4425     equation(out,"f4","bottom-$0 ");
4426     equation(out,"f5","10800-$0 ");
4427     equation(out,"f6","?f5 /10800");
4428     equation(out,"f7","right/2");
4429     equation(out,"f8","bottom/2");
4430     equation(out,"f9","-1690*?f6 ");
4431     equation(out,"f10","?f9 +?f7 ");
4432     equation(out,"f11","4600*?f6 ");
4433     equation(out,"f12","?f11 +?f8 ");
4434     equation(out,"f13","1690*?f6 ");
4435     equation(out,"f14","?f13 +?f7 ");
4436     equation(out,"f15","7980*?f6 ");
4437     equation(out,"f16","?f15 +?f8 ");
4438     equation(out,"f17","1270*?f6 ");
4439     equation(out,"f18","?f17 +?f7 ");
4440     equation(out,"f19","4000*?f6 ");
4441     equation(out,"f20","?f19 +?f8 ");
4442     equation(out,"f21","1750*?f6 ");
4443     equation(out,"f22","?f21 +?f8 ");
4444     equation(out,"f23","800*?f6 ");
4445     equation(out,"f24","?f23 +?f8 ");
4446     equation(out,"f25","1650*?f6 ");
4447     equation(out,"f26","?f25 +?f7 ");
4448     equation(out,"f27","2340*?f6 ");
4449     equation(out,"f28","?f27 +?f7 ");
4450     equation(out,"f29","3640*?f6 ");
4451     equation(out,"f30","?f29 +?f7 ");
4452     equation(out,"f31","4670*?f6 ");
4453     equation(out,"f32","?f31 +?f7 ");
4454     equation(out,"f33","-1570*?f6 ");
4455     equation(out,"f34","?f33 +?f8 ");
4456     equation(out,"f35","-3390*?f6 ");
4457     equation(out,"f36","?f35 +?f8 ");
4458     equation(out,"f37","-6050*?f6 ");
4459     equation(out,"f38","?f37 +?f8 ");
4460     equation(out,"f39","2540*?f6 ");
4461     equation(out,"f40","?f39 +?f7 ");
4462     equation(out,"f41","-8050*?f6 ");
4463     equation(out,"f42","?f41 +?f8 ");
4464     equation(out,"f43","-2540*?f6 ");
4465     equation(out,"f44","?f43 +?f7 ");
4466     equation(out,"f45","-4460*?f6 ");
4467     equation(out,"f46","?f45 +?f7 ");
4468     equation(out,"f47","-2330*?f6 ");
4469     equation(out,"f48","?f47 +?f7 ");
4470     equation(out,"f49","-4700*?f6 ");
4471     equation(out,"f50","?f49 +?f8 ");
4472     equation(out,"f51","-1270*?f6 ");
4473     equation(out,"f52","?f51 +?f7 ");
4474     equation(out,"f53","-5720*?f6 ");
4475     equation(out,"f54","?f53 +?f8 ");
4476     equation(out,"f55","-2540*?f6 ");
4477     equation(out,"f56","?f55 +?f8 ");
4478     equation(out,"f57","1800*?f6 ");
4479     equation(out,"f58","?f57 +?f7 ");
4480     equation(out,"f59","-1700*?f6 ");
4481     equation(out,"f60","?f59 +?f8 ");
4482     equation(out,"f61","6290*?f6 ");
4483     equation(out,"f62","?f61 +?f8 ");
4484     out.xml.startElement("draw:handle");
4485     out.xml.addAttribute("draw:handle-position", "$0 top");
4486     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4487     out.xml.addAttribute("draw:handle-switched", "true");
4488     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4489     out.xml.endElement(); // draw:handle
4490     out.xml.endElement(); // enhanced geometry
4491     out.xml.endElement(); // custom shape
4492 }
4493 
4494 
processActionButtonInformation(const MSO::OfficeArtSpContainer & o,Writer & out)4495 void ODrawToOdf::processActionButtonInformation(const MSO::OfficeArtSpContainer& o, Writer& out) {
4496     out.xml.startElement("draw:custom-shape");
4497     processStyleAndText(o, out);
4498 
4499     out.xml.startElement("draw:enhanced-geometry");
4500     processModifiers(o, out, QList<int>() << 1400);
4501     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4502     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4503     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4504     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f7 ?f12 X ?f10 ?f8 ?f7 ?f16 ?f14 ?f8 ?f7 ?f12 Z N M ?f7 ?f20 X ?f18 ?f42 ?f7 ?f24 ?f22 ?f42 ?f7 ?f20 Z N M ?f26 ?f28 L ?f30 ?f28 ?f30 ?f32 ?f34 ?f32 ?f34 ?f36 ?f26 ?f36 ?f26 ?f32 ?f38 ?f32 ?f38 ?f40 ?f26 ?f40 Z N");
4505     out.xml.addAttribute("draw:type", "mso-spt192");
4506     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4507     setShapeMirroring(o, out);
4508     equation(out,"f0","$0 ");
4509     equation(out,"f1","left+$0 ");
4510     equation(out,"f2","top+$0 ");
4511     equation(out,"f3","right-$0 ");
4512     equation(out,"f4","bottom-$0 ");
4513     equation(out,"f5","10800-$0 ");
4514     equation(out,"f6","?f5 /10800");
4515     equation(out,"f7","right/2");
4516     equation(out,"f8","bottom/2");
4517     equation(out,"f9","-8050*?f6 ");
4518     equation(out,"f10","?f9 +?f7 ");
4519     equation(out,"f11","-8050*?f6 ");
4520     equation(out,"f12","?f11 +?f8 ");
4521     equation(out,"f13","8050*?f6 ");
4522     equation(out,"f14","?f13 +?f7 ");
4523     equation(out,"f15","8050*?f6 ");
4524     equation(out,"f16","?f15 +?f8 ");
4525     equation(out,"f17","-2060*?f6 ");
4526     equation(out,"f18","?f17 +?f7 ");
4527     equation(out,"f19","-7620*?f6 ");
4528     equation(out,"f20","?f19 +?f8 ");
4529     equation(out,"f21","2060*?f6 ");
4530     equation(out,"f22","?f21 +?f7 ");
4531     equation(out,"f23","-3500*?f6 ");
4532     equation(out,"f24","?f23 +?f8 ");
4533     equation(out,"f25","-2960*?f6 ");
4534     equation(out,"f26","?f25 +?f7 ");
4535     equation(out,"f27","-2960*?f6 ");
4536     equation(out,"f28","?f27 +?f8 ");
4537     equation(out,"f29","1480*?f6 ");
4538     equation(out,"f30","?f29 +?f7 ");
4539     equation(out,"f31","5080*?f6 ");
4540     equation(out,"f32","?f31 +?f8 ");
4541     equation(out,"f33","2960*?f6 ");
4542     equation(out,"f34","?f33 +?f7 ");
4543     equation(out,"f35","6140*?f6 ");
4544     equation(out,"f36","?f35 +?f8 ");
4545     equation(out,"f37","-1480*?f6 ");
4546     equation(out,"f38","?f37 +?f7 ");
4547     equation(out,"f39","-1920*?f6 ");
4548     equation(out,"f40","?f39 +?f8 ");
4549     equation(out,"f41","-5560*?f6 ");
4550     equation(out,"f42","?f41 +?f8 ");
4551     out.xml.startElement("draw:handle");
4552     out.xml.addAttribute("draw:handle-position", "$0 top");
4553     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4554     out.xml.addAttribute("draw:handle-switched", "true");
4555     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4556     out.xml.endElement(); // draw:handle
4557     out.xml.endElement(); // enhanced geometry
4558     out.xml.endElement(); // custom shape
4559 }
4560 
4561 
processActionButtonBackPrevious(const MSO::OfficeArtSpContainer & o,Writer & out)4562 void ODrawToOdf::processActionButtonBackPrevious(const MSO::OfficeArtSpContainer& o, Writer& out) {
4563     out.xml.startElement("draw:custom-shape");
4564     processStyleAndText(o, out);
4565 
4566     out.xml.startElement("draw:enhanced-geometry");
4567     processModifiers(o, out, QList<int>() << 1400);
4568     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4569     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4570     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4571     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f10 ?f8 L ?f14 ?f12 ?f14 ?f16 Z N");
4572     out.xml.addAttribute("draw:type", "mso-spt194");
4573     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4574     setShapeMirroring(o, out);
4575     equation(out,"f0","$0 ");
4576     equation(out,"f1","left+$0 ");
4577     equation(out,"f2","top+$0 ");
4578     equation(out,"f3","right-$0 ");
4579     equation(out,"f4","bottom-$0 ");
4580     equation(out,"f5","10800-$0 ");
4581     equation(out,"f6","?f5 /10800");
4582     equation(out,"f7","right/2");
4583     equation(out,"f8","bottom/2");
4584     equation(out,"f9","-8050*?f6 ");
4585     equation(out,"f10","?f9 +?f7 ");
4586     equation(out,"f11","-8050*?f6 ");
4587     equation(out,"f12","?f11 +?f8 ");
4588     equation(out,"f13","8050*?f6 ");
4589     equation(out,"f14","?f13 +?f7 ");
4590     equation(out,"f15","8050*?f6 ");
4591     equation(out,"f16","?f15 +?f8 ");
4592     out.xml.startElement("draw:handle");
4593     out.xml.addAttribute("draw:handle-position", "$0 top");
4594     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4595     out.xml.addAttribute("draw:handle-switched", "true");
4596     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4597     out.xml.endElement(); // draw:handle
4598     out.xml.endElement(); // enhanced geometry
4599     out.xml.endElement(); // custom shape
4600 }
4601 
4602 
processActionButtonForwardNext(const MSO::OfficeArtSpContainer & o,Writer & out)4603 void ODrawToOdf::processActionButtonForwardNext(const MSO::OfficeArtSpContainer& o, Writer& out) {
4604     out.xml.startElement("draw:custom-shape");
4605     processStyleAndText(o, out);
4606 
4607     out.xml.startElement("draw:enhanced-geometry");
4608     processModifiers(o, out, QList<int>() << 1400);
4609     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4610     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4611     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4612     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f10 ?f12 L ?f14 ?f8 ?f10 ?f16 Z N");
4613     out.xml.addAttribute("draw:type", "mso-spt193");
4614     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4615     setShapeMirroring(o, out);
4616     equation(out,"f0","$0 ");
4617     equation(out,"f1","left+$0 ");
4618     equation(out,"f2","top+$0 ");
4619     equation(out,"f3","right-$0 ");
4620     equation(out,"f4","bottom-$0 ");
4621     equation(out,"f5","10800-$0 ");
4622     equation(out,"f6","?f5 /10800");
4623     equation(out,"f7","right/2");
4624     equation(out,"f8","bottom/2");
4625     equation(out,"f9","-8050*?f6 ");
4626     equation(out,"f10","?f9 +?f7 ");
4627     equation(out,"f11","-8050*?f6 ");
4628     equation(out,"f12","?f11 +?f8 ");
4629     equation(out,"f13","8050*?f6 ");
4630     equation(out,"f14","?f13 +?f7 ");
4631     equation(out,"f15","8050*?f6 ");
4632     equation(out,"f16","?f15 +?f8 ");
4633     out.xml.startElement("draw:handle");
4634     out.xml.addAttribute("draw:handle-position", "$0 top");
4635     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4636     out.xml.addAttribute("draw:handle-switched", "true");
4637     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4638     out.xml.endElement(); // draw:handle
4639     out.xml.endElement(); // enhanced geometry
4640     out.xml.endElement(); // custom shape
4641 }
4642 
4643 
processActionButtonBeginning(const MSO::OfficeArtSpContainer & o,Writer & out)4644 void ODrawToOdf::processActionButtonBeginning(const MSO::OfficeArtSpContainer& o, Writer& out) {
4645     out.xml.startElement("draw:custom-shape");
4646     processStyleAndText(o, out);
4647 
4648     out.xml.startElement("draw:enhanced-geometry");
4649     processModifiers(o, out, QList<int>() << 1400);
4650     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4651     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4652     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4653     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f10 ?f8 L ?f14 ?f12 ?f14 ?f16 Z N M ?f18 ?f12 L ?f20 ?f12 ?f20 ?f16 ?f18 ?f16 Z N");
4654     out.xml.addAttribute("draw:type", "mso-spt196");
4655     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4656     setShapeMirroring(o, out);
4657     equation(out,"f0","$0 ");
4658     equation(out,"f1","left+$0 ");
4659     equation(out,"f2","top+$0 ");
4660     equation(out,"f3","right-$0 ");
4661     equation(out,"f4","bottom-$0 ");
4662     equation(out,"f5","10800-$0 ");
4663     equation(out,"f6","?f5 /10800");
4664     equation(out,"f7","right/2");
4665     equation(out,"f8","bottom/2");
4666     equation(out,"f9","-4020*?f6 ");
4667     equation(out,"f10","?f9 +?f7 ");
4668     equation(out,"f11","-8050*?f6 ");
4669     equation(out,"f12","?f11 +?f8 ");
4670     equation(out,"f13","8050*?f6 ");
4671     equation(out,"f14","?f13 +?f7 ");
4672     equation(out,"f15","8050*?f6 ");
4673     equation(out,"f16","?f15 +?f8 ");
4674     equation(out,"f17","-8050*?f6 ");
4675     equation(out,"f18","?f17 +?f7 ");
4676     equation(out,"f19","-6140*?f6 ");
4677     equation(out,"f20","?f19 +?f7 ");
4678     equation(out,"f21","4020*?f6 ");
4679     equation(out,"f22","?f21 +?f7 ");
4680     equation(out,"f23","6140*?f6 ");
4681     equation(out,"f24","?f23 +?f7 ");
4682     out.xml.startElement("draw:handle");
4683     out.xml.addAttribute("draw:handle-position", "$0 top");
4684     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4685     out.xml.addAttribute("draw:handle-switched", "true");
4686     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4687     out.xml.endElement(); // draw:handle
4688     out.xml.endElement(); // enhanced geometry
4689     out.xml.endElement(); // custom shape
4690 }
4691 
4692 
processActionButtonEnd(const MSO::OfficeArtSpContainer & o,Writer & out)4693 void ODrawToOdf::processActionButtonEnd(const MSO::OfficeArtSpContainer& o, Writer& out) {
4694     out.xml.startElement("draw:custom-shape");
4695     processStyleAndText(o, out);
4696 
4697     out.xml.startElement("draw:enhanced-geometry");
4698     processModifiers(o, out, QList<int>() << 1400);
4699     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4700     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4701     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4702     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f22 ?f8 L ?f18 ?f16 ?f18 ?f12 Z N M ?f24 ?f12 L ?f24 ?f16 ?f14 ?f16 ?f14 ?f12 Z N");
4703     out.xml.addAttribute("draw:type", "mso-spt195");
4704     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4705     setShapeMirroring(o, out);
4706     equation(out,"f0","$0 ");
4707     equation(out,"f1","left+$0 ");
4708     equation(out,"f2","top+$0 ");
4709     equation(out,"f3","right-$0 ");
4710     equation(out,"f4","bottom-$0 ");
4711     equation(out,"f5","10800-$0 ");
4712     equation(out,"f6","?f5 /10800");
4713     equation(out,"f7","right/2");
4714     equation(out,"f8","bottom/2");
4715     equation(out,"f9","-4020*?f6 ");
4716     equation(out,"f10","?f9 +?f7 ");
4717     equation(out,"f11","-8050*?f6 ");
4718     equation(out,"f12","?f11 +?f8 ");
4719     equation(out,"f13","8050*?f6 ");
4720     equation(out,"f14","?f13 +?f7 ");
4721     equation(out,"f15","8050*?f6 ");
4722     equation(out,"f16","?f15 +?f8 ");
4723     equation(out,"f17","-8050*?f6 ");
4724     equation(out,"f18","?f17 +?f7 ");
4725     equation(out,"f19","-6140*?f6 ");
4726     equation(out,"f20","?f19 +?f7 ");
4727     equation(out,"f21","4020*?f6 ");
4728     equation(out,"f22","?f21 +?f7 ");
4729     equation(out,"f23","6140*?f6 ");
4730     equation(out,"f24","?f23 +?f7 ");
4731     out.xml.startElement("draw:handle");
4732     out.xml.addAttribute("draw:handle-position", "$0 top");
4733     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4734     out.xml.addAttribute("draw:handle-switched", "true");
4735     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4736     out.xml.endElement(); // draw:handle
4737     out.xml.endElement(); // enhanced geometry
4738     out.xml.endElement(); // custom shape
4739 }
4740 
4741 
processActionButtonReturn(const MSO::OfficeArtSpContainer & o,Writer & out)4742 void ODrawToOdf::processActionButtonReturn(const MSO::OfficeArtSpContainer& o, Writer& out) {
4743     out.xml.startElement("draw:custom-shape");
4744     processStyleAndText(o, out);
4745 
4746     out.xml.startElement("draw:enhanced-geometry");
4747     processModifiers(o, out, QList<int>() << 1400);
4748     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4749     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4750     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4751     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f10 ?f12 L ?f14 ?f12 ?f14 ?f16 C ?f14 ?f18 ?f20 ?f22 ?f24 ?f22 L ?f7 ?f22 C ?f26 ?f22 ?f28 ?f18 ?f28 ?f16 L ?f28 ?f12 ?f7 ?f12 ?f30 ?f32 ?f34 ?f12 ?f36 ?f12 ?f36 ?f16 C ?f36 ?f38 ?f40 ?f42 ?f7 ?f42 L ?f24 ?f42 C ?f44 ?f42 ?f10 ?f38 ?f10 ?f16 Z N");
4752     out.xml.addAttribute("draw:type", "mso-spt197");
4753     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4754     setShapeMirroring(o, out);
4755     equation(out,"f0","$0 ");
4756     equation(out,"f1","left+$0 ");
4757     equation(out,"f2","top+$0 ");
4758     equation(out,"f3","right-$0 ");
4759     equation(out,"f4","bottom-$0 ");
4760     equation(out,"f5","10800-$0 ");
4761     equation(out,"f6","?f5 /10800");
4762     equation(out,"f7","right/2");
4763     equation(out,"f8","bottom/2");
4764     equation(out,"f9","-8050*?f6 ");
4765     equation(out,"f10","?f9 +?f7 ");
4766     equation(out,"f11","-3800*?f6 ");
4767     equation(out,"f12","?f11 +?f8 ");
4768     equation(out,"f13","-4020*?f6 ");
4769     equation(out,"f14","?f13 +?f7 ");
4770     equation(out,"f15","2330*?f6 ");
4771     equation(out,"f16","?f15 +?f8 ");
4772     equation(out,"f17","3390*?f6 ");
4773     equation(out,"f18","?f17 +?f8 ");
4774     equation(out,"f19","-3100*?f6 ");
4775     equation(out,"f20","?f19 +?f7 ");
4776     equation(out,"f21","4230*?f6 ");
4777     equation(out,"f22","?f21 +?f8 ");
4778     equation(out,"f23","-1910*?f6 ");
4779     equation(out,"f24","?f23 +?f7 ");
4780     equation(out,"f25","1190*?f6 ");
4781     equation(out,"f26","?f25 +?f7 ");
4782     equation(out,"f27","2110*?f6 ");
4783     equation(out,"f28","?f27 +?f7 ");
4784     equation(out,"f29","4030*?f6 ");
4785     equation(out,"f30","?f29 +?f7 ");
4786     equation(out,"f31","-7830*?f6 ");
4787     equation(out,"f32","?f31 +?f8 ");
4788     equation(out,"f33","8250*?f6 ");
4789     equation(out,"f34","?f33 +?f7 ");
4790     equation(out,"f35","6140*?f6 ");
4791     equation(out,"f36","?f35 +?f7 ");
4792     equation(out,"f37","5510*?f6 ");
4793     equation(out,"f38","?f37 +?f8 ");
4794     equation(out,"f39","3180*?f6 ");
4795     equation(out,"f40","?f39 +?f7 ");
4796     equation(out,"f41","8450*?f6 ");
4797     equation(out,"f42","?f41 +?f8 ");
4798     equation(out,"f43","-5090*?f6 ");
4799     equation(out,"f44","?f43 +?f7 ");
4800     out.xml.startElement("draw:handle");
4801     out.xml.addAttribute("draw:handle-position", "$0 top");
4802     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4803     out.xml.addAttribute("draw:handle-switched", "true");
4804     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4805     out.xml.endElement(); // draw:handle
4806     out.xml.endElement(); // enhanced geometry
4807     out.xml.endElement(); // custom shape
4808 }
4809 
4810 
processActionButtonDocument(const MSO::OfficeArtSpContainer & o,Writer & out)4811 void ODrawToOdf::processActionButtonDocument(const MSO::OfficeArtSpContainer& o, Writer& out) {
4812     out.xml.startElement("draw:custom-shape");
4813     processStyleAndText(o, out);
4814 
4815     out.xml.startElement("draw:enhanced-geometry");
4816     processModifiers(o, out, QList<int>() << 1400);
4817     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4818     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4819     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4820     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f10 ?f12 L ?f14 ?f12 ?f16 ?f18 ?f16 ?f20 ?f10 ?f20 Z N M ?f14 ?f12 L ?f16 ?f18 ?f14 ?f18 Z N");
4821     out.xml.addAttribute("draw:type", "mso-spt198");
4822     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4823     setShapeMirroring(o, out);
4824     equation(out,"f0","$0 ");
4825     equation(out,"f1","left+$0 ");
4826     equation(out,"f2","top+$0 ");
4827     equation(out,"f3","right-$0 ");
4828     equation(out,"f4","bottom-$0 ");
4829     equation(out,"f5","10800-$0 ");
4830     equation(out,"f6","?f5 /10800");
4831     equation(out,"f7","right/2");
4832     equation(out,"f8","bottom/2");
4833     equation(out,"f9","-6350*?f6 ");
4834     equation(out,"f10","?f9 +?f7 ");
4835     equation(out,"f11","-7830*?f6 ");
4836     equation(out,"f12","?f11 +?f8 ");
4837     equation(out,"f13","1690*?f6 ");
4838     equation(out,"f14","?f13 +?f7 ");
4839     equation(out,"f15","6350*?f6 ");
4840     equation(out,"f16","?f15 +?f7 ");
4841     equation(out,"f17","-3810*?f6 ");
4842     equation(out,"f18","?f17 +?f8 ");
4843     equation(out,"f19","7830*?f6 ");
4844     equation(out,"f20","?f19 +?f8 ");
4845     out.xml.startElement("draw:handle");
4846     out.xml.addAttribute("draw:handle-position", "$0 top");
4847     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4848     out.xml.addAttribute("draw:handle-switched", "true");
4849     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4850     out.xml.endElement(); // draw:handle
4851     out.xml.endElement(); // enhanced geometry
4852     out.xml.endElement(); // custom shape
4853 }
4854 
4855 
processActionButtonSound(const MSO::OfficeArtSpContainer & o,Writer & out)4856 void ODrawToOdf::processActionButtonSound(const MSO::OfficeArtSpContainer& o, Writer& out) {
4857     out.xml.startElement("draw:custom-shape");
4858     processStyleAndText(o, out);
4859 
4860     out.xml.startElement("draw:enhanced-geometry");
4861     processModifiers(o, out, QList<int>() << 1400);
4862     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4863     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4864     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4865     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f10 ?f12 L ?f14 ?f12 ?f16 ?f18 ?f16 ?f20 ?f14 ?f22 ?f10 ?f22 Z N M ?f24 ?f8 L ?f26 ?f8 N M ?f24 ?f12 L ?f26 ?f28 N M ?f24 ?f22 L ?f26 ?f30 N");
4866     out.xml.addAttribute("draw:type", "mso-spt199");
4867     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4868     setShapeMirroring(o, out);
4869     equation(out,"f0","$0 ");
4870     equation(out,"f1","left+$0 ");
4871     equation(out,"f2","top+$0 ");
4872     equation(out,"f3","right-$0 ");
4873     equation(out,"f4","bottom-$0 ");
4874     equation(out,"f5","10800-$0 ");
4875     equation(out,"f6","?f5 /10800");
4876     equation(out,"f7","right/2");
4877     equation(out,"f8","bottom/2");
4878     equation(out,"f9","-8050*?f6 ");
4879     equation(out,"f10","?f9 +?f7 ");
4880     equation(out,"f11","-2750*?f6 ");
4881     equation(out,"f12","?f11 +?f8 ");
4882     equation(out,"f13","-2960*?f6 ");
4883     equation(out,"f14","?f13 +?f7 ");
4884     equation(out,"f15","2120*?f6 ");
4885     equation(out,"f16","?f15 +?f7 ");
4886     equation(out,"f17","-8050*?f6 ");
4887     equation(out,"f18","?f17 +?f8 ");
4888     equation(out,"f19","8050*?f6 ");
4889     equation(out,"f20","?f19 +?f8 ");
4890     equation(out,"f21","2750*?f6 ");
4891     equation(out,"f22","?f21 +?f8 ");
4892     equation(out,"f23","4020*?f6 ");
4893     equation(out,"f24","?f23 +?f7 ");
4894     equation(out,"f25","8050*?f6 ");
4895     equation(out,"f26","?f25 +?f7 ");
4896     equation(out,"f27","-5930*?f6 ");
4897     equation(out,"f28","?f27 +?f8 ");
4898     equation(out,"f29","5930*?f6 ");
4899     equation(out,"f30","?f29 +?f8 ");
4900     out.xml.startElement("draw:handle");
4901     out.xml.addAttribute("draw:handle-position", "$0 top");
4902     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4903     out.xml.addAttribute("draw:handle-switched", "true");
4904     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4905     out.xml.endElement(); // draw:handle
4906     out.xml.endElement(); // enhanced geometry
4907     out.xml.endElement(); // custom shape
4908 }
4909 
4910 
processActionButtonMovie(const MSO::OfficeArtSpContainer & o,Writer & out)4911 void ODrawToOdf::processActionButtonMovie(const MSO::OfficeArtSpContainer& o, Writer& out) {
4912     out.xml.startElement("draw:custom-shape");
4913     processStyleAndText(o, out);
4914 
4915     out.xml.startElement("draw:enhanced-geometry");
4916     processModifiers(o, out, QList<int>() << 1400);
4917     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
4918     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
4919     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4920     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 Z N M 0 0 L 21600 0 ?f3 ?f2 ?f1 ?f2 Z N M 21600 0 L 21600 21600 ?f3 ?f4 ?f3 ?f2 Z N M 21600 21600 L 0 21600 ?f1 ?f4 ?f3 ?f4 Z N M 0 21600 L 0 0 ?f1 ?f2 ?f1 ?f4 Z N M ?f10 ?f12 L ?f14 ?f12 ?f16 ?f18 ?f20 ?f18 ?f22 ?f24 ?f22 ?f26 ?f28 ?f26 ?f30 ?f24 ?f32 ?f24 ?f32 ?f34 ?f30 ?f34 ?f28 ?f36 ?f22 ?f36 ?f22 ?f38 ?f42 ?f38 ?f42 ?f40 ?f16 ?f40 ?f14 ?f44 ?f10 ?f44 Z N");
4921     out.xml.addAttribute("draw:type", "mso-spt200");
4922     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
4923     setShapeMirroring(o, out);
4924     equation(out,"f0","$0 ");
4925     equation(out,"f1","left+$0 ");
4926     equation(out,"f2","top+$0 ");
4927     equation(out,"f3","right-$0 ");
4928     equation(out,"f4","bottom-$0 ");
4929     equation(out,"f5","10800-$0 ");
4930     equation(out,"f6","?f5 /10800");
4931     equation(out,"f7","right/2");
4932     equation(out,"f8","bottom/2");
4933     equation(out,"f9","-8050*?f6 ");
4934     equation(out,"f10","?f9 +?f7 ");
4935     equation(out,"f11","-4020*?f6 ");
4936     equation(out,"f12","?f11 +?f8 ");
4937     equation(out,"f13","-7000*?f6 ");
4938     equation(out,"f14","?f13 +?f7 ");
4939     equation(out,"f15","-6560*?f6 ");
4940     equation(out,"f16","?f15 +?f7 ");
4941     equation(out,"f17","-3600*?f6 ");
4942     equation(out,"f18","?f17 +?f8 ");
4943     equation(out,"f19","4020*?f6 ");
4944     equation(out,"f20","?f19 +?f7 ");
4945     equation(out,"f21","4660*?f6 ");
4946     equation(out,"f22","?f21 +?f7 ");
4947     equation(out,"f23","-2960*?f6 ");
4948     equation(out,"f24","?f23 +?f8 ");
4949     equation(out,"f25","-2330*?f6 ");
4950     equation(out,"f26","?f25 +?f8 ");
4951     equation(out,"f27","6780*?f6 ");
4952     equation(out,"f28","?f27 +?f7 ");
4953     equation(out,"f29","7200*?f6 ");
4954     equation(out,"f30","?f29 +?f7 ");
4955     equation(out,"f31","8050*?f6 ");
4956     equation(out,"f32","?f31 +?f7 ");
4957     equation(out,"f33","2960*?f6 ");
4958     equation(out,"f34","?f33 +?f8 ");
4959     equation(out,"f35","2330*?f6 ");
4960     equation(out,"f36","?f35 +?f8 ");
4961     equation(out,"f37","3800*?f6 ");
4962     equation(out,"f38","?f37 +?f8 ");
4963     equation(out,"f39","-1060*?f6 ");
4964     equation(out,"f40","?f39 +?f8 ");
4965     equation(out,"f41","-6350*?f6 ");
4966     equation(out,"f42","?f41 +?f7 ");
4967     equation(out,"f43","-640*?f6 ");
4968     equation(out,"f44","?f43 +?f8 ");
4969     out.xml.startElement("draw:handle");
4970     out.xml.addAttribute("draw:handle-position", "$0 top");
4971     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
4972     out.xml.addAttribute("draw:handle-switched", "true");
4973     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
4974     out.xml.endElement(); // draw:handle
4975     out.xml.endElement(); // enhanced geometry
4976     out.xml.endElement(); // custom shape
4977 }
4978 
4979 
4980