File indexing completed on 2025-01-12 10:34:24

0001 /*
0002  *  SPDX-FileCopyrightText: 2011 Lukáš Tvrdý lukas.tvrdy @ixonos.com
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "ODrawToOdf.h"
0007 
0008 #include "drawstyle.h"
0009 #include "writeodf/writeodfdraw.h"
0010 
0011 using namespace MSO;
0012 using namespace writeodf;
0013 
0014 namespace
0015 {
0016 void equation(Writer& out, const char* name, const char* formula)
0017 {
0018     draw_equation eq(&out.xml);
0019     eq.set_draw_name(name);
0020     eq.set_draw_formula(formula);
0021 }
0022 void equation(draw_enhanced_geometry& eg, const char* name, const char* formula)
0023 {
0024     draw_equation eq(eg.add_draw_equation());
0025     eq.set_draw_name(name);
0026     eq.set_draw_formula(formula);
0027 }
0028 
0029 }
0030 
0031 
0032 /*void ODrawToOdf::processRectangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
0033     out.xml.startElement("draw:custom-shape");
0034     processStyleAndText(o, out);
0035 
0036     out.xml.startElement("draw:enhanced-geometry");
0037     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0038     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N");
0039     out.xml.addAttribute("draw:type", "rectangle");
0040     setShapeMirroring(o, out);
0041     out.xml.endElement(); // enhanced geometry
0042     out.xml.endElement(); // custom shape
0043 }*/
0044 
0045 
0046 void ODrawToOdf::processParallelogram(const MSO::OfficeArtSpContainer& o, Writer& out) {
0047     draw_custom_shape shape(&out.xml);
0048     processStyleAndText(o, out);
0049 
0050     draw_enhanced_geometry eg(shape.add_draw_enhanced_geometry());
0051     eg.set_draw_glue_points("?f6 0 10800 ?f8 ?f11 10800 ?f9 21600 10800 ?f10 ?f5 10800");
0052     processModifiers(o, out, QList<int>() << 5400);
0053     eg.set_svg_viewBox("0 0 21600 21600");
0054     eg.set_draw_enhanced_path("M ?f0 0 L 21600 0 ?f1 21600 0 21600 Z N");
0055     eg.set_draw_type("parallelogram");
0056     eg.set_draw_text_areas("?f3 ?f3 ?f4 ?f4");
0057     setShapeMirroring(o, out);
0058     equation(eg,"f0","$0 ");
0059     equation(eg,"f1","21600-$0 ");
0060     equation(eg,"f2","$0 *10/24");
0061     equation(eg,"f3","?f2 +1750");
0062     equation(eg,"f4","21600-?f3 ");
0063     equation(eg,"f5","?f0 /2");
0064     equation(eg,"f6","10800+?f5 ");
0065     equation(eg,"f7","?f0 -10800");
0066     equation(eg,"f8","if(?f7 ,?f13 ,0)");
0067     equation(eg,"f9","10800-?f5 ");
0068     equation(eg,"f10","if(?f7 ,?f12 ,21600)");
0069     equation(eg,"f11","21600-?f5 ");
0070     equation(eg,"f12","21600*10800/?f0 ");
0071     equation(eg,"f13","21600-?f12 ");
0072     draw_handle handle(eg.add_draw_handle("$0 top"));
0073     handle.set_draw_handle_radius_range_maximum("21000");
0074     handle.set_draw_handle_radius_range_minimum("0");
0075 }
0076 
0077 
0078 void ODrawToOdf::processTrapezoid(const MSO::OfficeArtSpContainer& o, Writer& out) {
0079     draw_custom_shape shape(&out.xml);
0080     processStyleAndText(o, out);
0081 
0082     draw_enhanced_geometry eg(shape.add_draw_enhanced_geometry());
0083     eg.set_draw_glue_points("?f6 10800 10800 21600 ?f5 10800 10800 0");
0084     processModifiers(o, out, QList<int>() << 5400);
0085     eg.set_svg_viewBox("0 0 21600 21600");
0086     eg.set_draw_enhanced_path("M 0 0 L 21600 0 ?f0 21600 ?f1 21600 Z N");
0087     eg.set_draw_type("trapezoid");
0088     eg.set_draw_text_areas("?f3 ?f3 ?f4 ?f4");
0089     setShapeMirroring(o, out);
0090     equation(eg,"f0","21600-$0 ");
0091     equation(eg,"f1","$0 ");
0092     equation(eg,"f2","$0 *10/18");
0093     equation(eg,"f3","?f2 +1750");
0094     equation(eg,"f4","21600-?f3 ");
0095     equation(eg,"f5","$0 /2");
0096     equation(eg,"f6","21600-?f5 ");
0097     draw_handle handle(eg.add_draw_handle("$0 bottom"));
0098     handle.set_draw_handle_radius_range_maximum("10000");
0099     handle.set_draw_handle_radius_range_minimum("0");
0100 }
0101 
0102 
0103 void ODrawToOdf::processDiamond(const MSO::OfficeArtSpContainer& o, Writer& out) {
0104     out.xml.startElement("draw:custom-shape");
0105     processStyleAndText(o, out);
0106 
0107     out.xml.startElement("draw:enhanced-geometry");
0108     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0109     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0110     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 L 21600 10800 10800 21600 0 10800 10800 0 Z N");
0111     out.xml.addAttribute("draw:type", "diamond");
0112     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
0113     setShapeMirroring(o, out);
0114     out.xml.endElement(); // enhanced geometry
0115     out.xml.endElement(); // custom shape
0116 }
0117 
0118 
0119 void ODrawToOdf::processRoundRectangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
0120     out.xml.startElement("draw:custom-shape");
0121     processStyleAndText(o, out);
0122 
0123     out.xml.startElement("draw:enhanced-geometry");
0124     processModifiers(o, out, QList<int>() << 3600);
0125     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0126     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
0127     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0128     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");
0129     out.xml.addAttribute("draw:type", "round-rectangle");
0130     out.xml.addAttribute("draw:text-areas", "?f3 ?f4 ?f5 ?f6");
0131     setShapeMirroring(o, out);
0132     equation(out,"f0","45");
0133     equation(out,"f1","$0 *sin(?f0 *(pi/180))");
0134     equation(out,"f2","?f1 *3163/7636");
0135     equation(out,"f3","left+?f2 ");
0136     equation(out,"f4","top+?f2 ");
0137     equation(out,"f5","right-?f2 ");
0138     equation(out,"f6","bottom-?f2 ");
0139     equation(out,"f7","left+$0 ");
0140     equation(out,"f8","top+$0 ");
0141     equation(out,"f9","bottom-$0 ");
0142     equation(out,"f10","right-$0 ");
0143     out.xml.startElement("draw:handle");
0144     out.xml.addAttribute("draw:handle-position", "$0 top");
0145     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0146     out.xml.addAttribute("draw:handle-switched", "true");
0147     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0148     out.xml.endElement(); // draw:handle
0149     out.xml.endElement(); // enhanced geometry
0150     out.xml.endElement(); // custom shape
0151 }
0152 
0153 
0154 void ODrawToOdf::processOctagon(const MSO::OfficeArtSpContainer& o, Writer& out) {
0155     out.xml.startElement("draw:custom-shape");
0156     processStyleAndText(o, out);
0157 
0158     out.xml.startElement("draw:enhanced-geometry");
0159     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0160     processModifiers(o, out, QList<int>() << 5000);
0161     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0162     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
0163     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0164     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");
0165     out.xml.addAttribute("draw:type", "octagon");
0166     out.xml.addAttribute("draw:text-areas", "?f5 ?f6 ?f7 ?f8");
0167     setShapeMirroring(o, out);
0168     equation(out,"f0","left+$0 ");
0169     equation(out,"f1","top+$0 ");
0170     equation(out,"f2","right-$0 ");
0171     equation(out,"f3","bottom-$0 ");
0172     equation(out,"f4","$0 /2");
0173     equation(out,"f5","left+?f4 ");
0174     equation(out,"f6","top+?f4 ");
0175     equation(out,"f7","right-?f4 ");
0176     equation(out,"f8","bottom-?f4 ");
0177     out.xml.startElement("draw:handle");
0178     out.xml.addAttribute("draw:handle-position", "$0 top");
0179     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0180     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0181     out.xml.endElement(); // draw:handle
0182     out.xml.endElement(); // enhanced geometry
0183     out.xml.endElement(); // custom shape
0184 }
0185 
0186 
0187 void ODrawToOdf::processIsocelesTriangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
0188     out.xml.startElement("draw:custom-shape");
0189     processStyleAndText(o, out);
0190 
0191     out.xml.startElement("draw:enhanced-geometry");
0192     out.xml.addAttribute("draw:glue-points", "10800 0 ?f1 10800 0 21600 10800 21600 21600 21600 ?f7 10800");
0193     processModifiers(o, out, QList<int>() << 10800);
0194     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0195     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L 21600 21600 0 21600 Z N");
0196     out.xml.addAttribute("draw:type", "isosceles-triangle");
0197     out.xml.addAttribute("draw:text-areas", "?f1 10800 ?f2 18000 ?f3 7200 ?f4 21600");
0198     setShapeMirroring(o, out);
0199     equation(out,"f0","$0 ");
0200     equation(out,"f1","$0 /2");
0201     equation(out,"f2","?f1 +10800");
0202     equation(out,"f3","$0 *2/3");
0203     equation(out,"f4","?f3 +7200");
0204     equation(out,"f5","21600-?f0 ");
0205     equation(out,"f6","?f5 /2");
0206     equation(out,"f7","21600-?f6 ");
0207     out.xml.startElement("draw:handle");
0208     out.xml.addAttribute("draw:handle-position", "$0 top");
0209     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
0210     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0211     out.xml.endElement(); // draw:handle
0212     out.xml.endElement(); // enhanced geometry
0213     out.xml.endElement(); // custom shape
0214 }
0215 
0216 
0217 void ODrawToOdf::processRightTriangle(const MSO::OfficeArtSpContainer& o, Writer& out) {
0218     out.xml.startElement("draw:custom-shape");
0219     processStyleAndText(o, out);
0220 
0221     out.xml.startElement("draw:enhanced-geometry");
0222     out.xml.addAttribute("draw:glue-points", "10800 0 5400 10800 0 21600 10800 21600 21600 21600 16200 10800");
0223     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0224     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 21600 0 21600 0 0 Z N");
0225     out.xml.addAttribute("draw:type", "right-triangle");
0226     out.xml.addAttribute("draw:text-areas", "1900 12700 12700 19700");
0227     setShapeMirroring(o, out);
0228     out.xml.endElement(); // enhanced geometry
0229     out.xml.endElement(); // custom shape
0230 }
0231 
0232 
0233 void ODrawToOdf::processEllipse(const MSO::OfficeArtSpContainer& o, Writer& out)
0234 {
0235     out.xml.startElement("draw:ellipse");
0236     processStyleAndText(o, out);
0237     out.xml.endElement(); // draw:ellipse
0238 }
0239 
0240 /*
0241 void ODrawToOdf::processEllipse(const MSO::OfficeArtSpContainer& o, Writer& out) {
0242     out.xml.startElement("draw:custom-shape");
0243     processStyleAndText(o, out);
0244 
0245     out.xml.startElement("draw:enhanced-geometry");
0246     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
0247     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0248     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z N");
0249     out.xml.addAttribute("draw:type", "ellipse");
0250     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
0251     setShapeMirroring(o, out);
0252     out.xml.endElement(); // enhanced geometry
0253     out.xml.endElement(); // custom shape
0254 }
0255 */
0256 
0257 void ODrawToOdf::processHexagon(const MSO::OfficeArtSpContainer& o, Writer& out) {
0258     out.xml.startElement("draw:custom-shape");
0259     processStyleAndText(o, out);
0260 
0261     out.xml.startElement("draw:enhanced-geometry");
0262     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0263     processModifiers(o, out, QList<int>() << 5400);
0264     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0265     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L ?f1 0 21600 10800 ?f1 21600 ?f0 21600 0 10800 Z N");
0266     out.xml.addAttribute("draw:type", "hexagon");
0267     out.xml.addAttribute("draw:text-areas", "?f3 ?f3 ?f4 ?f4");
0268     setShapeMirroring(o, out);
0269     equation(out,"f0","$0 ");
0270     equation(out,"f1","21600-$0 ");
0271     equation(out,"f2","$0 *100/234");
0272     equation(out,"f3","?f2 +1700");
0273     equation(out,"f4","21600-?f3 ");
0274     out.xml.startElement("draw:handle");
0275     out.xml.addAttribute("draw:handle-position", "$0 top");
0276     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0277     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0278     out.xml.endElement(); // draw:handle
0279     out.xml.endElement(); // enhanced geometry
0280     out.xml.endElement(); // custom shape
0281 }
0282 
0283 
0284 void ODrawToOdf::processPlus(const MSO::OfficeArtSpContainer& o, Writer& out) {
0285     out.xml.startElement("draw:custom-shape");
0286     processStyleAndText(o, out);
0287 
0288     out.xml.startElement("draw:enhanced-geometry");
0289     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0290     processModifiers(o, out, QList<int>() << 5400);
0291     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0292     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
0293     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0294     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");
0295     out.xml.addAttribute("draw:type", "cross");
0296     out.xml.addAttribute("draw:text-areas", "?f1 ?f1 ?f2 ?f3");
0297     setShapeMirroring(o, out);
0298     equation(out,"f0","$0 *10799/10800");
0299     equation(out,"f1","?f0 ");
0300     equation(out,"f2","right-?f0 ");
0301     equation(out,"f3","bottom-?f0 ");
0302     out.xml.startElement("draw:handle");
0303     out.xml.addAttribute("draw:handle-position", "$0 top");
0304     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0305     out.xml.addAttribute("draw:handle-switched", "true");
0306     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0307     out.xml.endElement(); // draw:handle
0308     out.xml.endElement(); // enhanced geometry
0309     out.xml.endElement(); // custom shape
0310 }
0311 
0312 
0313 void ODrawToOdf::processPentagon(const MSO::OfficeArtSpContainer& o, Writer& out) {
0314     out.xml.startElement("draw:custom-shape");
0315     processStyleAndText(o, out);
0316 
0317     out.xml.startElement("draw:enhanced-geometry");
0318     out.xml.addAttribute("draw:glue-points", "10800 0 0 8260 4230 21600 10800 21600 17370 21600 21600 8260");
0319     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0320     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 L 0 8260 4230 21600 17370 21600 21600 8260 10800 0 Z N");
0321     out.xml.addAttribute("draw:type", "pentagon");
0322     out.xml.addAttribute("draw:text-areas", "4230 5080 17370 21600");
0323     setShapeMirroring(o, out);
0324     out.xml.endElement(); // enhanced geometry
0325     out.xml.endElement(); // custom shape
0326 }
0327 
0328 
0329 void ODrawToOdf::processCan(const MSO::OfficeArtSpContainer& o, Writer& out) {
0330     out.xml.startElement("draw:custom-shape");
0331     processStyleAndText(o, out);
0332 
0333     out.xml.startElement("draw:enhanced-geometry");
0334     out.xml.addAttribute("draw:glue-points", "44 ?f6 44 0 0 10800 44 21600 88 10800");
0335     processModifiers(o, out, QList<int>() << 5400);
0336     out.xml.addAttribute("svg:viewBox", "0 0 88 21600");
0337     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");
0338     out.xml.addAttribute("draw:type", "can");
0339     out.xml.addAttribute("draw:text-areas", "0 ?f6 88 ?f3");
0340     setShapeMirroring(o, out);
0341     equation(out,"f0","$0 *2/4");
0342     equation(out,"f1","?f0 *6/11");
0343     equation(out,"f2","?f0 -?f1 ");
0344     equation(out,"f3","21600-?f0 ");
0345     equation(out,"f4","?f3 +?f1 ");
0346     equation(out,"f5","?f0 +?f1 ");
0347     equation(out,"f6","$0 *2/2");
0348     equation(out,"f7","44");
0349     out.xml.startElement("draw:handle");
0350     out.xml.addAttribute("draw:handle-position", "?f7 $0");
0351     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0352     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
0353     out.xml.endElement(); // draw:handle
0354     out.xml.endElement(); // enhanced geometry
0355     out.xml.endElement(); // custom shape
0356 }
0357 
0358 
0359 void ODrawToOdf::processCube(const MSO::OfficeArtSpContainer& o, Writer& out) {
0360     out.xml.startElement("draw:custom-shape");
0361     processStyleAndText(o, out);
0362 
0363     out.xml.startElement("draw:enhanced-geometry");
0364     out.xml.addAttribute("draw:glue-points", "?f7 0 ?f6 ?f1 0 ?f10 ?f6 21600 ?f4 ?f10 21600 ?f9");
0365     processModifiers(o, out, QList<int>() << 5400);
0366     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0367     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
0368     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0369     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");
0370     out.xml.addAttribute("draw:type", "cube");
0371     out.xml.addAttribute("draw:text-areas", "0 ?f1 ?f4 ?f12");
0372     setShapeMirroring(o, out);
0373     equation(out,"f0","$0 ");
0374     equation(out,"f1","top+?f0 ");
0375     equation(out,"f2","left+?f0 ");
0376     equation(out,"f3","bottom-?f0 ");
0377     equation(out,"f4","right-?f0 ");
0378     equation(out,"f5","right-?f2 ");
0379     equation(out,"f6","?f5 /2");
0380     equation(out,"f7","?f2 +?f6 ");
0381     equation(out,"f8","bottom-?f1 ");
0382     equation(out,"f9","?f8 /2");
0383     equation(out,"f10","?f1 +?f9 ");
0384     equation(out,"f11","right");
0385     equation(out,"f12","bottom");
0386     out.xml.startElement("draw:handle");
0387     out.xml.addAttribute("draw:handle-position", "left $0");
0388     out.xml.addAttribute("draw:handle-switched", "true");
0389     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0390     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
0391     out.xml.endElement(); // draw:handle
0392     out.xml.endElement(); // enhanced geometry
0393     out.xml.endElement(); // custom shape
0394 }
0395 
0396 
0397 void ODrawToOdf::processBevel(const MSO::OfficeArtSpContainer& o, Writer& out) {
0398     out.xml.startElement("draw:custom-shape");
0399     processStyleAndText(o, out);
0400 
0401     out.xml.startElement("draw:enhanced-geometry");
0402     processModifiers(o, out, QList<int>() << 2700);
0403     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0404     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
0405     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0406     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");
0407     out.xml.addAttribute("draw:type", "quad-bevel");
0408     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f1 ?f2");
0409     setShapeMirroring(o, out);
0410     equation(out,"f0","$0 *21599/21600");
0411     equation(out,"f1","right-?f0 ");
0412     equation(out,"f2","bottom-?f0 ");
0413     out.xml.startElement("draw:handle");
0414     out.xml.addAttribute("draw:handle-position", "$0 top");
0415     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0416     out.xml.addAttribute("draw:handle-switched", "true");
0417     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0418     out.xml.endElement(); // draw:handle
0419     out.xml.endElement(); // enhanced geometry
0420     out.xml.endElement(); // custom shape
0421 }
0422 
0423 
0424 void ODrawToOdf::processFoldedCorner(const MSO::OfficeArtSpContainer& o, Writer& out) {
0425     out.xml.startElement("draw:custom-shape");
0426     processStyleAndText(o, out);
0427 
0428     out.xml.startElement("draw:enhanced-geometry");
0429     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0430     processModifiers(o, out, QList<int>() << 18900);
0431     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0432     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");
0433     out.xml.addAttribute("draw:type", "paper");
0434     out.xml.addAttribute("draw:text-areas", "0 0 21600 ?f11");
0435     setShapeMirroring(o, out);
0436     equation(out,"f0","$0 ");
0437     equation(out,"f1","21600-?f0 ");
0438     equation(out,"f2","?f1 *8000/10800");
0439     equation(out,"f3","21600-?f2 ");
0440     equation(out,"f4","?f1 /2");
0441     equation(out,"f5","?f1 /4");
0442     equation(out,"f6","?f1 /7");
0443     equation(out,"f7","?f1 /16");
0444     equation(out,"f8","?f3 +?f5 ");
0445     equation(out,"f9","?f0 +?f6 ");
0446     equation(out,"f10","21600-?f4 ");
0447     equation(out,"f11","?f0 +?f7 ");
0448     out.xml.startElement("draw:handle");
0449     out.xml.addAttribute("draw:handle-position", "$0 bottom");
0450     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
0451     out.xml.addAttribute("draw:handle-range-x-minimum", "10800");
0452     out.xml.endElement(); // draw:handle
0453     out.xml.endElement(); // enhanced geometry
0454     out.xml.endElement(); // custom shape
0455 }
0456 
0457 
0458 void ODrawToOdf::processSmileyFace(const MSO::OfficeArtSpContainer& o, Writer& out) {
0459     out.xml.startElement("draw:custom-shape");
0460     processStyleAndText(o, out);
0461 
0462     out.xml.startElement("draw:enhanced-geometry");
0463     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
0464     processModifiers(o, out, QList<int>() << 17520);
0465     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0466     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");
0467     out.xml.addAttribute("draw:type", "smiley");
0468     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
0469     setShapeMirroring(o, out);
0470     equation(out,"f0","$0 -15510");
0471     equation(out,"f1","17520-?f0 ");
0472     equation(out,"f2","15510+?f0 ");
0473     out.xml.startElement("draw:handle");
0474     out.xml.addAttribute("draw:handle-position", "10800 $0");
0475     out.xml.addAttribute("draw:handle-range-y-minimum", "15510");
0476     out.xml.addAttribute("draw:handle-range-y-maximum", "17520");
0477     out.xml.endElement(); // draw:handle
0478     out.xml.endElement(); // enhanced geometry
0479     out.xml.endElement(); // custom shape
0480 }
0481 
0482 
0483 void ODrawToOdf::processDonut(const MSO::OfficeArtSpContainer& o, Writer& out) {
0484     out.xml.startElement("draw:custom-shape");
0485     processStyleAndText(o, out);
0486 
0487     out.xml.startElement("draw:enhanced-geometry");
0488     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
0489     processModifiers(o, out, QList<int>() << 5400);
0490     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0491     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z U 10800 10800 ?f1 ?f1 0 360 N");
0492     out.xml.addAttribute("draw:type", "ring");
0493     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
0494     setShapeMirroring(o, out);
0495     equation(out,"f0","$0 ");
0496     equation(out,"f1","10800-$0 ");
0497     out.xml.startElement("draw:handle");
0498     out.xml.addAttribute("draw:handle-position", "$0 10800");
0499     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0500     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0501     out.xml.endElement(); // draw:handle
0502     out.xml.endElement(); // enhanced geometry
0503     out.xml.endElement(); // custom shape
0504 }
0505 
0506 
0507 void ODrawToOdf::processNoSmoking(const MSO::OfficeArtSpContainer& o, Writer& out) {
0508     out.xml.startElement("draw:custom-shape");
0509     processStyleAndText(o, out);
0510 
0511     out.xml.startElement("draw:enhanced-geometry");
0512     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
0513     processModifiers(o, out, QList<int>() << 2700);
0514     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0515     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");
0516     out.xml.addAttribute("draw:type", "forbidden");
0517     out.xml.addAttribute("draw:text-areas", "3163 3163 18437 18437");
0518     setShapeMirroring(o, out);
0519     equation(out,"f0","$0 ");
0520     equation(out,"f1","21600-$0 ");
0521     equation(out,"f2","10800-$0 ");
0522     equation(out,"f3","$0 /2");
0523     equation(out,"f4","sqrt(?f2 *?f2 -?f3 *?f3 )");
0524     equation(out,"f5","10800-?f3 ");
0525     equation(out,"f6","10800+?f3 ");
0526     equation(out,"f7","10800-?f4 ");
0527     equation(out,"f8","10800+?f4 ");
0528     equation(out,"f9","(cos(45*(pi/180))*(?f5 -10800)+sin(45*(pi/180))*(?f7 -10800))+10800");
0529     equation(out,"f10","-(sin(45*(pi/180))*(?f5 -10800)-cos(45*(pi/180))*(?f7 -10800))+10800");
0530     equation(out,"f11","(cos(45*(pi/180))*(?f5 -10800)+sin(45*(pi/180))*(?f8 -10800))+10800");
0531     equation(out,"f12","-(sin(45*(pi/180))*(?f5 -10800)-cos(45*(pi/180))*(?f8 -10800))+10800");
0532     equation(out,"f13","(cos(45*(pi/180))*(?f6 -10800)+sin(45*(pi/180))*(?f8 -10800))+10800");
0533     equation(out,"f14","-(sin(45*(pi/180))*(?f6 -10800)-cos(45*(pi/180))*(?f8 -10800))+10800");
0534     equation(out,"f15","(cos(45*(pi/180))*(?f6 -10800)+sin(45*(pi/180))*(?f7 -10800))+10800");
0535     equation(out,"f16","-(sin(45*(pi/180))*(?f6 -10800)-cos(45*(pi/180))*(?f7 -10800))+10800");
0536     out.xml.startElement("draw:handle");
0537     out.xml.addAttribute("draw:handle-position", "$0 10800");
0538     out.xml.addAttribute("draw:handle-range-x-maximum", "7200");
0539     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0540     out.xml.endElement(); // draw:handle
0541     out.xml.endElement(); // enhanced geometry
0542     out.xml.endElement(); // custom shape
0543 }
0544 
0545 
0546 void ODrawToOdf::processBlockArc(const MSO::OfficeArtSpContainer& o, Writer& out) {
0547     out.xml.startElement("draw:custom-shape");
0548     processStyleAndText(o, out);
0549 
0550     out.xml.startElement("draw:enhanced-geometry");
0551     processModifiers(o, out, QList<int>() << 180<< 5400);
0552     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0553     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");
0554     out.xml.addAttribute("draw:type", "block-arc");
0555     setShapeMirroring(o, out);
0556     equation(out,"f0","10800*cos($0 *(pi/180))");
0557     equation(out,"f1","10800*sin($0 *(pi/180))");
0558     equation(out,"f2","?f0 +10800");
0559     equation(out,"f3","?f1 +10800");
0560     equation(out,"f4","21600-?f2 ");
0561     equation(out,"f5","10800-$1 ");
0562     equation(out,"f6","10800+$1 ");
0563     equation(out,"f7","?f5 *cos($0 *(pi/180))");
0564     equation(out,"f8","?f5 *sin($0 *(pi/180))");
0565     out.xml.startElement("draw:handle");
0566     out.xml.addAttribute("draw:handle-position", "$1 $0");
0567     out.xml.addAttribute("draw:handle-radius-range-minimum", "0");
0568     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
0569     out.xml.addAttribute("draw:handle-polar", "10800 10800");
0570     out.xml.endElement(); // draw:handle
0571     out.xml.endElement(); // enhanced geometry
0572     out.xml.endElement(); // custom shape
0573 }
0574 
0575 
0576 void ODrawToOdf::processHeart(const MSO::OfficeArtSpContainer& o, Writer& out) {
0577     out.xml.startElement("draw:custom-shape");
0578     processStyleAndText(o, out);
0579 
0580     out.xml.startElement("draw:enhanced-geometry");
0581     out.xml.addAttribute("draw:glue-points", "10800 2180 3090 10800 10800 21600 18490 10800");
0582     out.xml.addAttribute("svg:viewBox", "0 0 21615 21602");
0583     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");
0584     out.xml.addAttribute("draw:type", "heart");
0585     out.xml.addAttribute("draw:text-areas", "5080 2540 16520 13550");
0586     setShapeMirroring(o, out);
0587     out.xml.endElement(); // enhanced geometry
0588     out.xml.endElement(); // custom shape
0589 }
0590 
0591 
0592 void ODrawToOdf::processLightningBolt(const MSO::OfficeArtSpContainer& o, Writer& out) {
0593     out.xml.startElement("draw:custom-shape");
0594     processStyleAndText(o, out);
0595 
0596     out.xml.startElement("draw:enhanced-geometry");
0597     out.xml.addAttribute("draw:glue-points", "8458 0 0 3923 4993 9720 9987 14934 21600 21600 16558 12016 12831 6120");
0598     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0599     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");
0600     out.xml.addAttribute("draw:type", "lightning");
0601     out.xml.addAttribute("draw:text-areas", "8680 7410 13970 14190");
0602     setShapeMirroring(o, out);
0603     out.xml.endElement(); // enhanced geometry
0604     out.xml.endElement(); // custom shape
0605 }
0606 
0607 
0608 void ODrawToOdf::processSun(const MSO::OfficeArtSpContainer& o, Writer& out) {
0609     out.xml.startElement("draw:custom-shape");
0610     processStyleAndText(o, out);
0611 
0612     out.xml.startElement("draw:enhanced-geometry");
0613     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0614     processModifiers(o, out, QList<int>() << 5400);
0615     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0616     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");
0617     out.xml.addAttribute("draw:type", "sun");
0618     out.xml.addAttribute("draw:text-areas", "?f52 ?f52 ?f53 ?f53");
0619     setShapeMirroring(o, out);
0620     equation(out,"f0","$0 ");
0621     equation(out,"f1","21600-$0 ");
0622     equation(out,"f2","$0 -2700");
0623     equation(out,"f3","?f2 *5080/7425");
0624     equation(out,"f4","?f3 +2540");
0625     equation(out,"f5","10125-$0 ");
0626     equation(out,"f6","?f5 *2120/7425");
0627     equation(out,"f7","?f6 +210");
0628     equation(out,"f8","10800+?f7 ");
0629     equation(out,"f9","10800-?f7 ");
0630     equation(out,"f10","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
0631     equation(out,"f11","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
0632     equation(out,"f12","(cos(45*(pi/180))*(?f4 -10800)+sin(45*(pi/180))*(?f8 -10800))+10800");
0633     equation(out,"f13","-(sin(45*(pi/180))*(?f4 -10800)-cos(45*(pi/180))*(?f8 -10800))+10800");
0634     equation(out,"f14","(cos(45*(pi/180))*(?f4 -10800)+sin(45*(pi/180))*(?f9 -10800))+10800");
0635     equation(out,"f15","-(sin(45*(pi/180))*(?f4 -10800)-cos(45*(pi/180))*(?f9 -10800))+10800");
0636     equation(out,"f16","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
0637     equation(out,"f17","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
0638     equation(out,"f18","(cos(90*(pi/180))*(?f4 -10800)+sin(90*(pi/180))*(?f8 -10800))+10800");
0639     equation(out,"f19","-(sin(90*(pi/180))*(?f4 -10800)-cos(90*(pi/180))*(?f8 -10800))+10800");
0640     equation(out,"f20","(cos(90*(pi/180))*(?f4 -10800)+sin(90*(pi/180))*(?f9 -10800))+10800");
0641     equation(out,"f21","-(sin(90*(pi/180))*(?f4 -10800)-cos(90*(pi/180))*(?f9 -10800))+10800");
0642     equation(out,"f22","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
0643     equation(out,"f23","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
0644     equation(out,"f24","(cos(135*(pi/180))*(?f4 -10800)+sin(135*(pi/180))*(?f8 -10800))+10800");
0645     equation(out,"f25","-(sin(135*(pi/180))*(?f4 -10800)-cos(135*(pi/180))*(?f8 -10800))+10800");
0646     equation(out,"f26","(cos(135*(pi/180))*(?f4 -10800)+sin(135*(pi/180))*(?f9 -10800))+10800");
0647     equation(out,"f27","-(sin(135*(pi/180))*(?f4 -10800)-cos(135*(pi/180))*(?f9 -10800))+10800");
0648     equation(out,"f28","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
0649     equation(out,"f29","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
0650     equation(out,"f30","(cos(180*(pi/180))*(?f4 -10800)+sin(180*(pi/180))*(?f8 -10800))+10800");
0651     equation(out,"f31","-(sin(180*(pi/180))*(?f4 -10800)-cos(180*(pi/180))*(?f8 -10800))+10800");
0652     equation(out,"f32","(cos(180*(pi/180))*(?f4 -10800)+sin(180*(pi/180))*(?f9 -10800))+10800");
0653     equation(out,"f33","-(sin(180*(pi/180))*(?f4 -10800)-cos(180*(pi/180))*(?f9 -10800))+10800");
0654     equation(out,"f34","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
0655     equation(out,"f35","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
0656     equation(out,"f36","(cos(225*(pi/180))*(?f4 -10800)+sin(225*(pi/180))*(?f8 -10800))+10800");
0657     equation(out,"f37","-(sin(225*(pi/180))*(?f4 -10800)-cos(225*(pi/180))*(?f8 -10800))+10800");
0658     equation(out,"f38","(cos(225*(pi/180))*(?f4 -10800)+sin(225*(pi/180))*(?f9 -10800))+10800");
0659     equation(out,"f39","-(sin(225*(pi/180))*(?f4 -10800)-cos(225*(pi/180))*(?f9 -10800))+10800");
0660     equation(out,"f40","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
0661     equation(out,"f41","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
0662     equation(out,"f42","(cos(270*(pi/180))*(?f4 -10800)+sin(270*(pi/180))*(?f8 -10800))+10800");
0663     equation(out,"f43","-(sin(270*(pi/180))*(?f4 -10800)-cos(270*(pi/180))*(?f8 -10800))+10800");
0664     equation(out,"f44","(cos(270*(pi/180))*(?f4 -10800)+sin(270*(pi/180))*(?f9 -10800))+10800");
0665     equation(out,"f45","-(sin(270*(pi/180))*(?f4 -10800)-cos(270*(pi/180))*(?f9 -10800))+10800");
0666     equation(out,"f46","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
0667     equation(out,"f47","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
0668     equation(out,"f48","(cos(315*(pi/180))*(?f4 -10800)+sin(315*(pi/180))*(?f8 -10800))+10800");
0669     equation(out,"f49","-(sin(315*(pi/180))*(?f4 -10800)-cos(315*(pi/180))*(?f8 -10800))+10800");
0670     equation(out,"f50","(cos(315*(pi/180))*(?f4 -10800)+sin(315*(pi/180))*(?f9 -10800))+10800");
0671     equation(out,"f51","-(sin(315*(pi/180))*(?f4 -10800)-cos(315*(pi/180))*(?f9 -10800))+10800");
0672     equation(out,"f52","(cos(45*(pi/180))*($0 -10800)+sin(45*(pi/180))*(10800-10800))+10800");
0673     equation(out,"f53","(cos(225*(pi/180))*($0 -10800)+sin(225*(pi/180))*(10800-10800))+10800");
0674     equation(out,"f54","10800-$0 ");
0675     out.xml.startElement("draw:handle");
0676     out.xml.addAttribute("draw:handle-position", "$0 10800");
0677     out.xml.addAttribute("draw:handle-range-x-maximum", "10125");
0678     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
0679     out.xml.endElement(); // draw:handle
0680     out.xml.endElement(); // enhanced geometry
0681     out.xml.endElement(); // custom shape
0682 }
0683 
0684 
0685 void ODrawToOdf::processMoon(const MSO::OfficeArtSpContainer& o, Writer& out) {
0686     out.xml.startElement("draw:custom-shape");
0687     processStyleAndText(o, out);
0688 
0689     out.xml.startElement("draw:enhanced-geometry");
0690     out.xml.addAttribute("draw:glue-points", "21600 0 0 10800 21600 21600 ?f0 10800");
0691     processModifiers(o, out, QList<int>() << 10800);
0692     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0693     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");
0694     out.xml.addAttribute("draw:type", "moon");
0695     out.xml.addAttribute("draw:text-areas", "?f9 ?f8 ?f0 ?f10");
0696     setShapeMirroring(o, out);
0697     equation(out,"f0","$0 ");
0698     equation(out,"f1","21600-$0 ");
0699     equation(out,"f2","?f1 /2");
0700     equation(out,"f3","?f2 +$0 ");
0701     equation(out,"f4","$0 *1794/10000");
0702     equation(out,"f5","21600-?f4 ");
0703     equation(out,"f6","$0 *400/18900");
0704     equation(out,"f7","(cos(?f6 *(pi/180))*(0-10800)+sin(?f6 *(pi/180))*(10800-10800))+10800");
0705     equation(out,"f8","-(sin(?f6 *(pi/180))*(0-10800)-cos(?f6 *(pi/180))*(10800-10800))+10800");
0706     equation(out,"f9","?f7 +?f7 ");
0707     equation(out,"f10","21600-?f8 ");
0708     out.xml.startElement("draw:handle");
0709     out.xml.addAttribute("draw:handle-position", "$0 10800");
0710     out.xml.addAttribute("draw:handle-range-x-maximum", "18900");
0711     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0712     out.xml.endElement(); // draw:handle
0713     out.xml.endElement(); // enhanced geometry
0714     out.xml.endElement(); // custom shape
0715 }
0716 
0717 void ODrawToOdf::processNotchedCircularArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
0718     out.xml.startElement("draw:custom-shape");
0719     processStyleAndText(o, out);
0720 
0721     out.xml.startElement("draw:enhanced-geometry");
0722 
0723     // custom way for processing modifieres as this shape
0724     // return the AdjustValue, AdjustValue2 16-bit shifted
0725     const AdjustValue* val1 = get<AdjustValue>(o);
0726     const Adjust2Value* val2 = get<Adjust2Value>(o);
0727     QString modifiers = QString::number(val1 ? val1->adjustvalue >> 16 : 270);
0728     modifiers += QString(" %1").arg(val2 ? val2->adjust2value >> 16 : 0);
0729     out.xml.addAttribute("draw:modifiers", modifiers);
0730 
0731     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0732     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");
0733     out.xml.addAttribute("draw:type", "mso-spt100");
0734     out.xml.addAttribute("draw:text-areas", "10799 0 21599 10799");
0735     setShapeMirroring(o, out);
0736     equation(out,"f0","10800*sin($0 *(pi/180))");
0737     equation(out,"f1","?f0 +10800");
0738     equation(out,"f2","10800*cos($0 *(pi/180))");
0739     equation(out,"f3","?f2 +10800");
0740     equation(out,"f4","10800*sin($1 *(pi/180))");
0741     equation(out,"f5","?f4 +10800");
0742     equation(out,"f6","10800*cos($1 *(pi/180))");
0743     equation(out,"f7","?f6 +10800");
0744     out.xml.startElement("draw:handle");
0745     out.xml.addAttribute("draw:handle-position", "10800 $0");
0746     out.xml.addAttribute("draw:handle-radius-range-minimum", "10800");
0747     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
0748     out.xml.addAttribute("draw:handle-polar", "10800 10800");
0749     out.xml.endElement(); // draw:handle
0750     out.xml.startElement("draw:handle");
0751     out.xml.addAttribute("draw:handle-position", "10800 $1");
0752     out.xml.addAttribute("draw:handle-radius-range-minimum", "10800");
0753     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
0754     out.xml.addAttribute("draw:handle-polar", "10800 10800");
0755     out.xml.endElement(); // draw:handle
0756     out.xml.endElement(); // enhanced geometry
0757     out.xml.endElement(); // custom shape
0758 }
0759 
0760 void ODrawToOdf::processBracketPair(const MSO::OfficeArtSpContainer& o, Writer& out) {
0761     out.xml.startElement("draw:custom-shape");
0762     processStyleAndText(o, out);
0763 
0764     out.xml.startElement("draw:enhanced-geometry");
0765     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0766     processModifiers(o, out, QList<int>() << 3700);
0767     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0768     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0769     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");
0770     out.xml.addAttribute("draw:type", "bracket-pair");
0771     out.xml.addAttribute("draw:text-areas", "?f8 ?f9 ?f10 ?f11");
0772     setShapeMirroring(o, out);
0773     equation(out,"f0","left+$0 ");
0774     equation(out,"f1","top+$0 ");
0775     equation(out,"f2","bottom-$0 ");
0776     equation(out,"f3","right-$0 ");
0777     equation(out,"f4","-(sin(45*(pi/180))*($0 -10800)-cos(45*(pi/180))*(0-10800))+10800");
0778     equation(out,"f5","?f4 -10800");
0779     equation(out,"f6","-$0 ");
0780     equation(out,"f7","?f6 -?f5 ");
0781     equation(out,"f8","left-?f7 ");
0782     equation(out,"f9","top-?f7 ");
0783     equation(out,"f10","right+?f7 ");
0784     equation(out,"f11","bottom+?f7 ");
0785     equation(out,"f12","left-?f5 ");
0786     equation(out,"f13","top-?f5 ");
0787     equation(out,"f14","right+?f5 ");
0788     equation(out,"f15","bottom+?f5 ");
0789     out.xml.startElement("draw:handle");
0790     out.xml.addAttribute("draw:handle-position", "$0 top");
0791     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0792     out.xml.addAttribute("draw:handle-switched", "true");
0793     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0794     out.xml.endElement(); // draw:handle
0795     out.xml.endElement(); // enhanced geometry
0796     out.xml.endElement(); // custom shape
0797 }
0798 
0799 
0800 void ODrawToOdf::processBracePair(const MSO::OfficeArtSpContainer& o, Writer& out) {
0801     out.xml.startElement("draw:custom-shape");
0802     processStyleAndText(o, out);
0803 
0804     out.xml.startElement("draw:enhanced-geometry");
0805     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0806     processModifiers(o, out, QList<int>() << 1800);
0807     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0808     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0809     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");
0810     out.xml.addAttribute("draw:type", "brace-pair");
0811     out.xml.addAttribute("draw:text-areas", "?f11 ?f12 ?f13 ?f14");
0812     setShapeMirroring(o, out);
0813     equation(out,"f0","left+$0 ");
0814     equation(out,"f1","top+$0 ");
0815     equation(out,"f2","bottom-$0 ");
0816     equation(out,"f3","right-$0 ");
0817     equation(out,"f4","?f0 *2");
0818     equation(out,"f5","$0 *2");
0819     equation(out,"f6","10800-$0 ");
0820     equation(out,"f7","21600-?f6 ");
0821     equation(out,"f8","right-?f5 ");
0822     equation(out,"f9","$0 /3");
0823     equation(out,"f10","?f9 +$0 ");
0824     equation(out,"f11","left+?f10 ");
0825     equation(out,"f12","top+?f9 ");
0826     equation(out,"f13","right-?f10 ");
0827     equation(out,"f14","bottom-?f9 ");
0828     out.xml.startElement("draw:handle");
0829     out.xml.addAttribute("draw:handle-position", "left $0");
0830     out.xml.addAttribute("draw:handle-switched", "true");
0831     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0832     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
0833     out.xml.endElement(); // draw:handle
0834     out.xml.endElement(); // enhanced geometry
0835     out.xml.endElement(); // custom shape
0836 }
0837 
0838 
0839 void ODrawToOdf::processPlaque(const MSO::OfficeArtSpContainer& o, Writer& out) {
0840     out.xml.startElement("draw:custom-shape");
0841     processStyleAndText(o, out);
0842 
0843     out.xml.startElement("draw:enhanced-geometry");
0844     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
0845     processModifiers(o, out, QList<int>() << 3600);
0846     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
0847     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
0848     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0849     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");
0850     out.xml.addAttribute("draw:type", "mso-spt21");
0851     out.xml.addAttribute("draw:text-areas", "?f12 ?f13 ?f14 ?f15");
0852     setShapeMirroring(o, out);
0853     equation(out,"f0","left+$0 ");
0854     equation(out,"f1","top+$0 ");
0855     equation(out,"f2","bottom-$0 ");
0856     equation(out,"f3","right-$0 ");
0857     equation(out,"f4","-(sin(45*(pi/180))*($0 -10800)-cos(45*(pi/180))*(0-10800))+10800");
0858     equation(out,"f5","?f4 -10800");
0859     equation(out,"f6","-$0 ");
0860     equation(out,"f7","?f6 -?f5 ");
0861     equation(out,"f8","left-?f7 ");
0862     equation(out,"f9","top-?f7 ");
0863     equation(out,"f10","right+?f7 ");
0864     equation(out,"f11","bottom+?f7 ");
0865     equation(out,"f12","left-?f5 ");
0866     equation(out,"f13","top-?f5 ");
0867     equation(out,"f14","right+?f5 ");
0868     equation(out,"f15","bottom+?f5 ");
0869     out.xml.startElement("draw:handle");
0870     out.xml.addAttribute("draw:handle-position", "$0 top");
0871     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
0872     out.xml.addAttribute("draw:handle-switched", "true");
0873     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
0874     out.xml.endElement(); // draw:handle
0875     out.xml.endElement(); // enhanced geometry
0876     out.xml.endElement(); // custom shape
0877 }
0878 
0879 
0880 void ODrawToOdf::processLeftBracket(const MSO::OfficeArtSpContainer& o, Writer& out) {
0881     out.xml.startElement("draw:custom-shape");
0882     processStyleAndText(o, out);
0883 
0884     out.xml.startElement("draw:enhanced-geometry");
0885     out.xml.addAttribute("draw:glue-points", "21600 0 0 10800 21600 21600");
0886     processModifiers(o, out, QList<int>() << 1800);
0887     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0888     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");
0889     out.xml.addAttribute("draw:type", "left-bracket");
0890     out.xml.addAttribute("draw:text-areas", "6350 ?f3 21600 ?f4");
0891     setShapeMirroring(o, out);
0892     equation(out,"f0","$0 /2");
0893     equation(out,"f1","top+$0 ");
0894     equation(out,"f2","bottom-$0 ");
0895     equation(out,"f3","top+?f0 ");
0896     equation(out,"f4","bottom-?f0 ");
0897     out.xml.startElement("draw:handle");
0898     out.xml.addAttribute("draw:handle-position", "left $0");
0899     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0900     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
0901     out.xml.endElement(); // draw:handle
0902     out.xml.endElement(); // enhanced geometry
0903     out.xml.endElement(); // custom shape
0904 }
0905 
0906 
0907 void ODrawToOdf::processRightBracket(const MSO::OfficeArtSpContainer& o, Writer& out) {
0908     out.xml.startElement("draw:custom-shape");
0909     processStyleAndText(o, out);
0910 
0911     out.xml.startElement("draw:enhanced-geometry");
0912     out.xml.addAttribute("draw:glue-points", "0 0 0 21600 21600 10800");
0913     processModifiers(o, out, QList<int>() << 1800);
0914     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0915     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");
0916     out.xml.addAttribute("draw:type", "right-bracket");
0917     out.xml.addAttribute("draw:text-areas", "0 ?f3 15150 ?f4");
0918     setShapeMirroring(o, out);
0919     equation(out,"f0","$0 /2");
0920     equation(out,"f1","top+$0 ");
0921     equation(out,"f2","bottom-$0 ");
0922     equation(out,"f3","top+?f0 ");
0923     equation(out,"f4","bottom-?f0 ");
0924     out.xml.startElement("draw:handle");
0925     out.xml.addAttribute("draw:handle-position", "right $0");
0926     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0927     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
0928     out.xml.endElement(); // draw:handle
0929     out.xml.endElement(); // enhanced geometry
0930     out.xml.endElement(); // custom shape
0931 }
0932 
0933 
0934 void ODrawToOdf::processLeftBrace(const MSO::OfficeArtSpContainer& o, Writer& out) {
0935     out.xml.startElement("draw:custom-shape");
0936     processStyleAndText(o, out);
0937 
0938     out.xml.startElement("draw:enhanced-geometry");
0939     out.xml.addAttribute("draw:glue-points", "21600 0 0 10800 21600 21600");
0940     processModifiers(o, out, QList<int>() << 1800<< 10800);
0941     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0942     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");
0943     out.xml.addAttribute("draw:type", "left-brace");
0944     out.xml.addAttribute("draw:text-areas", "13800 ?f9 21600 ?f10");
0945     setShapeMirroring(o, out);
0946     equation(out,"f0","$0 /2");
0947     equation(out,"f1","$0 ");
0948     equation(out,"f2","?f4 -$0 ");
0949     equation(out,"f3","?f4 -?f0 ");
0950     equation(out,"f4","$1 ");
0951     equation(out,"f5","?f4 +?f0 ");
0952     equation(out,"f6","?f4 +$0 ");
0953     equation(out,"f7","21600-$0 ");
0954     equation(out,"f8","21600-?f0 ");
0955     equation(out,"f9","$0 *10000/31953");
0956     equation(out,"f10","21600-?f9 ");
0957     out.xml.startElement("draw:handle");
0958     out.xml.addAttribute("draw:handle-position", "10800 $0");
0959     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0960     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
0961     out.xml.endElement(); // draw:handle
0962     out.xml.startElement("draw:handle");
0963     out.xml.addAttribute("draw:handle-position", "left $1");
0964     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0965     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
0966     out.xml.endElement(); // draw:handle
0967     out.xml.endElement(); // enhanced geometry
0968     out.xml.endElement(); // custom shape
0969 }
0970 
0971 
0972 void ODrawToOdf::processRightBrace(const MSO::OfficeArtSpContainer& o, Writer& out) {
0973     out.xml.startElement("draw:custom-shape");
0974     processStyleAndText(o, out);
0975 
0976     out.xml.startElement("draw:enhanced-geometry");
0977     out.xml.addAttribute("draw:glue-points", "0 0 0 21600 21600 10800");
0978     processModifiers(o, out, QList<int>() << 1800<< 10800);
0979     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
0980     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");
0981     out.xml.addAttribute("draw:type", "right-brace");
0982     out.xml.addAttribute("draw:text-areas", "0 ?f9 7800 ?f10");
0983     setShapeMirroring(o, out);
0984     equation(out,"f0","$0 /2");
0985     equation(out,"f1","$0 ");
0986     equation(out,"f2","?f4 -$0 ");
0987     equation(out,"f3","?f4 -?f0 ");
0988     equation(out,"f4","$1 ");
0989     equation(out,"f5","?f4 +?f0 ");
0990     equation(out,"f6","?f4 +$0 ");
0991     equation(out,"f7","21600-$0 ");
0992     equation(out,"f8","21600-?f0 ");
0993     equation(out,"f9","$0 *10000/31953");
0994     equation(out,"f10","21600-?f9 ");
0995     out.xml.startElement("draw:handle");
0996     out.xml.addAttribute("draw:handle-position", "10800 $0");
0997     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
0998     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
0999     out.xml.endElement(); // draw:handle
1000     out.xml.startElement("draw:handle");
1001     out.xml.addAttribute("draw:handle-position", "right $1");
1002     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1003     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1004     out.xml.endElement(); // draw:handle
1005     out.xml.endElement(); // enhanced geometry
1006     out.xml.endElement(); // custom shape
1007 }
1008 
1009 
1010 void ODrawToOdf::processArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1011     out.xml.startElement("draw:custom-shape");
1012     processStyleAndText(o, out);
1013 
1014     out.xml.startElement("draw:enhanced-geometry");
1015     processModifiers(o, out, QList<int>() << 16200<< 5400);
1016     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1017     out.xml.addAttribute("draw:enhanced-path", "M 0 ?f0 L ?f1 ?f0 ?f1 0 21600 10800 ?f1 21600 ?f1 ?f2 0 ?f2 Z N");
1018     out.xml.addAttribute("draw:type", "right-arrow");
1019     out.xml.addAttribute("draw:text-areas", "0 ?f0 ?f5 ?f2");
1020     setShapeMirroring(o, out);
1021     equation(out,"f0","$1 ");
1022     equation(out,"f1","$0 ");
1023     equation(out,"f2","21600-$1 ");
1024     equation(out,"f3","21600-?f1 ");
1025     equation(out,"f4","?f3 *?f0 /10800");
1026     equation(out,"f5","?f1 +?f4 ");
1027     equation(out,"f6","?f1 *?f0 /10800");
1028     equation(out,"f7","?f1 -?f6 ");
1029     out.xml.startElement("draw:handle");
1030     out.xml.addAttribute("draw:handle-position", "$0 $1");
1031     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1032     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1033     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1034     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1035     out.xml.endElement(); // draw:handle
1036     out.xml.endElement(); // enhanced geometry
1037     out.xml.endElement(); // custom shape
1038 }
1039 
1040 
1041 void ODrawToOdf::processLeftArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1042     out.xml.startElement("draw:custom-shape");
1043     processStyleAndText(o, out);
1044 
1045     out.xml.startElement("draw:enhanced-geometry");
1046     processModifiers(o, out, QList<int>() << 5400<< 5400);
1047     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1048     out.xml.addAttribute("draw:enhanced-path", "M 21600 ?f0 L ?f1 ?f0 ?f1 0 0 10800 ?f1 21600 ?f1 ?f2 21600 ?f2 Z N");
1049     out.xml.addAttribute("draw:type", "left-arrow");
1050     out.xml.addAttribute("draw:text-areas", "?f7 ?f0 21600 ?f2");
1051     setShapeMirroring(o, out);
1052     equation(out,"f0","$1 ");
1053     equation(out,"f1","$0 ");
1054     equation(out,"f2","21600-$1 ");
1055     equation(out,"f3","21600-?f1 ");
1056     equation(out,"f4","?f3 *?f0 /10800");
1057     equation(out,"f5","?f1 +?f4 ");
1058     equation(out,"f6","?f1 *?f0 /10800");
1059     equation(out,"f7","?f1 -?f6 ");
1060     out.xml.startElement("draw:handle");
1061     out.xml.addAttribute("draw:handle-position", "$0 $1");
1062     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1063     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1064     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1065     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1066     out.xml.endElement(); // draw:handle
1067     out.xml.endElement(); // enhanced geometry
1068     out.xml.endElement(); // custom shape
1069 }
1070 
1071 
1072 void ODrawToOdf::processUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1073     out.xml.startElement("draw:custom-shape");
1074     processStyleAndText(o, out);
1075 
1076     out.xml.startElement("draw:enhanced-geometry");
1077     processModifiers(o, out, QList<int>() << 5400<< 5400);
1078     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1079     out.xml.addAttribute("draw:enhanced-path", "M ?f0 21600 L ?f0 ?f1 0 ?f1 10800 0 21600 ?f1 ?f2 ?f1 ?f2 21600 Z N");
1080     out.xml.addAttribute("draw:type", "up-arrow");
1081     out.xml.addAttribute("draw:text-areas", "?f0 ?f7 ?f2 21600");
1082     setShapeMirroring(o, out);
1083     equation(out,"f0","$1 ");
1084     equation(out,"f1","$0 ");
1085     equation(out,"f2","21600-$1 ");
1086     equation(out,"f3","21600-?f1 ");
1087     equation(out,"f4","?f3 *?f0 /10800");
1088     equation(out,"f5","?f1 +?f4 ");
1089     equation(out,"f6","?f1 *?f0 /10800");
1090     equation(out,"f7","?f1 -?f6 ");
1091     out.xml.startElement("draw:handle");
1092     out.xml.addAttribute("draw:handle-position", "$1 $0");
1093     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1094     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1095     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1096     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1097     out.xml.endElement(); // draw:handle
1098     out.xml.endElement(); // enhanced geometry
1099     out.xml.endElement(); // custom shape
1100 }
1101 
1102 
1103 void ODrawToOdf::processDownArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1104     out.xml.startElement("draw:custom-shape");
1105     processStyleAndText(o, out);
1106 
1107     out.xml.startElement("draw:enhanced-geometry");
1108     processModifiers(o, out, QList<int>() << 16200<< 5400);
1109     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1110     out.xml.addAttribute("draw:enhanced-path", "M ?f0 0 L ?f0 ?f1 0 ?f1 10800 21600 21600 ?f1 ?f2 ?f1 ?f2 0 Z N");
1111     out.xml.addAttribute("draw:type", "down-arrow");
1112     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f2 ?f5");
1113     setShapeMirroring(o, out);
1114     equation(out,"f0","$1 ");
1115     equation(out,"f1","$0 ");
1116     equation(out,"f2","21600-$1 ");
1117     equation(out,"f3","21600-?f1 ");
1118     equation(out,"f4","?f3 *?f0 /10800");
1119     equation(out,"f5","?f1 +?f4 ");
1120     equation(out,"f6","?f1 *?f0 /10800");
1121     equation(out,"f7","?f1 -?f6 ");
1122     out.xml.startElement("draw:handle");
1123     out.xml.addAttribute("draw:handle-position", "$1 $0");
1124     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1125     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1126     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1127     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1128     out.xml.endElement(); // draw:handle
1129     out.xml.endElement(); // enhanced geometry
1130     out.xml.endElement(); // custom shape
1131 }
1132 
1133 
1134 void ODrawToOdf::processLeftRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1135     out.xml.startElement("draw:custom-shape");
1136     processStyleAndText(o, out);
1137 
1138     out.xml.startElement("draw:enhanced-geometry");
1139     processModifiers(o, out, QList<int>() << 4300<< 5400);
1140     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1141     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");
1142     out.xml.addAttribute("draw:type", "left-right-arrow");
1143     out.xml.addAttribute("draw:text-areas", "?f5 ?f1 ?f6 ?f3");
1144     setShapeMirroring(o, out);
1145     equation(out,"f0","$0 ");
1146     equation(out,"f1","$1 ");
1147     equation(out,"f2","21600-$0 ");
1148     equation(out,"f3","21600-$1 ");
1149     equation(out,"f4","10800-$1 ");
1150     equation(out,"f5","$0 *?f4 /10800");
1151     equation(out,"f6","21600-?f5 ");
1152     equation(out,"f7","10800-$0 ");
1153     equation(out,"f8","$1 *?f7 /10800");
1154     equation(out,"f9","21600-?f8 ");
1155     out.xml.startElement("draw:handle");
1156     out.xml.addAttribute("draw:handle-position", "$0 $1");
1157     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1158     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1159     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1160     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1161     out.xml.endElement(); // draw:handle
1162     out.xml.endElement(); // enhanced geometry
1163     out.xml.endElement(); // custom shape
1164 }
1165 
1166 
1167 void ODrawToOdf::processUpDownArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1168     out.xml.startElement("draw:custom-shape");
1169     processStyleAndText(o, out);
1170 
1171     out.xml.startElement("draw:enhanced-geometry");
1172     processModifiers(o, out, QList<int>() << 5400<< 4300);
1173     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1174     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");
1175     out.xml.addAttribute("draw:type", "up-down-arrow");
1176     out.xml.addAttribute("draw:text-areas", "?f0 ?f8 ?f2 ?f9");
1177     setShapeMirroring(o, out);
1178     equation(out,"f0","$0 ");
1179     equation(out,"f1","$1 ");
1180     equation(out,"f2","21600-$0 ");
1181     equation(out,"f3","21600-$1 ");
1182     equation(out,"f4","10800-$1 ");
1183     equation(out,"f5","$0 *?f4 /10800");
1184     equation(out,"f6","21600-?f5 ");
1185     equation(out,"f7","10800-$0 ");
1186     equation(out,"f8","$1 *?f7 /10800");
1187     equation(out,"f9","21600-?f8 ");
1188     out.xml.startElement("draw:handle");
1189     out.xml.addAttribute("draw:handle-position", "$0 $1");
1190     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1191     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1192     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1193     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1194     out.xml.endElement(); // draw:handle
1195     out.xml.endElement(); // enhanced geometry
1196     out.xml.endElement(); // custom shape
1197 }
1198 
1199 
1200 void ODrawToOdf::processQuadArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1201     out.xml.startElement("draw:custom-shape");
1202     processStyleAndText(o, out);
1203 
1204     out.xml.startElement("draw:enhanced-geometry");
1205     processModifiers(o, out, QList<int>() << 6500<< 8600<< 4300);
1206     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1207     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");
1208     out.xml.addAttribute("draw:type", "quad-arrow");
1209     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1210     setShapeMirroring(o, out);
1211     equation(out,"f0","$2 ");
1212     equation(out,"f1","$0 ");
1213     equation(out,"f2","$1 ");
1214     equation(out,"f3","21600-$0 ");
1215     equation(out,"f4","21600-$1 ");
1216     equation(out,"f5","21600-$2 ");
1217     out.xml.startElement("draw:handle");
1218     out.xml.addAttribute("draw:handle-position", "$1 $2");
1219     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1220     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1221     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1222     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
1223     out.xml.endElement(); // draw:handle
1224     out.xml.startElement("draw:handle");
1225     out.xml.addAttribute("draw:handle-position", "$0 top");
1226     out.xml.addAttribute("draw:handle-range-x-maximum", "$1");
1227     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1228     out.xml.endElement(); // draw:handle
1229     out.xml.endElement(); // enhanced geometry
1230     out.xml.endElement(); // custom shape
1231 }
1232 
1233 
1234 void ODrawToOdf::processLeftRightUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1235     out.xml.startElement("draw:custom-shape");
1236     processStyleAndText(o, out);
1237 
1238     out.xml.startElement("draw:enhanced-geometry");
1239     processModifiers(o, out, QList<int>() << 6500<< 8600<< 6200);
1240     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1241     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");
1242     out.xml.addAttribute("draw:type", "mso-spt182");
1243     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1244     setShapeMirroring(o, out);
1245     equation(out,"f0","$0 ");
1246     equation(out,"f1","$1 ");
1247     equation(out,"f2","?f3 *$2 /21600");
1248     equation(out,"f3","21600-$0 ");
1249     equation(out,"f4","21600-$1 ");
1250     equation(out,"f5","21600-?f2 ");
1251     out.xml.startElement("draw:handle");
1252     out.xml.addAttribute("draw:handle-position", "$1 $2");
1253     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1254     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1255     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1256     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
1257     out.xml.endElement(); // draw:handle
1258     out.xml.startElement("draw:handle");
1259     out.xml.addAttribute("draw:handle-position", "$0 top");
1260     out.xml.addAttribute("draw:handle-range-x-maximum", "$1");
1261     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1262     out.xml.endElement(); // draw:handle
1263     out.xml.endElement(); // enhanced geometry
1264     out.xml.endElement(); // custom shape
1265 }
1266 
1267 
1268 void ODrawToOdf::processBentArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1269     out.xml.startElement("draw:custom-shape");
1270     processStyleAndText(o, out);
1271 
1272     out.xml.startElement("draw:enhanced-geometry");
1273     processModifiers(o, out, QList<int>() << 15100<< 2900);
1274     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1275     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");
1276     out.xml.addAttribute("draw:type", "mso-spt91");
1277     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1278     setShapeMirroring(o, out);
1279     equation(out,"f0","$0 ");
1280     equation(out,"f1","$1 ");
1281     equation(out,"f2","12158-$1 ");
1282     equation(out,"f3","6079-$1 ");
1283     equation(out,"f4","?f3 *2");
1284     out.xml.startElement("draw:handle");
1285     out.xml.addAttribute("draw:handle-position", "$0 $1");
1286     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1287     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1288     out.xml.addAttribute("draw:handle-range-y-maximum", "6079");
1289     out.xml.addAttribute("draw:handle-range-x-minimum", "12427");
1290     out.xml.endElement(); // draw:handle
1291     out.xml.endElement(); // enhanced geometry
1292     out.xml.endElement(); // custom shape
1293 }
1294 
1295 
1296 void ODrawToOdf::processUturnArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1297     out.xml.startElement("draw:custom-shape");
1298     processStyleAndText(o, out);
1299 
1300     out.xml.startElement("draw:enhanced-geometry");
1301     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1302     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");
1303     out.xml.addAttribute("draw:type", "mso-spt101");
1304     out.xml.addAttribute("draw:text-areas", "0 8280 6110 21600");
1305     setShapeMirroring(o, out);
1306     out.xml.endElement(); // enhanced geometry
1307     out.xml.endElement(); // custom shape
1308 }
1309 
1310 
1311 void ODrawToOdf::processLeftUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1312     out.xml.startElement("draw:custom-shape");
1313     processStyleAndText(o, out);
1314 
1315     out.xml.startElement("draw:enhanced-geometry");
1316     processModifiers(o, out, QList<int>() << 9340<< 18500<< 6200);
1317     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1318     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");
1319     out.xml.addAttribute("draw:type", "mso-spt89");
1320     out.xml.addAttribute("draw:text-areas", "?f2 ?f7 ?f1 ?f1 ?f7 ?f2 ?f1 ?f1");
1321     setShapeMirroring(o, out);
1322     equation(out,"f0","$0 ");
1323     equation(out,"f1","$1 ");
1324     equation(out,"f2","$2 ");
1325     equation(out,"f3","21600-$0 ");
1326     equation(out,"f4","?f3 /2");
1327     equation(out,"f5","$0 +?f4 ");
1328     equation(out,"f6","21600-$1 ");
1329     equation(out,"f7","$0 +?f6 ");
1330     equation(out,"f8","21600-?f6 ");
1331     equation(out,"f9","?f8 -?f6 ");
1332     out.xml.startElement("draw:handle");
1333     out.xml.addAttribute("draw:handle-position", "$1 $2");
1334     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1335     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1336     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1337     out.xml.addAttribute("draw:handle-range-x-minimum", "?f5");
1338     out.xml.endElement(); // draw:handle
1339     out.xml.startElement("draw:handle");
1340     out.xml.addAttribute("draw:handle-position", "$0 top");
1341     out.xml.addAttribute("draw:handle-range-x-maximum", "?f9");
1342     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1343     out.xml.endElement(); // draw:handle
1344     out.xml.endElement(); // enhanced geometry
1345     out.xml.endElement(); // custom shape
1346 }
1347 
1348 
1349 void ODrawToOdf::processBentUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1350     out.xml.startElement("draw:custom-shape");
1351     processStyleAndText(o, out);
1352 
1353     out.xml.startElement("draw:enhanced-geometry");
1354     processModifiers(o, out, QList<int>() << 9340<< 18500<< 7200);
1355     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1356     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");
1357     out.xml.addAttribute("draw:type", "mso-spt90");
1358     out.xml.addAttribute("draw:text-areas", "?f2 ?f7 ?f1 ?f1 ?f7 ?f2 ?f1 ?f1");
1359     setShapeMirroring(o, out);
1360     equation(out,"f0","$0 ");
1361     equation(out,"f1","$1 ");
1362     equation(out,"f2","$2 ");
1363     equation(out,"f3","21600-$0 ");
1364     equation(out,"f4","?f3 /2");
1365     equation(out,"f5","$0 +?f4 ");
1366     equation(out,"f6","21600-$1 ");
1367     equation(out,"f7","$0 +?f6 ");
1368     equation(out,"f8","?f7 +?f6 ");
1369     equation(out,"f9","21600-?f6 ");
1370     equation(out,"f10","?f9 -?f6 ");
1371     out.xml.startElement("draw:handle");
1372     out.xml.addAttribute("draw:handle-position", "$1 $2");
1373     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1374     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1375     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1376     out.xml.addAttribute("draw:handle-range-x-minimum", "?f5");
1377     out.xml.endElement(); // draw:handle
1378     out.xml.startElement("draw:handle");
1379     out.xml.addAttribute("draw:handle-position", "$0 top");
1380     out.xml.addAttribute("draw:handle-range-x-maximum", "?f10");
1381     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1382     out.xml.endElement(); // draw:handle
1383     out.xml.endElement(); // enhanced geometry
1384     out.xml.endElement(); // custom shape
1385 }
1386 
1387 
1388 void ODrawToOdf::processCurvedRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1389     out.xml.startElement("draw:custom-shape");
1390     processStyleAndText(o, out);
1391 
1392     out.xml.startElement("draw:enhanced-geometry");
1393     out.xml.addAttribute("draw:glue-points", "0 ?f17 ?f2 ?f14 ?f22 ?f8 ?f2 ?f12 ?f22 ?f16");
1394     processModifiers(o, out, QList<int>() << 12960<< 19440<< 14400);
1395     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1396     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");
1397     out.xml.addAttribute("draw:type", "mso-spt102");
1398     out.xml.addAttribute("draw:text-areas", "?f47 ?f45 ?f48 ?f46");
1399     setShapeMirroring(o, out);
1400     equation(out,"f0","$0 ");
1401     equation(out,"f1","$1 ");
1402     equation(out,"f2","$2 ");
1403     equation(out,"f3","$0 +21600-$1 ");
1404     equation(out,"f4","?f3 /2");
1405     equation(out,"f5","$1 +$1 -21600");
1406     equation(out,"f6","?f5 +$1 -$0 ");
1407     equation(out,"f7","?f6 /2");
1408     equation(out,"f8","(21600+$0 )/2");
1409     equation(out,"f9","21600-$2 ");
1410     equation(out,"f10","?f4 *sqrt(1-(?f9 /21600)*(?f9 /21600))");
1411     equation(out,"f11","?f4 +?f10 ");
1412     equation(out,"f12","?f11 +$1 -21600");
1413     equation(out,"f13","?f7 +?f10 ");
1414     equation(out,"f14","?f12 +21600-$0 ");
1415     equation(out,"f15","?f5 -$0 ");
1416     equation(out,"f16","?f15 /2");
1417     equation(out,"f17","(?f4 +?f7 )/2");
1418     equation(out,"f18","$0 +$1 -21600");
1419     equation(out,"f19","?f18 /2");
1420     equation(out,"f20","?f17 -?f19 ");
1421     equation(out,"f21","21600");
1422     equation(out,"f22","21600");
1423     equation(out,"f23","21600*2");
1424     equation(out,"f24","?f17 -?f4 ");
1425     equation(out,"f25","21600*sqrt(1-(?f24 /?f4 )*(?f24 /?f4 ))");
1426     equation(out,"f26","21600-?f25 ");
1427     equation(out,"f27","?f8 +128");
1428     equation(out,"f28","?f5 /2");
1429     equation(out,"f29","?f5 -128");
1430     equation(out,"f30","$0 +?f17 -?f12 ");
1431     equation(out,"f31","21600*sqrt(1-(?f20 /?f4 )*(?f20 /?f4 ))");
1432     equation(out,"f32","21600-$0 ");
1433     equation(out,"f33","?f32 /2");
1434     equation(out,"f34","21600*21600");
1435     equation(out,"f35","?f9 *?f9 ");
1436     equation(out,"f36","?f34 -?f35 ");
1437     equation(out,"f37","sqrt(?f36 )");
1438     equation(out,"f38","?f37 +21600");
1439     equation(out,"f39","21600*21600/?f38 ");
1440     equation(out,"f40","?f39 +64");
1441     equation(out,"f41","$0 /2");
1442     equation(out,"f42","21600*sqrt(1-(?f33 /?f41 )*(?f33 /?f41 ))");
1443     equation(out,"f43","21600-?f42 ");
1444     equation(out,"f44","?f43 +64");
1445     equation(out,"f45","?f4 /2");
1446     equation(out,"f46","$1 -?f45 ");
1447     equation(out,"f47","21600*2195/16384");
1448     equation(out,"f48","21600*14189/16384");
1449     out.xml.startElement("draw:handle");
1450     out.xml.addAttribute("draw:handle-position", "21600 $0");
1451     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1452     out.xml.addAttribute("draw:handle-range-y-minimum", "?f40");
1453     out.xml.addAttribute("draw:handle-range-y-maximum", "?f29");
1454     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1455     out.xml.endElement(); // draw:handle
1456     out.xml.startElement("draw:handle");
1457     out.xml.addAttribute("draw:handle-position", "21600 $1");
1458     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1459     out.xml.addAttribute("draw:handle-range-y-minimum", "?f27");
1460     out.xml.addAttribute("draw:handle-range-y-maximum", "?f21");
1461     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1462     out.xml.endElement(); // draw:handle
1463     out.xml.startElement("draw:handle");
1464     out.xml.addAttribute("draw:handle-position", "$2 21600");
1465     out.xml.addAttribute("draw:handle-range-x-maximum", "?f22");
1466     out.xml.addAttribute("draw:handle-range-y-minimum", "3375");
1467     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1468     out.xml.addAttribute("draw:handle-range-x-minimum", "?f44");
1469     out.xml.endElement(); // draw:handle
1470     out.xml.endElement(); // enhanced geometry
1471     out.xml.endElement(); // custom shape
1472 }
1473 
1474 
1475 void ODrawToOdf::processCurvedLeftArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1476     out.xml.startElement("draw:custom-shape");
1477     processStyleAndText(o, out);
1478 
1479     out.xml.startElement("draw:enhanced-geometry");
1480     out.xml.addAttribute("draw:glue-points", "0 ?f15 ?f2 ?f11 0 ?f8 ?f2 ?f13 ?f21 ?f16");
1481     processModifiers(o, out, QList<int>() << 12960<< 19440<< 7200);
1482     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1483     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");
1484     out.xml.addAttribute("draw:type", "mso-spt103");
1485     out.xml.addAttribute("draw:text-areas", "?f43 ?f41 ?f44 ?f42");
1486     setShapeMirroring(o, out);
1487     equation(out,"f0","$0 ");
1488     equation(out,"f1","$1 ");
1489     equation(out,"f2","$2 ");
1490     equation(out,"f3","$0 +21600-$1 ");
1491     equation(out,"f4","?f3 /2");
1492     equation(out,"f5","$1 +$1 -21600");
1493     equation(out,"f6","?f5 +$1 -$0 ");
1494     equation(out,"f7","?f6 /2");
1495     equation(out,"f8","(21600+$0 )/2");
1496     equation(out,"f9","?f4 *sqrt(1-($2 /21600)*($2 /21600))");
1497     equation(out,"f10","?f4 +?f9 ");
1498     equation(out,"f11","?f10 +$1 -21600");
1499     equation(out,"f12","?f7 +?f9 ");
1500     equation(out,"f13","?f11 +21600-$0 ");
1501     equation(out,"f14","?f5 -$0 ");
1502     equation(out,"f15","?f14 /2");
1503     equation(out,"f16","(?f4 +?f7 )/2");
1504     equation(out,"f17","$0 +$1 -21600");
1505     equation(out,"f18","?f17 /2");
1506     equation(out,"f19","?f16 -?f18 ");
1507     equation(out,"f20","21600");
1508     equation(out,"f21","21600");
1509     equation(out,"f22","-21600");
1510     equation(out,"f23","?f16 -?f4 ");
1511     equation(out,"f24","21600*sqrt(1-(?f23 /?f4 )*(?f23 /?f4 ))");
1512     equation(out,"f25","?f8 +128");
1513     equation(out,"f26","?f5 /2");
1514     equation(out,"f27","?f5 -128");
1515     equation(out,"f28","$0 +?f16 -?f11 ");
1516     equation(out,"f29","21600-$0 ");
1517     equation(out,"f30","?f29 /2");
1518     equation(out,"f31","21600*21600");
1519     equation(out,"f32","$2 *$2 ");
1520     equation(out,"f33","?f31 -?f32 ");
1521     equation(out,"f34","sqrt(?f33 )");
1522     equation(out,"f35","?f34 +21600");
1523     equation(out,"f36","21600*21600/?f35 ");
1524     equation(out,"f37","?f36 +64");
1525     equation(out,"f38","$0 /2");
1526     equation(out,"f39","21600*sqrt(1-(?f30 /?f38 )*(?f30 /?f38 ))");
1527     equation(out,"f40","?f39 -64");
1528     equation(out,"f41","?f4 /2");
1529     equation(out,"f42","$1 -?f41 ");
1530     equation(out,"f43","21600*2195/16384");
1531     equation(out,"f44","21600*14189/16384");
1532     out.xml.startElement("draw:handle");
1533     out.xml.addAttribute("draw:handle-position", "left $0");
1534     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1535     out.xml.addAttribute("draw:handle-range-y-minimum", "?f37");
1536     out.xml.addAttribute("draw:handle-range-y-maximum", "?f27");
1537     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1538     out.xml.endElement(); // draw:handle
1539     out.xml.startElement("draw:handle");
1540     out.xml.addAttribute("draw:handle-position", "left $1");
1541     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1542     out.xml.addAttribute("draw:handle-range-y-minimum", "?f25");
1543     out.xml.addAttribute("draw:handle-range-y-maximum", "?f20");
1544     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1545     out.xml.endElement(); // draw:handle
1546     out.xml.startElement("draw:handle");
1547     out.xml.addAttribute("draw:handle-position", "$2 21600");
1548     out.xml.addAttribute("draw:handle-range-x-maximum", "?f40");
1549     out.xml.addAttribute("draw:handle-range-y-minimum", "3375");
1550     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1551     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1552     out.xml.endElement(); // draw:handle
1553     out.xml.endElement(); // enhanced geometry
1554     out.xml.endElement(); // custom shape
1555 }
1556 
1557 
1558 void ODrawToOdf::processCurvedUpArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1559     out.xml.startElement("draw:custom-shape");
1560     processStyleAndText(o, out);
1561 
1562     out.xml.startElement("draw:enhanced-geometry");
1563     out.xml.addAttribute("draw:glue-points", "?f8 0 ?f11 ?f2 ?f15 0 ?f16 ?f21 ?f13 ?f2");
1564     processModifiers(o, out, QList<int>() << 12960<< 19440<< 7200);
1565     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1566     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");
1567     out.xml.addAttribute("draw:type", "mso-spt104");
1568     out.xml.addAttribute("draw:text-areas", "?f41 ?f43 ?f42 ?f44");
1569     setShapeMirroring(o, out);
1570     equation(out,"f0","$0 ");
1571     equation(out,"f1","$1 ");
1572     equation(out,"f2","$2 ");
1573     equation(out,"f3","$0 +21600-$1 ");
1574     equation(out,"f4","?f3 /2");
1575     equation(out,"f5","$1 +$1 -21600");
1576     equation(out,"f6","?f5 +$1 -$0 ");
1577     equation(out,"f7","?f6 /2");
1578     equation(out,"f8","(21600+$0 )/2");
1579     equation(out,"f9","?f4 *sqrt(1-($2 /21600)*($2 /21600))");
1580     equation(out,"f10","?f4 +?f9 ");
1581     equation(out,"f11","?f10 +$1 -21600");
1582     equation(out,"f12","?f7 +?f9 ");
1583     equation(out,"f13","?f11 +21600-$0 ");
1584     equation(out,"f14","?f5 -$0 ");
1585     equation(out,"f15","?f14 /2");
1586     equation(out,"f16","(?f4 +?f7 )/2");
1587     equation(out,"f17","$0 +$1 -21600");
1588     equation(out,"f18","?f17 /2");
1589     equation(out,"f19","?f16 -?f18 ");
1590     equation(out,"f20","21600");
1591     equation(out,"f21","21600");
1592     equation(out,"f22","-21600");
1593     equation(out,"f23","?f16 -?f4 ");
1594     equation(out,"f24","21600*sqrt(1-(?f23 /?f4 )*(?f23 /?f4 ))");
1595     equation(out,"f25","?f8 +128");
1596     equation(out,"f26","?f5 /2");
1597     equation(out,"f27","?f5 -128");
1598     equation(out,"f28","$0 +?f16 -?f11 ");
1599     equation(out,"f29","21600-$0 ");
1600     equation(out,"f30","?f29 /2");
1601     equation(out,"f31","21600*21600");
1602     equation(out,"f32","$2 *$2 ");
1603     equation(out,"f33","?f31 -?f32 ");
1604     equation(out,"f34","sqrt(?f33 )");
1605     equation(out,"f35","?f34 +21600");
1606     equation(out,"f36","21600*21600/?f35 ");
1607     equation(out,"f37","?f36 +64");
1608     equation(out,"f38","$0 /2");
1609     equation(out,"f39","21600*sqrt(1-(?f30 /?f38 )*(?f30 /?f38 ))");
1610     equation(out,"f40","?f39 -64");
1611     equation(out,"f41","?f4 /2");
1612     equation(out,"f42","$1 -?f41 ");
1613     equation(out,"f43","21600*2195/16384");
1614     equation(out,"f44","21600*14189/16384");
1615     out.xml.startElement("draw:handle");
1616     out.xml.addAttribute("draw:handle-position", "$0 top");
1617     out.xml.addAttribute("draw:handle-range-x-maximum", "?f27");
1618     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1619     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1620     out.xml.addAttribute("draw:handle-range-x-minimum", "?f37");
1621     out.xml.endElement(); // draw:handle
1622     out.xml.startElement("draw:handle");
1623     out.xml.addAttribute("draw:handle-position", "$1 top");
1624     out.xml.addAttribute("draw:handle-range-x-maximum", "?f20");
1625     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1626     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1627     out.xml.addAttribute("draw:handle-range-x-minimum", "?f25");
1628     out.xml.endElement(); // draw:handle
1629     out.xml.startElement("draw:handle");
1630     out.xml.addAttribute("draw:handle-position", "21600 $2");
1631     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1632     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1633     out.xml.addAttribute("draw:handle-range-y-maximum", "?f40");
1634     out.xml.addAttribute("draw:handle-range-x-minimum", "3375");
1635     out.xml.endElement(); // draw:handle
1636     out.xml.endElement(); // enhanced geometry
1637     out.xml.endElement(); // custom shape
1638 }
1639 
1640 
1641 void ODrawToOdf::processCurvedDownArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1642     out.xml.startElement("draw:custom-shape");
1643     processStyleAndText(o, out);
1644 
1645     out.xml.startElement("draw:enhanced-geometry");
1646     out.xml.addAttribute("draw:glue-points", "?f17 0 ?f16 21600 ?f12 ?f2 ?f8 21600 ?f14 ?f2");
1647     processModifiers(o, out, QList<int>() << 12960<< 19440<< 14400);
1648     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1649     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");
1650     out.xml.addAttribute("draw:type", "mso-spt105");
1651     out.xml.addAttribute("draw:text-areas", "?f43 ?f45 ?f44 ?f46");
1652     setShapeMirroring(o, out);
1653     equation(out,"f0","$0 ");
1654     equation(out,"f1","$1 ");
1655     equation(out,"f2","$2 ");
1656     equation(out,"f3","$0 +21600-$1 ");
1657     equation(out,"f4","?f3 /2");
1658     equation(out,"f5","$1 +$1 -21600");
1659     equation(out,"f6","?f5 +$1 -$0 ");
1660     equation(out,"f7","?f6 /2");
1661     equation(out,"f8","(21600+$0 )/2");
1662     equation(out,"f9","21600-$2 ");
1663     equation(out,"f10","?f4 *sqrt(1-(?f9 /21600)*(?f9 /21600))");
1664     equation(out,"f11","?f4 +?f10 ");
1665     equation(out,"f12","?f11 +$1 -21600");
1666     equation(out,"f13","?f7 +?f10 ");
1667     equation(out,"f14","?f12 +21600-$0 ");
1668     equation(out,"f15","?f5 -$0 ");
1669     equation(out,"f16","?f15 /2");
1670     equation(out,"f17","(?f4 +?f7 )/2");
1671     equation(out,"f18","$0 +$1 -21600");
1672     equation(out,"f19","?f18 /2");
1673     equation(out,"f20","?f17 -?f19 ");
1674     equation(out,"f21","21600*2");
1675     equation(out,"f22","?f17 -?f4 ");
1676     equation(out,"f23","21600*sqrt(1-(?f22 /?f4 )*(?f22 /?f4 ))");
1677     equation(out,"f24","21600-?f23 ");
1678     equation(out,"f25","?f8 +128");
1679     equation(out,"f26","?f5 /2");
1680     equation(out,"f27","?f5 -128");
1681     equation(out,"f28","$0 +?f17 -?f12 ");
1682     equation(out,"f29","21600*sqrt(1-(?f20 /?f4 )*(?f20 /?f4 ))");
1683     equation(out,"f30","21600-$0 ");
1684     equation(out,"f31","?f30 /2");
1685     equation(out,"f32","21600*21600");
1686     equation(out,"f33","?f9 *?f9 ");
1687     equation(out,"f34","?f32 -?f33 ");
1688     equation(out,"f35","sqrt(?f34 )");
1689     equation(out,"f36","?f35 +21600");
1690     equation(out,"f37","21600*21600/?f36 ");
1691     equation(out,"f38","?f37 +64");
1692     equation(out,"f39","$0 /2");
1693     equation(out,"f40","21600*sqrt(1-(?f31 /?f39 )*(?f31 /?f39 ))");
1694     equation(out,"f41","21600-?f40 ");
1695     equation(out,"f42","?f41 +64");
1696     equation(out,"f43","?f4 /2");
1697     equation(out,"f44","$1 -?f43 ");
1698     equation(out,"f45","21600*2195/16384");
1699     equation(out,"f46","21600*14189/16384");
1700     out.xml.startElement("draw:handle");
1701     out.xml.addAttribute("draw:handle-position", "$0 21600");
1702     out.xml.addAttribute("draw:handle-range-x-maximum", "?f27");
1703     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1704     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1705     out.xml.addAttribute("draw:handle-range-x-minimum", "?f38");
1706     out.xml.endElement(); // draw:handle
1707     out.xml.startElement("draw:handle");
1708     out.xml.addAttribute("draw:handle-position", "$1 21600");
1709     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1710     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1711     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1712     out.xml.addAttribute("draw:handle-range-x-minimum", "?f25");
1713     out.xml.endElement(); // draw:handle
1714     out.xml.startElement("draw:handle");
1715     out.xml.addAttribute("draw:handle-position", "21600 $2");
1716     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1717     out.xml.addAttribute("draw:handle-range-y-minimum", "?f42");
1718     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1719     out.xml.addAttribute("draw:handle-range-x-minimum", "3375");
1720     out.xml.endElement(); // draw:handle
1721     out.xml.endElement(); // enhanced geometry
1722     out.xml.endElement(); // custom shape
1723 }
1724 
1725 
1726 void ODrawToOdf::processStripedRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1727     out.xml.startElement("draw:custom-shape");
1728     processStyleAndText(o, out);
1729 
1730     out.xml.startElement("draw:enhanced-geometry");
1731     processModifiers(o, out, QList<int>() << 16200<< 5400);
1732     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1733     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");
1734     out.xml.addAttribute("draw:type", "striped-right-arrow");
1735     out.xml.addAttribute("draw:text-areas", "3375 ?f0 ?f5 ?f2");
1736     setShapeMirroring(o, out);
1737     equation(out,"f0","$1 ");
1738     equation(out,"f1","$0 ");
1739     equation(out,"f2","21600-$1 ");
1740     equation(out,"f3","21600-?f1 ");
1741     equation(out,"f4","?f3 *?f0 /10800");
1742     equation(out,"f5","?f1 +?f4 ");
1743     out.xml.startElement("draw:handle");
1744     out.xml.addAttribute("draw:handle-position", "$0 $1");
1745     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1746     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1747     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1748     out.xml.addAttribute("draw:handle-range-x-minimum", "3375");
1749     out.xml.endElement(); // draw:handle
1750     out.xml.endElement(); // enhanced geometry
1751     out.xml.endElement(); // custom shape
1752 }
1753 
1754 
1755 void ODrawToOdf::processNotchedRightArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
1756     out.xml.startElement("draw:custom-shape");
1757     processStyleAndText(o, out);
1758 
1759     out.xml.startElement("draw:enhanced-geometry");
1760     processModifiers(o, out, QList<int>() << 16200<< 5400);
1761     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1762     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");
1763     out.xml.addAttribute("draw:type", "notched-right-arrow");
1764     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1765     setShapeMirroring(o, out);
1766     equation(out,"f0","$0 ");
1767     equation(out,"f1","$1 ");
1768     equation(out,"f2","21600-$1 ");
1769     equation(out,"f3","21600-$0 ");
1770     equation(out,"f4","10800-$1 ");
1771     equation(out,"f5","?f3 *?f4 /10800");
1772     out.xml.startElement("draw:handle");
1773     out.xml.addAttribute("draw:handle-position", "$0 $1");
1774     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1775     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1776     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1777     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1778     out.xml.endElement(); // draw:handle
1779     out.xml.endElement(); // enhanced geometry
1780     out.xml.endElement(); // custom shape
1781 }
1782 
1783 
1784 void ODrawToOdf::processHomePlate(const MSO::OfficeArtSpContainer& o, Writer& out) {
1785     out.xml.startElement("draw:custom-shape");
1786     processStyleAndText(o, out);
1787 
1788     out.xml.startElement("draw:enhanced-geometry");
1789     processModifiers(o, out, QList<int>() << 16200);
1790     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1791     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L ?f0 0 21600 10800 ?f0 21600 0 21600 Z N");
1792     out.xml.addAttribute("draw:type", "pentagon-right");
1793     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1794     setShapeMirroring(o, out);
1795     equation(out,"f0","$0 ");
1796     out.xml.startElement("draw:handle");
1797     out.xml.addAttribute("draw:handle-position", "$0 top");
1798     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1799     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1800     out.xml.endElement(); // draw:handle
1801     out.xml.endElement(); // enhanced geometry
1802     out.xml.endElement(); // custom shape
1803 }
1804 
1805 
1806 void ODrawToOdf::processChevron(const MSO::OfficeArtSpContainer& o, Writer& out) {
1807     out.xml.startElement("draw:custom-shape");
1808     processStyleAndText(o, out);
1809 
1810     out.xml.startElement("draw:enhanced-geometry");
1811     processModifiers(o, out, QList<int>() << 16200);
1812     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1813     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L ?f0 0 21600 10800 ?f0 21600 0 21600 ?f1 10800 Z N");
1814     out.xml.addAttribute("draw:type", "chevron");
1815     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
1816     setShapeMirroring(o, out);
1817     equation(out,"f0","$0 ");
1818     equation(out,"f1","21600-?f0 ");
1819     out.xml.startElement("draw:handle");
1820     out.xml.addAttribute("draw:handle-position", "$0 top");
1821     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1822     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1823     out.xml.endElement(); // draw:handle
1824     out.xml.endElement(); // enhanced geometry
1825     out.xml.endElement(); // custom shape
1826 }
1827 
1828 
1829 void ODrawToOdf::processRightArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1830     out.xml.startElement("draw:custom-shape");
1831     processStyleAndText(o, out);
1832 
1833     out.xml.startElement("draw:enhanced-geometry");
1834     processModifiers(o, out, QList<int>() << 14400<< 5400<< 18000<< 8100);
1835     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1836     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");
1837     out.xml.addAttribute("draw:type", "right-arrow-callout");
1838     out.xml.addAttribute("draw:text-areas", "0 0 ?f0 21600");
1839     setShapeMirroring(o, out);
1840     equation(out,"f0","$0 ");
1841     equation(out,"f1","$1 ");
1842     equation(out,"f2","$2 ");
1843     equation(out,"f3","$3 ");
1844     equation(out,"f4","21600-?f1 ");
1845     equation(out,"f5","21600-?f3 ");
1846     out.xml.startElement("draw:handle");
1847     out.xml.addAttribute("draw:handle-position", "$0 top");
1848     out.xml.addAttribute("draw:handle-range-x-maximum", "$2");
1849     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1850     out.xml.endElement(); // draw:handle
1851     out.xml.startElement("draw:handle");
1852     out.xml.addAttribute("draw:handle-position", "$2 $3");
1853     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1854     out.xml.addAttribute("draw:handle-range-y-minimum", "$1");
1855     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1856     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
1857     out.xml.endElement(); // draw:handle
1858     out.xml.startElement("draw:handle");
1859     out.xml.addAttribute("draw:handle-position", "right $1");
1860     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1861     out.xml.addAttribute("draw:handle-range-y-maximum", "$3");
1862     out.xml.endElement(); // draw:handle
1863     out.xml.endElement(); // enhanced geometry
1864     out.xml.endElement(); // custom shape
1865 }
1866 
1867 
1868 void ODrawToOdf::processLeftArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1869     out.xml.startElement("draw:custom-shape");
1870     processStyleAndText(o, out);
1871 
1872     out.xml.startElement("draw:enhanced-geometry");
1873     processModifiers(o, out, QList<int>() << 7200<< 5400<< 3600<< 8100);
1874     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1875     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");
1876     out.xml.addAttribute("draw:type", "left-arrow-callout");
1877     out.xml.addAttribute("draw:text-areas", "?f0 0 21600 21600");
1878     setShapeMirroring(o, out);
1879     equation(out,"f0","$0 ");
1880     equation(out,"f1","$1 ");
1881     equation(out,"f2","$2 ");
1882     equation(out,"f3","$3 ");
1883     equation(out,"f4","21600-?f1 ");
1884     equation(out,"f5","21600-?f3 ");
1885     out.xml.startElement("draw:handle");
1886     out.xml.addAttribute("draw:handle-position", "$0 top");
1887     out.xml.addAttribute("draw:handle-range-x-maximum", "21600");
1888     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
1889     out.xml.endElement(); // draw:handle
1890     out.xml.startElement("draw:handle");
1891     out.xml.addAttribute("draw:handle-position", "$2 $3");
1892     out.xml.addAttribute("draw:handle-range-x-maximum", "$0");
1893     out.xml.addAttribute("draw:handle-range-y-minimum", "$1");
1894     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
1895     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1896     out.xml.endElement(); // draw:handle
1897     out.xml.startElement("draw:handle");
1898     out.xml.addAttribute("draw:handle-position", "left $1");
1899     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1900     out.xml.addAttribute("draw:handle-range-y-maximum", "$3");
1901     out.xml.endElement(); // draw:handle
1902     out.xml.endElement(); // enhanced geometry
1903     out.xml.endElement(); // custom shape
1904 }
1905 
1906 
1907 void ODrawToOdf::processUpArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1908     out.xml.startElement("draw:custom-shape");
1909     processStyleAndText(o, out);
1910 
1911     out.xml.startElement("draw:enhanced-geometry");
1912     processModifiers(o, out, QList<int>() << 7200<< 5400<< 3600<< 8100);
1913     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1914     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");
1915     out.xml.addAttribute("draw:type", "up-arrow-callout");
1916     out.xml.addAttribute("draw:text-areas", "0 ?f0 21600 21600");
1917     setShapeMirroring(o, out);
1918     equation(out,"f0","$0 ");
1919     equation(out,"f1","$1 ");
1920     equation(out,"f2","$2 ");
1921     equation(out,"f3","$3 ");
1922     equation(out,"f4","21600-?f1 ");
1923     equation(out,"f5","21600-?f3 ");
1924     out.xml.startElement("draw:handle");
1925     out.xml.addAttribute("draw:handle-position", "left $0");
1926     out.xml.addAttribute("draw:handle-range-y-minimum", "$2");
1927     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1928     out.xml.endElement(); // draw:handle
1929     out.xml.startElement("draw:handle");
1930     out.xml.addAttribute("draw:handle-position", "$3 $2");
1931     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1932     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1933     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
1934     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
1935     out.xml.endElement(); // draw:handle
1936     out.xml.startElement("draw:handle");
1937     out.xml.addAttribute("draw:handle-position", "$1 top");
1938     out.xml.addAttribute("draw:handle-range-x-maximum", "$3");
1939     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1940     out.xml.endElement(); // draw:handle
1941     out.xml.endElement(); // enhanced geometry
1942     out.xml.endElement(); // custom shape
1943 }
1944 
1945 
1946 void ODrawToOdf::processDownArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1947     out.xml.startElement("draw:custom-shape");
1948     processStyleAndText(o, out);
1949 
1950     out.xml.startElement("draw:enhanced-geometry");
1951     processModifiers(o, out, QList<int>() << 14400<< 5400<< 18000<< 8100);
1952     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1953     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");
1954     out.xml.addAttribute("draw:type", "down-arrow-callout");
1955     out.xml.addAttribute("draw:text-areas", "0 0 21600 ?f0");
1956     setShapeMirroring(o, out);
1957     equation(out,"f0","$0 ");
1958     equation(out,"f1","$1 ");
1959     equation(out,"f2","$2 ");
1960     equation(out,"f3","$3 ");
1961     equation(out,"f4","21600-?f1 ");
1962     equation(out,"f5","21600-?f3 ");
1963     out.xml.startElement("draw:handle");
1964     out.xml.addAttribute("draw:handle-position", "left $0");
1965     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
1966     out.xml.addAttribute("draw:handle-range-y-maximum", "$2");
1967     out.xml.endElement(); // draw:handle
1968     out.xml.startElement("draw:handle");
1969     out.xml.addAttribute("draw:handle-position", "$3 $2");
1970     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
1971     out.xml.addAttribute("draw:handle-range-y-minimum", "$0");
1972     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
1973     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
1974     out.xml.endElement(); // draw:handle
1975     out.xml.startElement("draw:handle");
1976     out.xml.addAttribute("draw:handle-position", "$1 bottom");
1977     out.xml.addAttribute("draw:handle-range-x-maximum", "$3");
1978     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
1979     out.xml.endElement(); // draw:handle
1980     out.xml.endElement(); // enhanced geometry
1981     out.xml.endElement(); // custom shape
1982 }
1983 
1984 
1985 void ODrawToOdf::processLeftRightArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
1986     out.xml.startElement("draw:custom-shape");
1987     processStyleAndText(o, out);
1988 
1989     out.xml.startElement("draw:enhanced-geometry");
1990     processModifiers(o, out, QList<int>() << 5400<< 5500<< 2700<< 8100);
1991     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
1992     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");
1993     out.xml.addAttribute("draw:type", "left-right-arrow-callout");
1994     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f4 21600");
1995     setShapeMirroring(o, out);
1996     equation(out,"f0","$0 ");
1997     equation(out,"f1","$1 ");
1998     equation(out,"f2","$2 ");
1999     equation(out,"f3","$3 ");
2000     equation(out,"f4","21600-?f0 ");
2001     equation(out,"f5","21600-?f1 ");
2002     equation(out,"f6","21600-?f2 ");
2003     equation(out,"f7","21600-?f3 ");
2004     out.xml.startElement("draw:handle");
2005     out.xml.addAttribute("draw:handle-position", "$0 top");
2006     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2007     out.xml.addAttribute("draw:handle-range-x-minimum", "$2");
2008     out.xml.endElement(); // draw:handle
2009     out.xml.startElement("draw:handle");
2010     out.xml.addAttribute("draw:handle-position", "$2 $3");
2011     out.xml.addAttribute("draw:handle-range-x-maximum", "$0");
2012     out.xml.addAttribute("draw:handle-range-y-minimum", "$1");
2013     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
2014     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2015     out.xml.endElement(); // draw:handle
2016     out.xml.startElement("draw:handle");
2017     out.xml.addAttribute("draw:handle-position", "left $1");
2018     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
2019     out.xml.addAttribute("draw:handle-range-y-maximum", "$3");
2020     out.xml.endElement(); // draw:handle
2021     out.xml.endElement(); // enhanced geometry
2022     out.xml.endElement(); // custom shape
2023 }
2024 
2025 
2026 void ODrawToOdf::processUpDownArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
2027     out.xml.startElement("draw:custom-shape");
2028     processStyleAndText(o, out);
2029 
2030     out.xml.startElement("draw:enhanced-geometry");
2031     processModifiers(o, out, QList<int>() << 5400<< 5500<< 2700<< 8100);
2032     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2033     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");
2034     out.xml.addAttribute("draw:type", "up-down-arrow-callout");
2035     out.xml.addAttribute("draw:text-areas", "0 ?f0 21600 ?f4");
2036     setShapeMirroring(o, out);
2037     equation(out,"f0","$0 ");
2038     equation(out,"f1","$1 ");
2039     equation(out,"f2","$2 ");
2040     equation(out,"f3","$3 ");
2041     equation(out,"f4","21600-?f0 ");
2042     equation(out,"f5","21600-?f1 ");
2043     equation(out,"f6","21600-?f2 ");
2044     equation(out,"f7","21600-?f3 ");
2045     out.xml.startElement("draw:handle");
2046     out.xml.addAttribute("draw:handle-position", "left $0");
2047     out.xml.addAttribute("draw:handle-range-y-minimum", "$2");
2048     out.xml.addAttribute("draw:handle-range-y-maximum", "10800");
2049     out.xml.endElement(); // draw:handle
2050     out.xml.startElement("draw:handle");
2051     out.xml.addAttribute("draw:handle-position", "$3 $2");
2052     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2053     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
2054     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
2055     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
2056     out.xml.endElement(); // draw:handle
2057     out.xml.startElement("draw:handle");
2058     out.xml.addAttribute("draw:handle-position", "$1 top");
2059     out.xml.addAttribute("draw:handle-range-x-maximum", "$3");
2060     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2061     out.xml.endElement(); // draw:handle
2062     out.xml.endElement(); // enhanced geometry
2063     out.xml.endElement(); // custom shape
2064 }
2065 
2066 
2067 void ODrawToOdf::processQuadArrowCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
2068     out.xml.startElement("draw:custom-shape");
2069     processStyleAndText(o, out);
2070 
2071     out.xml.startElement("draw:enhanced-geometry");
2072     processModifiers(o, out, QList<int>() << 5400<< 8100<< 2700<< 9400);
2073     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2074     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");
2075     out.xml.addAttribute("draw:type", "quad-arrow-callout");
2076     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f4 ?f4");
2077     setShapeMirroring(o, out);
2078     equation(out,"f0","$0 ");
2079     equation(out,"f1","$1 ");
2080     equation(out,"f2","$2 ");
2081     equation(out,"f3","$3 ");
2082     equation(out,"f4","21600-?f0 ");
2083     equation(out,"f5","21600-?f1 ");
2084     equation(out,"f6","21600-?f2 ");
2085     equation(out,"f7","21600-?f3 ");
2086     out.xml.startElement("draw:handle");
2087     out.xml.addAttribute("draw:handle-position", "left $0");
2088     out.xml.addAttribute("draw:handle-range-y-minimum", "$2");
2089     out.xml.addAttribute("draw:handle-range-y-maximum", "$1");
2090     out.xml.endElement(); // draw:handle
2091     out.xml.startElement("draw:handle");
2092     out.xml.addAttribute("draw:handle-position", "$1 top");
2093     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2094     out.xml.addAttribute("draw:handle-range-x-minimum", "$0");
2095     out.xml.endElement(); // draw:handle
2096     out.xml.startElement("draw:handle");
2097     out.xml.addAttribute("draw:handle-position", "$3 $2");
2098     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2099     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
2100     out.xml.addAttribute("draw:handle-range-y-maximum", "$0");
2101     out.xml.addAttribute("draw:handle-range-x-minimum", "$1");
2102     out.xml.endElement(); // draw:handle
2103     out.xml.endElement(); // enhanced geometry
2104     out.xml.endElement(); // custom shape
2105 }
2106 
2107 
2108 void ODrawToOdf::processCircularArrow(const MSO::OfficeArtSpContainer& o, Writer& out) {
2109     out.xml.startElement("draw:custom-shape");
2110     processStyleAndText(o, out);
2111 
2112     out.xml.startElement("draw:enhanced-geometry");
2113     // custom way for processing modifieres as this shape
2114     // return the AdjustValue, AdjustValue2 16-bit shifted
2115     // see bug 274684, file mp03_cycle_default.ppt
2116     const AdjustValue* val1 = get<AdjustValue>(o);
2117     const Adjust2Value* val2 = get<Adjust2Value>(o);
2118     const Adjust3Value* val3 = get<Adjust3Value>(o);
2119     QString modifiers = QString::number(val1 ? val1->adjustvalue >> 16 : 180) +
2120             QString(" %1").arg(val2 ? val2->adjust2value >> 16 : 0) +
2121             QString(" %1").arg(val3 ? val3->adjust3value : 5500);
2122     out.xml.addAttribute("draw:modifiers", modifiers);
2123 
2124     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2125     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");
2126     out.xml.addAttribute("draw:type", "circular-arrow");
2127     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
2128     setShapeMirroring(o, out);
2129     equation(out,"f0","$0 ");
2130     equation(out,"f1","$1 ");
2131     equation(out,"f2","$2 ");
2132     equation(out,"f3","10800+$2 ");
2133     equation(out,"f4","10800*sin($0 *(pi/180))");
2134     equation(out,"f5","10800*cos($0 *(pi/180))");
2135     equation(out,"f6","10800*sin($1 *(pi/180))");
2136     equation(out,"f7","10800*cos($1 *(pi/180))");
2137     equation(out,"f8","?f4 +10800");
2138     equation(out,"f9","?f5 +10800");
2139     equation(out,"f10","?f6 +10800");
2140     equation(out,"f11","?f7 +10800");
2141     equation(out,"f12","?f3 *sin($0 *(pi/180))");
2142     equation(out,"f13","?f3 *cos($0 *(pi/180))");
2143     equation(out,"f14","?f3 *sin($1 *(pi/180))");
2144     equation(out,"f15","?f3 *cos($1 *(pi/180))");
2145     equation(out,"f16","?f12 +10800");
2146     equation(out,"f17","?f13 +10800");
2147     equation(out,"f18","?f14 +10800");
2148     equation(out,"f19","?f15 +10800");
2149     equation(out,"f20","21600-?f3 ");
2150     equation(out,"f21","13500*sin($1 *(pi/180))");
2151     equation(out,"f22","13500*cos($1 *(pi/180))");
2152     equation(out,"f23","?f21 +10800");
2153     equation(out,"f24","?f22 +10800");
2154     equation(out,"f25","$2 -2700");
2155     equation(out,"f26","?f25 *sin($1 *(pi/180))");
2156     equation(out,"f27","?f25 *cos($1 *(pi/180))");
2157     equation(out,"f28","?f26 +10800");
2158     equation(out,"f29","?f27 +10800");
2159     equation(out,"f30","?f29 -?f24 ");
2160     equation(out,"f31","?f29 -?f24 ");
2161     equation(out,"f32","?f30 *?f31 ");
2162     equation(out,"f33","?f28 -?f23 ");
2163     equation(out,"f34","?f28 -?f23 ");
2164     equation(out,"f35","?f33 *?f34 ");
2165     equation(out,"f36","?f32 +?f35 ");
2166     equation(out,"f37","sqrt(?f36 )");
2167     equation(out,"f38","$1 +45");
2168     equation(out,"f39","?f37 *sin(?f38 *(pi/180))");
2169     equation(out,"f40","$1 +45");
2170     equation(out,"f41","?f37 *cos(?f40 *(pi/180))");
2171     equation(out,"f42","45");
2172     equation(out,"f43","?f39 *sin(?f42 *(pi/180))");
2173     equation(out,"f44","45");
2174     equation(out,"f45","?f41 *sin(?f44 *(pi/180))");
2175     equation(out,"f46","?f28 +?f43 ");
2176     equation(out,"f47","?f29 +?f45 ");
2177     out.xml.startElement("draw:handle");
2178     out.xml.addAttribute("draw:handle-position", "10800 $0");
2179     out.xml.addAttribute("draw:handle-radius-range-minimum", "10800");
2180     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
2181     out.xml.addAttribute("draw:handle-polar", "10800 10800");
2182     out.xml.endElement(); // draw:handle
2183     out.xml.startElement("draw:handle");
2184     out.xml.addAttribute("draw:handle-position", "$2 $1");
2185     out.xml.addAttribute("draw:handle-radius-range-minimum", "0");
2186     out.xml.addAttribute("draw:handle-radius-range-maximum", "10800");
2187     out.xml.addAttribute("draw:handle-polar", "10800 10800");
2188     out.xml.endElement(); // draw:handle
2189     out.xml.endElement(); // enhanced geometry
2190     out.xml.endElement(); // custom shape
2191 }
2192 
2193 
2194 void ODrawToOdf::processFlowChartProcess(const MSO::OfficeArtSpContainer& o, Writer& out) {
2195     out.xml.startElement("draw:custom-shape");
2196     processStyleAndText(o, out);
2197 
2198     out.xml.startElement("draw:enhanced-geometry");
2199     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2200     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2201     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 21600 0 21600 0 0 Z N");
2202     out.xml.addAttribute("draw:type", "flowchart-process");
2203     setShapeMirroring(o, out);
2204     out.xml.endElement(); // enhanced geometry
2205     out.xml.endElement(); // custom shape
2206 }
2207 
2208 
2209 void ODrawToOdf::processFlowChartAlternateProcess(const MSO::OfficeArtSpContainer& o, Writer& out) {
2210     out.xml.startElement("draw:custom-shape");
2211     processStyleAndText(o, out);
2212 
2213     out.xml.startElement("draw:enhanced-geometry");
2214     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2215     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2216     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");
2217     out.xml.addAttribute("draw:type", "flowchart-alternate-process");
2218     out.xml.addAttribute("draw:text-areas", "?f4 ?f6 ?f5 ?f7");
2219     setShapeMirroring(o, out);
2220     equation(out,"f0","left+2540");
2221     equation(out,"f1","right-2540");
2222     equation(out,"f2","top+2540");
2223     equation(out,"f3","bottom-2540");
2224     equation(out,"f4","left+800");
2225     equation(out,"f5","right-800");
2226     equation(out,"f6","top+800");
2227     equation(out,"f7","bottom-800");
2228     out.xml.endElement(); // enhanced geometry
2229     out.xml.endElement(); // custom shape
2230 }
2231 
2232 
2233 void ODrawToOdf::processFlowChartDecision(const MSO::OfficeArtSpContainer& o, Writer& out) {
2234     out.xml.startElement("draw:custom-shape");
2235     processStyleAndText(o, out);
2236 
2237     out.xml.startElement("draw:enhanced-geometry");
2238     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2239     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2240     out.xml.addAttribute("draw:enhanced-path", "M 0 10800 L 10800 0 21600 10800 10800 21600 0 10800 Z N");
2241     out.xml.addAttribute("draw:type", "flowchart-decision");
2242     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
2243     setShapeMirroring(o, out);
2244     out.xml.endElement(); // enhanced geometry
2245     out.xml.endElement(); // custom shape
2246 }
2247 
2248 
2249 void ODrawToOdf::processFlowChartInputOutput(const MSO::OfficeArtSpContainer& o, Writer& out) {
2250     out.xml.startElement("draw:custom-shape");
2251     processStyleAndText(o, out);
2252 
2253     out.xml.startElement("draw:enhanced-geometry");
2254     out.xml.addAttribute("draw:glue-points", "12960 0 10800 0 2160 10800 8600 21600 10800 21600 19400 10800");
2255     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2256     out.xml.addAttribute("draw:enhanced-path", "M 4230 0 L 21600 0 17370 21600 0 21600 4230 0 Z N");
2257     out.xml.addAttribute("draw:type", "flowchart-data");
2258     out.xml.addAttribute("draw:text-areas", "4230 0 17370 21600");
2259     setShapeMirroring(o, out);
2260     out.xml.endElement(); // enhanced geometry
2261     out.xml.endElement(); // custom shape
2262 }
2263 
2264 
2265 void ODrawToOdf::processFlowChartPredefinedProcess(const MSO::OfficeArtSpContainer& o, Writer& out) {
2266     out.xml.startElement("draw:custom-shape");
2267     processStyleAndText(o, out);
2268 
2269     out.xml.startElement("draw:enhanced-geometry");
2270     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2271     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");
2272     out.xml.addAttribute("draw:type", "flowchart-predefined-process");
2273     out.xml.addAttribute("draw:text-areas", "2540 0 19060 21600");
2274     setShapeMirroring(o, out);
2275     out.xml.endElement(); // enhanced geometry
2276     out.xml.endElement(); // custom shape
2277 }
2278 
2279 
2280 void ODrawToOdf::processFlowChartInternalStorage(const MSO::OfficeArtSpContainer& o, Writer& out) {
2281     out.xml.startElement("draw:custom-shape");
2282     processStyleAndText(o, out);
2283 
2284     out.xml.startElement("draw:enhanced-geometry");
2285     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2286     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");
2287     out.xml.addAttribute("draw:type", "flowchart-internal-storage");
2288     out.xml.addAttribute("draw:text-areas", "4230 4230 21600 21600");
2289     setShapeMirroring(o, out);
2290     out.xml.endElement(); // enhanced geometry
2291     out.xml.endElement(); // custom shape
2292 }
2293 
2294 
2295 void ODrawToOdf::processFlowChartDocument(const MSO::OfficeArtSpContainer& o, Writer& out) {
2296     out.xml.startElement("draw:custom-shape");
2297     processStyleAndText(o, out);
2298 
2299     out.xml.startElement("draw:enhanced-geometry");
2300     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 20320 21600 10800");
2301     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2302     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");
2303     out.xml.addAttribute("draw:type", "flowchart-document");
2304     out.xml.addAttribute("draw:text-areas", "0 0 21600 17360");
2305     setShapeMirroring(o, out);
2306     out.xml.endElement(); // enhanced geometry
2307     out.xml.endElement(); // custom shape
2308 }
2309 
2310 
2311 void ODrawToOdf::processFlowChartMultidocument(const MSO::OfficeArtSpContainer& o, Writer& out) {
2312     out.xml.startElement("draw:custom-shape");
2313     processStyleAndText(o, out);
2314 
2315     out.xml.startElement("draw:enhanced-geometry");
2316     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 19890 21600 10800");
2317     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2318     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");
2319     out.xml.addAttribute("draw:type", "flowchart-multidocument");
2320     out.xml.addAttribute("draw:text-areas", "0 3600 18600 18009");
2321     setShapeMirroring(o, out);
2322     out.xml.endElement(); // enhanced geometry
2323     out.xml.endElement(); // custom shape
2324 }
2325 
2326 
2327 void ODrawToOdf::processFlowChartTerminator(const MSO::OfficeArtSpContainer& o, Writer& out) {
2328     out.xml.startElement("draw:custom-shape");
2329     processStyleAndText(o, out);
2330 
2331     out.xml.startElement("draw:enhanced-geometry");
2332     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2333     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2334     out.xml.addAttribute("draw:enhanced-path", "M 3470 21600 X 0 10800 3470 0 L 18130 0 X 21600 10800 18130 21600 Z N");
2335     out.xml.addAttribute("draw:type", "flowchart-terminator");
2336     out.xml.addAttribute("draw:text-areas", "1060 3180 20540 18420");
2337     setShapeMirroring(o, out);
2338     out.xml.endElement(); // enhanced geometry
2339     out.xml.endElement(); // custom shape
2340 }
2341 
2342 
2343 void ODrawToOdf::processFlowChartPreparation(const MSO::OfficeArtSpContainer& o, Writer& out) {
2344     out.xml.startElement("draw:custom-shape");
2345     processStyleAndText(o, out);
2346 
2347     out.xml.startElement("draw:enhanced-geometry");
2348     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2349     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2350     out.xml.addAttribute("draw:enhanced-path", "M 4350 0 L 17250 0 21600 10800 17250 21600 4350 21600 0 10800 4350 0 Z N");
2351     out.xml.addAttribute("draw:type", "flowchart-preparation");
2352     out.xml.addAttribute("draw:text-areas", "4350 0 17250 21600");
2353     setShapeMirroring(o, out);
2354     out.xml.endElement(); // enhanced geometry
2355     out.xml.endElement(); // custom shape
2356 }
2357 
2358 
2359 void ODrawToOdf::processFlowChartManualInput(const MSO::OfficeArtSpContainer& o, Writer& out) {
2360     out.xml.startElement("draw:custom-shape");
2361     processStyleAndText(o, out);
2362 
2363     out.xml.startElement("draw:enhanced-geometry");
2364     out.xml.addAttribute("draw:glue-points", "10800 2150 0 10800 10800 19890 21600 10800");
2365     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2366     out.xml.addAttribute("draw:enhanced-path", "M 0 4300 L 21600 0 21600 21600 0 21600 0 4300 Z N");
2367     out.xml.addAttribute("draw:type", "flowchart-manual-input");
2368     out.xml.addAttribute("draw:text-areas", "0 4300 21600 21600");
2369     setShapeMirroring(o, out);
2370     out.xml.endElement(); // enhanced geometry
2371     out.xml.endElement(); // custom shape
2372 }
2373 
2374 
2375 void ODrawToOdf::processFlowChartManualOperation(const MSO::OfficeArtSpContainer& o, Writer& out) {
2376     out.xml.startElement("draw:custom-shape");
2377     processStyleAndText(o, out);
2378 
2379     out.xml.startElement("draw:enhanced-geometry");
2380     out.xml.addAttribute("draw:glue-points", "10800 0 2160 10800 10800 21600 19440 10800");
2381     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2382     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 17250 21600 4350 21600 0 0 Z N");
2383     out.xml.addAttribute("draw:type", "flowchart-manual-operation");
2384     out.xml.addAttribute("draw:text-areas", "4350 0 17250 21600");
2385     setShapeMirroring(o, out);
2386     out.xml.endElement(); // enhanced geometry
2387     out.xml.endElement(); // custom shape
2388 }
2389 
2390 
2391 void ODrawToOdf::processFlowChartConnector(const MSO::OfficeArtSpContainer& o, Writer& out) {
2392     out.xml.startElement("draw:custom-shape");
2393     processStyleAndText(o, out);
2394 
2395     out.xml.startElement("draw:enhanced-geometry");
2396     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
2397     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2398     out.xml.addAttribute("draw:enhanced-path", "U 10800 10800 10800 10800 0 360 Z N");
2399     out.xml.addAttribute("draw:type", "flowchart-connector");
2400     out.xml.addAttribute("draw:text-areas", "3180 3180 18420 18420");
2401     setShapeMirroring(o, out);
2402     out.xml.endElement(); // enhanced geometry
2403     out.xml.endElement(); // custom shape
2404 }
2405 
2406 
2407 void ODrawToOdf::processFlowChartOffpageConnector(const MSO::OfficeArtSpContainer& o, Writer& out) {
2408     out.xml.startElement("draw:custom-shape");
2409     processStyleAndText(o, out);
2410 
2411     out.xml.startElement("draw:enhanced-geometry");
2412     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2413     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2414     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 21600 17150 10800 21600 0 17150 0 0 Z N");
2415     out.xml.addAttribute("draw:type", "flowchart-off-page-connector");
2416     out.xml.addAttribute("draw:text-areas", "0 0 21600 17150");
2417     setShapeMirroring(o, out);
2418     out.xml.endElement(); // enhanced geometry
2419     out.xml.endElement(); // custom shape
2420 }
2421 
2422 
2423 void ODrawToOdf::processFlowChartPunchedCard(const MSO::OfficeArtSpContainer& o, Writer& out) {
2424     out.xml.startElement("draw:custom-shape");
2425     processStyleAndText(o, out);
2426 
2427     out.xml.startElement("draw:enhanced-geometry");
2428     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2429     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2430     out.xml.addAttribute("draw:enhanced-path", "M 4300 0 L 21600 0 21600 21600 0 21600 0 4300 4300 0 Z N");
2431     out.xml.addAttribute("draw:type", "flowchart-card");
2432     out.xml.addAttribute("draw:text-areas", "0 4300 21600 21600");
2433     setShapeMirroring(o, out);
2434     out.xml.endElement(); // enhanced geometry
2435     out.xml.endElement(); // custom shape
2436 }
2437 
2438 
2439 void ODrawToOdf::processFlowChartPunchedTape(const MSO::OfficeArtSpContainer& o, Writer& out) {
2440     out.xml.startElement("draw:custom-shape");
2441     processStyleAndText(o, out);
2442 
2443     out.xml.startElement("draw:enhanced-geometry");
2444     out.xml.addAttribute("draw:glue-points", "10800 2020 0 10800 10800 19320 21600 10800");
2445     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2446     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");
2447     out.xml.addAttribute("draw:type", "flowchart-punched-tape");
2448     out.xml.addAttribute("draw:text-areas", "0 4360 21600 17240");
2449     setShapeMirroring(o, out);
2450     out.xml.endElement(); // enhanced geometry
2451     out.xml.endElement(); // custom shape
2452 }
2453 
2454 
2455 void ODrawToOdf::processFlowChartSummingJunction(const MSO::OfficeArtSpContainer& o, Writer& out) {
2456     out.xml.startElement("draw:custom-shape");
2457     processStyleAndText(o, out);
2458 
2459     out.xml.startElement("draw:enhanced-geometry");
2460     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
2461     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2462     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");
2463     out.xml.addAttribute("draw:type", "flowchart-summing-junction");
2464     out.xml.addAttribute("draw:text-areas", "3100 3100 18500 18500");
2465     setShapeMirroring(o, out);
2466     out.xml.endElement(); // enhanced geometry
2467     out.xml.endElement(); // custom shape
2468 }
2469 
2470 
2471 void ODrawToOdf::processFlowChartOr(const MSO::OfficeArtSpContainer& o, Writer& out) {
2472     out.xml.startElement("draw:custom-shape");
2473     processStyleAndText(o, out);
2474 
2475     out.xml.startElement("draw:enhanced-geometry");
2476     out.xml.addAttribute("draw:glue-points", "10800 0 3163 3163 0 10800 3163 18437 10800 21600 18437 18437 21600 10800 18437 3163");
2477     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2478     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");
2479     out.xml.addAttribute("draw:type", "flowchart-or");
2480     out.xml.addAttribute("draw:text-areas", "3100 3100 18500 18500");
2481     setShapeMirroring(o, out);
2482     out.xml.endElement(); // enhanced geometry
2483     out.xml.endElement(); // custom shape
2484 }
2485 
2486 
2487 void ODrawToOdf::processFlowChartCollate(const MSO::OfficeArtSpContainer& o, Writer& out) {
2488     out.xml.startElement("draw:custom-shape");
2489     processStyleAndText(o, out);
2490 
2491     out.xml.startElement("draw:enhanced-geometry");
2492     out.xml.addAttribute("draw:glue-points", "10800 0 10800 10800 10800 21600");
2493     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2494     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 21600 0 21600 21600 0 0 0 Z N");
2495     out.xml.addAttribute("draw:type", "flowchart-collate");
2496     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
2497     setShapeMirroring(o, out);
2498     out.xml.endElement(); // enhanced geometry
2499     out.xml.endElement(); // custom shape
2500 }
2501 
2502 
2503 void ODrawToOdf::processFlowChartSort(const MSO::OfficeArtSpContainer& o, Writer& out) {
2504     out.xml.startElement("draw:custom-shape");
2505     processStyleAndText(o, out);
2506 
2507     out.xml.startElement("draw:enhanced-geometry");
2508     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2509     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");
2510     out.xml.addAttribute("draw:type", "flowchart-sort");
2511     out.xml.addAttribute("draw:text-areas", "5400 5400 16200 16200");
2512     setShapeMirroring(o, out);
2513     out.xml.endElement(); // enhanced geometry
2514     out.xml.endElement(); // custom shape
2515 }
2516 
2517 
2518 void ODrawToOdf::processFlowChartExtract(const MSO::OfficeArtSpContainer& o, Writer& out) {
2519     out.xml.startElement("draw:custom-shape");
2520     processStyleAndText(o, out);
2521 
2522     out.xml.startElement("draw:enhanced-geometry");
2523     out.xml.addAttribute("draw:glue-points", "10800 0 5400 10800 10800 21600 16200 10800");
2524     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2525     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 L 21600 21600 0 21600 10800 0 Z N");
2526     out.xml.addAttribute("draw:type", "flowchart-extract");
2527     out.xml.addAttribute("draw:text-areas", "5400 10800 16200 21600");
2528     setShapeMirroring(o, out);
2529     out.xml.endElement(); // enhanced geometry
2530     out.xml.endElement(); // custom shape
2531 }
2532 
2533 
2534 void ODrawToOdf::processFlowChartMerge(const MSO::OfficeArtSpContainer& o, Writer& out) {
2535     out.xml.startElement("draw:custom-shape");
2536     processStyleAndText(o, out);
2537 
2538     out.xml.startElement("draw:enhanced-geometry");
2539     out.xml.addAttribute("draw:glue-points", "10800 0 5400 10800 10800 21600 16200 10800");
2540     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2541     out.xml.addAttribute("draw:enhanced-path", "M 0 0 L 21600 0 10800 21600 0 0 Z N");
2542     out.xml.addAttribute("draw:type", "flowchart-merge");
2543     out.xml.addAttribute("draw:text-areas", "5400 0 16200 10800");
2544     setShapeMirroring(o, out);
2545     out.xml.endElement(); // enhanced geometry
2546     out.xml.endElement(); // custom shape
2547 }
2548 
2549 
2550 void ODrawToOdf::processFlowChartOnlineStorage(const MSO::OfficeArtSpContainer& o, Writer& out) {
2551     out.xml.startElement("draw:custom-shape");
2552     processStyleAndText(o, out);
2553 
2554     out.xml.startElement("draw:enhanced-geometry");
2555     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 18000 10800");
2556     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2557     out.xml.addAttribute("draw:enhanced-path", "M 3600 21600 X 0 10800 3600 0 L 21600 0 X 18000 10800 21600 21600 Z N");
2558     out.xml.addAttribute("draw:type", "flowchart-stored-data");
2559     out.xml.addAttribute("draw:text-areas", "3600 0 18000 21600");
2560     setShapeMirroring(o, out);
2561     out.xml.endElement(); // enhanced geometry
2562     out.xml.endElement(); // custom shape
2563 }
2564 
2565 
2566 void ODrawToOdf::processFlowChartDelay(const MSO::OfficeArtSpContainer& o, Writer& out) {
2567     out.xml.startElement("draw:custom-shape");
2568     processStyleAndText(o, out);
2569 
2570     out.xml.startElement("draw:enhanced-geometry");
2571     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2572     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2573     out.xml.addAttribute("draw:enhanced-path", "M 10800 0 X 21600 10800 10800 21600 L 0 21600 0 0 Z N");
2574     out.xml.addAttribute("draw:type", "flowchart-delay");
2575     out.xml.addAttribute("draw:text-areas", "0 3100 18500 18500");
2576     setShapeMirroring(o, out);
2577     out.xml.endElement(); // enhanced geometry
2578     out.xml.endElement(); // custom shape
2579 }
2580 
2581 
2582 void ODrawToOdf::processFlowChartMagneticTape(const MSO::OfficeArtSpContainer& o, Writer& out) {
2583     out.xml.startElement("draw:custom-shape");
2584     processStyleAndText(o, out);
2585 
2586     out.xml.startElement("draw:enhanced-geometry");
2587     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2588     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2589     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");
2590     out.xml.addAttribute("draw:type", "flowchart-sequential-access");
2591     out.xml.addAttribute("draw:text-areas", "3100 3100 18500 18500");
2592     setShapeMirroring(o, out);
2593     out.xml.endElement(); // enhanced geometry
2594     out.xml.endElement(); // custom shape
2595 }
2596 
2597 
2598 void ODrawToOdf::processFlowChartMagneticDisk(const MSO::OfficeArtSpContainer& o, Writer& out) {
2599     out.xml.startElement("draw:custom-shape");
2600     processStyleAndText(o, out);
2601 
2602     out.xml.startElement("draw:enhanced-geometry");
2603     out.xml.addAttribute("draw:glue-points", "10800 6800 10800 0 0 10800 10800 21600 21600 10800");
2604     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2605     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");
2606     out.xml.addAttribute("draw:type", "flowchart-magnetic-disk");
2607     out.xml.addAttribute("draw:text-areas", "0 6800 21600 18200");
2608     setShapeMirroring(o, out);
2609     out.xml.endElement(); // enhanced geometry
2610     out.xml.endElement(); // custom shape
2611 }
2612 
2613 
2614 void ODrawToOdf::processFlowChartMagneticDrum(const MSO::OfficeArtSpContainer& o, Writer& out) {
2615     out.xml.startElement("draw:custom-shape");
2616     processStyleAndText(o, out);
2617 
2618     out.xml.startElement("draw:enhanced-geometry");
2619     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 14800 10800 21600 10800");
2620     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2621     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");
2622     out.xml.addAttribute("draw:type", "flowchart-direct-access-storage");
2623     out.xml.addAttribute("draw:text-areas", "3400 0 14800 21600");
2624     setShapeMirroring(o, out);
2625     out.xml.endElement(); // enhanced geometry
2626     out.xml.endElement(); // custom shape
2627 }
2628 
2629 
2630 void ODrawToOdf::processFlowChartDisplay(const MSO::OfficeArtSpContainer& o, Writer& out) {
2631     out.xml.startElement("draw:custom-shape");
2632     processStyleAndText(o, out);
2633 
2634     out.xml.startElement("draw:enhanced-geometry");
2635     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800");
2636     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2637     out.xml.addAttribute("draw:enhanced-path", "M 3600 0 L 17800 0 X 21600 10800 17800 21600 L 3600 21600 0 10800 Z N");
2638     out.xml.addAttribute("draw:type", "flowchart-display");
2639     out.xml.addAttribute("draw:text-areas", "3600 0 17800 21600");
2640     setShapeMirroring(o, out);
2641     out.xml.endElement(); // enhanced geometry
2642     out.xml.endElement(); // custom shape
2643 }
2644 
2645 
2646 void ODrawToOdf::processIrregularSeal1(const MSO::OfficeArtSpContainer& o, Writer& out) {
2647     out.xml.startElement("draw:custom-shape");
2648     processStyleAndText(o, out);
2649 
2650     out.xml.startElement("draw:enhanced-geometry");
2651     out.xml.addAttribute("draw:glue-points", "14623 106 106 8718 8590 21600 21600 13393");
2652     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2653     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");
2654     out.xml.addAttribute("draw:type", "mso-spt71");
2655     out.xml.addAttribute("draw:text-areas", "4680 6570 16140 13280");
2656     setShapeMirroring(o, out);
2657     out.xml.endElement(); // enhanced geometry
2658     out.xml.endElement(); // custom shape
2659 }
2660 
2661 
2662 void ODrawToOdf::processIrregularSeal2(const MSO::OfficeArtSpContainer& o, Writer& out) {
2663     out.xml.startElement("draw:custom-shape");
2664     processStyleAndText(o, out);
2665 
2666     out.xml.startElement("draw:enhanced-geometry");
2667     out.xml.addAttribute("draw:glue-points", "9722 1887 0 12875 11614 18844 21600 6646");
2668     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2669     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");
2670     out.xml.addAttribute("draw:type", "bang");
2671     out.xml.addAttribute("draw:text-areas", "5400 6570 14160 15290");
2672     setShapeMirroring(o, out);
2673     out.xml.endElement(); // enhanced geometry
2674     out.xml.endElement(); // custom shape
2675 }
2676 
2677 
2678 void ODrawToOdf::processSeal4(const MSO::OfficeArtSpContainer& o, Writer& out) {
2679     out.xml.startElement("draw:custom-shape");
2680     processStyleAndText(o, out);
2681 
2682     out.xml.startElement("draw:enhanced-geometry");
2683     processModifiers(o, out, QList<int>() << 8100);
2684     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2685     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");
2686     out.xml.addAttribute("draw:type", "star4");
2687     out.xml.addAttribute("draw:text-areas", "?f4 ?f4 ?f3 ?f3");
2688     setShapeMirroring(o, out);
2689     equation(out,"f0","7600");
2690     equation(out,"f1","?f0 *$0 /10800");
2691     equation(out,"f2","?f0 -?f1 ");
2692     equation(out,"f3","10800+?f2 ");
2693     equation(out,"f4","10800-?f2 ");
2694     out.xml.startElement("draw:handle");
2695     out.xml.addAttribute("draw:handle-position", "$0 10800");
2696     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2697     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2698     out.xml.endElement(); // draw:handle
2699     out.xml.endElement(); // enhanced geometry
2700     out.xml.endElement(); // custom shape
2701 }
2702 
2703 
2704 void ODrawToOdf::processStar(const MSO::OfficeArtSpContainer& o, Writer& out) {
2705     out.xml.startElement("draw:custom-shape");
2706     processStyleAndText(o, out);
2707 
2708     out.xml.startElement("draw:enhanced-geometry");
2709     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2710     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");
2711     out.xml.addAttribute("draw:type", "star5");
2712     out.xml.addAttribute("draw:text-areas", "6722 8256 14878 15460");
2713     setShapeMirroring(o, out);
2714     out.xml.endElement(); // enhanced geometry
2715     out.xml.endElement(); // custom shape
2716 }
2717 
2718 
2719 void ODrawToOdf::processSeal8(const MSO::OfficeArtSpContainer& o, Writer& out) {
2720     out.xml.startElement("draw:custom-shape");
2721     processStyleAndText(o, out);
2722 
2723     out.xml.startElement("draw:enhanced-geometry");
2724     processModifiers(o, out, QList<int>() << 2500);
2725     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2726     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");
2727     out.xml.addAttribute("draw:type", "star8");
2728     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
2729     setShapeMirroring(o, out);
2730     equation(out,"f0","$0 ");
2731     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
2732     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
2733     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
2734     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
2735     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
2736     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
2737     equation(out,"f7","(cos(7*(pi/180))*(?f0 -10800)+sin(7*(pi/180))*(10800-10800))+10800");
2738     equation(out,"f8","-(sin(7*(pi/180))*(?f0 -10800)-cos(7*(pi/180))*(10800-10800))+10800");
2739     equation(out,"f9","(cos(15*(pi/180))*(0-10800)+sin(15*(pi/180))*(10800-10800))+10800");
2740     equation(out,"f10","-(sin(15*(pi/180))*(0-10800)-cos(15*(pi/180))*(10800-10800))+10800");
2741     equation(out,"f11","(cos(22*(pi/180))*(?f0 -10800)+sin(22*(pi/180))*(10800-10800))+10800");
2742     equation(out,"f12","-(sin(22*(pi/180))*(?f0 -10800)-cos(22*(pi/180))*(10800-10800))+10800");
2743     equation(out,"f13","(cos(30*(pi/180))*(0-10800)+sin(30*(pi/180))*(10800-10800))+10800");
2744     equation(out,"f14","-(sin(30*(pi/180))*(0-10800)-cos(30*(pi/180))*(10800-10800))+10800");
2745     equation(out,"f15","(cos(37*(pi/180))*(?f0 -10800)+sin(37*(pi/180))*(10800-10800))+10800");
2746     equation(out,"f16","-(sin(37*(pi/180))*(?f0 -10800)-cos(37*(pi/180))*(10800-10800))+10800");
2747     equation(out,"f17","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
2748     equation(out,"f18","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
2749     equation(out,"f19","(cos(52*(pi/180))*(?f0 -10800)+sin(52*(pi/180))*(10800-10800))+10800");
2750     equation(out,"f20","-(sin(52*(pi/180))*(?f0 -10800)-cos(52*(pi/180))*(10800-10800))+10800");
2751     equation(out,"f21","(cos(60*(pi/180))*(0-10800)+sin(60*(pi/180))*(10800-10800))+10800");
2752     equation(out,"f22","-(sin(60*(pi/180))*(0-10800)-cos(60*(pi/180))*(10800-10800))+10800");
2753     equation(out,"f23","(cos(67*(pi/180))*(?f0 -10800)+sin(67*(pi/180))*(10800-10800))+10800");
2754     equation(out,"f24","-(sin(67*(pi/180))*(?f0 -10800)-cos(67*(pi/180))*(10800-10800))+10800");
2755     equation(out,"f25","(cos(75*(pi/180))*(0-10800)+sin(75*(pi/180))*(10800-10800))+10800");
2756     equation(out,"f26","-(sin(75*(pi/180))*(0-10800)-cos(75*(pi/180))*(10800-10800))+10800");
2757     equation(out,"f27","(cos(82*(pi/180))*(?f0 -10800)+sin(82*(pi/180))*(10800-10800))+10800");
2758     equation(out,"f28","-(sin(82*(pi/180))*(?f0 -10800)-cos(82*(pi/180))*(10800-10800))+10800");
2759     equation(out,"f29","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
2760     equation(out,"f30","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
2761     equation(out,"f31","(cos(97*(pi/180))*(?f0 -10800)+sin(97*(pi/180))*(10800-10800))+10800");
2762     equation(out,"f32","-(sin(97*(pi/180))*(?f0 -10800)-cos(97*(pi/180))*(10800-10800))+10800");
2763     equation(out,"f33","(cos(105*(pi/180))*(0-10800)+sin(105*(pi/180))*(10800-10800))+10800");
2764     equation(out,"f34","-(sin(105*(pi/180))*(0-10800)-cos(105*(pi/180))*(10800-10800))+10800");
2765     equation(out,"f35","(cos(112*(pi/180))*(?f0 -10800)+sin(112*(pi/180))*(10800-10800))+10800");
2766     equation(out,"f36","-(sin(112*(pi/180))*(?f0 -10800)-cos(112*(pi/180))*(10800-10800))+10800");
2767     equation(out,"f37","(cos(120*(pi/180))*(0-10800)+sin(120*(pi/180))*(10800-10800))+10800");
2768     equation(out,"f38","-(sin(120*(pi/180))*(0-10800)-cos(120*(pi/180))*(10800-10800))+10800");
2769     equation(out,"f39","(cos(127*(pi/180))*(?f0 -10800)+sin(127*(pi/180))*(10800-10800))+10800");
2770     equation(out,"f40","-(sin(127*(pi/180))*(?f0 -10800)-cos(127*(pi/180))*(10800-10800))+10800");
2771     equation(out,"f41","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
2772     equation(out,"f42","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
2773     equation(out,"f43","(cos(142*(pi/180))*(?f0 -10800)+sin(142*(pi/180))*(10800-10800))+10800");
2774     equation(out,"f44","-(sin(142*(pi/180))*(?f0 -10800)-cos(142*(pi/180))*(10800-10800))+10800");
2775     equation(out,"f45","(cos(150*(pi/180))*(0-10800)+sin(150*(pi/180))*(10800-10800))+10800");
2776     equation(out,"f46","-(sin(150*(pi/180))*(0-10800)-cos(150*(pi/180))*(10800-10800))+10800");
2777     equation(out,"f47","(cos(157*(pi/180))*(?f0 -10800)+sin(157*(pi/180))*(10800-10800))+10800");
2778     equation(out,"f48","-(sin(157*(pi/180))*(?f0 -10800)-cos(157*(pi/180))*(10800-10800))+10800");
2779     equation(out,"f49","(cos(165*(pi/180))*(0-10800)+sin(165*(pi/180))*(10800-10800))+10800");
2780     equation(out,"f50","-(sin(165*(pi/180))*(0-10800)-cos(165*(pi/180))*(10800-10800))+10800");
2781     equation(out,"f51","(cos(172*(pi/180))*(?f0 -10800)+sin(172*(pi/180))*(10800-10800))+10800");
2782     equation(out,"f52","-(sin(172*(pi/180))*(?f0 -10800)-cos(172*(pi/180))*(10800-10800))+10800");
2783     equation(out,"f53","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
2784     equation(out,"f54","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
2785     equation(out,"f55","(cos(187*(pi/180))*(?f0 -10800)+sin(187*(pi/180))*(10800-10800))+10800");
2786     equation(out,"f56","-(sin(187*(pi/180))*(?f0 -10800)-cos(187*(pi/180))*(10800-10800))+10800");
2787     equation(out,"f57","(cos(195*(pi/180))*(0-10800)+sin(195*(pi/180))*(10800-10800))+10800");
2788     equation(out,"f58","-(sin(195*(pi/180))*(0-10800)-cos(195*(pi/180))*(10800-10800))+10800");
2789     equation(out,"f59","(cos(202*(pi/180))*(?f0 -10800)+sin(202*(pi/180))*(10800-10800))+10800");
2790     equation(out,"f60","-(sin(202*(pi/180))*(?f0 -10800)-cos(202*(pi/180))*(10800-10800))+10800");
2791     equation(out,"f61","(cos(210*(pi/180))*(0-10800)+sin(210*(pi/180))*(10800-10800))+10800");
2792     equation(out,"f62","-(sin(210*(pi/180))*(0-10800)-cos(210*(pi/180))*(10800-10800))+10800");
2793     equation(out,"f63","(cos(217*(pi/180))*(?f0 -10800)+sin(217*(pi/180))*(10800-10800))+10800");
2794     equation(out,"f64","-(sin(217*(pi/180))*(?f0 -10800)-cos(217*(pi/180))*(10800-10800))+10800");
2795     equation(out,"f65","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
2796     equation(out,"f66","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
2797     equation(out,"f67","(cos(232*(pi/180))*(?f0 -10800)+sin(232*(pi/180))*(10800-10800))+10800");
2798     equation(out,"f68","-(sin(232*(pi/180))*(?f0 -10800)-cos(232*(pi/180))*(10800-10800))+10800");
2799     equation(out,"f69","(cos(240*(pi/180))*(0-10800)+sin(240*(pi/180))*(10800-10800))+10800");
2800     equation(out,"f70","-(sin(240*(pi/180))*(0-10800)-cos(240*(pi/180))*(10800-10800))+10800");
2801     equation(out,"f71","(cos(247*(pi/180))*(?f0 -10800)+sin(247*(pi/180))*(10800-10800))+10800");
2802     equation(out,"f72","-(sin(247*(pi/180))*(?f0 -10800)-cos(247*(pi/180))*(10800-10800))+10800");
2803     equation(out,"f73","(cos(255*(pi/180))*(0-10800)+sin(255*(pi/180))*(10800-10800))+10800");
2804     equation(out,"f74","-(sin(255*(pi/180))*(0-10800)-cos(255*(pi/180))*(10800-10800))+10800");
2805     equation(out,"f75","(cos(262*(pi/180))*(?f0 -10800)+sin(262*(pi/180))*(10800-10800))+10800");
2806     equation(out,"f76","-(sin(262*(pi/180))*(?f0 -10800)-cos(262*(pi/180))*(10800-10800))+10800");
2807     equation(out,"f77","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
2808     equation(out,"f78","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
2809     equation(out,"f79","(cos(277*(pi/180))*(?f0 -10800)+sin(277*(pi/180))*(10800-10800))+10800");
2810     equation(out,"f80","-(sin(277*(pi/180))*(?f0 -10800)-cos(277*(pi/180))*(10800-10800))+10800");
2811     equation(out,"f81","(cos(285*(pi/180))*(0-10800)+sin(285*(pi/180))*(10800-10800))+10800");
2812     equation(out,"f82","-(sin(285*(pi/180))*(0-10800)-cos(285*(pi/180))*(10800-10800))+10800");
2813     equation(out,"f83","(cos(292*(pi/180))*(?f0 -10800)+sin(292*(pi/180))*(10800-10800))+10800");
2814     equation(out,"f84","-(sin(292*(pi/180))*(?f0 -10800)-cos(292*(pi/180))*(10800-10800))+10800");
2815     equation(out,"f85","(cos(300*(pi/180))*(0-10800)+sin(300*(pi/180))*(10800-10800))+10800");
2816     equation(out,"f86","-(sin(300*(pi/180))*(0-10800)-cos(300*(pi/180))*(10800-10800))+10800");
2817     equation(out,"f87","(cos(307*(pi/180))*(?f0 -10800)+sin(307*(pi/180))*(10800-10800))+10800");
2818     equation(out,"f88","-(sin(307*(pi/180))*(?f0 -10800)-cos(307*(pi/180))*(10800-10800))+10800");
2819     equation(out,"f89","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
2820     equation(out,"f90","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
2821     equation(out,"f91","(cos(322*(pi/180))*(?f0 -10800)+sin(322*(pi/180))*(10800-10800))+10800");
2822     equation(out,"f92","-(sin(322*(pi/180))*(?f0 -10800)-cos(322*(pi/180))*(10800-10800))+10800");
2823     equation(out,"f93","(cos(330*(pi/180))*(0-10800)+sin(330*(pi/180))*(10800-10800))+10800");
2824     equation(out,"f94","-(sin(330*(pi/180))*(0-10800)-cos(330*(pi/180))*(10800-10800))+10800");
2825     equation(out,"f95","(cos(337*(pi/180))*(?f0 -10800)+sin(337*(pi/180))*(10800-10800))+10800");
2826     equation(out,"f96","-(sin(337*(pi/180))*(?f0 -10800)-cos(337*(pi/180))*(10800-10800))+10800");
2827     equation(out,"f97","(cos(345*(pi/180))*(0-10800)+sin(345*(pi/180))*(10800-10800))+10800");
2828     equation(out,"f98","-(sin(345*(pi/180))*(0-10800)-cos(345*(pi/180))*(10800-10800))+10800");
2829     equation(out,"f99","(cos(352*(pi/180))*(?f0 -10800)+sin(352*(pi/180))*(10800-10800))+10800");
2830     equation(out,"f100","-(sin(352*(pi/180))*(?f0 -10800)-cos(352*(pi/180))*(10800-10800))+10800");
2831     out.xml.startElement("draw:handle");
2832     out.xml.addAttribute("draw:handle-position", "$0 10800");
2833     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2834     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2835     out.xml.endElement(); // draw:handle
2836     out.xml.endElement(); // enhanced geometry
2837     out.xml.endElement(); // custom shape
2838 }
2839 
2840 
2841 void ODrawToOdf::processSeal16(const MSO::OfficeArtSpContainer& o, Writer& out) {
2842     out.xml.startElement("draw:custom-shape");
2843     processStyleAndText(o, out);
2844 
2845     out.xml.startElement("draw:enhanced-geometry");
2846     processModifiers(o, out, QList<int>() << 2500);
2847     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2848     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");
2849     out.xml.addAttribute("draw:type", "mso-spt59");
2850     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
2851     setShapeMirroring(o, out);
2852     equation(out,"f0","$0 ");
2853     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
2854     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
2855     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
2856     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
2857     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
2858     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
2859     equation(out,"f7","(cos(11*(pi/180))*(?f0 -10800)+sin(11*(pi/180))*(10800-10800))+10800");
2860     equation(out,"f8","-(sin(11*(pi/180))*(?f0 -10800)-cos(11*(pi/180))*(10800-10800))+10800");
2861     equation(out,"f9","(cos(22*(pi/180))*(0-10800)+sin(22*(pi/180))*(10800-10800))+10800");
2862     equation(out,"f10","-(sin(22*(pi/180))*(0-10800)-cos(22*(pi/180))*(10800-10800))+10800");
2863     equation(out,"f11","(cos(33*(pi/180))*(?f0 -10800)+sin(33*(pi/180))*(10800-10800))+10800");
2864     equation(out,"f12","-(sin(33*(pi/180))*(?f0 -10800)-cos(33*(pi/180))*(10800-10800))+10800");
2865     equation(out,"f13","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
2866     equation(out,"f14","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
2867     equation(out,"f15","(cos(56*(pi/180))*(?f0 -10800)+sin(56*(pi/180))*(10800-10800))+10800");
2868     equation(out,"f16","-(sin(56*(pi/180))*(?f0 -10800)-cos(56*(pi/180))*(10800-10800))+10800");
2869     equation(out,"f17","(cos(67*(pi/180))*(0-10800)+sin(67*(pi/180))*(10800-10800))+10800");
2870     equation(out,"f18","-(sin(67*(pi/180))*(0-10800)-cos(67*(pi/180))*(10800-10800))+10800");
2871     equation(out,"f19","(cos(78*(pi/180))*(?f0 -10800)+sin(78*(pi/180))*(10800-10800))+10800");
2872     equation(out,"f20","-(sin(78*(pi/180))*(?f0 -10800)-cos(78*(pi/180))*(10800-10800))+10800");
2873     equation(out,"f21","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
2874     equation(out,"f22","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
2875     equation(out,"f23","(cos(101*(pi/180))*(?f0 -10800)+sin(101*(pi/180))*(10800-10800))+10800");
2876     equation(out,"f24","-(sin(101*(pi/180))*(?f0 -10800)-cos(101*(pi/180))*(10800-10800))+10800");
2877     equation(out,"f25","(cos(112*(pi/180))*(0-10800)+sin(112*(pi/180))*(10800-10800))+10800");
2878     equation(out,"f26","-(sin(112*(pi/180))*(0-10800)-cos(112*(pi/180))*(10800-10800))+10800");
2879     equation(out,"f27","(cos(123*(pi/180))*(?f0 -10800)+sin(123*(pi/180))*(10800-10800))+10800");
2880     equation(out,"f28","-(sin(123*(pi/180))*(?f0 -10800)-cos(123*(pi/180))*(10800-10800))+10800");
2881     equation(out,"f29","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
2882     equation(out,"f30","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
2883     equation(out,"f31","(cos(146*(pi/180))*(?f0 -10800)+sin(146*(pi/180))*(10800-10800))+10800");
2884     equation(out,"f32","-(sin(146*(pi/180))*(?f0 -10800)-cos(146*(pi/180))*(10800-10800))+10800");
2885     equation(out,"f33","(cos(157*(pi/180))*(0-10800)+sin(157*(pi/180))*(10800-10800))+10800");
2886     equation(out,"f34","-(sin(157*(pi/180))*(0-10800)-cos(157*(pi/180))*(10800-10800))+10800");
2887     equation(out,"f35","(cos(168*(pi/180))*(?f0 -10800)+sin(168*(pi/180))*(10800-10800))+10800");
2888     equation(out,"f36","-(sin(168*(pi/180))*(?f0 -10800)-cos(168*(pi/180))*(10800-10800))+10800");
2889     equation(out,"f37","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
2890     equation(out,"f38","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
2891     equation(out,"f39","(cos(191*(pi/180))*(?f0 -10800)+sin(191*(pi/180))*(10800-10800))+10800");
2892     equation(out,"f40","-(sin(191*(pi/180))*(?f0 -10800)-cos(191*(pi/180))*(10800-10800))+10800");
2893     equation(out,"f41","(cos(202*(pi/180))*(0-10800)+sin(202*(pi/180))*(10800-10800))+10800");
2894     equation(out,"f42","-(sin(202*(pi/180))*(0-10800)-cos(202*(pi/180))*(10800-10800))+10800");
2895     equation(out,"f43","(cos(213*(pi/180))*(?f0 -10800)+sin(213*(pi/180))*(10800-10800))+10800");
2896     equation(out,"f44","-(sin(213*(pi/180))*(?f0 -10800)-cos(213*(pi/180))*(10800-10800))+10800");
2897     equation(out,"f45","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
2898     equation(out,"f46","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
2899     equation(out,"f47","(cos(236*(pi/180))*(?f0 -10800)+sin(236*(pi/180))*(10800-10800))+10800");
2900     equation(out,"f48","-(sin(236*(pi/180))*(?f0 -10800)-cos(236*(pi/180))*(10800-10800))+10800");
2901     equation(out,"f49","(cos(247*(pi/180))*(0-10800)+sin(247*(pi/180))*(10800-10800))+10800");
2902     equation(out,"f50","-(sin(247*(pi/180))*(0-10800)-cos(247*(pi/180))*(10800-10800))+10800");
2903     equation(out,"f51","(cos(258*(pi/180))*(?f0 -10800)+sin(258*(pi/180))*(10800-10800))+10800");
2904     equation(out,"f52","-(sin(258*(pi/180))*(?f0 -10800)-cos(258*(pi/180))*(10800-10800))+10800");
2905     equation(out,"f53","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
2906     equation(out,"f54","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
2907     equation(out,"f55","(cos(281*(pi/180))*(?f0 -10800)+sin(281*(pi/180))*(10800-10800))+10800");
2908     equation(out,"f56","-(sin(281*(pi/180))*(?f0 -10800)-cos(281*(pi/180))*(10800-10800))+10800");
2909     equation(out,"f57","(cos(292*(pi/180))*(0-10800)+sin(292*(pi/180))*(10800-10800))+10800");
2910     equation(out,"f58","-(sin(292*(pi/180))*(0-10800)-cos(292*(pi/180))*(10800-10800))+10800");
2911     equation(out,"f59","(cos(303*(pi/180))*(?f0 -10800)+sin(303*(pi/180))*(10800-10800))+10800");
2912     equation(out,"f60","-(sin(303*(pi/180))*(?f0 -10800)-cos(303*(pi/180))*(10800-10800))+10800");
2913     equation(out,"f61","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
2914     equation(out,"f62","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
2915     equation(out,"f63","(cos(326*(pi/180))*(?f0 -10800)+sin(326*(pi/180))*(10800-10800))+10800");
2916     equation(out,"f64","-(sin(326*(pi/180))*(?f0 -10800)-cos(326*(pi/180))*(10800-10800))+10800");
2917     equation(out,"f65","(cos(337*(pi/180))*(0-10800)+sin(337*(pi/180))*(10800-10800))+10800");
2918     equation(out,"f66","-(sin(337*(pi/180))*(0-10800)-cos(337*(pi/180))*(10800-10800))+10800");
2919     equation(out,"f67","(cos(348*(pi/180))*(?f0 -10800)+sin(348*(pi/180))*(10800-10800))+10800");
2920     equation(out,"f68","-(sin(348*(pi/180))*(?f0 -10800)-cos(348*(pi/180))*(10800-10800))+10800");
2921     out.xml.startElement("draw:handle");
2922     out.xml.addAttribute("draw:handle-position", "$0 10800");
2923     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
2924     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
2925     out.xml.endElement(); // draw:handle
2926     out.xml.endElement(); // enhanced geometry
2927     out.xml.endElement(); // custom shape
2928 }
2929 
2930 
2931 void ODrawToOdf::processSeal24(const MSO::OfficeArtSpContainer& o, Writer& out) {
2932     out.xml.startElement("draw:custom-shape");
2933     processStyleAndText(o, out);
2934 
2935     out.xml.startElement("draw:enhanced-geometry");
2936     processModifiers(o, out, QList<int>() << 2500);
2937     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
2938     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");
2939     out.xml.addAttribute("draw:type", "star24");
2940     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
2941     setShapeMirroring(o, out);
2942     equation(out,"f0","$0 ");
2943     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
2944     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
2945     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
2946     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
2947     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
2948     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
2949     equation(out,"f7","(cos(7*(pi/180))*(?f0 -10800)+sin(7*(pi/180))*(10800-10800))+10800");
2950     equation(out,"f8","-(sin(7*(pi/180))*(?f0 -10800)-cos(7*(pi/180))*(10800-10800))+10800");
2951     equation(out,"f9","(cos(15*(pi/180))*(0-10800)+sin(15*(pi/180))*(10800-10800))+10800");
2952     equation(out,"f10","-(sin(15*(pi/180))*(0-10800)-cos(15*(pi/180))*(10800-10800))+10800");
2953     equation(out,"f11","(cos(22*(pi/180))*(?f0 -10800)+sin(22*(pi/180))*(10800-10800))+10800");
2954     equation(out,"f12","-(sin(22*(pi/180))*(?f0 -10800)-cos(22*(pi/180))*(10800-10800))+10800");
2955     equation(out,"f13","(cos(30*(pi/180))*(0-10800)+sin(30*(pi/180))*(10800-10800))+10800");
2956     equation(out,"f14","-(sin(30*(pi/180))*(0-10800)-cos(30*(pi/180))*(10800-10800))+10800");
2957     equation(out,"f15","(cos(37*(pi/180))*(?f0 -10800)+sin(37*(pi/180))*(10800-10800))+10800");
2958     equation(out,"f16","-(sin(37*(pi/180))*(?f0 -10800)-cos(37*(pi/180))*(10800-10800))+10800");
2959     equation(out,"f17","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
2960     equation(out,"f18","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
2961     equation(out,"f19","(cos(52*(pi/180))*(?f0 -10800)+sin(52*(pi/180))*(10800-10800))+10800");
2962     equation(out,"f20","-(sin(52*(pi/180))*(?f0 -10800)-cos(52*(pi/180))*(10800-10800))+10800");
2963     equation(out,"f21","(cos(60*(pi/180))*(0-10800)+sin(60*(pi/180))*(10800-10800))+10800");
2964     equation(out,"f22","-(sin(60*(pi/180))*(0-10800)-cos(60*(pi/180))*(10800-10800))+10800");
2965     equation(out,"f23","(cos(67*(pi/180))*(?f0 -10800)+sin(67*(pi/180))*(10800-10800))+10800");
2966     equation(out,"f24","-(sin(67*(pi/180))*(?f0 -10800)-cos(67*(pi/180))*(10800-10800))+10800");
2967     equation(out,"f25","(cos(75*(pi/180))*(0-10800)+sin(75*(pi/180))*(10800-10800))+10800");
2968     equation(out,"f26","-(sin(75*(pi/180))*(0-10800)-cos(75*(pi/180))*(10800-10800))+10800");
2969     equation(out,"f27","(cos(82*(pi/180))*(?f0 -10800)+sin(82*(pi/180))*(10800-10800))+10800");
2970     equation(out,"f28","-(sin(82*(pi/180))*(?f0 -10800)-cos(82*(pi/180))*(10800-10800))+10800");
2971     equation(out,"f29","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
2972     equation(out,"f30","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
2973     equation(out,"f31","(cos(97*(pi/180))*(?f0 -10800)+sin(97*(pi/180))*(10800-10800))+10800");
2974     equation(out,"f32","-(sin(97*(pi/180))*(?f0 -10800)-cos(97*(pi/180))*(10800-10800))+10800");
2975     equation(out,"f33","(cos(105*(pi/180))*(0-10800)+sin(105*(pi/180))*(10800-10800))+10800");
2976     equation(out,"f34","-(sin(105*(pi/180))*(0-10800)-cos(105*(pi/180))*(10800-10800))+10800");
2977     equation(out,"f35","(cos(112*(pi/180))*(?f0 -10800)+sin(112*(pi/180))*(10800-10800))+10800");
2978     equation(out,"f36","-(sin(112*(pi/180))*(?f0 -10800)-cos(112*(pi/180))*(10800-10800))+10800");
2979     equation(out,"f37","(cos(120*(pi/180))*(0-10800)+sin(120*(pi/180))*(10800-10800))+10800");
2980     equation(out,"f38","-(sin(120*(pi/180))*(0-10800)-cos(120*(pi/180))*(10800-10800))+10800");
2981     equation(out,"f39","(cos(127*(pi/180))*(?f0 -10800)+sin(127*(pi/180))*(10800-10800))+10800");
2982     equation(out,"f40","-(sin(127*(pi/180))*(?f0 -10800)-cos(127*(pi/180))*(10800-10800))+10800");
2983     equation(out,"f41","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
2984     equation(out,"f42","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
2985     equation(out,"f43","(cos(142*(pi/180))*(?f0 -10800)+sin(142*(pi/180))*(10800-10800))+10800");
2986     equation(out,"f44","-(sin(142*(pi/180))*(?f0 -10800)-cos(142*(pi/180))*(10800-10800))+10800");
2987     equation(out,"f45","(cos(150*(pi/180))*(0-10800)+sin(150*(pi/180))*(10800-10800))+10800");
2988     equation(out,"f46","-(sin(150*(pi/180))*(0-10800)-cos(150*(pi/180))*(10800-10800))+10800");
2989     equation(out,"f47","(cos(157*(pi/180))*(?f0 -10800)+sin(157*(pi/180))*(10800-10800))+10800");
2990     equation(out,"f48","-(sin(157*(pi/180))*(?f0 -10800)-cos(157*(pi/180))*(10800-10800))+10800");
2991     equation(out,"f49","(cos(165*(pi/180))*(0-10800)+sin(165*(pi/180))*(10800-10800))+10800");
2992     equation(out,"f50","-(sin(165*(pi/180))*(0-10800)-cos(165*(pi/180))*(10800-10800))+10800");
2993     equation(out,"f51","(cos(172*(pi/180))*(?f0 -10800)+sin(172*(pi/180))*(10800-10800))+10800");
2994     equation(out,"f52","-(sin(172*(pi/180))*(?f0 -10800)-cos(172*(pi/180))*(10800-10800))+10800");
2995     equation(out,"f53","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
2996     equation(out,"f54","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
2997     equation(out,"f55","(cos(187*(pi/180))*(?f0 -10800)+sin(187*(pi/180))*(10800-10800))+10800");
2998     equation(out,"f56","-(sin(187*(pi/180))*(?f0 -10800)-cos(187*(pi/180))*(10800-10800))+10800");
2999     equation(out,"f57","(cos(195*(pi/180))*(0-10800)+sin(195*(pi/180))*(10800-10800))+10800");
3000     equation(out,"f58","-(sin(195*(pi/180))*(0-10800)-cos(195*(pi/180))*(10800-10800))+10800");
3001     equation(out,"f59","(cos(202*(pi/180))*(?f0 -10800)+sin(202*(pi/180))*(10800-10800))+10800");
3002     equation(out,"f60","-(sin(202*(pi/180))*(?f0 -10800)-cos(202*(pi/180))*(10800-10800))+10800");
3003     equation(out,"f61","(cos(210*(pi/180))*(0-10800)+sin(210*(pi/180))*(10800-10800))+10800");
3004     equation(out,"f62","-(sin(210*(pi/180))*(0-10800)-cos(210*(pi/180))*(10800-10800))+10800");
3005     equation(out,"f63","(cos(217*(pi/180))*(?f0 -10800)+sin(217*(pi/180))*(10800-10800))+10800");
3006     equation(out,"f64","-(sin(217*(pi/180))*(?f0 -10800)-cos(217*(pi/180))*(10800-10800))+10800");
3007     equation(out,"f65","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
3008     equation(out,"f66","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
3009     equation(out,"f67","(cos(232*(pi/180))*(?f0 -10800)+sin(232*(pi/180))*(10800-10800))+10800");
3010     equation(out,"f68","-(sin(232*(pi/180))*(?f0 -10800)-cos(232*(pi/180))*(10800-10800))+10800");
3011     equation(out,"f69","(cos(240*(pi/180))*(0-10800)+sin(240*(pi/180))*(10800-10800))+10800");
3012     equation(out,"f70","-(sin(240*(pi/180))*(0-10800)-cos(240*(pi/180))*(10800-10800))+10800");
3013     equation(out,"f71","(cos(247*(pi/180))*(?f0 -10800)+sin(247*(pi/180))*(10800-10800))+10800");
3014     equation(out,"f72","-(sin(247*(pi/180))*(?f0 -10800)-cos(247*(pi/180))*(10800-10800))+10800");
3015     equation(out,"f73","(cos(255*(pi/180))*(0-10800)+sin(255*(pi/180))*(10800-10800))+10800");
3016     equation(out,"f74","-(sin(255*(pi/180))*(0-10800)-cos(255*(pi/180))*(10800-10800))+10800");
3017     equation(out,"f75","(cos(262*(pi/180))*(?f0 -10800)+sin(262*(pi/180))*(10800-10800))+10800");
3018     equation(out,"f76","-(sin(262*(pi/180))*(?f0 -10800)-cos(262*(pi/180))*(10800-10800))+10800");
3019     equation(out,"f77","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
3020     equation(out,"f78","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
3021     equation(out,"f79","(cos(277*(pi/180))*(?f0 -10800)+sin(277*(pi/180))*(10800-10800))+10800");
3022     equation(out,"f80","-(sin(277*(pi/180))*(?f0 -10800)-cos(277*(pi/180))*(10800-10800))+10800");
3023     equation(out,"f81","(cos(285*(pi/180))*(0-10800)+sin(285*(pi/180))*(10800-10800))+10800");
3024     equation(out,"f82","-(sin(285*(pi/180))*(0-10800)-cos(285*(pi/180))*(10800-10800))+10800");
3025     equation(out,"f83","(cos(292*(pi/180))*(?f0 -10800)+sin(292*(pi/180))*(10800-10800))+10800");
3026     equation(out,"f84","-(sin(292*(pi/180))*(?f0 -10800)-cos(292*(pi/180))*(10800-10800))+10800");
3027     equation(out,"f85","(cos(300*(pi/180))*(0-10800)+sin(300*(pi/180))*(10800-10800))+10800");
3028     equation(out,"f86","-(sin(300*(pi/180))*(0-10800)-cos(300*(pi/180))*(10800-10800))+10800");
3029     equation(out,"f87","(cos(307*(pi/180))*(?f0 -10800)+sin(307*(pi/180))*(10800-10800))+10800");
3030     equation(out,"f88","-(sin(307*(pi/180))*(?f0 -10800)-cos(307*(pi/180))*(10800-10800))+10800");
3031     equation(out,"f89","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
3032     equation(out,"f90","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
3033     equation(out,"f91","(cos(322*(pi/180))*(?f0 -10800)+sin(322*(pi/180))*(10800-10800))+10800");
3034     equation(out,"f92","-(sin(322*(pi/180))*(?f0 -10800)-cos(322*(pi/180))*(10800-10800))+10800");
3035     equation(out,"f93","(cos(330*(pi/180))*(0-10800)+sin(330*(pi/180))*(10800-10800))+10800");
3036     equation(out,"f94","-(sin(330*(pi/180))*(0-10800)-cos(330*(pi/180))*(10800-10800))+10800");
3037     equation(out,"f95","(cos(337*(pi/180))*(?f0 -10800)+sin(337*(pi/180))*(10800-10800))+10800");
3038     equation(out,"f96","-(sin(337*(pi/180))*(?f0 -10800)-cos(337*(pi/180))*(10800-10800))+10800");
3039     equation(out,"f97","(cos(345*(pi/180))*(0-10800)+sin(345*(pi/180))*(10800-10800))+10800");
3040     equation(out,"f98","-(sin(345*(pi/180))*(0-10800)-cos(345*(pi/180))*(10800-10800))+10800");
3041     equation(out,"f99","(cos(352*(pi/180))*(?f0 -10800)+sin(352*(pi/180))*(10800-10800))+10800");
3042     equation(out,"f100","-(sin(352*(pi/180))*(?f0 -10800)-cos(352*(pi/180))*(10800-10800))+10800");
3043     out.xml.startElement("draw:handle");
3044     out.xml.addAttribute("draw:handle-position", "$0 10800");
3045     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
3046     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
3047     out.xml.endElement(); // draw:handle
3048     out.xml.endElement(); // enhanced geometry
3049     out.xml.endElement(); // custom shape
3050 }
3051 
3052 
3053 void ODrawToOdf::processSeal32(const MSO::OfficeArtSpContainer& o, Writer& out) {
3054     out.xml.startElement("draw:custom-shape");
3055     processStyleAndText(o, out);
3056 
3057     out.xml.startElement("draw:enhanced-geometry");
3058     processModifiers(o, out, QList<int>() << 2500);
3059     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3060     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");
3061     out.xml.addAttribute("draw:type", "mso-spt60");
3062     out.xml.addAttribute("draw:text-areas", "?f1 ?f2 ?f3 ?f4");
3063     setShapeMirroring(o, out);
3064     equation(out,"f0","$0 ");
3065     equation(out,"f1","(cos(315*(pi/180))*(?f0 -10800)+sin(315*(pi/180))*(10800-10800))+10800");
3066     equation(out,"f2","-(sin(315*(pi/180))*(?f0 -10800)-cos(315*(pi/180))*(10800-10800))+10800");
3067     equation(out,"f3","(cos(135*(pi/180))*(?f0 -10800)+sin(135*(pi/180))*(10800-10800))+10800");
3068     equation(out,"f4","-(sin(135*(pi/180))*(?f0 -10800)-cos(135*(pi/180))*(10800-10800))+10800");
3069     equation(out,"f5","(cos(0*(pi/180))*(0-10800)+sin(0*(pi/180))*(10800-10800))+10800");
3070     equation(out,"f6","-(sin(0*(pi/180))*(0-10800)-cos(0*(pi/180))*(10800-10800))+10800");
3071     equation(out,"f7","(cos(5*(pi/180))*(?f0 -10800)+sin(5*(pi/180))*(10800-10800))+10800");
3072     equation(out,"f8","-(sin(5*(pi/180))*(?f0 -10800)-cos(5*(pi/180))*(10800-10800))+10800");
3073     equation(out,"f9","(cos(11*(pi/180))*(0-10800)+sin(11*(pi/180))*(10800-10800))+10800");
3074     equation(out,"f10","-(sin(11*(pi/180))*(0-10800)-cos(11*(pi/180))*(10800-10800))+10800");
3075     equation(out,"f11","(cos(16*(pi/180))*(?f0 -10800)+sin(16*(pi/180))*(10800-10800))+10800");
3076     equation(out,"f12","-(sin(16*(pi/180))*(?f0 -10800)-cos(16*(pi/180))*(10800-10800))+10800");
3077     equation(out,"f13","(cos(22*(pi/180))*(0-10800)+sin(22*(pi/180))*(10800-10800))+10800");
3078     equation(out,"f14","-(sin(22*(pi/180))*(0-10800)-cos(22*(pi/180))*(10800-10800))+10800");
3079     equation(out,"f15","(cos(28*(pi/180))*(?f0 -10800)+sin(28*(pi/180))*(10800-10800))+10800");
3080     equation(out,"f16","-(sin(28*(pi/180))*(?f0 -10800)-cos(28*(pi/180))*(10800-10800))+10800");
3081     equation(out,"f17","(cos(33*(pi/180))*(0-10800)+sin(33*(pi/180))*(10800-10800))+10800");
3082     equation(out,"f18","-(sin(33*(pi/180))*(0-10800)-cos(33*(pi/180))*(10800-10800))+10800");
3083     equation(out,"f19","(cos(39*(pi/180))*(?f0 -10800)+sin(39*(pi/180))*(10800-10800))+10800");
3084     equation(out,"f20","-(sin(39*(pi/180))*(?f0 -10800)-cos(39*(pi/180))*(10800-10800))+10800");
3085     equation(out,"f21","(cos(45*(pi/180))*(0-10800)+sin(45*(pi/180))*(10800-10800))+10800");
3086     equation(out,"f22","-(sin(45*(pi/180))*(0-10800)-cos(45*(pi/180))*(10800-10800))+10800");
3087     equation(out,"f23","(cos(50*(pi/180))*(?f0 -10800)+sin(50*(pi/180))*(10800-10800))+10800");
3088     equation(out,"f24","-(sin(50*(pi/180))*(?f0 -10800)-cos(50*(pi/180))*(10800-10800))+10800");
3089     equation(out,"f25","(cos(56*(pi/180))*(0-10800)+sin(56*(pi/180))*(10800-10800))+10800");
3090     equation(out,"f26","-(sin(56*(pi/180))*(0-10800)-cos(56*(pi/180))*(10800-10800))+10800");
3091     equation(out,"f27","(cos(61*(pi/180))*(?f0 -10800)+sin(61*(pi/180))*(10800-10800))+10800");
3092     equation(out,"f28","-(sin(61*(pi/180))*(?f0 -10800)-cos(61*(pi/180))*(10800-10800))+10800");
3093     equation(out,"f29","(cos(67*(pi/180))*(0-10800)+sin(67*(pi/180))*(10800-10800))+10800");
3094     equation(out,"f30","-(sin(67*(pi/180))*(0-10800)-cos(67*(pi/180))*(10800-10800))+10800");
3095     equation(out,"f31","(cos(73*(pi/180))*(?f0 -10800)+sin(73*(pi/180))*(10800-10800))+10800");
3096     equation(out,"f32","-(sin(73*(pi/180))*(?f0 -10800)-cos(73*(pi/180))*(10800-10800))+10800");
3097     equation(out,"f33","(cos(78*(pi/180))*(0-10800)+sin(78*(pi/180))*(10800-10800))+10800");
3098     equation(out,"f34","-(sin(78*(pi/180))*(0-10800)-cos(78*(pi/180))*(10800-10800))+10800");
3099     equation(out,"f35","(cos(84*(pi/180))*(?f0 -10800)+sin(84*(pi/180))*(10800-10800))+10800");
3100     equation(out,"f36","-(sin(84*(pi/180))*(?f0 -10800)-cos(84*(pi/180))*(10800-10800))+10800");
3101     equation(out,"f37","(cos(90*(pi/180))*(0-10800)+sin(90*(pi/180))*(10800-10800))+10800");
3102     equation(out,"f38","-(sin(90*(pi/180))*(0-10800)-cos(90*(pi/180))*(10800-10800))+10800");
3103     equation(out,"f39","(cos(95*(pi/180))*(?f0 -10800)+sin(95*(pi/180))*(10800-10800))+10800");
3104     equation(out,"f40","-(sin(95*(pi/180))*(?f0 -10800)-cos(95*(pi/180))*(10800-10800))+10800");
3105     equation(out,"f41","(cos(101*(pi/180))*(0-10800)+sin(101*(pi/180))*(10800-10800))+10800");
3106     equation(out,"f42","-(sin(101*(pi/180))*(0-10800)-cos(101*(pi/180))*(10800-10800))+10800");
3107     equation(out,"f43","(cos(106*(pi/180))*(?f0 -10800)+sin(106*(pi/180))*(10800-10800))+10800");
3108     equation(out,"f44","-(sin(106*(pi/180))*(?f0 -10800)-cos(106*(pi/180))*(10800-10800))+10800");
3109     equation(out,"f45","(cos(112*(pi/180))*(0-10800)+sin(112*(pi/180))*(10800-10800))+10800");
3110     equation(out,"f46","-(sin(112*(pi/180))*(0-10800)-cos(112*(pi/180))*(10800-10800))+10800");
3111     equation(out,"f47","(cos(118*(pi/180))*(?f0 -10800)+sin(118*(pi/180))*(10800-10800))+10800");
3112     equation(out,"f48","-(sin(118*(pi/180))*(?f0 -10800)-cos(118*(pi/180))*(10800-10800))+10800");
3113     equation(out,"f49","(cos(123*(pi/180))*(0-10800)+sin(123*(pi/180))*(10800-10800))+10800");
3114     equation(out,"f50","-(sin(123*(pi/180))*(0-10800)-cos(123*(pi/180))*(10800-10800))+10800");
3115     equation(out,"f51","(cos(129*(pi/180))*(?f0 -10800)+sin(129*(pi/180))*(10800-10800))+10800");
3116     equation(out,"f52","-(sin(129*(pi/180))*(?f0 -10800)-cos(129*(pi/180))*(10800-10800))+10800");
3117     equation(out,"f53","(cos(135*(pi/180))*(0-10800)+sin(135*(pi/180))*(10800-10800))+10800");
3118     equation(out,"f54","-(sin(135*(pi/180))*(0-10800)-cos(135*(pi/180))*(10800-10800))+10800");
3119     equation(out,"f55","(cos(140*(pi/180))*(?f0 -10800)+sin(140*(pi/180))*(10800-10800))+10800");
3120     equation(out,"f56","-(sin(140*(pi/180))*(?f0 -10800)-cos(140*(pi/180))*(10800-10800))+10800");
3121     equation(out,"f57","(cos(146*(pi/180))*(0-10800)+sin(146*(pi/180))*(10800-10800))+10800");
3122     equation(out,"f58","-(sin(146*(pi/180))*(0-10800)-cos(146*(pi/180))*(10800-10800))+10800");
3123     equation(out,"f59","(cos(151*(pi/180))*(?f0 -10800)+sin(151*(pi/180))*(10800-10800))+10800");
3124     equation(out,"f60","-(sin(151*(pi/180))*(?f0 -10800)-cos(151*(pi/180))*(10800-10800))+10800");
3125     equation(out,"f61","(cos(157*(pi/180))*(0-10800)+sin(157*(pi/180))*(10800-10800))+10800");
3126     equation(out,"f62","-(sin(157*(pi/180))*(0-10800)-cos(157*(pi/180))*(10800-10800))+10800");
3127     equation(out,"f63","(cos(163*(pi/180))*(?f0 -10800)+sin(163*(pi/180))*(10800-10800))+10800");
3128     equation(out,"f64","-(sin(163*(pi/180))*(?f0 -10800)-cos(163*(pi/180))*(10800-10800))+10800");
3129     equation(out,"f65","(cos(168*(pi/180))*(0-10800)+sin(168*(pi/180))*(10800-10800))+10800");
3130     equation(out,"f66","-(sin(168*(pi/180))*(0-10800)-cos(168*(pi/180))*(10800-10800))+10800");
3131     equation(out,"f67","(cos(174*(pi/180))*(?f0 -10800)+sin(174*(pi/180))*(10800-10800))+10800");
3132     equation(out,"f68","-(sin(174*(pi/180))*(?f0 -10800)-cos(174*(pi/180))*(10800-10800))+10800");
3133     equation(out,"f69","(cos(180*(pi/180))*(0-10800)+sin(180*(pi/180))*(10800-10800))+10800");
3134     equation(out,"f70","-(sin(180*(pi/180))*(0-10800)-cos(180*(pi/180))*(10800-10800))+10800");
3135     equation(out,"f71","(cos(185*(pi/180))*(?f0 -10800)+sin(185*(pi/180))*(10800-10800))+10800");
3136     equation(out,"f72","-(sin(185*(pi/180))*(?f0 -10800)-cos(185*(pi/180))*(10800-10800))+10800");
3137     equation(out,"f73","(cos(191*(pi/180))*(0-10800)+sin(191*(pi/180))*(10800-10800))+10800");
3138     equation(out,"f74","-(sin(191*(pi/180))*(0-10800)-cos(191*(pi/180))*(10800-10800))+10800");
3139     equation(out,"f75","(cos(196*(pi/180))*(?f0 -10800)+sin(196*(pi/180))*(10800-10800))+10800");
3140     equation(out,"f76","-(sin(196*(pi/180))*(?f0 -10800)-cos(196*(pi/180))*(10800-10800))+10800");
3141     equation(out,"f77","(cos(202*(pi/180))*(0-10800)+sin(202*(pi/180))*(10800-10800))+10800");
3142     equation(out,"f78","-(sin(202*(pi/180))*(0-10800)-cos(202*(pi/180))*(10800-10800))+10800");
3143     equation(out,"f79","(cos(208*(pi/180))*(?f0 -10800)+sin(208*(pi/180))*(10800-10800))+10800");
3144     equation(out,"f80","-(sin(208*(pi/180))*(?f0 -10800)-cos(208*(pi/180))*(10800-10800))+10800");
3145     equation(out,"f81","(cos(213*(pi/180))*(0-10800)+sin(213*(pi/180))*(10800-10800))+10800");
3146     equation(out,"f82","-(sin(213*(pi/180))*(0-10800)-cos(213*(pi/180))*(10800-10800))+10800");
3147     equation(out,"f83","(cos(219*(pi/180))*(?f0 -10800)+sin(219*(pi/180))*(10800-10800))+10800");
3148     equation(out,"f84","-(sin(219*(pi/180))*(?f0 -10800)-cos(219*(pi/180))*(10800-10800))+10800");
3149     equation(out,"f85","(cos(225*(pi/180))*(0-10800)+sin(225*(pi/180))*(10800-10800))+10800");
3150     equation(out,"f86","-(sin(225*(pi/180))*(0-10800)-cos(225*(pi/180))*(10800-10800))+10800");
3151     equation(out,"f87","(cos(230*(pi/180))*(?f0 -10800)+sin(230*(pi/180))*(10800-10800))+10800");
3152     equation(out,"f88","-(sin(230*(pi/180))*(?f0 -10800)-cos(230*(pi/180))*(10800-10800))+10800");
3153     equation(out,"f89","(cos(236*(pi/180))*(0-10800)+sin(236*(pi/180))*(10800-10800))+10800");
3154     equation(out,"f90","-(sin(236*(pi/180))*(0-10800)-cos(236*(pi/180))*(10800-10800))+10800");
3155     equation(out,"f91","(cos(241*(pi/180))*(?f0 -10800)+sin(241*(pi/180))*(10800-10800))+10800");
3156     equation(out,"f92","-(sin(241*(pi/180))*(?f0 -10800)-cos(241*(pi/180))*(10800-10800))+10800");
3157     equation(out,"f93","(cos(247*(pi/180))*(0-10800)+sin(247*(pi/180))*(10800-10800))+10800");
3158     equation(out,"f94","-(sin(247*(pi/180))*(0-10800)-cos(247*(pi/180))*(10800-10800))+10800");
3159     equation(out,"f95","(cos(253*(pi/180))*(?f0 -10800)+sin(253*(pi/180))*(10800-10800))+10800");
3160     equation(out,"f96","-(sin(253*(pi/180))*(?f0 -10800)-cos(253*(pi/180))*(10800-10800))+10800");
3161     equation(out,"f97","(cos(258*(pi/180))*(0-10800)+sin(258*(pi/180))*(10800-10800))+10800");
3162     equation(out,"f98","-(sin(258*(pi/180))*(0-10800)-cos(258*(pi/180))*(10800-10800))+10800");
3163     equation(out,"f99","(cos(264*(pi/180))*(?f0 -10800)+sin(264*(pi/180))*(10800-10800))+10800");
3164     equation(out,"f100","-(sin(264*(pi/180))*(?f0 -10800)-cos(264*(pi/180))*(10800-10800))+10800");
3165     equation(out,"f101","(cos(270*(pi/180))*(0-10800)+sin(270*(pi/180))*(10800-10800))+10800");
3166     equation(out,"f102","-(sin(270*(pi/180))*(0-10800)-cos(270*(pi/180))*(10800-10800))+10800");
3167     equation(out,"f103","(cos(275*(pi/180))*(?f0 -10800)+sin(275*(pi/180))*(10800-10800))+10800");
3168     equation(out,"f104","-(sin(275*(pi/180))*(?f0 -10800)-cos(275*(pi/180))*(10800-10800))+10800");
3169     equation(out,"f105","(cos(281*(pi/180))*(0-10800)+sin(281*(pi/180))*(10800-10800))+10800");
3170     equation(out,"f106","-(sin(281*(pi/180))*(0-10800)-cos(281*(pi/180))*(10800-10800))+10800");
3171     equation(out,"f107","(cos(286*(pi/180))*(?f0 -10800)+sin(286*(pi/180))*(10800-10800))+10800");
3172     equation(out,"f108","-(sin(286*(pi/180))*(?f0 -10800)-cos(286*(pi/180))*(10800-10800))+10800");
3173     equation(out,"f109","(cos(292*(pi/180))*(0-10800)+sin(292*(pi/180))*(10800-10800))+10800");
3174     equation(out,"f110","-(sin(292*(pi/180))*(0-10800)-cos(292*(pi/180))*(10800-10800))+10800");
3175     equation(out,"f111","(cos(298*(pi/180))*(?f0 -10800)+sin(298*(pi/180))*(10800-10800))+10800");
3176     equation(out,"f112","-(sin(298*(pi/180))*(?f0 -10800)-cos(298*(pi/180))*(10800-10800))+10800");
3177     equation(out,"f113","(cos(303*(pi/180))*(0-10800)+sin(303*(pi/180))*(10800-10800))+10800");
3178     equation(out,"f114","-(sin(303*(pi/180))*(0-10800)-cos(303*(pi/180))*(10800-10800))+10800");
3179     equation(out,"f115","(cos(309*(pi/180))*(?f0 -10800)+sin(309*(pi/180))*(10800-10800))+10800");
3180     equation(out,"f116","-(sin(309*(pi/180))*(?f0 -10800)-cos(309*(pi/180))*(10800-10800))+10800");
3181     equation(out,"f117","(cos(315*(pi/180))*(0-10800)+sin(315*(pi/180))*(10800-10800))+10800");
3182     equation(out,"f118","-(sin(315*(pi/180))*(0-10800)-cos(315*(pi/180))*(10800-10800))+10800");
3183     equation(out,"f119","(cos(320*(pi/180))*(?f0 -10800)+sin(320*(pi/180))*(10800-10800))+10800");
3184     equation(out,"f120","-(sin(320*(pi/180))*(?f0 -10800)-cos(320*(pi/180))*(10800-10800))+10800");
3185     equation(out,"f121","(cos(326*(pi/180))*(0-10800)+sin(326*(pi/180))*(10800-10800))+10800");
3186     equation(out,"f122","-(sin(326*(pi/180))*(0-10800)-cos(326*(pi/180))*(10800-10800))+10800");
3187     equation(out,"f123","(cos(331*(pi/180))*(?f0 -10800)+sin(331*(pi/180))*(10800-10800))+10800");
3188     equation(out,"f124","-(sin(331*(pi/180))*(?f0 -10800)-cos(331*(pi/180))*(10800-10800))+10800");
3189     equation(out,"f125","(cos(337*(pi/180))*(0-10800)+sin(337*(pi/180))*(10800-10800))+10800");
3190     equation(out,"f126","-(sin(337*(pi/180))*(0-10800)-cos(337*(pi/180))*(10800-10800))+10800");
3191     equation(out,"f127","(cos(343*(pi/180))*(?f0 -10800)+sin(343*(pi/180))*(10800-10800))+10800");
3192     equation(out,"f128","-(sin(343*(pi/180))*(?f0 -10800)-cos(343*(pi/180))*(10800-10800))+10800");
3193     equation(out,"f129","(cos(348*(pi/180))*(0-10800)+sin(348*(pi/180))*(10800-10800))+10800");
3194     equation(out,"f130","-(sin(348*(pi/180))*(0-10800)-cos(348*(pi/180))*(10800-10800))+10800");
3195     equation(out,"f131","(cos(354*(pi/180))*(?f0 -10800)+sin(354*(pi/180))*(10800-10800))+10800");
3196     equation(out,"f132","-(sin(354*(pi/180))*(?f0 -10800)-cos(354*(pi/180))*(10800-10800))+10800");
3197     out.xml.startElement("draw:handle");
3198     out.xml.addAttribute("draw:handle-position", "$0 10800");
3199     out.xml.addAttribute("draw:handle-range-x-maximum", "10800");
3200     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
3201     out.xml.endElement(); // draw:handle
3202     out.xml.endElement(); // enhanced geometry
3203     out.xml.endElement(); // custom shape
3204 }
3205 
3206 
3207 void ODrawToOdf::processRibbon2(const MSO::OfficeArtSpContainer& o, Writer& out) {
3208     out.xml.startElement("draw:custom-shape");
3209     processStyleAndText(o, out);
3210 
3211     out.xml.startElement("draw:enhanced-geometry");
3212     processModifiers(o, out, QList<int>() << 5400<< 18900);
3213     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3214     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");
3215     out.xml.addAttribute("draw:type", "mso-spt54");
3216     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f19 ?f1");
3217     setShapeMirroring(o, out);
3218     equation(out,"f0","$0 ");
3219     equation(out,"f1","$1 ");
3220     equation(out,"f2","21600-?f1 ");
3221     equation(out,"f3","?f2 /2");
3222     equation(out,"f4","?f3 /2");
3223     equation(out,"f5","?f4 /2");
3224     equation(out,"f6","?f1 /2");
3225     equation(out,"f7","21600-?f6 ");
3226     equation(out,"f8","420");
3227     equation(out,"f9","?f8 *2");
3228     equation(out,"f10","?f0 +?f8 ");
3229     equation(out,"f11","?f0 +?f9 ");
3230     equation(out,"f12","?f0 +2700");
3231     equation(out,"f13","21600-?f4 ");
3232     equation(out,"f14","21600-?f5 ");
3233     equation(out,"f15","?f12 -?f8 ");
3234     equation(out,"f16","?f12 -?f9 ");
3235     equation(out,"f17","21600-?f11 ");
3236     equation(out,"f18","21600-?f10 ");
3237     equation(out,"f19","21600-?f0 ");
3238     equation(out,"f20","21600-?f16 ");
3239     equation(out,"f21","21600-?f15 ");
3240     equation(out,"f22","21600-?f12 ");
3241     equation(out,"f23","?f13 -?f5 ");
3242     equation(out,"f24","?f1 +?f3 ");
3243     equation(out,"f25","?f1 +?f4 ");
3244     equation(out,"f26","?f25 +?f5 ");
3245     equation(out,"f27","?f25 -?f5 ");
3246     out.xml.startElement("draw:handle");
3247     out.xml.addAttribute("draw:handle-position", "$0 top");
3248     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3249     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3250     out.xml.endElement(); // draw:handle
3251     out.xml.startElement("draw:handle");
3252     out.xml.addAttribute("draw:handle-position", "10800 $1");
3253     out.xml.addAttribute("draw:handle-range-y-minimum", "14400");
3254     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
3255     out.xml.endElement(); // draw:handle
3256     out.xml.endElement(); // enhanced geometry
3257     out.xml.endElement(); // custom shape
3258 }
3259 
3260 
3261 void ODrawToOdf::processRibbon(const MSO::OfficeArtSpContainer& o, Writer& out) {
3262     out.xml.startElement("draw:custom-shape");
3263     processStyleAndText(o, out);
3264 
3265     out.xml.startElement("draw:enhanced-geometry");
3266     out.xml.addAttribute("draw:glue-points", "?f17 ?f10 2700 ?f14 ?f17 21600 ?f18 ?f14");
3267     processModifiers(o, out, QList<int>() << 5400<< 2700);
3268     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3269     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");
3270     out.xml.addAttribute("draw:type", "mso-spt53");
3271     out.xml.addAttribute("draw:text-areas", "?f0 ?f10 ?f9 21600");
3272     setShapeMirroring(o, out);
3273     equation(out,"f0","$0 ");
3274     equation(out,"f1","?f0 +675");
3275     equation(out,"f2","?f1 +675");
3276     equation(out,"f3","?f2 +675");
3277     equation(out,"f4","?f3 +675");
3278     equation(out,"f5","21600-?f4 ");
3279     equation(out,"f6","21600-?f3 ");
3280     equation(out,"f7","21600-?f2 ");
3281     equation(out,"f8","21600-?f1 ");
3282     equation(out,"f9","21600-?f0 ");
3283     equation(out,"f10","$1 ");
3284     equation(out,"f11","?f10 /4");
3285     equation(out,"f12","?f11 *2");
3286     equation(out,"f13","?f11 *3");
3287     equation(out,"f14","10800-?f12 ");
3288     equation(out,"f15","21600-?f10 ");
3289     equation(out,"f16","21600-?f11 ");
3290     equation(out,"f17","21600/2");
3291     equation(out,"f18","21600-2700");
3292     equation(out,"f19","?f17 -2700");
3293     out.xml.startElement("draw:handle");
3294     out.xml.addAttribute("draw:handle-position", "$0 top");
3295     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3296     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3297     out.xml.endElement(); // draw:handle
3298     out.xml.startElement("draw:handle");
3299     out.xml.addAttribute("draw:handle-position", "10800 $1");
3300     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3301     out.xml.addAttribute("draw:handle-range-y-maximum", "7200");
3302     out.xml.endElement(); // draw:handle
3303     out.xml.endElement(); // enhanced geometry
3304     out.xml.endElement(); // custom shape
3305 }
3306 
3307 
3308 void ODrawToOdf::processEllipseRibbon2(const MSO::OfficeArtSpContainer& o, Writer& out) {
3309     out.xml.startElement("draw:custom-shape");
3310     processStyleAndText(o, out);
3311 
3312     out.xml.startElement("draw:enhanced-geometry");
3313     processModifiers(o, out, QList<int>() << 5400<< 18900);
3314     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3315     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");
3316     out.xml.addAttribute("draw:type", "mso-spt108");
3317     out.xml.addAttribute("draw:text-areas", "?f0 0 ?f19 ?f1");
3318     setShapeMirroring(o, out);
3319     equation(out,"f0","$0 ");
3320     equation(out,"f1","$1 ");
3321     equation(out,"f2","21600-?f1 ");
3322     equation(out,"f3","?f2 /2");
3323     equation(out,"f4","?f3 /2");
3324     equation(out,"f5","?f4 /2");
3325     equation(out,"f6","?f1 /2");
3326     equation(out,"f7","21600-?f6 ");
3327     equation(out,"f8","420");
3328     equation(out,"f9","?f8 *2");
3329     equation(out,"f10","?f0 +?f8 ");
3330     equation(out,"f11","?f0 +?f9 ");
3331     equation(out,"f12","?f0 +2700");
3332     equation(out,"f13","21600-?f4 ");
3333     equation(out,"f14","21600-?f5 ");
3334     equation(out,"f15","?f12 -?f8 ");
3335     equation(out,"f16","?f12 -?f9 ");
3336     equation(out,"f17","21600-?f11 ");
3337     equation(out,"f18","21600-?f10 ");
3338     equation(out,"f19","21600-?f0 ");
3339     equation(out,"f20","21600-?f16 ");
3340     equation(out,"f21","21600-?f15 ");
3341     equation(out,"f22","21600-?f12 ");
3342     equation(out,"f23","?f13 -?f5 ");
3343     equation(out,"f24","?f1 +?f3 ");
3344     equation(out,"f25","?f1 +?f4 ");
3345     equation(out,"f26","?f25 +?f5 ");
3346     equation(out,"f27","?f25 -?f5 ");
3347     out.xml.startElement("draw:handle");
3348     out.xml.addAttribute("draw:handle-position", "$0 top");
3349     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3350     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3351     out.xml.endElement(); // draw:handle
3352     out.xml.startElement("draw:handle");
3353     out.xml.addAttribute("draw:handle-position", "10800 $1");
3354     out.xml.addAttribute("draw:handle-range-y-minimum", "14400");
3355     out.xml.addAttribute("draw:handle-range-y-maximum", "21600");
3356     out.xml.endElement(); // draw:handle
3357     out.xml.endElement(); // enhanced geometry
3358     out.xml.endElement(); // custom shape
3359 }
3360 
3361 
3362 void ODrawToOdf::processEllipseRibbon(const MSO::OfficeArtSpContainer& o, Writer& out) {
3363     out.xml.startElement("draw:custom-shape");
3364     processStyleAndText(o, out);
3365 
3366     out.xml.startElement("draw:enhanced-geometry");
3367     out.xml.addAttribute("draw:glue-points", "?f17 ?f10 2700 ?f14 ?f17 21600 ?f18 ?f14");
3368     processModifiers(o, out, QList<int>() << 5400<< 2700);
3369     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3370     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");
3371     out.xml.addAttribute("draw:type", "mso-spt107");
3372     out.xml.addAttribute("draw:text-areas", "?f0 ?f10 ?f9 21600");
3373     setShapeMirroring(o, out);
3374     equation(out,"f0","$0 ");
3375     equation(out,"f1","?f0 +675");
3376     equation(out,"f2","?f1 +675");
3377     equation(out,"f3","?f2 +675");
3378     equation(out,"f4","?f3 +675");
3379     equation(out,"f5","21600-?f4 ");
3380     equation(out,"f6","21600-?f3 ");
3381     equation(out,"f7","21600-?f2 ");
3382     equation(out,"f8","21600-?f1 ");
3383     equation(out,"f9","21600-?f0 ");
3384     equation(out,"f10","$1 ");
3385     equation(out,"f11","?f10 /4");
3386     equation(out,"f12","?f11 *2");
3387     equation(out,"f13","?f11 *3");
3388     equation(out,"f14","10800-?f12 ");
3389     equation(out,"f15","21600-?f10 ");
3390     equation(out,"f16","21600-?f11 ");
3391     equation(out,"f17","21600/2");
3392     equation(out,"f18","21600-2700");
3393     equation(out,"f19","?f17 -2700");
3394     out.xml.startElement("draw:handle");
3395     out.xml.addAttribute("draw:handle-position", "$0 top");
3396     out.xml.addAttribute("draw:handle-range-x-maximum", "8100");
3397     out.xml.addAttribute("draw:handle-range-x-minimum", "2700");
3398     out.xml.endElement(); // draw:handle
3399     out.xml.startElement("draw:handle");
3400     out.xml.addAttribute("draw:handle-position", "10800 $1");
3401     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3402     out.xml.addAttribute("draw:handle-range-y-maximum", "7200");
3403     out.xml.endElement(); // draw:handle
3404     out.xml.endElement(); // enhanced geometry
3405     out.xml.endElement(); // custom shape
3406 }
3407 
3408 
3409 void ODrawToOdf::processVerticalScroll(const MSO::OfficeArtSpContainer& o, Writer& out) {
3410     out.xml.startElement("draw:custom-shape");
3411     processStyleAndText(o, out);
3412 
3413     out.xml.startElement("draw:enhanced-geometry");
3414     processModifiers(o, out, QList<int>() << 2700);
3415     out.xml.addAttribute("draw:path-stretchpoint-x", "11000");
3416     out.xml.addAttribute("draw:path-stretchpoint-y", "10800");
3417     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3418     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");
3419     out.xml.addAttribute("draw:type", "vertical-scroll");
3420     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f3 ?f12");
3421     setShapeMirroring(o, out);
3422     equation(out,"f0","$0 ");
3423     equation(out,"f1","?f0 /2");
3424     equation(out,"f2","right-?f1 ");
3425     equation(out,"f3","right-?f0 ");
3426     equation(out,"f4","?f0 +?f1 ");
3427     equation(out,"f5","right-?f4 ");
3428     equation(out,"f6","?f0 *2");
3429     equation(out,"f7","?f1 /2");
3430     equation(out,"f8","?f0 +?f7 ");
3431     equation(out,"f9","?f1 +?f7 ");
3432     equation(out,"f10","bottom-?f9 ");
3433     equation(out,"f11","bottom-?f1 ");
3434     equation(out,"f12","bottom-?f0 ");
3435     equation(out,"f13","bottom-?f4 ");
3436     out.xml.startElement("draw:handle");
3437     out.xml.addAttribute("draw:handle-position", "left $0");
3438     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3439     out.xml.addAttribute("draw:handle-range-y-maximum", "5400");
3440     out.xml.endElement(); // draw:handle
3441     out.xml.endElement(); // enhanced geometry
3442     out.xml.endElement(); // custom shape
3443 }
3444 
3445 
3446 void ODrawToOdf::processHorizontalScroll(const MSO::OfficeArtSpContainer& o, Writer& out) {
3447     out.xml.startElement("draw:custom-shape");
3448     processStyleAndText(o, out);
3449 
3450     out.xml.startElement("draw:enhanced-geometry");
3451     processModifiers(o, out, QList<int>() << 2700);
3452     out.xml.addAttribute("draw:path-stretchpoint-x", "10800");
3453     out.xml.addAttribute("draw:path-stretchpoint-y", "11000");
3454     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3455     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");
3456     out.xml.addAttribute("draw:type", "horizontal-scroll");
3457     out.xml.addAttribute("draw:text-areas", "?f0 ?f0 ?f3 ?f12");
3458     setShapeMirroring(o, out);
3459     equation(out,"f0","$0 ");
3460     equation(out,"f1","?f0 /2");
3461     equation(out,"f2","right-?f1 ");
3462     equation(out,"f3","right-?f0 ");
3463     equation(out,"f4","?f0 +?f1 ");
3464     equation(out,"f5","right-?f4 ");
3465     equation(out,"f6","?f0 *2");
3466     equation(out,"f7","?f1 /2");
3467     equation(out,"f8","?f0 +?f7 ");
3468     equation(out,"f9","?f1 +?f7 ");
3469     equation(out,"f10","bottom-?f9 ");
3470     equation(out,"f11","bottom-?f1 ");
3471     equation(out,"f12","bottom-?f0 ");
3472     equation(out,"f13","bottom-?f4 ");
3473     out.xml.startElement("draw:handle");
3474     out.xml.addAttribute("draw:handle-position", "$0 top");
3475     out.xml.addAttribute("draw:handle-range-x-maximum", "5400");
3476     out.xml.addAttribute("draw:handle-range-x-minimum", "0");
3477     out.xml.endElement(); // draw:handle
3478     out.xml.endElement(); // enhanced geometry
3479     out.xml.endElement(); // custom shape
3480 }
3481 
3482 
3483 void ODrawToOdf::processWave(const MSO::OfficeArtSpContainer& o, Writer& out) {
3484     out.xml.startElement("draw:custom-shape");
3485     processStyleAndText(o, out);
3486 
3487     out.xml.startElement("draw:enhanced-geometry");
3488     out.xml.addAttribute("draw:glue-points", "?f18 ?f0 ?f20 10800 ?f19 ?f1 ?f21 10800");
3489     processModifiers(o, out, QList<int>() << 1400<< 10800);
3490     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3491     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");
3492     out.xml.addAttribute("draw:type", "mso-spt64");
3493     out.xml.addAttribute("draw:text-areas", "?f5 ?f22 ?f11 ?f23");
3494     setShapeMirroring(o, out);
3495     equation(out,"f0","$0 ");
3496     equation(out,"f1","21600-?f0 ");
3497     equation(out,"f2","$1 ");
3498     equation(out,"f3","?f2 -10800");
3499     equation(out,"f4","?f3 *2");
3500     equation(out,"f5","abs(?f4 )");
3501     equation(out,"f6","4320-?f5 ");
3502     equation(out,"f7","if(?f3 ,0,?f5 )");
3503     equation(out,"f8","15800*?f0 /4460");
3504     equation(out,"f9","?f0 -?f8 ");
3505     equation(out,"f10","?f0 +?f8 ");
3506     equation(out,"f11","21600-?f4 ");
3507     equation(out,"f12","if(?f3 ,?f11 ,21600)");
3508     equation(out,"f13","?f12 -?f7 ");
3509     equation(out,"f14","?f5 /2");
3510     equation(out,"f15","?f7 +7200-?f14 ");
3511     equation(out,"f16","?f12 +?f14 -7200");
3512     equation(out,"f17","?f13 /2");
3513     equation(out,"f18","?f7 +?f17 ");
3514     equation(out,"f19","21600-?f18 ");
3515     equation(out,"f20","?f5 /2");
3516     equation(out,"f21","21600-?f20 ");
3517     equation(out,"f22","?f0 *2");
3518     equation(out,"f23","21600-?f22 ");
3519     equation(out,"f24","21600-?f7 ");
3520     equation(out,"f25","21600-?f15 ");
3521     equation(out,"f26","?f1 +?f8 ");
3522     equation(out,"f27","21600-?f16 ");
3523     equation(out,"f28","?f1 -?f8 ");
3524     equation(out,"f29","21600-?f12 ");
3525     out.xml.startElement("draw:handle");
3526     out.xml.addAttribute("draw:handle-position", "left $0");
3527     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3528     out.xml.addAttribute("draw:handle-range-y-maximum", "4460");
3529     out.xml.endElement(); // draw:handle
3530     out.xml.startElement("draw:handle");
3531     out.xml.addAttribute("draw:handle-position", "$1 21600");
3532     out.xml.addAttribute("draw:handle-range-x-maximum", "12960");
3533     out.xml.addAttribute("draw:handle-range-x-minimum", "8640");
3534     out.xml.endElement(); // draw:handle
3535     out.xml.endElement(); // enhanced geometry
3536     out.xml.endElement(); // custom shape
3537 }
3538 
3539 
3540 void ODrawToOdf::processDoubleWave(const MSO::OfficeArtSpContainer& o, Writer& out) {
3541     out.xml.startElement("draw:custom-shape");
3542     processStyleAndText(o, out);
3543 
3544     out.xml.startElement("draw:enhanced-geometry");
3545     out.xml.addAttribute("draw:glue-points", "?f18 ?f0 ?f20 10800 ?f19 ?f1 ?f21 10800");
3546     processModifiers(o, out, QList<int>() << 1400<< 10800);
3547     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3548     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");
3549     out.xml.addAttribute("draw:type", "mso-spt188");
3550     out.xml.addAttribute("draw:text-areas", "?f5 ?f22 ?f11 ?f23");
3551     setShapeMirroring(o, out);
3552     equation(out,"f0","$0 ");
3553     equation(out,"f1","21600-?f0 ");
3554     equation(out,"f2","$1 ");
3555     equation(out,"f3","?f2 -10800");
3556     equation(out,"f4","?f3 *2");
3557     equation(out,"f5","abs(?f4 )");
3558     equation(out,"f6","4320-?f5 ");
3559     equation(out,"f7","if(?f3 ,0,?f5 )");
3560     equation(out,"f8","7900*?f0 /2230");
3561     equation(out,"f9","?f0 -?f8 ");
3562     equation(out,"f10","?f0 +?f8 ");
3563     equation(out,"f11","21600-?f4 ");
3564     equation(out,"f12","if(?f3 ,?f11 ,21600)");
3565     equation(out,"f13","?f12 -?f7 ");
3566     equation(out,"f14","?f5 /2");
3567     equation(out,"f15","?f7 +3600-?f14 ");
3568     equation(out,"f16","?f12 +?f14 -3600");
3569     equation(out,"f17","?f13 /2");
3570     equation(out,"f18","?f7 +?f17 ");
3571     equation(out,"f19","21600-?f18 ");
3572     equation(out,"f20","?f5 /2");
3573     equation(out,"f21","21600-?f20 ");
3574     equation(out,"f22","?f0 *2");
3575     equation(out,"f23","21600-?f22 ");
3576     equation(out,"f24","21600-?f7 ");
3577     equation(out,"f25","21600-?f15 ");
3578     equation(out,"f26","?f1 +?f8 ");
3579     equation(out,"f27","21600-?f16 ");
3580     equation(out,"f28","?f1 -?f8 ");
3581     equation(out,"f29","21600-?f12 ");
3582     equation(out,"f30","?f18 -?f14 ");
3583     equation(out,"f31","?f18 +?f14 ");
3584     equation(out,"f32","?f19 -?f14 ");
3585     equation(out,"f33","?f19 +?f14 ");
3586     out.xml.startElement("draw:handle");
3587     out.xml.addAttribute("draw:handle-position", "left $0");
3588     out.xml.addAttribute("draw:handle-range-y-minimum", "0");
3589     out.xml.addAttribute("draw:handle-range-y-maximum", "2230");
3590     out.xml.endElement(); // draw:handle
3591     out.xml.startElement("draw:handle");
3592     out.xml.addAttribute("draw:handle-position", "$1 21600");
3593     out.xml.addAttribute("draw:handle-range-x-maximum", "12960");
3594     out.xml.addAttribute("draw:handle-range-x-minimum", "8640");
3595     out.xml.endElement(); // draw:handle
3596     out.xml.endElement(); // enhanced geometry
3597     out.xml.endElement(); // custom shape
3598 }
3599 
3600 
3601 void ODrawToOdf::processWedgeRectCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3602     out.xml.startElement("draw:custom-shape");
3603     processStyleAndText(o, out);
3604 
3605     out.xml.startElement("draw:enhanced-geometry");
3606     out.xml.addAttribute("draw:glue-points", "10800 0 0 10800 10800 21600 21600 10800 ?f40 ?f41");
3607     processModifiers(o, out, QList<int>() << 1400<< 25920);
3608     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3609     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");
3610     out.xml.addAttribute("draw:type", "rectangular-callout");
3611     out.xml.addAttribute("draw:text-areas", "0 0 21600 21600");
3612     setShapeMirroring(o, out);
3613     equation(out,"f0","$0 -10800");
3614     equation(out,"f1","$1 -10800");
3615     equation(out,"f2","if(?f18 ,$0 ,0)");
3616     equation(out,"f3","if(?f18 ,$1 ,6280)");
3617     equation(out,"f4","if(?f23 ,$0 ,0)");
3618     equation(out,"f5","if(?f23 ,$1 ,15320)");
3619     equation(out,"f6","if(?f26 ,$0 ,6280)");
3620     equation(out,"f7","if(?f26 ,$1 ,21600)");
3621     equation(out,"f8","if(?f29 ,$0 ,15320)");
3622     equation(out,"f9","if(?f29 ,$1 ,21600)");
3623     equation(out,"f10","if(?f32 ,$0 ,21600)");
3624     equation(out,"f11","if(?f32 ,$1 ,15320)");
3625     equation(out,"f12","if(?f34 ,$0 ,21600)");
3626     equation(out,"f13","if(?f34 ,$1 ,6280)");
3627     equation(out,"f14","if(?f36 ,$0 ,15320)");
3628     equation(out,"f15","if(?f36 ,$1 ,0)");
3629     equation(out,"f16","if(?f38 ,$0 ,6280)");
3630     equation(out,"f17","if(?f38 ,$1 ,0)");
3631     equation(out,"f18","if($0 ,-1,?f19 )");
3632     equation(out,"f19","if(?f1 ,-1,?f22 )");
3633     equation(out,"f20","abs(?f0 )");
3634     equation(out,"f21","abs(?f1 )");
3635     equation(out,"f22","?f20 -?f21 ");
3636     equation(out,"f23","if($0 ,-1,?f24 )");
3637     equation(out,"f24","if(?f1 ,?f22 ,-1)");
3638     equation(out,"f25","$1 -21600");
3639     equation(out,"f26","if(?f25 ,?f27 ,-1)");
3640     equation(out,"f27","if(?f0 ,-1,?f28 )");
3641     equation(out,"f28","?f21 -?f20 ");
3642     equation(out,"f29","if(?f25 ,?f30 ,-1)");
3643     equation(out,"f30","if(?f0 ,?f28 ,-1)");
3644     equation(out,"f31","$0 -21600");
3645     equation(out,"f32","if(?f31 ,?f33 ,-1)");
3646     equation(out,"f33","if(?f1 ,?f22 ,-1)");
3647     equation(out,"f34","if(?f31 ,?f35 ,-1)");
3648     equation(out,"f35","if(?f1 ,-1,?f22 )");
3649     equation(out,"f36","if($1 ,-1,?f37 )");
3650     equation(out,"f37","if(?f0 ,?f28 ,-1)");
3651     equation(out,"f38","if($1 ,-1,?f39 )");
3652     equation(out,"f39","if(?f0 ,-1,?f28 )");
3653     equation(out,"f40","$0 ");
3654     equation(out,"f41","$1 ");
3655     out.xml.startElement("draw:handle");
3656     out.xml.addAttribute("draw:handle-position", "$0 $1");
3657     out.xml.endElement(); // draw:handle
3658     out.xml.endElement(); // enhanced geometry
3659     out.xml.endElement(); // custom shape
3660 }
3661 
3662 
3663 void ODrawToOdf::processWedgeRRectCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3664     out.xml.startElement("draw:custom-shape");
3665     processStyleAndText(o, out);
3666 
3667     out.xml.startElement("draw:enhanced-geometry");
3668     processModifiers(o, out, QList<int>() << 1400<< 25920);
3669     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3670     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");
3671     out.xml.addAttribute("draw:type", "round-rectangular-callout");
3672     out.xml.addAttribute("draw:text-areas", "800 800 20800 20800");
3673     setShapeMirroring(o, out);
3674     equation(out,"f0","$0 -10800");
3675     equation(out,"f1","$1 -10800");
3676     equation(out,"f2","if(?f18 ,$0 ,0)");
3677     equation(out,"f3","if(?f18 ,$1 ,6280)");
3678     equation(out,"f4","if(?f23 ,$0 ,0)");
3679     equation(out,"f5","if(?f23 ,$1 ,15320)");
3680     equation(out,"f6","if(?f26 ,$0 ,6280)");
3681     equation(out,"f7","if(?f26 ,$1 ,21600)");
3682     equation(out,"f8","if(?f29 ,$0 ,15320)");
3683     equation(out,"f9","if(?f29 ,$1 ,21600)");
3684     equation(out,"f10","if(?f32 ,$0 ,21600)");
3685     equation(out,"f11","if(?f32 ,$1 ,15320)");
3686     equation(out,"f12","if(?f34 ,$0 ,21600)");
3687     equation(out,"f13","if(?f34 ,$1 ,6280)");
3688     equation(out,"f14","if(?f36 ,$0 ,15320)");
3689     equation(out,"f15","if(?f36 ,$1 ,0)");
3690     equation(out,"f16","if(?f38 ,$0 ,6280)");
3691     equation(out,"f17","if(?f38 ,$1 ,0)");
3692     equation(out,"f18","if($0 ,-1,?f19 )");
3693     equation(out,"f19","if(?f1 ,-1,?f22 )");
3694     equation(out,"f20","abs(?f0 )");
3695     equation(out,"f21","abs(?f1 )");
3696     equation(out,"f22","?f20 -?f21 ");
3697     equation(out,"f23","if($0 ,-1,?f24 )");
3698     equation(out,"f24","if(?f1 ,?f22 ,-1)");
3699     equation(out,"f25","$1 -21600");
3700     equation(out,"f26","if(?f25 ,?f27 ,-1)");
3701     equation(out,"f27","if(?f0 ,-1,?f28 )");
3702     equation(out,"f28","?f21 -?f20 ");
3703     equation(out,"f29","if(?f25 ,?f30 ,-1)");
3704     equation(out,"f30","if(?f0 ,?f28 ,-1)");
3705     equation(out,"f31","$0 -21600");
3706     equation(out,"f32","if(?f31 ,?f33 ,-1)");
3707     equation(out,"f33","if(?f1 ,?f22 ,-1)");
3708     equation(out,"f34","if(?f31 ,?f35 ,-1)");
3709     equation(out,"f35","if(?f1 ,-1,?f22 )");
3710     equation(out,"f36","if($1 ,-1,?f37 )");
3711     equation(out,"f37","if(?f0 ,?f28 ,-1)");
3712     equation(out,"f38","if($1 ,-1,?f39 )");
3713     equation(out,"f39","if(?f0 ,-1,?f28 )");
3714     equation(out,"f40","$0 ");
3715     equation(out,"f41","$1 ");
3716     out.xml.startElement("draw:handle");
3717     out.xml.addAttribute("draw:handle-position", "$0 $1");
3718     out.xml.endElement(); // draw:handle
3719     out.xml.endElement(); // enhanced geometry
3720     out.xml.endElement(); // custom shape
3721 }
3722 
3723 
3724 void ODrawToOdf::processWedgeEllipseCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3725     out.xml.startElement("draw:custom-shape");
3726     processStyleAndText(o, out);
3727 
3728     out.xml.startElement("draw:enhanced-geometry");
3729     out.xml.addAttribute("draw:glue-points", "10800 0 3160 3160 0 10800 3160 18440 10800 21600 18440 18440 21600 10800 18440 3160 ?f14 ?f15");
3730     processModifiers(o, out, QList<int>() << 1350<< 25920);
3731     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3732     out.xml.addAttribute("draw:enhanced-path", "V 0 0 21600 21600 ?f22 ?f23 ?f18 ?f19 L ?f14 ?f15 Z N");
3733     out.xml.addAttribute("draw:type", "round-callout");
3734     out.xml.addAttribute("draw:text-areas", "3200 3200 18400 18400");
3735     setShapeMirroring(o, out);
3736     equation(out,"f0","$0 -10800");
3737     equation(out,"f1","$1 -10800");
3738     equation(out,"f2","?f0 *?f0 ");
3739     equation(out,"f3","?f1 *?f1 ");
3740     equation(out,"f4","?f2 +?f3 ");
3741     equation(out,"f5","sqrt(?f4 )");
3742     equation(out,"f6","?f5 -10800");
3743     equation(out,"f7","atan2(?f1 ,?f0 )/(pi/180)");
3744     equation(out,"f8","?f7 -10");
3745     equation(out,"f9","?f7 +10");
3746     equation(out,"f10","10800*cos(?f7 *(pi/180))");
3747     equation(out,"f11","10800*sin(?f7 *(pi/180))");
3748     equation(out,"f12","?f10 +10800");
3749     equation(out,"f13","?f11 +10800");
3750     equation(out,"f14","if(?f6 ,$0 ,?f12 )");
3751     equation(out,"f15","if(?f6 ,$1 ,?f13 )");
3752     equation(out,"f16","10800*cos(?f8 *(pi/180))");
3753     equation(out,"f17","10800*sin(?f8 *(pi/180))");
3754     equation(out,"f18","?f16 +10800");
3755     equation(out,"f19","?f17 +10800");
3756     equation(out,"f20","10800*cos(?f9 *(pi/180))");
3757     equation(out,"f21","10800*sin(?f9 *(pi/180))");
3758     equation(out,"f22","?f20 +10800");
3759     equation(out,"f23","?f21 +10800");
3760     out.xml.startElement("draw:handle");
3761     out.xml.addAttribute("draw:handle-position", "$0 $1");
3762     out.xml.endElement(); // draw:handle
3763     out.xml.endElement(); // enhanced geometry
3764     out.xml.endElement(); // custom shape
3765 }
3766 
3767 
3768 void ODrawToOdf::processCloudCallout(const MSO::OfficeArtSpContainer& o, Writer& out) {
3769     out.xml.startElement("draw:custom-shape");
3770     processStyleAndText(o, out);
3771 
3772     out.xml.startElement("draw:enhanced-geometry");
3773     processModifiers(o, out, QList<int>() << 1350<< 25920);
3774     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3775     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");
3776     out.xml.addAttribute("draw:type", "cloud-callout");
3777     out.xml.addAttribute("draw:text-areas", "3000 3320 17110 17330");
3778     setShapeMirroring(o, out);
3779     equation(out,"f0","$0 -10800");
3780     equation(out,"f1","$1 -10800");
3781     equation(out,"f2","atan2(?f1 ,?f0 )/(pi/180)");
3782     equation(out,"f3","10800*cos(?f2 *(pi/180))");
3783     equation(out,"f4","10800*sin(?f2 *(pi/180))");
3784     equation(out,"f5","?f3 +10800");
3785     equation(out,"f6","?f4 +10800");
3786     equation(out,"f7","$0 -?f5 ");
3787     equation(out,"f8","$1 -?f6 ");
3788     equation(out,"f9","?f7 /3");
3789     equation(out,"f10","?f8 /3");
3790     equation(out,"f11","?f7 *2/3");
3791     equation(out,"f12","?f8 *2/3");
3792     equation(out,"f13","$0 ");
3793     equation(out,"f14","$1 ");
3794     equation(out,"f15","?f3 /12");
3795     equation(out,"f16","?f4 /12");
3796     equation(out,"f17","?f9 +?f5 -?f15 ");
3797     equation(out,"f18","?f10 +?f6 -?f16 ");
3798     equation(out,"f19","?f11 +?f5 ");
3799     equation(out,"f20","?f12 +?f6 ");
3800     out.xml.startElement("draw:handle");
3801     out.xml.addAttribute("draw:handle-position", "$0 $1");
3802     out.xml.endElement(); // draw:handle
3803     out.xml.endElement(); // enhanced geometry
3804     out.xml.endElement(); // custom shape
3805 }
3806 
3807 
3808 void ODrawToOdf::processBorderCallout90(const MSO::OfficeArtSpContainer& o, Writer& out) {
3809     out.xml.startElement("draw:custom-shape");
3810     processStyleAndText(o, out);
3811 
3812     out.xml.startElement("draw:enhanced-geometry");
3813     processModifiers(o, out, QList<int>() << -1800<< 22950<< -1800<< 2700);
3814     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3815     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");
3816     out.xml.addAttribute("draw:type", "mso-spt180");
3817     setShapeMirroring(o, out);
3818     equation(out,"f0","$0 ");
3819     equation(out,"f1","$1 ");
3820     equation(out,"f2","$2 ");
3821     equation(out,"f3","$3 ");
3822     equation(out,"f4","$4 ");
3823     equation(out,"f5","$5 ");
3824     equation(out,"f6","$6 ");
3825     equation(out,"f7","$7 ");
3826     out.xml.startElement("draw:handle");
3827     out.xml.addAttribute("draw:handle-position", "$0 $1");
3828     out.xml.endElement(); // draw:handle
3829     out.xml.startElement("draw:handle");
3830     out.xml.addAttribute("draw:handle-position", "$2 $3");
3831     out.xml.endElement(); // draw:handle
3832     out.xml.endElement(); // enhanced geometry
3833     out.xml.endElement(); // custom shape
3834 }
3835 
3836 
3837 void ODrawToOdf::processBorderCallout1(const MSO::OfficeArtSpContainer& o, Writer& out) {
3838     out.xml.startElement("draw:custom-shape");
3839     processStyleAndText(o, out);
3840 
3841     out.xml.startElement("draw:enhanced-geometry");
3842     processModifiers(o, out, QList<int>() << -8288<< 24500<< -1800<< 4000);
3843     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3844     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");
3845     out.xml.addAttribute("draw:type", "line-callout-1");
3846     setShapeMirroring(o, out);
3847     equation(out,"f0","$0 ");
3848     equation(out,"f1","$1 ");
3849     equation(out,"f2","$2 ");
3850     equation(out,"f3","$3 ");
3851     equation(out,"f4","$4 ");
3852     equation(out,"f5","$5 ");
3853     equation(out,"f6","$6 ");
3854     equation(out,"f7","$7 ");
3855     out.xml.startElement("draw:handle");
3856     out.xml.addAttribute("draw:handle-position", "$0 $1");
3857     out.xml.endElement(); // draw:handle
3858     out.xml.startElement("draw:handle");
3859     out.xml.addAttribute("draw:handle-position", "$2 $3");
3860     out.xml.endElement(); // draw:handle
3861     out.xml.endElement(); // enhanced geometry
3862     out.xml.endElement(); // custom shape
3863 }
3864 
3865 
3866 void ODrawToOdf::processBorderCallout2(const MSO::OfficeArtSpContainer& o, Writer& out) {
3867     out.xml.startElement("draw:custom-shape");
3868     processStyleAndText(o, out);
3869 
3870     out.xml.startElement("draw:enhanced-geometry");
3871     processModifiers(o, out, QList<int>() << -10088<< 24500<< -3600<< 4000<< -1800<< 4000);
3872     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3873     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");
3874     out.xml.addAttribute("draw:type", "line-callout-2");
3875     setShapeMirroring(o, out);
3876     equation(out,"f0","$0 ");
3877     equation(out,"f1","$1 ");
3878     equation(out,"f2","$2 ");
3879     equation(out,"f3","$3 ");
3880     equation(out,"f4","$4 ");
3881     equation(out,"f5","$5 ");
3882     equation(out,"f6","$6 ");
3883     equation(out,"f7","$7 ");
3884     out.xml.startElement("draw:handle");
3885     out.xml.addAttribute("draw:handle-position", "$0 $1");
3886     out.xml.endElement(); // draw:handle
3887     out.xml.startElement("draw:handle");
3888     out.xml.addAttribute("draw:handle-position", "$2 $3");
3889     out.xml.endElement(); // draw:handle
3890     out.xml.startElement("draw:handle");
3891     out.xml.addAttribute("draw:handle-position", "$4 $5");
3892     out.xml.endElement(); // draw:handle
3893     out.xml.endElement(); // enhanced geometry
3894     out.xml.endElement(); // custom shape
3895 }
3896 
3897 
3898 void ODrawToOdf::processBorderCallout3(const MSO::OfficeArtSpContainer& o, Writer& out) {
3899     out.xml.startElement("draw:custom-shape");
3900     processStyleAndText(o, out);
3901 
3902     out.xml.startElement("draw:enhanced-geometry");
3903     processModifiers(o, out, QList<int>() << 23400<< 24413<< 25200<< 21600<< 25200<< 4000<< 23400<< 4000);
3904     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3905     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");
3906     out.xml.addAttribute("draw:type", "mso-spt49");
3907     setShapeMirroring(o, out);
3908     equation(out,"f0","$0 ");
3909     equation(out,"f1","$1 ");
3910     equation(out,"f2","$2 ");
3911     equation(out,"f3","$3 ");
3912     equation(out,"f4","$4 ");
3913     equation(out,"f5","$5 ");
3914     equation(out,"f6","$6 ");
3915     equation(out,"f7","$7 ");
3916     out.xml.startElement("draw:handle");
3917     out.xml.addAttribute("draw:handle-position", "$0 $1");
3918     out.xml.endElement(); // draw:handle
3919     out.xml.startElement("draw:handle");
3920     out.xml.addAttribute("draw:handle-position", "$2 $3");
3921     out.xml.endElement(); // draw:handle
3922     out.xml.startElement("draw:handle");
3923     out.xml.addAttribute("draw:handle-position", "$4 $5");
3924     out.xml.endElement(); // draw:handle
3925     out.xml.startElement("draw:handle");
3926     out.xml.addAttribute("draw:handle-position", "$6 $7");
3927     out.xml.endElement(); // draw:handle
3928     out.xml.endElement(); // enhanced geometry
3929     out.xml.endElement(); // custom shape
3930 }
3931 
3932 
3933 void ODrawToOdf::processAccentCallout90(const MSO::OfficeArtSpContainer& o, Writer& out) {
3934     out.xml.startElement("draw:custom-shape");
3935     processStyleAndText(o, out);
3936 
3937     out.xml.startElement("draw:enhanced-geometry");
3938     processModifiers(o, out, QList<int>() << -1800<< 22950<< -1800<< 2700);
3939     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3940     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");
3941     out.xml.addAttribute("draw:type", "mso-spt179");
3942     setShapeMirroring(o, out);
3943     equation(out,"f0","$0 ");
3944     equation(out,"f1","$1 ");
3945     equation(out,"f2","$2 ");
3946     equation(out,"f3","$3 ");
3947     equation(out,"f4","$4 ");
3948     equation(out,"f5","$5 ");
3949     equation(out,"f6","$6 ");
3950     equation(out,"f7","$7 ");
3951     out.xml.startElement("draw:handle");
3952     out.xml.addAttribute("draw:handle-position", "$0 $1");
3953     out.xml.endElement(); // draw:handle
3954     out.xml.startElement("draw:handle");
3955     out.xml.addAttribute("draw:handle-position", "$2 $3");
3956     out.xml.endElement(); // draw:handle
3957     out.xml.endElement(); // enhanced geometry
3958     out.xml.endElement(); // custom shape
3959 }
3960 
3961 
3962 void ODrawToOdf::processAccentCallout1(const MSO::OfficeArtSpContainer& o, Writer& out) {
3963     out.xml.startElement("draw:custom-shape");
3964     processStyleAndText(o, out);
3965 
3966     out.xml.startElement("draw:enhanced-geometry");
3967     processModifiers(o, out, QList<int>() << -8288<< 24500<< -1800<< 4000);
3968     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3969     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");
3970     out.xml.addAttribute("draw:type", "mso-spt44");
3971     setShapeMirroring(o, out);
3972     equation(out,"f0","$0 ");
3973     equation(out,"f1","$1 ");
3974     equation(out,"f2","$2 ");
3975     equation(out,"f3","$3 ");
3976     equation(out,"f4","$4 ");
3977     equation(out,"f5","$5 ");
3978     equation(out,"f6","$6 ");
3979     equation(out,"f7","$7 ");
3980     out.xml.startElement("draw:handle");
3981     out.xml.addAttribute("draw:handle-position", "$0 $1");
3982     out.xml.endElement(); // draw:handle
3983     out.xml.startElement("draw:handle");
3984     out.xml.addAttribute("draw:handle-position", "$2 $3");
3985     out.xml.endElement(); // draw:handle
3986     out.xml.endElement(); // enhanced geometry
3987     out.xml.endElement(); // custom shape
3988 }
3989 
3990 
3991 void ODrawToOdf::processAccentCallout2(const MSO::OfficeArtSpContainer& o, Writer& out) {
3992     out.xml.startElement("draw:custom-shape");
3993     processStyleAndText(o, out);
3994 
3995     out.xml.startElement("draw:enhanced-geometry");
3996     processModifiers(o, out, QList<int>() << -10088<< 24500<< -3600<< 4000<< -1800<< 4000);
3997     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
3998     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");
3999     out.xml.addAttribute("draw:type", "mso-spt45");
4000     setShapeMirroring(o, out);
4001     equation(out,"f0","$0 ");
4002     equation(out,"f1","$1 ");
4003     equation(out,"f2","$2 ");
4004     equation(out,"f3","$3 ");
4005     equation(out,"f4","$4 ");
4006     equation(out,"f5","$5 ");
4007     equation(out,"f6","$6 ");
4008     equation(out,"f7","$7 ");
4009     out.xml.startElement("draw:handle");
4010     out.xml.addAttribute("draw:handle-position", "$0 $1");
4011     out.xml.endElement(); // draw:handle
4012     out.xml.startElement("draw:handle");
4013     out.xml.addAttribute("draw:handle-position", "$2 $3");
4014     out.xml.endElement(); // draw:handle
4015     out.xml.startElement("draw:handle");
4016     out.xml.addAttribute("draw:handle-position", "$4 $5");
4017     out.xml.endElement(); // draw:handle
4018     out.xml.endElement(); // enhanced geometry
4019     out.xml.endElement(); // custom shape
4020 }
4021 
4022 
4023 void ODrawToOdf::processAccentCallout3(const MSO::OfficeArtSpContainer& o, Writer& out) {
4024     out.xml.startElement("draw:custom-shape");
4025     processStyleAndText(o, out);
4026 
4027     out.xml.startElement("draw:enhanced-geometry");
4028     processModifiers(o, out, QList<int>() << 23400<< 24413<< 25200<< 21600<< 25200<< 4000<< 23400<< 4000);
4029     out.xml.addAttribute("svg:viewBox", "0 0 21600 21600");
4030     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");
4031     out.xml.addAttribute("draw:type", "mso-spt46");
4032     setShapeMirroring(o, out);
4033     equation(out,"f0",