File indexing completed on 2024-12-08 12:55:59

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