1cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?>
2*1e519d8dSAndrew Rist<!--***********************************************************
3*1e519d8dSAndrew Rist *
4*1e519d8dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
5*1e519d8dSAndrew Rist * or more contributor license agreements.  See the NOTICE file
6*1e519d8dSAndrew Rist * distributed with this work for additional information
7*1e519d8dSAndrew Rist * regarding copyright ownership.  The ASF licenses this file
8*1e519d8dSAndrew Rist * to you under the Apache License, Version 2.0 (the
9*1e519d8dSAndrew Rist * "License"); you may not use this file except in compliance
10*1e519d8dSAndrew Rist * with the License.  You may obtain a copy of the License at
11*1e519d8dSAndrew Rist *
12*1e519d8dSAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
13*1e519d8dSAndrew Rist *
14*1e519d8dSAndrew Rist * Unless required by applicable law or agreed to in writing,
15*1e519d8dSAndrew Rist * software distributed under the License is distributed on an
16*1e519d8dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17*1e519d8dSAndrew Rist * KIND, either express or implied.  See the License for the
18*1e519d8dSAndrew Rist * specific language governing permissions and limitations
19*1e519d8dSAndrew Rist * under the License.
20*1e519d8dSAndrew Rist *
21*1e519d8dSAndrew Rist ***********************************************************-->
22cdf0e10cSrcweir
23cdf0e10cSrcweir
24cdf0e10cSrcweir<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" exclude-result-prefixes="office table style text draw svg   dc config xlink meta oooc dom ooo chart math dr3d form script ooow draw">
25cdf0e10cSrcweir    <xsl:include href="../../common/math.xsl"/>
26cdf0e10cSrcweir    <xsl:template name="test-arc">
27cdf0e10cSrcweir        <xsl:call-template name="svg-arc2vml-arc">
28cdf0e10cSrcweir            <!--  M 125,75 a100,50 0 ?,? 100,50 -->
29cdf0e10cSrcweir            <xsl:with-param name="x0" select="125"/>
30cdf0e10cSrcweir            <xsl:with-param name="y0" select="75"/>
31cdf0e10cSrcweir            <xsl:with-param name="rx" select="100"/>
32cdf0e10cSrcweir            <xsl:with-param name="ry" select="50"/>
33cdf0e10cSrcweir            <xsl:with-param name="x-axis-rotation" select="0"/>
34cdf0e10cSrcweir            <xsl:with-param name="large-arc-flag" select="0"/>
35cdf0e10cSrcweir            <xsl:with-param name="sweep-flag" select="0"/>
36cdf0e10cSrcweir            <xsl:with-param name="x" select="225"/>
37cdf0e10cSrcweir            <xsl:with-param name="y" select="125"/>
38cdf0e10cSrcweir        </xsl:call-template>
39cdf0e10cSrcweir    </xsl:template>
40cdf0e10cSrcweir    <xsl:template name="test">
41cdf0e10cSrcweir        <xsl:call-template name="svgpath2vmlpath">
42cdf0e10cSrcweir            <xsl:with-param name="svg-path" select="'M 36.0 162.0 C 38.0 168.0 39.0-172.0 40.0 176.0 S 42.0 184.0 144.0 188.0'"/>
43cdf0e10cSrcweir        </xsl:call-template>
44cdf0e10cSrcweir    </xsl:template>
45cdf0e10cSrcweir    <xsl:template name="svgpath2vmlpath">
46cdf0e10cSrcweir        <xsl:param name="svg-path"/>
47cdf0e10cSrcweir        <xsl:param name="vml-path" select="''"/>
48cdf0e10cSrcweir        <xsl:param name="position" select="1"/>
49cdf0e10cSrcweir        <xsl:param name="last-command" select="'M'"/>
50cdf0e10cSrcweir        <xsl:param name="current-x" select="'0'"/>
51cdf0e10cSrcweir        <xsl:param name="current-y" select="'0'"/>
52cdf0e10cSrcweir        <xsl:variable name="command-and-newpos">
53cdf0e10cSrcweir            <xsl:call-template name="get-path-command">
54cdf0e10cSrcweir                <xsl:with-param name="svg-path" select="$svg-path"/>
55cdf0e10cSrcweir                <xsl:with-param name="position" select="$position"/>
56cdf0e10cSrcweir                <xsl:with-param name="last-command" select="$last-command"/>
57cdf0e10cSrcweir            </xsl:call-template>
58cdf0e10cSrcweir        </xsl:variable>
59cdf0e10cSrcweir        <xsl:variable name="command" select="substring-before($command-and-newpos , ':')"/>
60cdf0e10cSrcweir        <xsl:variable name="newpos" select="substring-after($command-and-newpos , ':')"/>
61cdf0e10cSrcweir        <xsl:choose>
62cdf0e10cSrcweir            <xsl:when test="$command = 'M' ">
63cdf0e10cSrcweir                <!-- absolute moveto -->
64cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' m ' ) "/>
65cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
66cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
67cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
68cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
69cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
70cdf0e10cSrcweir                    </xsl:call-template>
71cdf0e10cSrcweir                </xsl:variable>
72cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
73cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
74cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $num-and-pos , ':')  , ' ') "/>
75cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
76cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="'L'"/>
77cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')   , ' ') "/>
78cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')   , ' ') "/>
79cdf0e10cSrcweir                </xsl:call-template>
80cdf0e10cSrcweir            </xsl:when>
81cdf0e10cSrcweir            <xsl:when test="$command = 'm' ">
82cdf0e10cSrcweir                <!-- relative moveto -->
83cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' t ' ) "/>
84cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
85cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
86cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
87cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
88cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
89cdf0e10cSrcweir                    </xsl:call-template>
90cdf0e10cSrcweir                </xsl:variable>
91cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
92cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
93cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $num-and-pos , ':')  , ' ') "/>
94cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
95cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="'l'"/>
96cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')    , ' ')  + $current-x"/>
97cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')    , ' ') + $current-y "/>
98cdf0e10cSrcweir                </xsl:call-template>
99cdf0e10cSrcweir            </xsl:when>
100cdf0e10cSrcweir            <xsl:when test="$command = 'L' ">
101cdf0e10cSrcweir                <!-- absolute lineto -->
102cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' l ' ) "/>
103cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
104cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
105cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
106cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
107cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
108cdf0e10cSrcweir                    </xsl:call-template>
109cdf0e10cSrcweir                </xsl:variable>
110cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
111cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
112cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $num-and-pos , ':')  , ' ') "/>
113cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
114cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
115cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')   , ' ') "/>
116cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')   , ' ') "/>
117cdf0e10cSrcweir                </xsl:call-template>
118cdf0e10cSrcweir            </xsl:when>
119cdf0e10cSrcweir            <xsl:when test="$command = 'l' ">
120cdf0e10cSrcweir                <!-- relative lineto -->
121cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' r ' ) "/>
122cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
123cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
124cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
125cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
126cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
127cdf0e10cSrcweir                    </xsl:call-template>
128cdf0e10cSrcweir                </xsl:variable>
129cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
130cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
131cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $num-and-pos , ':')  , ' ') "/>
132cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
133cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
134cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')  , ' ')  + $current-x  "/>
135cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')    , ' ')  + $current-y "/>
136cdf0e10cSrcweir                </xsl:call-template>
137cdf0e10cSrcweir            </xsl:when>
138cdf0e10cSrcweir            <xsl:when test="$command = 'H' ">
139cdf0e10cSrcweir                <!-- absolute horizontal  lineto -->
140cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' l ' ) "/>
141cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
142cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
143cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
144cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
145cdf0e10cSrcweir                        <xsl:with-param name="count" select="1"/>
146cdf0e10cSrcweir                    </xsl:call-template>
147cdf0e10cSrcweir                </xsl:variable>
148cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
149cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
150cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $num-and-pos , ':')  , ' ' , $current-y , ' ') "/>
151cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
152cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
153cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( $num-and-pos , ':')  "/>
154cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" $current-y"/>
155cdf0e10cSrcweir                </xsl:call-template>
156cdf0e10cSrcweir            </xsl:when>
157cdf0e10cSrcweir            <xsl:when test="$command = 'h' ">
158cdf0e10cSrcweir                <!-- relative horizontal  lineto -->
159cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' l ' ) "/>
160cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
161cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
162cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
163cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
164cdf0e10cSrcweir                        <xsl:with-param name="count" select="1"/>
165cdf0e10cSrcweir                    </xsl:call-template>
166cdf0e10cSrcweir                </xsl:variable>
167cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
168cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
169cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $num-and-pos , ':') + $current-x  , ' ' , $current-y , ' ') "/>
170cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
171cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
172cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( $num-and-pos , ':')  + $current-x"/>
173cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" $current-y"/>
174cdf0e10cSrcweir                </xsl:call-template>
175cdf0e10cSrcweir            </xsl:when>
176cdf0e10cSrcweir            <xsl:when test="$command = 'V' ">
177cdf0e10cSrcweir                <!-- absolute vertical  lineto -->
178cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' l ' ) "/>
179cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
180cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
181cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
182cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
183cdf0e10cSrcweir                        <xsl:with-param name="count" select="1"/>
184cdf0e10cSrcweir                    </xsl:call-template>
185cdf0e10cSrcweir                </xsl:variable>
186cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
187cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
188cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , $current-x , ' ' , substring-before( $num-and-pos , ':')  , ' ' ) "/>
189cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
190cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
191cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" $current-x"/>
192cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-before( $num-and-pos , ':')  "/>
193cdf0e10cSrcweir                </xsl:call-template>
194cdf0e10cSrcweir            </xsl:when>
195cdf0e10cSrcweir            <xsl:when test="$command = 'v' ">
196cdf0e10cSrcweir                <!-- relative horizontal  lineto -->
197cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' l ' ) "/>
198cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
199cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
200cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
201cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
202cdf0e10cSrcweir                        <xsl:with-param name="count" select="1"/>
203cdf0e10cSrcweir                    </xsl:call-template>
204cdf0e10cSrcweir                </xsl:variable>
205cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
206cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
207cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , $current-x , ' ' , substring-before( $num-and-pos , ':')  + $current-y , ' ' ) "/>
208cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
209cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
210cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" $current-x"/>
211cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-before( $num-and-pos , ':')  "/>
212cdf0e10cSrcweir                </xsl:call-template>
213cdf0e10cSrcweir            </xsl:when>
214cdf0e10cSrcweir            <xsl:when test="$command = 'C' ">
215cdf0e10cSrcweir                <!-- absolute curveto -->
216cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' c ' ) "/>
217cdf0e10cSrcweir                <xsl:variable name="control-and-pos">
218cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
219cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
220cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
221cdf0e10cSrcweir                        <xsl:with-param name="count" select="4"/>
222cdf0e10cSrcweir                    </xsl:call-template>
223cdf0e10cSrcweir                </xsl:variable>
224cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
225cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
226cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
227cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after( $control-and-pos , ':') "/>
228cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
229cdf0e10cSrcweir                    </xsl:call-template>
230cdf0e10cSrcweir                </xsl:variable>
231cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
232cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
233cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $control-and-pos , ':')  , ' ' ,  substring-before( $num-and-pos , ':')  , ' ') "/>
234cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
235cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
236cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')   , ' ') "/>
237cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')   , ' ') "/>
238cdf0e10cSrcweir                </xsl:call-template>
239cdf0e10cSrcweir            </xsl:when>
240cdf0e10cSrcweir            <xsl:when test="$command = 'c' ">
241cdf0e10cSrcweir                <!-- relative curveto -->
242cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' v ' ) "/>
243cdf0e10cSrcweir                <xsl:variable name="control-and-pos">
244cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
245cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
246cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
247cdf0e10cSrcweir                        <xsl:with-param name="count" select="4"/>
248cdf0e10cSrcweir                    </xsl:call-template>
249cdf0e10cSrcweir                </xsl:variable>
250cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
251cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
252cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
253cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after( $control-and-pos , ':') "/>
254cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
255cdf0e10cSrcweir                    </xsl:call-template>
256cdf0e10cSrcweir                </xsl:variable>
257cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
258cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
259cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $control-and-pos , ':')  , ' ' ,  substring-before( $num-and-pos , ':')  , ' ') "/>
260cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
261cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
262cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')  , ' ')  + $current-x  "/>
263cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')    , ' ')  + $current-y "/>
264cdf0e10cSrcweir                </xsl:call-template>
265cdf0e10cSrcweir            </xsl:when>
266cdf0e10cSrcweir            <xsl:when test="$command = 'S' ">
267cdf0e10cSrcweir                <!-- absolute shorthand/smooth curveto -->
268cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' c ' ) "/>
269cdf0e10cSrcweir                <xsl:variable name="control-and-pos">
270cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
271cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
272cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
273cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
274cdf0e10cSrcweir                    </xsl:call-template>
275cdf0e10cSrcweir                </xsl:variable>
276cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
277cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
278cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
279cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after( $control-and-pos , ':') "/>
280cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
281cdf0e10cSrcweir                    </xsl:call-template>
282cdf0e10cSrcweir                </xsl:variable>
283cdf0e10cSrcweir                <xsl:variable name="control-1">
284cdf0e10cSrcweir                    <xsl:choose>
285cdf0e10cSrcweir                        <xsl:when test="string-length(translate($last-command, 'CcSs','')  )= 0 ">
286cdf0e10cSrcweir                            <xsl:variable name="previous-control-2">
287cdf0e10cSrcweir                                <xsl:call-template name="get-number-before">
288cdf0e10cSrcweir                                    <xsl:with-param name="svg-path" select="$svg-path"/>
289cdf0e10cSrcweir                                    <xsl:with-param name="position" select="$position"/>
290cdf0e10cSrcweir                                    <xsl:with-param name="count" select="2"/>
291cdf0e10cSrcweir                                    <xsl:with-param name="skipcount" select="2"/>
292cdf0e10cSrcweir                                </xsl:call-template>
293cdf0e10cSrcweir                            </xsl:variable>
294cdf0e10cSrcweir                            <xsl:value-of select="substring-before($previous-control-2 , ':') "/>
295cdf0e10cSrcweir                        </xsl:when>
296cdf0e10cSrcweir                        <xsl:otherwise>
297cdf0e10cSrcweir                            <xsl:value-of select="substring-before($control-and-pos, ':') "/>
298cdf0e10cSrcweir                        </xsl:otherwise>
299cdf0e10cSrcweir                    </xsl:choose>
300cdf0e10cSrcweir                </xsl:variable>
301cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
302cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
303cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path ,  $control-1 , ' ' ,  substring-before( $control-and-pos , ':')  , ' ' ,  substring-before( $num-and-pos , ':')  , ' ') "/>
304cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
305cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
306cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')   , ' ') "/>
307cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')   , ' ') "/>
308cdf0e10cSrcweir                </xsl:call-template>
309cdf0e10cSrcweir            </xsl:when>
310cdf0e10cSrcweir            <xsl:when test="$command = 's' ">
311cdf0e10cSrcweir                <!-- absolute shorthand/smooth curveto -->
312cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' v ' ) "/>
313cdf0e10cSrcweir                <xsl:variable name="control-and-pos">
314cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
315cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
316cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
317cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
318cdf0e10cSrcweir                    </xsl:call-template>
319cdf0e10cSrcweir                </xsl:variable>
320cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
321cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
322cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
323cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after( $control-and-pos , ':') "/>
324cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
325cdf0e10cSrcweir                    </xsl:call-template>
326cdf0e10cSrcweir                </xsl:variable>
327cdf0e10cSrcweir                <xsl:variable name="control-1">
328cdf0e10cSrcweir                    <xsl:choose>
329cdf0e10cSrcweir                        <xsl:when test="string-length(translate($last-command, 'CcSs' , '')) = 0 ">
330cdf0e10cSrcweir                            <xsl:variable name="previous-control-2">
331cdf0e10cSrcweir                                <xsl:call-template name="get-number-before">
332cdf0e10cSrcweir                                    <xsl:with-param name="svg-path" select="$svg-path"/>
333cdf0e10cSrcweir                                    <xsl:with-param name="position" select="$position"/>
334cdf0e10cSrcweir                                    <xsl:with-param name="count" select="2"/>
335cdf0e10cSrcweir                                    <xsl:with-param name="skipcount" select="2"/>
336cdf0e10cSrcweir                                </xsl:call-template>
337cdf0e10cSrcweir                            </xsl:variable>
338cdf0e10cSrcweir                            <xsl:value-of select="substring-before($previous-control-2 , ':') "/>
339cdf0e10cSrcweir                        </xsl:when>
340cdf0e10cSrcweir                        <xsl:otherwise>
341cdf0e10cSrcweir                            <xsl:value-of select="substring-before($control-and-pos, ':') "/>
342cdf0e10cSrcweir                        </xsl:otherwise>
343cdf0e10cSrcweir                    </xsl:choose>
344cdf0e10cSrcweir                </xsl:variable>
345cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
346cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
347cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path ,  $control-1 , ' ' ,  substring-before( $control-and-pos , ':')  , ' ' ,  substring-before( $num-and-pos , ':')  , ' ') "/>
348cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
349cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
350cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')  , ' ')  + $current-x  "/>
351cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')    , ' ')  + $current-y "/>
352cdf0e10cSrcweir                </xsl:call-template>
353cdf0e10cSrcweir            </xsl:when>
354cdf0e10cSrcweir            <xsl:when test="$command = 'Q' ">
355cdf0e10cSrcweir                <!-- absolute quadratic  bézier curves  -->
356cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' qb ' ) "/>
357cdf0e10cSrcweir                <xsl:variable name="control-and-pos">
358cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
359cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
360cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
361cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
362cdf0e10cSrcweir                    </xsl:call-template>
363cdf0e10cSrcweir                </xsl:variable>
364cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
365cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
366cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
367cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after( $control-and-pos , ':') "/>
368cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
369cdf0e10cSrcweir                    </xsl:call-template>
370cdf0e10cSrcweir                </xsl:variable>
371cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
372cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
373cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , substring-before( $control-and-pos , ':')  , ' ' ,  substring-before( $num-and-pos , ':')  , ' ') "/>
374cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
375cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
376cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( substring-before( $num-and-pos , ':')   , ' ') "/>
377cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( substring-before( $num-and-pos , ':')   , ' ') "/>
378cdf0e10cSrcweir                </xsl:call-template>
379cdf0e10cSrcweir            </xsl:when>
380cdf0e10cSrcweir            <xsl:when test="$command = 'q' ">
381cdf0e10cSrcweir                <!-- relative  quadratic  bézier curves -->
382cdf0e10cSrcweir                <xsl:variable name="control-and-pos">
383cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
384cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
385cdf0e10cSrcweir                        <xsl:with-param name="position" select="$newpos"/>
386cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
387cdf0e10cSrcweir                    </xsl:call-template>
388cdf0e10cSrcweir                </xsl:variable>
389cdf0e10cSrcweir                <xsl:variable name="control" select="substring-before( $control-and-pos , ':') "/>
390cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' qb ' ,  substring-before($control,' ') + $current-x , ' '  , substring-after($control , ' ') + $current-y ) "/>
391cdf0e10cSrcweir                <xsl:variable name="num-and-pos">
392cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
393cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
394cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after( $control-and-pos , ':') "/>
395cdf0e10cSrcweir                        <xsl:with-param name="count" select="2"/>
396cdf0e10cSrcweir                    </xsl:call-template>
397cdf0e10cSrcweir                </xsl:variable>
398cdf0e10cSrcweir                <xsl:variable name="number" select="substring-before($num-and-pos, ':')"/>
399cdf0e10cSrcweir                <xsl:variable name="absolute-number" select="concat(substring-before($number, ' ') + $current-x  , ' ' , substring-after($number, ' ') + $current-y)"/>
400cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
401cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
402cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path   , ' ' ,  $absolute-number  , ' ') "/>
403cdf0e10cSrcweir                    <xsl:with-param name="position" select=" substring-after( $num-and-pos , ':')  "/>
404cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
405cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" substring-before( $absolute-number  , ' ') "/>
406cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" substring-after( $absolute-number   , ' ') "/>
407cdf0e10cSrcweir                </xsl:call-template>
408cdf0e10cSrcweir            </xsl:when>
409cdf0e10cSrcweir            <xsl:when test="$command = 'Z' or $command = 'z' ">
410cdf0e10cSrcweir                <!-- closepath -->
411cdf0e10cSrcweir                <xsl:variable name="new-vml-path" select="concat($vml-path ,' x ' ) "/>
412cdf0e10cSrcweir                <xsl:call-template name="svgpath2vmlpath">
413cdf0e10cSrcweir                    <xsl:with-param name="svg-path" select="$svg-path"/>
414cdf0e10cSrcweir                    <xsl:with-param name="vml-path" select=" concat($new-vml-path , ' ') "/>
415cdf0e10cSrcweir                    <xsl:with-param name="position" select=" $newpos  "/>
416cdf0e10cSrcweir                    <xsl:with-param name="last-command" select="$command"/>
417cdf0e10cSrcweir                    <xsl:with-param name="current-x" select=" $current-x "/>
418cdf0e10cSrcweir                    <xsl:with-param name="current-y" select=" $current-y"/>
419cdf0e10cSrcweir                </xsl:call-template>
420cdf0e10cSrcweir            </xsl:when>
421cdf0e10cSrcweir            <xsl:otherwise>
422cdf0e10cSrcweir                <xsl:value-of select="$vml-path"/>
423cdf0e10cSrcweir            </xsl:otherwise>
424cdf0e10cSrcweir        </xsl:choose>
425cdf0e10cSrcweir    </xsl:template>
426cdf0e10cSrcweir    <xsl:template name="get-number-before">
427cdf0e10cSrcweir        <!--  get $count number of number before current position , output format:number1 number2 ... numberN:newpostion
428cdf0e10cSrcweir            skip $skipcount of numbers
429cdf0e10cSrcweir        -->
430cdf0e10cSrcweir        <xsl:param name="svg-path"/>
431cdf0e10cSrcweir        <xsl:param name="position" select="1"/>
432cdf0e10cSrcweir        <xsl:param name="count" select="1"/>
433cdf0e10cSrcweir        <xsl:param name="skipcount" select="0"/>
434cdf0e10cSrcweir        <xsl:param name="number" select="''"/>
435cdf0e10cSrcweir        <xsl:choose>
436cdf0e10cSrcweir            <xsl:when test="$count = 0">
437cdf0e10cSrcweir                <xsl:value-of select=" concat($number ,   ':' , $position) "/>
438cdf0e10cSrcweir            </xsl:when>
439cdf0e10cSrcweir            <xsl:otherwise>
440cdf0e10cSrcweir                <xsl:variable name="num-pos">
441cdf0e10cSrcweir                    <xsl:call-template name="get-number-position">
442cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
443cdf0e10cSrcweir                        <xsl:with-param name="position" select="$position"/>
444cdf0e10cSrcweir                        <xsl:with-param name="direction" select="-1"/>
445cdf0e10cSrcweir                    </xsl:call-template>
446cdf0e10cSrcweir                </xsl:variable>
447cdf0e10cSrcweir                <xsl:variable name="previous-num-and-pos">
448cdf0e10cSrcweir                    <xsl:call-template name="get-previous-number">
449cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
450cdf0e10cSrcweir                        <xsl:with-param name="position" select="$num-pos"/>
451cdf0e10cSrcweir                    </xsl:call-template>
452cdf0e10cSrcweir                </xsl:variable>
453cdf0e10cSrcweir                <xsl:if test="$skipcount &gt; 0">
454cdf0e10cSrcweir                    <xsl:call-template name="get-number-before">
455cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
456cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after($previous-num-and-pos , ':')"/>
457cdf0e10cSrcweir                        <xsl:with-param name="count" select="$count"/>
458cdf0e10cSrcweir                        <xsl:with-param name="skipcount" select="$skipcount - 1"/>
459cdf0e10cSrcweir                        <xsl:with-param name="number" select="$number"/>
460cdf0e10cSrcweir                    </xsl:call-template>
461cdf0e10cSrcweir                </xsl:if>
462cdf0e10cSrcweir                <xsl:if test="$skipcount = 0">
463cdf0e10cSrcweir                    <xsl:variable name="new-number">
464cdf0e10cSrcweir                        <xsl:if test="not($count  = 1)">
465cdf0e10cSrcweir                            <xsl:value-of select="' '"/>
466cdf0e10cSrcweir                        </xsl:if>
467cdf0e10cSrcweir                        <xsl:value-of select=" concat( substring-before($previous-num-and-pos , ':')  , $number ) "/>
468cdf0e10cSrcweir                    </xsl:variable>
469cdf0e10cSrcweir                    <xsl:call-template name="get-number-before">
470cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
471cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after($previous-num-and-pos , ':')"/>
472cdf0e10cSrcweir                        <xsl:with-param name="count" select="$count - 1"/>
473cdf0e10cSrcweir                        <xsl:with-param name="skipcount" select="0"/>
474cdf0e10cSrcweir                        <xsl:with-param name="number" select="$new-number"/>
475cdf0e10cSrcweir                    </xsl:call-template>
476cdf0e10cSrcweir                </xsl:if>
477cdf0e10cSrcweir            </xsl:otherwise>
478cdf0e10cSrcweir        </xsl:choose>
479cdf0e10cSrcweir    </xsl:template>
480cdf0e10cSrcweir    <xsl:template name="get-number-after">
481cdf0e10cSrcweir        <!--  get $count number of number after current position, output format:number1 number2 ... numberN:newpostion
482cdf0e10cSrcweir            skip $skipcount of numbers
483cdf0e10cSrcweir        -->
484cdf0e10cSrcweir        <xsl:param name="svg-path"/>
485cdf0e10cSrcweir        <xsl:param name="position" select="1"/>
486cdf0e10cSrcweir        <xsl:param name="count" select="1"/>
487cdf0e10cSrcweir        <xsl:param name="skipcount" select="0"/>
488cdf0e10cSrcweir        <xsl:param name="number" select="''"/>
489cdf0e10cSrcweir        <xsl:choose>
490cdf0e10cSrcweir            <xsl:when test="$count = 0">
491cdf0e10cSrcweir                <xsl:value-of select=" concat($number ,   ':' , $position) "/>
492cdf0e10cSrcweir            </xsl:when>
493cdf0e10cSrcweir            <xsl:otherwise>
494cdf0e10cSrcweir                <xsl:variable name="num-pos">
495cdf0e10cSrcweir                    <xsl:call-template name="get-number-position">
496cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
497cdf0e10cSrcweir                        <xsl:with-param name="position" select="$position"/>
498cdf0e10cSrcweir                        <xsl:with-param name="direction" select="1"/>
499cdf0e10cSrcweir                    </xsl:call-template>
500cdf0e10cSrcweir                </xsl:variable>
501cdf0e10cSrcweir                <xsl:variable name="next-num-and-pos">
502cdf0e10cSrcweir                    <xsl:call-template name="get-next-number">
503cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
504cdf0e10cSrcweir                        <xsl:with-param name="position" select="$num-pos"/>
505cdf0e10cSrcweir                    </xsl:call-template>
506cdf0e10cSrcweir                </xsl:variable>
507cdf0e10cSrcweir                <xsl:if test="$skipcount &gt; 0">
508cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
509cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
510cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after($next-num-and-pos , ':')"/>
511cdf0e10cSrcweir                        <xsl:with-param name="count" select="$count"/>
512cdf0e10cSrcweir                        <xsl:with-param name="skipcount" select="$skipcount - 1"/>
513cdf0e10cSrcweir                        <xsl:with-param name="number" select="$number"/>
514cdf0e10cSrcweir                    </xsl:call-template>
515cdf0e10cSrcweir                </xsl:if>
516cdf0e10cSrcweir                <xsl:if test="$skipcount = 0">
517cdf0e10cSrcweir                    <xsl:variable name="new-number">
518cdf0e10cSrcweir                        <xsl:value-of select=" concat( $number , substring-before($next-num-and-pos , ':') ) "/>
519cdf0e10cSrcweir                        <xsl:if test="not($count  = 1)">
520cdf0e10cSrcweir                            <xsl:value-of select="' '"/>
521cdf0e10cSrcweir                        </xsl:if>
522cdf0e10cSrcweir                    </xsl:variable>
523cdf0e10cSrcweir                    <xsl:call-template name="get-number-after">
524cdf0e10cSrcweir                        <xsl:with-param name="svg-path" select="$svg-path"/>
525cdf0e10cSrcweir                        <xsl:with-param name="position" select="substring-after($next-num-and-pos , ':')"/>
526cdf0e10cSrcweir                        <xsl:with-param name="count" select="$count - 1"/>
527cdf0e10cSrcweir                        <xsl:with-param name="skipcount" select="0"/>
528cdf0e10cSrcweir                        <xsl:with-param name="number" select="$new-number"/>
529cdf0e10cSrcweir                    </xsl:call-template>
530cdf0e10cSrcweir                </xsl:if>
531cdf0e10cSrcweir            </xsl:otherwise>
532cdf0e10cSrcweir        </xsl:choose>
533cdf0e10cSrcweir    </xsl:template>
534cdf0e10cSrcweir    <xsl:template name="get-number-position">
535cdf0e10cSrcweir        <!-- get the next number start position, direction should be 1  or -1-->
536cdf0e10cSrcweir        <xsl:param name="svg-path"/>
537cdf0e10cSrcweir        <xsl:param name="position"/>
538cdf0e10cSrcweir        <xsl:param name="direction" select="1"/>
539cdf0e10cSrcweir        <xsl:choose>
540cdf0e10cSrcweir            <xsl:when test="$direction  = 1 and $position &gt; string-length($svg-path) ">0</xsl:when>
541cdf0e10cSrcweir            <xsl:when test="$direction  = -1 and not($position &gt; 0)">0</xsl:when>
542cdf0e10cSrcweir            <xsl:otherwise>
543cdf0e10cSrcweir                <xsl:variable name="curr-char">
544cdf0e10cSrcweir                    <xsl:if test="$direction = 1">
545cdf0e10cSrcweir                        <xsl:value-of select="substring($svg-path, $position , 1)"/>
546cdf0e10cSrcweir                    </xsl:if>
547cdf0e10cSrcweir                    <xsl:if test="$direction = -1">
548cdf0e10cSrcweir                        <xsl:value-of select="substring($svg-path, $position -1 , 1)"/>
549cdf0e10cSrcweir                    </xsl:if>
550cdf0e10cSrcweir                </xsl:variable>
551cdf0e10cSrcweir                <xsl:choose>
552cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  '+-.0123456789' ,'')) = 0 ">
553cdf0e10cSrcweir                        <!-- number start-->
554cdf0e10cSrcweir                        <xsl:value-of select="$position"/>
555cdf0e10cSrcweir                    </xsl:when>
556cdf0e10cSrcweir                    <xsl:otherwise>
557cdf0e10cSrcweir                        <xsl:call-template name="get-number-position">
558cdf0e10cSrcweir                            <xsl:with-param name="svg-path" select="$svg-path"/>
559cdf0e10cSrcweir                            <xsl:with-param name="position" select="$position + $direction"/>
560cdf0e10cSrcweir                            <xsl:with-param name="direction" select="$direction"/>
561cdf0e10cSrcweir                        </xsl:call-template>
562cdf0e10cSrcweir                    </xsl:otherwise>
563cdf0e10cSrcweir                </xsl:choose>
564cdf0e10cSrcweir            </xsl:otherwise>
565cdf0e10cSrcweir        </xsl:choose>
566cdf0e10cSrcweir    </xsl:template>
567cdf0e10cSrcweir    <xsl:template name="get-next-number">
568cdf0e10cSrcweir        <!-- get the next number from current position-->
569cdf0e10cSrcweir        <xsl:param name="svg-path"/>
570cdf0e10cSrcweir        <xsl:param name="position"/>
571cdf0e10cSrcweir        <xsl:param name="number" select="''"/>
572cdf0e10cSrcweir        <xsl:choose>
573cdf0e10cSrcweir            <xsl:when test="$position &gt; string-length($svg-path) ">
574cdf0e10cSrcweir                <xsl:value-of select=" concat(round($number) ,  ':' , $position) "/>
575cdf0e10cSrcweir            </xsl:when>
576cdf0e10cSrcweir            <xsl:otherwise>
577cdf0e10cSrcweir                <xsl:variable name="curr-char" select="substring($svg-path, $position , 1)"/>
578cdf0e10cSrcweir                <xsl:choose>
579cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  '.0123456789' ,'')) = 0 ">
580cdf0e10cSrcweir                        <!-- is number -->
581cdf0e10cSrcweir                        <xsl:call-template name="get-next-number">
582cdf0e10cSrcweir                            <xsl:with-param name="svg-path" select="$svg-path"/>
583cdf0e10cSrcweir                            <xsl:with-param name="position" select="$position +1"/>
584cdf0e10cSrcweir                            <xsl:with-param name="number" select="concat( $number, $curr-char) "/>
585cdf0e10cSrcweir                        </xsl:call-template>
586cdf0e10cSrcweir                    </xsl:when>
587cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  '+-' ,'') ) = 0  and string-length($number) = 0">
588cdf0e10cSrcweir                        <!-- is number -->
589cdf0e10cSrcweir                        <xsl:call-template name="get-next-number">
590cdf0e10cSrcweir                            <xsl:with-param name="svg-path" select="$svg-path"/>
591cdf0e10cSrcweir                            <xsl:with-param name="position" select="$position +1"/>
592cdf0e10cSrcweir                            <xsl:with-param name="number" select="concat( $number, $curr-char) "/>
593cdf0e10cSrcweir                        </xsl:call-template>
594cdf0e10cSrcweir                    </xsl:when>
595cdf0e10cSrcweir                    <xsl:otherwise>
596cdf0e10cSrcweir                        <xsl:value-of select="concat( round($number) ,  ':' , $position)"/>
597cdf0e10cSrcweir                    </xsl:otherwise>
598cdf0e10cSrcweir                </xsl:choose>
599cdf0e10cSrcweir            </xsl:otherwise>
600cdf0e10cSrcweir        </xsl:choose>
601cdf0e10cSrcweir    </xsl:template>
602cdf0e10cSrcweir    <xsl:template name="get-previous-number">
603cdf0e10cSrcweir        <!-- get the previous number from current position-->
604cdf0e10cSrcweir        <xsl:param name="svg-path"/>
605cdf0e10cSrcweir        <xsl:param name="position"/>
606cdf0e10cSrcweir        <xsl:param name="number" select="''"/>
607cdf0e10cSrcweir        <xsl:choose>
608cdf0e10cSrcweir            <xsl:when test="not($position &gt; 0)">
609cdf0e10cSrcweir                <xsl:value-of select="concat( round($number ),  ':0')"/>
610cdf0e10cSrcweir            </xsl:when>
611cdf0e10cSrcweir            <xsl:otherwise>
612cdf0e10cSrcweir                <xsl:variable name="curr-char" select="substring($svg-path, $position -1 , 1)"/>
613cdf0e10cSrcweir                <xsl:choose>
614cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  '.0123456789' ,'')) = 0 ">
615cdf0e10cSrcweir                        <!-- is number -->
616cdf0e10cSrcweir                        <xsl:call-template name="get-previous-number">
617cdf0e10cSrcweir                            <xsl:with-param name="svg-path" select="$svg-path"/>
618cdf0e10cSrcweir                            <xsl:with-param name="position" select="$position -1"/>
619cdf0e10cSrcweir                            <xsl:with-param name="number" select="concat($curr-char ,  $number) "/>
620cdf0e10cSrcweir                        </xsl:call-template>
621cdf0e10cSrcweir                    </xsl:when>
622cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  '+-' ,'') ) = 0  and string-length($number) = 0">
623cdf0e10cSrcweir                        <!-- skip it -->
624cdf0e10cSrcweir                        <xsl:call-template name="get-previous-number">
625cdf0e10cSrcweir                            <xsl:with-param name="svg-path" select="$svg-path"/>
626cdf0e10cSrcweir                            <xsl:with-param name="position" select="$position -1"/>
627cdf0e10cSrcweir                            <xsl:with-param name="number" select="$number "/>
628cdf0e10cSrcweir                        </xsl:call-template>
629cdf0e10cSrcweir                    </xsl:when>
630cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  '+-' ,'') ) = 0  and string-length($number) &gt; 0">
631cdf0e10cSrcweir                        <!-- finsh it with +/- -->
632cdf0e10cSrcweir                        <xsl:value-of select="concat( round( concat( $curr-char, $number)) ,  ':' , $position)"/>
633cdf0e10cSrcweir                    </xsl:when>
634cdf0e10cSrcweir                    <xsl:otherwise>
635cdf0e10cSrcweir                        <xsl:value-of select="concat( round($number) ,  ':' , $position)"/>
636cdf0e10cSrcweir                    </xsl:otherwise>
637cdf0e10cSrcweir                </xsl:choose>
638cdf0e10cSrcweir            </xsl:otherwise>
639cdf0e10cSrcweir        </xsl:choose>
640cdf0e10cSrcweir    </xsl:template>
641cdf0e10cSrcweir    <xsl:template name="get-path-command">
642cdf0e10cSrcweir        <xsl:param name="svg-path"/>
643cdf0e10cSrcweir        <xsl:param name="position" select="1"/>
644cdf0e10cSrcweir        <xsl:param name="last-command"/>
645cdf0e10cSrcweir        <xsl:choose>
646cdf0e10cSrcweir            <xsl:when test="$position &gt; string-length($svg-path) "/>
647cdf0e10cSrcweir            <xsl:otherwise>
648cdf0e10cSrcweir                <xsl:variable name="curr-char" select="substring($svg-path, $position , 1)"/>
649cdf0e10cSrcweir                <xsl:choose>
650cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  'MmZzLlHhVvCcSsQqTtAa' ,'')) = 0 ">
651cdf0e10cSrcweir                        <!-- "MmZzLlHhVvCcSsQqTtAa" are all possiable  command chars -->
652cdf0e10cSrcweir                        <xsl:value-of select="concat( $curr-char , ':'  , $position +1)"/>
653cdf0e10cSrcweir                    </xsl:when>
654cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  '+-.0123456789' ,'')) = 0 ">
655cdf0e10cSrcweir                        <!-- number start, use last command -->
656cdf0e10cSrcweir                        <xsl:if test="string-length($last-command) = 0">
657cdf0e10cSrcweir                            <xsl:message>ooo2wordml_path.xsl: Find undefined command</xsl:message>
658cdf0e10cSrcweir                        </xsl:if>
659cdf0e10cSrcweir                        <xsl:value-of select="concat( $last-command  , ':'  , $position )"/>
660cdf0e10cSrcweir                    </xsl:when>
661cdf0e10cSrcweir                    <xsl:when test="string-length(translate($curr-char ,  ',&#9;&#10;&#13;&#32;' ,'')) = 0 ">
662cdf0e10cSrcweir                        <!-- space or ',' should be skip -->
663cdf0e10cSrcweir                        <xsl:call-template name="get-path-command">
664cdf0e10cSrcweir                            <xsl:with-param name="svg-path" select="$svg-path"/>
665cdf0e10cSrcweir                            <xsl:with-param name="position" select="$position +1"/>
666cdf0e10cSrcweir                            <xsl:with-param name="last-command" select="$last-command"/>
667cdf0e10cSrcweir                        </xsl:call-template>
668cdf0e10cSrcweir                    </xsl:when>
669cdf0e10cSrcweir                    <xsl:otherwise>
670cdf0e10cSrcweir                        <xsl:message>ooo2wordml_path.xsl: Find undefined command:<xsl:value-of select="$curr-char"/>
671cdf0e10cSrcweir                        </xsl:message>
672cdf0e10cSrcweir                    </xsl:otherwise>
673cdf0e10cSrcweir                </xsl:choose>
674cdf0e10cSrcweir            </xsl:otherwise>
675cdf0e10cSrcweir        </xsl:choose>
676cdf0e10cSrcweir    </xsl:template>
677cdf0e10cSrcweir    <xsl:template name="svg-arc2vml-arc">
678cdf0e10cSrcweir        <xsl:param name="x0"/>
679cdf0e10cSrcweir        <xsl:param name="y0"/>
680cdf0e10cSrcweir        <xsl:param name="rx"/>
681cdf0e10cSrcweir        <xsl:param name="ry"/>
682cdf0e10cSrcweir        <xsl:param name="x-axis-rotation" select="0"/>
683cdf0e10cSrcweir        <xsl:param name="large-arc-flag" select="0"/>
684cdf0e10cSrcweir        <xsl:param name="sweep-flag" select="0"/>
685cdf0e10cSrcweir        <xsl:param name="x"/>
686cdf0e10cSrcweir        <xsl:param name="y"/>
687cdf0e10cSrcweir        <!-- Compute 1/2 distance between current and final point -->
688cdf0e10cSrcweir        <xsl:variable name="dx2" select="($x0 - $x) div 2"/>
689cdf0e10cSrcweir        <xsl:variable name="dy2" select="($y0 - $y) div 2"/>
690cdf0e10cSrcweir        <!--    Convert from degrees to radians -->
691cdf0e10cSrcweir        <xsl:variable name="rotation-radian" select="$x-axis-rotation * $pi div 180"/>
692cdf0e10cSrcweir        <!-- Compute (x1, y1). What are x1,y1?-->
693cdf0e10cSrcweir        <xsl:variable name="cos-rotation">
694cdf0e10cSrcweir            <xsl:call-template name="cos">
695cdf0e10cSrcweir                <xsl:with-param name="x" select="$rotation-radian"/>
696cdf0e10cSrcweir            </xsl:call-template>
697cdf0e10cSrcweir        </xsl:variable>
698cdf0e10cSrcweir        <xsl:variable name="sin-rotation">
699cdf0e10cSrcweir            <xsl:call-template name="sin">
700cdf0e10cSrcweir                <xsl:with-param name="x" select="$rotation-radian"/>
701cdf0e10cSrcweir            </xsl:call-template>
702cdf0e10cSrcweir        </xsl:variable>
703cdf0e10cSrcweir        <xsl:variable name="x1" select="$cos-rotation * $dx2 + $sin-rotation * $dy2"/>
704cdf0e10cSrcweir        <xsl:variable name="y1" select="-1 * $sin-rotation  * $dx2 + $cos-rotation * $dy2"/>
705cdf0e10cSrcweir        <!-- Make sure radii are large enough -->
706cdf0e10cSrcweir        <xsl:variable name="rx-abs">
707cdf0e10cSrcweir            <xsl:call-template name="abs">
708cdf0e10cSrcweir                <xsl:with-param name="x" select="$rx"/>
709cdf0e10cSrcweir            </xsl:call-template>
710cdf0e10cSrcweir        </xsl:variable>
711cdf0e10cSrcweir        <xsl:variable name="ry-abs">
712cdf0e10cSrcweir            <xsl:call-template name="abs">
713cdf0e10cSrcweir                <xsl:with-param name="x" select="$ry"/>
714cdf0e10cSrcweir            </xsl:call-template>
715cdf0e10cSrcweir        </xsl:variable>
716cdf0e10cSrcweir        <xsl:variable name="rx-sq" select="$rx-abs * $rx-abs"/>
717cdf0e10cSrcweir        <xsl:variable name="ry-sq" select="$ry-abs * $ry-abs"/>
718cdf0e10cSrcweir        <xsl:variable name="x1-sq" select="$x1 * $x1"/>
719cdf0e10cSrcweir        <xsl:variable name="y1-sq" select="$y1 * $y1"/>
720cdf0e10cSrcweir        <xsl:variable name="radius-check" select=" $x1-sq div $rx-sq + $y1-sq div $ry-sq "/>
721cdf0e10cSrcweir        <xsl:variable name="radius-check-sqrt">
722cdf0e10cSrcweir            <xsl:call-template name="sqrt">
723cdf0e10cSrcweir                <xsl:with-param name="x" select="$radius-check"/>
724cdf0e10cSrcweir            </xsl:call-template>
725cdf0e10cSrcweir        </xsl:variable>
726cdf0e10cSrcweir        <xsl:variable name="new-rx">
727cdf0e10cSrcweir            <xsl:choose>
728cdf0e10cSrcweir                <xsl:when test="$radius-check &gt; 1">
729cdf0e10cSrcweir                    <xsl:value-of select="$rx-abs * $radius-check-sqrt"/>
730cdf0e10cSrcweir                </xsl:when>
731cdf0e10cSrcweir                <xsl:otherwise>
732cdf0e10cSrcweir                    <xsl:value-of select="$rx-abs"/>
733cdf0e10cSrcweir                </xsl:otherwise>
734cdf0e10cSrcweir            </xsl:choose>
735cdf0e10cSrcweir        </xsl:variable>
736cdf0e10cSrcweir        <xsl:variable name="new-ry">
737cdf0e10cSrcweir            <xsl:choose>
738cdf0e10cSrcweir                <xsl:when test="$radius-check &gt; 1">
739cdf0e10cSrcweir                    <xsl:value-of select="$ry-abs * $radius-check-sqrt"/>
740cdf0e10cSrcweir                </xsl:when>
741cdf0e10cSrcweir                <xsl:otherwise>
742cdf0e10cSrcweir                    <xsl:value-of select="$ry-abs"/>
743cdf0e10cSrcweir                </xsl:otherwise>
744cdf0e10cSrcweir            </xsl:choose>
745cdf0e10cSrcweir        </xsl:variable>
746cdf0e10cSrcweir        <xsl:variable name="new-ry-sq">
747cdf0e10cSrcweir            <xsl:choose>
748cdf0e10cSrcweir                <xsl:when test="$radius-check &gt; 1">
749cdf0e10cSrcweir                    <xsl:value-of select="$new-ry * $new-ry"/>
750cdf0e10cSrcweir                </xsl:when>
751cdf0e10cSrcweir                <xsl:otherwise>
752cdf0e10cSrcweir                    <xsl:value-of select="$ry-sq"/>
753cdf0e10cSrcweir                </xsl:otherwise>
754cdf0e10cSrcweir            </xsl:choose>
755cdf0e10cSrcweir        </xsl:variable>
756cdf0e10cSrcweir        <xsl:variable name="new-rx-sq">
757cdf0e10cSrcweir            <xsl:choose>
758cdf0e10cSrcweir                <xsl:when test="$radius-check &gt; 1">
759cdf0e10cSrcweir                    <xsl:value-of select="$new-rx * $new-rx"/>
760cdf0e10cSrcweir                </xsl:when>
761cdf0e10cSrcweir                <xsl:otherwise>
762cdf0e10cSrcweir                    <xsl:value-of select="$rx-sq"/>
763cdf0e10cSrcweir                </xsl:otherwise>
764cdf0e10cSrcweir            </xsl:choose>
765cdf0e10cSrcweir        </xsl:variable>
766cdf0e10cSrcweir        <!-- Step 2: Compute (cx1, cy1) -->
767cdf0e10cSrcweir        <xsl:variable name="sign">
768cdf0e10cSrcweir            <xsl:choose>
769cdf0e10cSrcweir                <xsl:when test="$large-arc-flag = $sweep-flag">-1</xsl:when>
770cdf0e10cSrcweir                <xsl:otherwise>1</xsl:otherwise>
771cdf0e10cSrcweir            </xsl:choose>
772cdf0e10cSrcweir        </xsl:variable>
773cdf0e10cSrcweir        <xsl:variable name="unchecked-sq" select=" (($new-rx-sq * $new-ry-sq) - ($new-rx-sq * $y1-sq) - ($new-ry-sq * $x1-sq)) div   (($new-rx-sq * $y1-sq) + ($new-ry-sq * $x1-sq)) "/>
774cdf0e10cSrcweir        <xsl:variable name="sq">
775cdf0e10cSrcweir            <xsl:choose>
776cdf0e10cSrcweir                <xsl:when test=" $unchecked-sq &lt; 0">0</xsl:when>
777cdf0e10cSrcweir                <xsl:otherwise>
778cdf0e10cSrcweir                    <xsl:value-of select="$unchecked-sq"/>
779cdf0e10cSrcweir                </xsl:otherwise>
780cdf0e10cSrcweir            </xsl:choose>
781cdf0e10cSrcweir        </xsl:variable>
782cdf0e10cSrcweir        <xsl:variable name="sq-sqrt">
783cdf0e10cSrcweir            <xsl:call-template name="sqrt">
784cdf0e10cSrcweir                <xsl:with-param name="x" select="$sq"/>
785cdf0e10cSrcweir            </xsl:call-template>
786cdf0e10cSrcweir        </xsl:variable>
787cdf0e10cSrcweir        <xsl:variable name="coef" select="$sign * $sq-sqrt "/>
788cdf0e10cSrcweir        <xsl:variable name="cx1" select="$coef * $new-rx * $y1 div $new-ry"/>
789cdf0e10cSrcweir        <xsl:variable name="cy1" select=" -1 * $coef * $new-ry * $x1 div $new-rx"/>
790cdf0e10cSrcweir        <!--  Step 3: Compute (cx, cy) from (cx1, cy1) -->
791cdf0e10cSrcweir        <xsl:variable name="sx2" select="($x0 +$x) div 2 "/>
792cdf0e10cSrcweir        <xsl:variable name="sy2" select="($y0 +$y) div 2 "/>
793cdf0e10cSrcweir        <xsl:variable name="tmp1" select="$cos-rotation * $cx1 "/>
794cdf0e10cSrcweir        <xsl:variable name="tmp2" select="$cos-rotation * $cx1 "/>
795cdf0e10cSrcweir        <xsl:variable name="cx" select=" $sx2 + ( $cos-rotation * $cx1 - $sin-rotation * $cy1 ) "/>
796cdf0e10cSrcweir        <xsl:variable name="cy" select=" $sy2 + ( $sin-rotation * $cx1 + $cos-rotation * $cy1 ) "/>
797cdf0e10cSrcweir        <!-- Step 4: Compute angle start and angle extent -->
798cdf0e10cSrcweir        <xsl:variable name="ux" select="( $x1 - $cx1)  div $new-rx"/>
799cdf0e10cSrcweir        <xsl:variable name="uy" select="( $y1 - $cy1)  div $new-ry"/>
800cdf0e10cSrcweir        <xsl:variable name="vx" select="( - 1 *  $x1 - $cx1)  div $new-rx"/>
801cdf0e10cSrcweir        <xsl:variable name="vy" select="(- 1 *  $y1 - $cy1)  div $new-ry"/>
802cdf0e10cSrcweir        <xsl:variable name="n">
803cdf0e10cSrcweir            <xsl:call-template name="sqrt">
804cdf0e10cSrcweir                <xsl:with-param name="x" select="  ($ux * $ux) + ($uy * $uy)  "/>
805cdf0e10cSrcweir            </xsl:call-template>
806cdf0e10cSrcweir        </xsl:variable>
807cdf0e10cSrcweir        <!--  1 * ux + 0 * uy -->
808cdf0e10cSrcweir        <xsl:variable name="p" select="$ux"/>
809cdf0e10cSrcweir        <xsl:variable name="uy-sign">
810cdf0e10cSrcweir            <xsl:choose>
811cdf0e10cSrcweir                <xsl:when test=" $uy &lt; 0 ">-1</xsl:when>
812cdf0e10cSrcweir                <xsl:otherwise>1</xsl:otherwise>
813cdf0e10cSrcweir            </xsl:choose>
814cdf0e10cSrcweir        </xsl:variable>
815cdf0e10cSrcweir        <xsl:variable name="acos-pn">
816cdf0e10cSrcweir            <xsl:call-template name="acos">
817cdf0e10cSrcweir                <xsl:with-param name="x" select="$p div $n"/>
818cdf0e10cSrcweir            </xsl:call-template>
819cdf0e10cSrcweir        </xsl:variable>
820cdf0e10cSrcweir        <xsl:variable name="theta" select="( $uy-sign * $acos-pn * 180 div $pi ) mod 360 "/>
821cdf0e10cSrcweir        <xsl:variable name="n-delta">
822cdf0e10cSrcweir            <xsl:call-template name="sqrt">
823cdf0e10cSrcweir                <xsl:with-param name="x" select="($ux * $ux + $uy * $uy) * ($vx * $vx + $vy * $vy)"/>
824cdf0e10cSrcweir            </xsl:call-template>
825cdf0e10cSrcweir        </xsl:variable>
826cdf0e10cSrcweir        <xsl:variable name="p-delta" select="$ux * $vx + $uy * $vy"/>
827cdf0e10cSrcweir        <xsl:variable name="vy-sign">
828cdf0e10cSrcweir            <xsl:choose>
829cdf0e10cSrcweir                <xsl:when test="($ux * $vy - $uy * $vx)   &lt; 0 ">-1</xsl:when>
830cdf0e10cSrcweir                <xsl:otherwise>1</xsl:otherwise>
831cdf0e10cSrcweir            </xsl:choose>
832cdf0e10cSrcweir        </xsl:variable>
833cdf0e10cSrcweir        <xsl:variable name="acos-pn-delta">
834cdf0e10cSrcweir            <xsl:call-template name="acos">
835cdf0e10cSrcweir                <xsl:with-param name="x" select="$p-delta div $n-delta"/>
836cdf0e10cSrcweir            </xsl:call-template>
837cdf0e10cSrcweir        </xsl:variable>
838cdf0e10cSrcweir        <xsl:variable name="unchecked-delta" select="$vy-sign * $acos-pn-delta * 180 div $pi "/>
839cdf0e10cSrcweir        <xsl:variable name="delta">
840cdf0e10cSrcweir            <xsl:choose>
841cdf0e10cSrcweir                <xsl:when test=" $sweep-flag = 0 and $unchecked-delta &gt; 0 ">
842cdf0e10cSrcweir                    <xsl:value-of select=" ($unchecked-delta - 360) mod 360 "/>
843cdf0e10cSrcweir                </xsl:when>
844cdf0e10cSrcweir                <xsl:when test=" $sweep-flag = 1 and $unchecked-delta &lt; 0 ">
845cdf0e10cSrcweir                    <xsl:value-of select=" ($unchecked-delta + 360) mod 360 "/>
846cdf0e10cSrcweir                </xsl:when>
847cdf0e10cSrcweir                <xsl:otherwise>
848cdf0e10cSrcweir                    <xsl:value-of select=" $unchecked-delta  mod 360 "/>
849cdf0e10cSrcweir                </xsl:otherwise>
850cdf0e10cSrcweir            </xsl:choose>
851cdf0e10cSrcweir        </xsl:variable>
852cdf0e10cSrcweir        <xsl:value-of select="concat ($cx,  ' ' , $cy, ' ' ,  $rx, ' ' ,  $ry, ' ' ,  $theta, ' ' , $delta,  ' ' , $x-axis-rotation) "/>
853cdf0e10cSrcweir    </xsl:template>
854cdf0e10cSrcweir</xsl:stylesheet>
855