<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.wiki.synfig.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ratanes</id>
		<title>Synfig Studio :: Documentation - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.wiki.synfig.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ratanes"/>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/Special:Contributions/Ratanes"/>
		<updated>2026-05-11T19:47:14Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:ListImporter/fr&amp;diff=15818</id>
		<title>Doc:ListImporter/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:ListImporter/fr&amp;diff=15818"/>
				<updated>2012-04-22T07:02:13Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: Created page with &amp;quot; Traduction en cours  &amp;lt;!-- Page info --&amp;gt; {{Title|ListImporter}} {{Category|Manual}} &amp;lt;!-- Page info end --&amp;gt;  The list importer allows you to import a text file containing a list o...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Traduction en cours&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The list importer allows you to import a text file containing a list of still images and have it be treated as a single animated layer.&lt;br /&gt;
&lt;br /&gt;
To use it, simply create a text file with the filename of each still frame listed per-line. Save this text file with the extension &amp;lt;code&amp;gt;lst&amp;lt;/code&amp;gt;(That is &amp;lt;code&amp;gt;LST&amp;lt;/code&amp;gt; in lowercase). Import it into Synfig like you would any other image.&lt;br /&gt;
&lt;br /&gt;
The default framerate is 15 frames per second. If you would like to use a different frame-rate, add a line to the file like this:&lt;br /&gt;
&lt;br /&gt;
 FPS 24&lt;br /&gt;
&lt;br /&gt;
Now the frame-rate will be 24 frames per second.&lt;br /&gt;
&lt;br /&gt;
Since svn r1540 the list importer allows also import [http://www.lostmarble.com/papagayo/index.shtml Papagayo] output lipsync voice files.&lt;br /&gt;
&lt;br /&gt;
As well as Papagayo only export the phonemes it is assumed by default that the image file is a jpeg image with &amp;quot;jpg&amp;quot; extension. This means that the standard phonemes image files must be called like this:&lt;br /&gt;
&lt;br /&gt;
 AI.jpg&lt;br /&gt;
 E.jpg&lt;br /&gt;
 etc.jpg&lt;br /&gt;
 FV.jpg&lt;br /&gt;
 L.jpg&lt;br /&gt;
 MBP.jpg&lt;br /&gt;
 O.jpg&lt;br /&gt;
 rest.jpg&lt;br /&gt;
 U.jpg&lt;br /&gt;
 WQ.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the type of image file just insert a valid extension before the phonemes. It should be done manually as well as the FPS thing.&lt;br /&gt;
&lt;br /&gt;
This is how a valid &amp;quot;lst&amp;quot; file from papagayo looks after inserting the FPS and the change to other image file type:&lt;br /&gt;
&lt;br /&gt;
 MohoSwitch1&lt;br /&gt;
 FPS 24&lt;br /&gt;
 png&lt;br /&gt;
 4 O&lt;br /&gt;
 7 L&lt;br /&gt;
 10 AI&lt;br /&gt;
 13 rest&lt;br /&gt;
 22 rest&lt;br /&gt;
 23 MBP&lt;br /&gt;
 26 E&lt;br /&gt;
 29 etc&lt;br /&gt;
 31 AI&lt;br /&gt;
 33 MBP&lt;br /&gt;
 35 O&lt;br /&gt;
 37 etc&lt;br /&gt;
 39 E&lt;br /&gt;
 41 etc&lt;br /&gt;
 43 E&lt;br /&gt;
 45 etc&lt;br /&gt;
 47 E&lt;br /&gt;
 49 rest&lt;br /&gt;
&lt;br /&gt;
It says: &amp;quot;''Hola, me llamo Genete''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In this case it has been changed to png. &lt;br /&gt;
&lt;br /&gt;
Allowed image types are: &lt;br /&gt;
* jpg (default)&lt;br /&gt;
* png, &lt;br /&gt;
* ppm&lt;br /&gt;
* tiff&lt;br /&gt;
* gif&lt;br /&gt;
&lt;br /&gt;
There is a Nautilus (Gnome file manager) script which creates a png-sequence from a given movie file and creates a list-file which you can then import into Synfig.&lt;br /&gt;
See [http://synfig.org/forums/viewtopic.php?f=2&amp;amp;t=470&amp;amp;start=0&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a Synfig forum thread] for more info.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15817</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15817"/>
				<updated>2012-04-22T06:59:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Option 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
==== Méthode optionnelle pour Windows ====&lt;br /&gt;
Si vous ne voulez pas utiliser la ligne de commande, créez un fichier batch  d:\saxon\svg2synfig.bat  contenant :&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
&lt;br /&gt;
=== Transformer un SVG en un fichier Synfig ===&lt;br /&gt;
==== Avec un fichier batch windows ====&lt;br /&gt;
# Il suffit de faire glisser le fichier SVG sur svg2synfig.bat.&lt;br /&gt;
==== Avec la ligne de commande ====&lt;br /&gt;
# Changez de répertoire vers d:\saxon&lt;br /&gt;
# Tapez la commande suivante (remplacez your_input.svg par le chemin vers votre fichier SVG) :&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
&lt;br /&gt;
=== Resultat ===&lt;br /&gt;
Si la conversion s'est bien passée, le résultat sera écrit dans le fichier d:\saxon\synfig.sif.&lt;br /&gt;
Vous pouvez ouvrir ce fichier avec Synfig.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Cela ne semble pas fonctionner avec SaxonB (version FOSS)&lt;br /&gt;
* Les fichiers SVG compressés (svgz) doivent d'abord être décompressés.&lt;br /&gt;
* Seuls les objets SVG chemin sont reconnus. Essayer de transformer tous les objets en chemins.&lt;br /&gt;
* Seul un sous ensemble des éléments chemin est supporté. Essayez de modifier tous les noeuds des chemins pour avoir des tangentes séparées et tous les segments en courbes.&lt;br /&gt;
* Les couleurs compliquées comme les dégradés ne sont pas supportés.&lt;br /&gt;
* Seules les transformations élémentaires sont supportées.&lt;br /&gt;
* Remplissage et contour pour un même objet ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Méthode 2 ==&lt;br /&gt;
&lt;br /&gt;
C'est un programme en C de akagogo qui utilise libxml pour convertir le SVG au format Synfig.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Faites juste comme d'habitude '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
Le fichier SVG doit être dans le répertoire appelé '''data'''. Vous devez lancer la commande depuis le répertoire parent, mais en utilisant juste le nom du fichier comme paramètre. Donc si :&lt;br /&gt;
&lt;br /&gt;
* Vous êtes dans le répertoire &amp;quot;/example&amp;quot; vous devez créer un répertoire appelé &amp;quot;/example/data&amp;quot; et y mettre le fichier &amp;quot;file.svg&amp;quot;.&lt;br /&gt;
* Ensuite vous lancez '''svgtosif file.svg''' quand vous avez &amp;quot;/example&amp;quot; comme répertoire de travail courant.&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, ce n'est pas vraiment simple. Pour résoudre facilement ce problème, utilisez le script suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mettez ces lignes dans un fichier nommé &amp;quot;svg2sif&amp;quot; (le nom est à votre convenance mais évitez d'utiliser &amp;quot;svgtosif&amp;quot;) et mettez-le dans un répertoire du PATH (par exemple /usr/bin). Puis :&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
C'est tout. Maintenant, utilisez :&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
et vous devriez obtenir un fichier .sif dans le même répertoire que celui où vous travaillez.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15816</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15816"/>
				<updated>2012-04-22T06:47:03Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Limitations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
==== Méthode optionnelle pour Windows ====&lt;br /&gt;
Si vous ne voulez pas utiliser la ligne de commande, créez un fichier batch  d:\saxon\svg2synfig.bat  contenant :&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
&lt;br /&gt;
=== Transformer un SVG en un fichier Synfig ===&lt;br /&gt;
==== Avec un fichier batch windows ====&lt;br /&gt;
# Il suffit de faire glisser le fichier SVG sur svg2synfig.bat.&lt;br /&gt;
==== Avec la ligne de commande ====&lt;br /&gt;
# Changez de répertoire vers d:\saxon&lt;br /&gt;
# Tapez la commande suivante (remplacez your_input.svg par le chemin vers votre fichier SVG) :&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
&lt;br /&gt;
=== Resultat ===&lt;br /&gt;
Si la conversion s'est bien passée, le résultat sera écrit dans le fichier d:\saxon\synfig.sif.&lt;br /&gt;
Vous pouvez ouvrir ce fichier avec Synfig.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Cela ne semble pas fonctionner avec SaxonB (version FOSS)&lt;br /&gt;
* Les fichiers SVG compressés (svgz) doivent d'abord être décompressés.&lt;br /&gt;
* Seuls les objets SVG chemin sont reconnus. Essayer de transformer tous les objets en chemins.&lt;br /&gt;
* Seul un sous ensemble des éléments chemin est supporté. Essayez de modifier tous les noeuds des chemins pour avoir des tangentes séparées et tous les segments en courbes.&lt;br /&gt;
* Les couleurs compliquées comme les dégradés ne sont pas supportés.&lt;br /&gt;
* Seules les transformations élémentaires sont supportées.&lt;br /&gt;
* Remplissage et contour pour un même objet ne fonctionne pas.&lt;br /&gt;
&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15815</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15815"/>
				<updated>2012-04-22T06:40:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
==== Méthode optionnelle pour Windows ====&lt;br /&gt;
Si vous ne voulez pas utiliser la ligne de commande, créez un fichier batch  d:\saxon\svg2synfig.bat  contenant :&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
&lt;br /&gt;
=== Transformer un SVG en un fichier Synfig ===&lt;br /&gt;
==== Avec un fichier batch windows ====&lt;br /&gt;
# Il suffit de faire glisser le fichier SVG sur svg2synfig.bat.&lt;br /&gt;
==== Avec la ligne de commande ====&lt;br /&gt;
# Changez de répertoire vers d:\saxon&lt;br /&gt;
# Tapez la commande suivante (remplacez your_input.svg par le chemin vers votre fichier SVG) :&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
&lt;br /&gt;
=== Resultat ===&lt;br /&gt;
Si la conversion s'est bien passée, le résultat sera écrit dans le fichier d:\saxon\synfig.sif.&lt;br /&gt;
Vous pouvez ouvrir ce fichier avec Synfig.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15814</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15814"/>
				<updated>2012-04-22T06:38:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Prérequis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
==== Méthode optionnelle pour Windows ====&lt;br /&gt;
Si vous ne voulez pas utiliser la ligne de commande, créez un fichier batch  d:\saxon\svg2synfig.bat  contenant :&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
&lt;br /&gt;
=== Transformer un SVG en un fichier Synfig ===&lt;br /&gt;
==== Avec un fichier batch windows ====&lt;br /&gt;
# Il suffit de faire glisser le fichier SVG sur svg2synfig.bat.&lt;br /&gt;
==== Avec la ligne de commande ====&lt;br /&gt;
# Changez de répertoire vers d:\saxon&lt;br /&gt;
# Tapez la commande suivante (remplacez your_input.svg par le chemin vers votre fichier SVG) :&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15813</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15813"/>
				<updated>2012-04-22T06:37:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Transforming an SVG into a Synfig File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
==== Méthode optionnelle pour Windows ====&lt;br /&gt;
Si vous ne voulez pas utiliser la ligne de commande, créez un fichier batch  d:\saxon\svg2synfig.bat  contenant :&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
&lt;br /&gt;
=== Transformer un SVG en un fichier Synfig ===&lt;br /&gt;
==== Avec un fichier batch windows ====&lt;br /&gt;
# Il suffit de faire glisser le fichier SVG sur svg2synfig.bat.&lt;br /&gt;
==== Avec la ligne de commande ====&lt;br /&gt;
# Changez de répertoire vers d:\saxon&lt;br /&gt;
# Tapez la commande suivante (remplacez your_input.svg par le chemin vers votre fichier SVG) :&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15812</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15812"/>
				<updated>2012-04-22T06:33:39Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Optional Prerequites for Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
==== Méthode optionnelle pour Windows ====&lt;br /&gt;
Si vous ne voulez pas utiliser la ligne de commande, créez un fichier batch  d:\saxon\svg2synfig.bat  contenant :&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
&lt;br /&gt;
=== Transforming an SVG into a Synfig File ===&lt;br /&gt;
==== Windows Batch File ====&lt;br /&gt;
# Just drop the SVG file onto svg2synfig.bat.&lt;br /&gt;
==== Command line ====&lt;br /&gt;
# Change directory to d:\saxon.&lt;br /&gt;
# Enter the following command (replace your_input.svg by the path of the SVG file):&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15811</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15811"/>
				<updated>2012-04-22T06:28:38Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
==== Optional Prerequites for Windows ====&lt;br /&gt;
If you don't want to use the command line, create a batch file d:\saxon\svg2synfig.bat with this content:&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
=== Transforming an SVG into a Synfig File ===&lt;br /&gt;
==== Windows Batch File ====&lt;br /&gt;
# Just drop the SVG file onto svg2synfig.bat.&lt;br /&gt;
==== Command line ====&lt;br /&gt;
# Change directory to d:\saxon.&lt;br /&gt;
# Enter the following command (replace your_input.svg by the path of the SVG file):&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15810</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15810"/>
				<updated>2012-04-22T06:28:09Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Other options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
=Autres méthodes=&lt;br /&gt;
Ce qui suit présente des méthodes anciennes ou spéciales pour les experts.&lt;br /&gt;
== Méthode 1 ==&lt;br /&gt;
Cette méthode utilise les feuilles de style XSLT 2.0 pour transformer le XML SVG en XML Synfig.&lt;br /&gt;
=== But ===&lt;br /&gt;
Transformer une image SVG en un fichier Synfig pour l'importer. Premier post dans les forums : http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
# Vérifiez que l'environnement Java runtime est installé.&lt;br /&gt;
# Récupérez une version récente du processeur SAXON XSLT pour Java à http://saxon.sourceforge.net/. La version recommandée est : Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Décompressez le paquet SAXON dans le répertoire de votre choix. En exemple, nous utiliserons d:\saxon pour la suite. Le répertoire devrait contenir un certain nombre de fichiers JAR. &lt;br /&gt;
# Créez le fichier d:\saxon\svg2synfig.xsl avec le contenu fourni plus loin de ce document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
==== Optional Prerequites for Windows ====&lt;br /&gt;
If you don't want to use the command line, create a batch file d:\saxon\svg2synfig.bat with this content:&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
=== Transforming an SVG into a Synfig File ===&lt;br /&gt;
==== Windows Batch File ====&lt;br /&gt;
# Just drop the SVG file onto svg2synfig.bat.&lt;br /&gt;
==== Command line ====&lt;br /&gt;
# Change directory to d:\saxon.&lt;br /&gt;
# Enter the following command (replace your_input.svg by the path of the SVG file):&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15809</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15809"/>
				<updated>2012-04-22T06:09:50Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* Import direct de fichier SVG dans Synfig Studio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problèmes à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
=Other options=&lt;br /&gt;
The following are outdated options or special options for experts.&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
This uses an XSLT 2.0 stylesheet to transform SVG XML to Synfig XML.&lt;br /&gt;
=== Objective ===&lt;br /&gt;
Turn an SVG image into a Synfig file for import. First posted in the forums: http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
# Make sure a Java runtime environment is installed.&lt;br /&gt;
# Get a recent version of the SAXON XSLT processor for Java from http://saxon.sourceforge.net/. Recommended version: Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Extract the SAXON package to a folder of your choice. As an example we're going to use d:\saxon in the following. The folder will contain several JAR files.&lt;br /&gt;
# Create the file d:\saxon\svg2synfig.xsl with the content provided at the bottom of this document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
==== Optional Prerequites for Windows ====&lt;br /&gt;
If you don't want to use the command line, create a batch file d:\saxon\svg2synfig.bat with this content:&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
=== Transforming an SVG into a Synfig File ===&lt;br /&gt;
==== Windows Batch File ====&lt;br /&gt;
# Just drop the SVG file onto svg2synfig.bat.&lt;br /&gt;
==== Command line ====&lt;br /&gt;
# Change directory to d:\saxon.&lt;br /&gt;
# Enter the following command (replace your_input.svg by the path of the SVG file):&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15808</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15808"/>
				<updated>2012-04-22T06:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problème à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
=Other options=&lt;br /&gt;
The following are outdated options or special options for experts.&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
This uses an XSLT 2.0 stylesheet to transform SVG XML to Synfig XML.&lt;br /&gt;
=== Objective ===&lt;br /&gt;
Turn an SVG image into a Synfig file for import. First posted in the forums: http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
# Make sure a Java runtime environment is installed.&lt;br /&gt;
# Get a recent version of the SAXON XSLT processor for Java from http://saxon.sourceforge.net/. Recommended version: Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Extract the SAXON package to a folder of your choice. As an example we're going to use d:\saxon in the following. The folder will contain several JAR files.&lt;br /&gt;
# Create the file d:\saxon\svg2synfig.xsl with the content provided at the bottom of this document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
==== Optional Prerequites for Windows ====&lt;br /&gt;
If you don't want to use the command line, create a batch file d:\saxon\svg2synfig.bat with this content:&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
=== Transforming an SVG into a Synfig File ===&lt;br /&gt;
==== Windows Batch File ====&lt;br /&gt;
# Just drop the SVG file onto svg2synfig.bat.&lt;br /&gt;
==== Command line ====&lt;br /&gt;
# Change directory to d:\saxon.&lt;br /&gt;
# Enter the following command (replace your_input.svg by the path of the SVG file):&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15807</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15807"/>
				<updated>2012-04-22T06:06:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
&lt;br /&gt;
=Import SVG directly in Synfig Studio=&lt;br /&gt;
=Import direct de fichier SVG dans Synfig Studio=&lt;br /&gt;
&lt;br /&gt;
Depuis la dernière version de Synfig (au moins la 0.62.02) il y a une option pour l'import SVG dans le menu du canevas ''Fichier -&amp;gt; Importer''. Cela semble mieux fonctionner que les options décrites ci-après, toutefois il peut y avoir des problème à importer certain élément SVG. Allez voir [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 ce sujet] sur les forums pour avoir des conseils.&lt;br /&gt;
&lt;br /&gt;
* Le premier import peut échouer, essayer d'importer le même fichier plusieurs fois.&lt;br /&gt;
* 0.62.02 semble mieux fonctionner sous Ubuntu que la version 0.63.00&lt;br /&gt;
&lt;br /&gt;
=Other options=&lt;br /&gt;
The following are outdated options or special options for experts.&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
This uses an XSLT 2.0 stylesheet to transform SVG XML to Synfig XML.&lt;br /&gt;
=== Objective ===&lt;br /&gt;
Turn an SVG image into a Synfig file for import. First posted in the forums: http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
# Make sure a Java runtime environment is installed.&lt;br /&gt;
# Get a recent version of the SAXON XSLT processor for Java from http://saxon.sourceforge.net/. Recommended version: Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Extract the SAXON package to a folder of your choice. As an example we're going to use d:\saxon in the following. The folder will contain several JAR files.&lt;br /&gt;
# Create the file d:\saxon\svg2synfig.xsl with the content provided at the bottom of this document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
==== Optional Prerequites for Windows ====&lt;br /&gt;
If you don't want to use the command line, create a batch file d:\saxon\svg2synfig.bat with this content:&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
=== Transforming an SVG into a Synfig File ===&lt;br /&gt;
==== Windows Batch File ====&lt;br /&gt;
# Just drop the SVG file onto svg2synfig.bat.&lt;br /&gt;
==== Command line ====&lt;br /&gt;
# Change directory to d:\saxon.&lt;br /&gt;
# Enter the following command (replace your_input.svg by the path of the SVG file):&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15806</id>
		<title>Doc:Svg2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Svg2synfig/fr&amp;diff=15806"/>
				<updated>2012-04-22T05:54:44Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: Created page with &amp;quot;&amp;lt;!-- Page info --&amp;gt; {{Title|SVG Import}}  Traduction en cours {{Navigation|Category:Manual|Doc:ListImporter}} {{Category|Manual}} &amp;lt;!-- Page info end --&amp;gt; =Extension Inkscape d'expo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|SVG Import}}&lt;br /&gt;
 Traduction en cours&lt;br /&gt;
{{Navigation|Category:Manual|Doc:ListImporter}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
=Extension Inkscape d'export SIF=&lt;br /&gt;
&lt;br /&gt;
Cette extension pour Inkscape convertit les fichiers SVG au format Synfig Studio (.sif) et c'est la méthode recommandée pour cela. Cette extension peut être trouvée dans la section téléchargement de [http://www.synfig.org/cms/en/download/tools/ Scripts &amp;amp; Tools].&lt;br /&gt;
&lt;br /&gt;
=Import SVG directly in Synfig Studio=&lt;br /&gt;
&lt;br /&gt;
From latest Synfig versions (at least in 0.62.02) there is an option to import SVG from ''File -&amp;gt; Import'' menu. This seems to work better than the options described below, however there may be problems importing some SVG elements correctly. See [http://synfig.org/forums/viewtopic.php?f=12&amp;amp;t=2728 this topic] in forums for some hints.&lt;br /&gt;
&lt;br /&gt;
* First import may fail, try to import same file for two times.&lt;br /&gt;
* 0.62.02 is reported to work better in Ubuntu than version 0.63.00.&lt;br /&gt;
&lt;br /&gt;
=Other options=&lt;br /&gt;
The following are outdated options or special options for experts.&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
This uses an XSLT 2.0 stylesheet to transform SVG XML to Synfig XML.&lt;br /&gt;
=== Objective ===&lt;br /&gt;
Turn an SVG image into a Synfig file for import. First posted in the forums: http://synfig.org/forums/viewtopic.php?t=30&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
# Make sure a Java runtime environment is installed.&lt;br /&gt;
# Get a recent version of the SAXON XSLT processor for Java from http://saxon.sourceforge.net/. Recommended version: Saxon-SA 9.0 (saxonsa9-0-0-2j.zip).&lt;br /&gt;
# Extract the SAXON package to a folder of your choice. As an example we're going to use d:\saxon in the following. The folder will contain several JAR files.&lt;br /&gt;
# Create the file d:\saxon\svg2synfig.xsl with the content provided at the bottom of this document ({{l|#svg2synfig.xsl}}).&lt;br /&gt;
==== Optional Prerequites for Windows ====&lt;br /&gt;
If you don't want to use the command line, create a batch file d:\saxon\svg2synfig.bat with this content:&lt;br /&gt;
 @java -jar %0\..\saxon9.jar -xsl:%0\..\svg2synfig.xsl %1 &amp;gt; %0\..\synfig.sif&lt;br /&gt;
 @pause&lt;br /&gt;
=== Transforming an SVG into a Synfig File ===&lt;br /&gt;
==== Windows Batch File ====&lt;br /&gt;
# Just drop the SVG file onto svg2synfig.bat.&lt;br /&gt;
==== Command line ====&lt;br /&gt;
# Change directory to d:\saxon.&lt;br /&gt;
# Enter the following command (replace your_input.svg by the path of the SVG file):&lt;br /&gt;
 java -jar saxon9.jar -xsl:svg2synfig.xsl your_input.svg &amp;gt; synfig.sif&lt;br /&gt;
=== Result ===&lt;br /&gt;
If the conversion has been successful, the result will be written to the file d:\saxon\synfig.sif.&lt;br /&gt;
You can open this file in Synfig.&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
* Doesn't seem to work with SaxonB (FOSS version)&lt;br /&gt;
* Compressed SVG (svgz) must be uncompressed first.&lt;br /&gt;
* Only SVG path objects are supported. Try converting all objects to paths.&lt;br /&gt;
* Only a subset of path elements is supported. Try to modify all path nodes to have split tangents, and all path segments to be curves.&lt;br /&gt;
* Sophisticated coloring (e. g. gradients) is not supported.&lt;br /&gt;
* Only basic transformations are supported.&lt;br /&gt;
* Fill and outline on the same object is not supported.&lt;br /&gt;
=== svg2synfig.xsl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; exclude-result-prefixes=&amp;quot;#all&amp;quot;&lt;br /&gt;
		xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
		xmlns:svg=&amp;quot;http://www.w3.org/2000/svg&amp;quot;&lt;br /&gt;
		xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
		xmlns:math=&amp;quot;http://exslt.org/math&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; indent=&amp;quot;yes&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:svg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;width&amp;quot; select=&amp;quot;math:units_to_px(@width)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;height&amp;quot; select=&amp;quot;math:units_to_px(@height)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;has_view_box&amp;quot; select=&amp;quot;matches(@viewBox, '(\d+\s){3}\d+')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;canvas version=&amp;quot;0.2&amp;quot; id=&amp;quot;{@id}&amp;quot;&lt;br /&gt;
				width=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$3') else $width}&amp;quot;&lt;br /&gt;
				height=&amp;quot;{if ($has_view_box) then replace(@viewBox, '(\d+)\s(\d+)\s(\d+)\s(\d+)', '$4') else $height}&amp;quot;&lt;br /&gt;
				view-box=&amp;quot;{if ($has_view_box) then @viewBox else concat('0 0 ', $width, ' ', $height)}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:apply-templates select=&amp;quot;svg:g|svg:svg|svg:path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/canvas&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:g&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;layer type=&amp;quot;PasteCanvas&amp;quot; active=&amp;quot;true&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{@id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;canvas&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;canvas&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:apply-templates/&amp;gt;&lt;br /&gt;
				&amp;lt;/canvas&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template match=&amp;quot;svg:path&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;ancestor-or-self::*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:sort select=&amp;quot;position()&amp;quot; data-type=&amp;quot;number&amp;quot; order=&amp;quot;descending&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;concat(@style, ';fill:', @fill, ';stroke:', @stroke, ';stroke-width:', @stroke-width, ';')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;self&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;is_fill&amp;quot; select=&amp;quot;not(matches(replace($style, 'fill:[^n;][^o].*', ''), 'fill:none'))&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;@d&amp;quot; regex=&amp;quot;m[^z]+(z|$)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;layer type=&amp;quot;{if ($is_fill) then 'region' else 'outline'}&amp;quot; version=&amp;quot;0.1&amp;quot; desc=&amp;quot;{$self/@id}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace(replace($style, ':none.*', ''), if ($is_fill) then '.*fill:([^;]+).*' else '.*stroke:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;not ($is_fill)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;style&amp;quot; select=&amp;quot;replace($style, '.*stroke-width:([^;]+).*', '$1')&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;bline&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;bline type=&amp;quot;bline_point&amp;quot; loop=&amp;quot;{matches(., 'z', 'i')}&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:call-template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;path&amp;quot; select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:with-param name=&amp;quot;node&amp;quot; select=&amp;quot;$self&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
						&amp;lt;/bline&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/layer&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;path-to-bline&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;path&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace(translate($path, ',', ' '), '(\d)-', '$1 -'), '\s*([a-z]+)\s*', '$1', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;closed&amp;quot; select=&amp;quot;if (matches($stripped, 'z', 'i')) then $stripped else replace($stripped, 'm([-\d.]+\s[-\d.]+).*$', '$0l$1z', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;tmp&amp;quot; select=&amp;quot;replace($closed, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;curve&amp;quot; select=&amp;quot;replace($tmp, '([-\d.]+\s[-\d.]+)l([-\d.]+\s[-\d.]+)', '$1c$1 $2 $2', 'i')&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$curve&amp;quot; regex=&amp;quot;\s([-\d.]+\s[-\d.]+)\s[-\d.]+\s[-\d.]+z&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:analyze-string select=&amp;quot;concat(regex-group(1), $curve)&amp;quot; regex=&amp;quot;([-\d.]+)\s([-\d.]+)[m\s]([-\d.]+)\s([-\d.]+)c([-\d.]+)\s([-\d.]+)&amp;quot; flags=&amp;quot;i&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:call-template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_x&amp;quot; select=&amp;quot;regex-group(1)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c1_y&amp;quot; select=&amp;quot;regex-group(2)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;regex-group(3)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;regex-group(4)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_x&amp;quot; select=&amp;quot;regex-group(5)&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:with-param name=&amp;quot;c2_y&amp;quot; select=&amp;quot;regex-group(6)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;node-to-bline-point&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;node&amp;quot; tunnel=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transform&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:for-each select=&amp;quot;$node/ancestor-or-self::*/@transform&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;t&amp;quot; select=&amp;quot;math:resolve_transform($transform)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($x) + $t[3] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_y&amp;quot; select=&amp;quot;$t[6] + $t[2] * xs:float($x) + $t[4] * xs:float($y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c1_x) + $t[3] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c1_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c1_x) + $t[4] * xs:float($c1_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_x&amp;quot; select=&amp;quot;$t[5] + $t[1] * xs:float($c2_x) + $t[3] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;transformed_c2_y&amp;quot; select=&amp;quot;$t[6]+ $t[2] * xs:float($c2_x) + $t[4] * xs:float($c2_y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;entry&amp;gt;&lt;br /&gt;
			&amp;lt;composite type=&amp;quot;bline_point&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;point&amp;gt;&lt;br /&gt;
					&amp;lt;vector&amp;gt;&lt;br /&gt;
						&amp;lt;x&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&amp;lt;/x&amp;gt;&lt;br /&gt;
						&amp;lt;y&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&amp;lt;/y&amp;gt;&lt;br /&gt;
					&amp;lt;/vector&amp;gt;&lt;br /&gt;
				&amp;lt;/point&amp;gt;&lt;br /&gt;
				&amp;lt;width&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/width&amp;gt;&lt;br /&gt;
				&amp;lt;origin&amp;gt;&lt;br /&gt;
					&amp;lt;real value=&amp;quot;0.5&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/origin&amp;gt;&lt;br /&gt;
				&amp;lt;split&amp;gt;&lt;br /&gt;
					&amp;lt;bool value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/split&amp;gt;&lt;br /&gt;
				&amp;lt;t1&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_c1_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_c1_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t1&amp;gt;&lt;br /&gt;
				&amp;lt;t2&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:call-template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-x&amp;quot; select=&amp;quot;$transformed_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;origin-y&amp;quot; select=&amp;quot;$transformed_y&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;x&amp;quot; select=&amp;quot;$transformed_c2_x&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:with-param name=&amp;quot;y&amp;quot; select=&amp;quot;$transformed_c2_y&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
				&amp;lt;/t2&amp;gt;&lt;br /&gt;
			&amp;lt;/composite&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;vector-pair-to-radial&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-x&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;origin-y&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dx&amp;quot; select=&amp;quot;xs:float($x) - xs:float($origin-x)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;dy&amp;quot; select=&amp;quot;xs:float($y) - xs:float($origin-y)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;d&amp;quot; select=&amp;quot;math:sqrt($dx * $dx + $dy * $dy)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:variable name=&amp;quot;angle&amp;quot; select=&amp;quot;math:atan2($dy, $dx)&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;radial_composite type=&amp;quot;vector&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;radius&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{$d * 3}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/radius&amp;gt;&lt;br /&gt;
			&amp;lt;theta&amp;gt;&lt;br /&gt;
				&amp;lt;angle value=&amp;quot;{$angle * 57.295779513082320876798154814105}&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/theta&amp;gt;&lt;br /&gt;
		&amp;lt;/radial_composite&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-width&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '^\d')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;real value=&amp;quot;{math:units_to_px($style)}&amp;quot;/&amp;gt;&lt;br /&gt;
			 &amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:template name=&amp;quot;style-to-color&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;style&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, '#')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;#([\da-f]{{2}})([\da-f]{{2}})([\da-f]{{2}});&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(1))&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(2))&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:hex_to_color(regex-group(3))&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;if (matches($style, 'fill-opacity:')) then math:power(xs:float(replace($style, '.*fill-opacity:([-\d.]+).*', '$1')), 1 div 2.2) else 1&amp;quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'rgb')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat($style, ';')&amp;quot; regex=&amp;quot;rgb[(\s]+([-\d.]+)[,\s]+([-\d.]+)[,\s]+([-\d.]+)[\s)]+;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;color&amp;gt;&lt;br /&gt;
							&amp;lt;r&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(1)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/r&amp;gt;&lt;br /&gt;
							&amp;lt;g&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(2)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/g&amp;gt;&lt;br /&gt;
							&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(regex-group(3)) div 255, 2.2)&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
							&amp;lt;a&amp;gt;1&amp;lt;/a&amp;gt;&lt;br /&gt;
						&amp;lt;/color&amp;gt;&lt;br /&gt;
					&amp;lt;/param&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:if test=&amp;quot;matches($style, 'url')&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;param name=&amp;quot;color&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;color&amp;gt;&amp;lt;r&amp;gt;0.5&amp;lt;/r&amp;gt;&amp;lt;g&amp;gt;0.5&amp;lt;/g&amp;gt;&amp;lt;b&amp;gt;0.5&amp;lt;/b&amp;gt;&amp;lt;a&amp;gt;0.5&amp;lt;/a&amp;gt;	&amp;lt;/color&amp;gt;&lt;br /&gt;
			&amp;lt;/param&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:resolve_transform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;transform&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:variable name=&amp;quot;stripped&amp;quot; select=&amp;quot;replace(replace($transform, 'translate\(', 'X(1,0,0,1,'), 'matrix', 'X')&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:analyze-string select=&amp;quot;concat('X(1,0,0,1,0,0)', $stripped)&amp;quot; regex=&amp;quot;(.*)X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\)[^X]*X\((-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+),(-?[\d.]+)\).*&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:non-matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:sequence select=&amp;quot;(1,0,0,1,0,0)&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:non-matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a2&amp;quot; select=&amp;quot;xs:float(regex-group(8))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b2&amp;quot; select=&amp;quot;xs:float(regex-group(9))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c2&amp;quot; select=&amp;quot;xs:float(regex-group(10))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d2&amp;quot; select=&amp;quot;xs:float(regex-group(11))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e2&amp;quot; select=&amp;quot;xs:float(regex-group(12))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f2&amp;quot; select=&amp;quot;xs:float(regex-group(13))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;a1&amp;quot; select=&amp;quot;xs:float(regex-group(2))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;b1&amp;quot; select=&amp;quot;xs:float(regex-group(3))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;c1&amp;quot; select=&amp;quot;xs:float(regex-group(4))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;d1&amp;quot; select=&amp;quot;xs:float(regex-group(5))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;e1&amp;quot; select=&amp;quot;xs:float(regex-group(6))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;f1&amp;quot; select=&amp;quot;xs:float(regex-group(7))&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;p&amp;quot; select=&amp;quot;($a1*$a2+$c1*$b2,$b1*$a2+$d1*$b2,$a1*$c2+$c1*$d2,$b1*$c2+$d1*$d2,$a1*$e2+$c1*$f2+$e1,$b1*$e2+$d1*$f2+$f1)&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:variable name=&amp;quot;remainder&amp;quot; select=&amp;quot;replace(regex-group(1), 'X\(1,0,0,1,0,0\)', '')&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;matches($remainder, 'X')&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:variable name=&amp;quot;recursion&amp;quot; select=&amp;quot;concat($remainder, 'X(', $p[1], ',', $p[2], ',', $p[3], ',', $p[4], ',', $p[5], ',', $p[6], ')')&amp;quot;/&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;math:resolve_transform($recursion)&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
							&amp;lt;xsl:sequence select=&amp;quot;$p&amp;quot;/&amp;gt;&lt;br /&gt;
						&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:hex_to_color&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;hex&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:value-of select=&amp;quot;math:power(xs:float(string-length(substring-before('0123456789abcdef', substring($hex,1,1))) * 16 + string-length(substring-before('0123456789abcdef', substring($hex,2,1)))) div 255, 2.2)&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;xsl:function name=&amp;quot;math:units_to_px&amp;quot; as=&amp;quot;xs:float&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;size&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:analyze-string select=&amp;quot;$size&amp;quot; regex=&amp;quot;^([-\d.]+)([a-z%]*)$&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:matching-substring&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:variable name=&amp;quot;factor&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pt'&amp;quot;&amp;gt;1.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'em'&amp;quot;&amp;gt;16&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'mm'&amp;quot;&amp;gt;3.54&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'pc'&amp;quot;&amp;gt;15&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'cm'&amp;quot;&amp;gt;35.43&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:when test=&amp;quot;regex-group(2) = 'in'&amp;quot;&amp;gt;90&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
						&amp;lt;xsl:otherwise&amp;gt;1&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;xs:float($factor) * xs:float(regex-group(1))&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:matching-substring&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:analyze-string&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:function&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
This is a C program by akagogo that uses libxml to convert SVG to Synfig format.&lt;br /&gt;
&lt;br /&gt;
http://none.carlos.googlepages.com/svgtosif.zip&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Just make the usual '''./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install'''&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
The SVG files needs to be inside a folder called '''data'''. You have to run the command from the parent directory, but just using the name file as the command argument. So if:&lt;br /&gt;
&lt;br /&gt;
* You are in folder &amp;quot;/example&amp;quot; you have to create a folder called &amp;quot;/example/data&amp;quot; and put the file &amp;quot;file.svg&amp;quot; there.&lt;br /&gt;
* Now you execute '''svgtosif file.svg''' when you got &amp;quot;/example&amp;quot; as your current working directory.&lt;br /&gt;
&lt;br /&gt;
As you can see, this is really not to friendly. To quickly fix the problem, use the following bash script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mkdir data&lt;br /&gt;
 cp &amp;quot;$1&amp;quot; data/&lt;br /&gt;
 /usr/local/bin/svgtosif &amp;quot;$1&amp;quot;&lt;br /&gt;
 NAME=`echo &amp;quot;$1&amp;quot; | cut -d &amp;quot;.&amp;quot; -f 1`&lt;br /&gt;
 cp &amp;quot;data/$NAME.sif&amp;quot; .&lt;br /&gt;
 rm data/*&lt;br /&gt;
 rmdir data&lt;br /&gt;
 echo &amp;quot;Conversion complete!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Put those lines in a file named &amp;quot;svg2sif&amp;quot; (name it as you want, but avoid using &amp;quot;svgtosif&amp;quot;) and put it in a PATH directory (suggest /usr/bin). Then:&lt;br /&gt;
 chmod +x /usr/bin/svg2sif &lt;br /&gt;
&lt;br /&gt;
Thats all. Now use:&lt;br /&gt;
 svg2sif &amp;lt;file.svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and you will get a .sif file in the same folder you are working in.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15805</id>
		<title>Doc:Gimp2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15805"/>
				<updated>2012-04-22T05:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour simplifier le travail d'animation de mon dessin animé d'une souris, un plug-in pour l'éditeur d'image  [http://gimp.org/ GIMP] a été écrit, qui permet d'exporter directement des images composées de plusieurs calques vers des calques correspondants pour le programme d'animation 2D Synfig.&lt;br /&gt;
&lt;br /&gt;
Le plug-in se place lui-même dans le menu image de the GIMP dans : &amp;lt;image&amp;gt;-&amp;gt; Fichier-&amp;gt; Export-&amp;gt; Synfig&lt;br /&gt;
&lt;br /&gt;
[http://img246.imageshack.us/my.php?image=gimp2synfigmenuxh9.jpg http://img246.imageshack.us/img246/4126/gimp2synfigmenuxh9.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Des options d'exportation peuvent être choisies. Si le champ &amp;quot;output path&amp;quot; est vide, les calques pour synfig seront mis dans le même répertoire que l'image initiale.&lt;br /&gt;
&lt;br /&gt;
[http://img292.imageshack.us/my.php?image=gimp2synfigsettingsvs3.jpg http://img292.imageshack.us/img292/269/gimp2synfigsettingsvs3.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Voici le résultat :&lt;br /&gt;
&lt;br /&gt;
[http://img201.imageshack.us/my.php?image=gimp2synfig003yn6.jpg http://img201.imageshack.us/img201/9369/gimp2synfig003yn6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
A gauche, vous pouvez voir l'image initiale dans Gimp, et à droite la même image importée dans Synfig. &lt;br /&gt;
&lt;br /&gt;
Après avoir ajouté un calque de redimensionnement, les images ne peuvent plus être différenciées.&lt;br /&gt;
&lt;br /&gt;
[http://img151.imageshack.us/my.php?image=gimp2synfig003withgammafd6.jpg http://img151.imageshack.us/img151/5450/gimp2synfig003withgammafd6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Vous pouvez télécharger le [http://akhilman.googlepages.com/synfigexport.py plugin synfigexport  ici].&lt;br /&gt;
&lt;br /&gt;
Pour qu'il fonctionne, gimp doit avoir le support Python, et la version la plus récente de Python doit être installée sur votre ordinateur.&lt;br /&gt;
&lt;br /&gt;
Pour installer ce plug-in, placez tout simplement le fichier dans ~/gimp-*/plug-ins/ et rendez-le executable (chmod +x synfigexport.py), puis relancez gimp.&lt;br /&gt;
&lt;br /&gt;
Ce programme est sous la licence Creative Commons Attribution 3.0 Unported License. La distribution et la mise à jour de ce code est appréciée.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15804</id>
		<title>Doc:Gimp2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15804"/>
				<updated>2012-04-22T05:46:07Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Traduction en cours&lt;br /&gt;
&lt;br /&gt;
Pour simplifier le travail d'animation de mon dessin animé d'une souris, un plug-in pour l'éditeur d'image  [http://gimp.org/ GIMP] a été écrit, qui permet d'exporter directement des images composées de plusieurs calques vers des calques correspondants pour le programme d'animation 2D Synfig.&lt;br /&gt;
&lt;br /&gt;
Le plug-in se place lui-même dans le menu image de the GIMP dans : &amp;lt;image&amp;gt;-&amp;gt; Fichier-&amp;gt; Export-&amp;gt; Synfig&lt;br /&gt;
&lt;br /&gt;
[http://img246.imageshack.us/my.php?image=gimp2synfigmenuxh9.jpg http://img246.imageshack.us/img246/4126/gimp2synfigmenuxh9.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Des options d'exportation peuvent être choisies. Si le champ &amp;quot;output path&amp;quot; est vide, les calques pour synfig seront mis dans le même répertoire que l'image initiale.&lt;br /&gt;
&lt;br /&gt;
[http://img292.imageshack.us/my.php?image=gimp2synfigsettingsvs3.jpg http://img292.imageshack.us/img292/269/gimp2synfigsettingsvs3.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Voici le résultat :&lt;br /&gt;
&lt;br /&gt;
[http://img201.imageshack.us/my.php?image=gimp2synfig003yn6.jpg http://img201.imageshack.us/img201/9369/gimp2synfig003yn6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
A gauche, vous pouvez voir l'image initiale dans Gimp, et à droite la même image importée dans Synfig. &lt;br /&gt;
&lt;br /&gt;
Après avoir ajouté un calque de redimensionnement, les images ne peuvent plus être différenciées.&lt;br /&gt;
&lt;br /&gt;
[http://img151.imageshack.us/my.php?image=gimp2synfig003withgammafd6.jpg http://img151.imageshack.us/img151/5450/gimp2synfig003withgammafd6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Vous pouvez télécharger le [http://akhilman.googlepages.com/synfigexport.py plugin synfigexport  ici].&lt;br /&gt;
&lt;br /&gt;
Pour qu'il fonctionne, gimp doit avoir le support Python, et la version la plus récente de Python doit être installée sur votre ordinateur.&lt;br /&gt;
&lt;br /&gt;
Pour installer ce plug-in, placez tout simplement le fichier dans ~/gimp-*/plug-ins/ et rendez-le executable (chmod +x synfigexport.py), puis relancez gimp.&lt;br /&gt;
&lt;br /&gt;
Ce programme est sous la licence Creative Commons Attribution 3.0 Unported License. La distribution et la mise à jour de ce code est appréciée.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15803</id>
		<title>Doc:Gimp2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15803"/>
				<updated>2012-04-22T05:27:08Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Traduction en cours&lt;br /&gt;
&lt;br /&gt;
Pour simplifier le travail d'animation de mon dessin animé d'une souris, un plug-in pour l'éditeur d'image  [http://gimp.org/ GIMP] a été écrit, qui permet d'exporter directement des images composées de plusieurs calques vers des calques correspondants pour le programme d'animation 2D Synfig.&lt;br /&gt;
&lt;br /&gt;
Le plug-in se place lui-même dans le menu image de the GIMP dans : &amp;lt;image&amp;gt;-&amp;gt; Fichier-&amp;gt; Export-&amp;gt; Synfig&lt;br /&gt;
&lt;br /&gt;
[http://img246.imageshack.us/my.php?image=gimp2synfigmenuxh9.jpg http://img246.imageshack.us/img246/4126/gimp2synfigmenuxh9.th.jpg]&lt;br /&gt;
&lt;br /&gt;
There are export options you can choose. If the field &amp;quot;output path&amp;quot; is empty, the synfig canvas will be kept in the same directory as the initial picture.&lt;br /&gt;
&lt;br /&gt;
[http://img292.imageshack.us/my.php?image=gimp2synfigsettingsvs3.jpg http://img292.imageshack.us/img292/269/gimp2synfigsettingsvs3.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Here is the result:&lt;br /&gt;
&lt;br /&gt;
[http://img201.imageshack.us/my.php?image=gimp2synfig003yn6.jpg http://img201.imageshack.us/img201/9369/gimp2synfig003yn6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
On the left you can see the initial image in Gimp, and on the right the same image imported into Synfig.  &lt;br /&gt;
&lt;br /&gt;
After adding a scale layer, the images cannot be distinguished.&lt;br /&gt;
&lt;br /&gt;
[http://img151.imageshack.us/my.php?image=gimp2synfig003withgammafd6.jpg http://img151.imageshack.us/img151/5450/gimp2synfig003withgammafd6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
You can download the [http://akhilman.googlepages.com/synfigexport.py synfigexport plugin here].&lt;br /&gt;
&lt;br /&gt;
To make it work, gimp must support Python, and the most recent version of Python must be installed on your computer. &lt;br /&gt;
&lt;br /&gt;
To install this plug-in, simply put the file in ~/.gimp-*/plug-ins/ and make it executable (chmod +x synfigexport.py), then restart gimp.&lt;br /&gt;
&lt;br /&gt;
This program is licensed under Creative Commons Attribution 3.0 Unported License. Distribution and updating of the code is appreciated.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15802</id>
		<title>Doc:Gimp2synfig/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Gimp2synfig/fr&amp;diff=15802"/>
				<updated>2012-04-22T05:21:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: Created page with &amp;quot; Traduction en cours  To simplify the work of animating my cartoon about a mouse, a plug-in for the [http://gimp.org/ GIMP] raster editor has been written, to allow the direct ex...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Traduction en cours&lt;br /&gt;
&lt;br /&gt;
To simplify the work of animating my cartoon about a mouse, a plug-in for the [http://gimp.org/ GIMP] raster editor has been written, to allow the direct exporting of multi-layered images to corresponding layers of the 2D animation package Synfig.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier le travail d'animation de mon dessin animé d'une souris, un plug-in pour l'éditeur d'image  [http://gimp.org/ GIMP] a été écrit, qui permet d'exporter directement des images composées de plusieurs calques vers des calques correspondants pour le programme d'animation 2D Synfig.&lt;br /&gt;
&lt;br /&gt;
The plug-in registers itself in the GIMP image menu &amp;lt;image&amp;gt;-&amp;gt; File-&amp;gt; Export-&amp;gt; Synfig.&lt;br /&gt;
&lt;br /&gt;
[http://img246.imageshack.us/my.php?image=gimp2synfigmenuxh9.jpg http://img246.imageshack.us/img246/4126/gimp2synfigmenuxh9.th.jpg]&lt;br /&gt;
&lt;br /&gt;
There are export options you can choose. If the field &amp;quot;output path&amp;quot; is empty, the synfig canvas will be kept in the same directory as the initial picture.&lt;br /&gt;
&lt;br /&gt;
[http://img292.imageshack.us/my.php?image=gimp2synfigsettingsvs3.jpg http://img292.imageshack.us/img292/269/gimp2synfigsettingsvs3.th.jpg]&lt;br /&gt;
&lt;br /&gt;
Here is the result:&lt;br /&gt;
&lt;br /&gt;
[http://img201.imageshack.us/my.php?image=gimp2synfig003yn6.jpg http://img201.imageshack.us/img201/9369/gimp2synfig003yn6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
On the left you can see the initial image in Gimp, and on the right the same image imported into Synfig.  &lt;br /&gt;
&lt;br /&gt;
After adding a scale layer, the images cannot be distinguished.&lt;br /&gt;
&lt;br /&gt;
[http://img151.imageshack.us/my.php?image=gimp2synfig003withgammafd6.jpg http://img151.imageshack.us/img151/5450/gimp2synfig003withgammafd6.th.jpg]&lt;br /&gt;
&lt;br /&gt;
You can download the [http://akhilman.googlepages.com/synfigexport.py synfigexport plugin here].&lt;br /&gt;
&lt;br /&gt;
To make it work, gimp must support Python, and the most recent version of Python must be installed on your computer. &lt;br /&gt;
&lt;br /&gt;
To install this plug-in, simply put the file in ~/.gimp-*/plug-ins/ and make it executable (chmod +x synfigexport.py), then restart gimp.&lt;br /&gt;
&lt;br /&gt;
This program is licensed under Creative Commons Attribution 3.0 Unported License. Distribution and updating of the code is appreciated.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15801</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15801"/>
				<updated>2012-04-21T17:52:00Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 Cette page mériterait une meilleur disposition!&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve le panneau des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Alors que la plupart des applications graphiques ont un ensemble de menus en haut de l'écran, de la fenêtre MDI, ou de la zone de dessin, Synfig a un '''{{l|Canvas Menu Caret|caret}}''' : un petit triangle noir dans le coin supérieur gauche du canevas sous lequel vous trouverez tous les menus que vous pourriez attendre et qui vous permettront d'accéder à la plupart des fonctionnalités de Synfig.&lt;br /&gt;
&lt;br /&gt;
La zone en damier grisé est votre '''espace de travail''', vous pourrez y créer des objets/calques et les manipuler.&lt;br /&gt;
&lt;br /&gt;
La {{l|Timebar|timeline}} que vous pouvez voir dans l'image n'apparait que si vous avez défini une durée non nulle dans la fenêtre des paramètres de votre projet. Sur la gauche, vous pouvez voir le numéro de l'image courante et à droite deux boutons pour passer/sortir du mode animation et pour verrouiller /déverrouiller les images clés (la version 0.63.05 comporte trois boutons). Le tutoriel {{l|Doc:Animation Basics}} est une bonne introduction à l'utilisation de ces boutons.&lt;br /&gt;
 &lt;br /&gt;
L'image ci-dessus contient trois éléments dans le canevas. La ligne noire - appelée {{l|BLine|BLine}} - est sélectionnée. Les petits points de couleur permettent de contrôler la courbe et sont appelés des {{l|duck|ducks}}.&lt;br /&gt;
(Remarque du traducteur : l'image dont il est question n'apparaît pas non plus dans la version anglaise mais on la voit en petit dans l'image suivante)&lt;br /&gt;
&lt;br /&gt;
==Le navigateur, Les options des outils et le panneau des calques==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
La troisième fenêtre contient à son tour trois zones dans lesquelles peuvent apparaître différents {{l|Category:Panels|panneaux}} : sur l'image le {{l|Navigator Panel|le panneau de navigation}}, le {{l|Tool Options Panel|le panneau des options des outils}} et le {{l|Layers Panel|le panneau des calques}} son actifs.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder à une description détaillé des autres panneaux {{l|Category:Panels|ici}}.&lt;br /&gt;
&lt;br /&gt;
== Le panneau des paramètres et de la ligne-temps==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
La quatrième et dernière fenêtre montre le  {{l|Params Panel|le panneau des paramètres}}, où vous pouvez trouver tous les paramètres et valeurs détaillés pour l'élément actif comme la couleur, l'épaisseur, l'opacité, la position et ainsi de suite. A droite, c'est la {{l|Timetrack Panel|ligne-temps}} qui vous permet de créer et de modifier les {{l|waypoints}} (points étapes).&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15800</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15800"/>
				<updated>2012-04-21T17:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 Cette page mériterait une meilleur disposition!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve le panneau des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Alors que la plupart des applications graphiques ont un ensemble de menus en haut de l'écran, de la fenêtre MDI, ou de la zone de dessin, Synfig a un '''{{l|Canvas Menu Caret|caret}}''' : un petit triangle noir dans le coin supérieur gauche du canevas sous lequel vous trouverez tous les menus que vous pourriez attendre et qui vous permettront d'accéder à la plupart des fonctionnalités de Synfig.&lt;br /&gt;
&lt;br /&gt;
La zone en damier grisé est votre '''espace de travail''', vous pourrez y créer des objets/calques et les manipuler.&lt;br /&gt;
&lt;br /&gt;
La {{l|Timebar|timeline}} que vous pouvez voir dans l'image n'apparait que si vous avez défini une durée non nulle dans la fenêtre des paramètres de votre projet. Sur la gauche, vous pouvez voir le numéro de l'image courante et à droite deux boutons pour passer/sortir du mode animation et pour verrouiller /déverrouiller les images clés (la version 0.63.05 comporte trois boutons). Le tutoriel {{l|Doc:Animation Basics}} est une bonne introduction à l'utilisation de ces boutons.&lt;br /&gt;
 &lt;br /&gt;
L'image ci-dessus contient trois éléments dans le canevas. La ligne noire - appelée {{l|BLine|BLine}} - est sélectionnée. Les petits points de couleur permettent de contrôler la courbe et sont appelés des {{l|duck|ducks}}.&lt;br /&gt;
(Remarque du traducteur : l'image dont il est question n'apparaît pas non plus dans la version anglaise mais on la voit en petit dans l'image suivante)&lt;br /&gt;
&lt;br /&gt;
==Le navigateur, Les options des outils et le panneau des calques==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
La troisième fenêtre contient à son tour trois zones dans lesquelles peuvent apparaître différents {{l|Category:Panels|panneaux}} : sur l'image le {{l|Navigator Panel|le panneau de navigation}}, le {{l|Tool Options Panel|le panneau des options des outils}} et le {{l|Layers Panel|le panneau des calques}} son actifs.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder à une description détaillé des autres panneaux {{l|Category:Panels|ici}}.&lt;br /&gt;
&lt;br /&gt;
== Le panneau des paramètres et de la ligne-temps==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
La quatrième et dernière fenêtre montre le  {{l|Params Panel|le panneau des paramètres}}, où vous pouvez trouver tous les paramètres et valeurs détaillés pour l'élément actif comme la couleur, l'épaisseur, l'opacité, la position et ainsi de suite. A droite, c'est la {{l|Timetrack Panel|ligne-temps}} qui vous permet de créer et de modifier les {{l|waypoints}} (points étapes).&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15799</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15799"/>
				<updated>2012-04-21T17:43:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: /* The Parameter and Time Track Panel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 This page needs a better layout!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve la palette des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Alors que la plupart des applications graphiques ont un ensemble de menus en haut de l'écran, de la fenêtre MDI, ou de la zone de dessin, Synfig a un '''{{l|Canvas Menu Caret|caret}}''' : un petit triangle noir dans le coin supérieur gauche du canevas sous lequel vous trouverez tous les menus que vous pourriez attendre et qui vous permettront d'accéder à la plupart des fonctionnalités de Synfig.&lt;br /&gt;
&lt;br /&gt;
La zone en damier grisé est votre '''espace de travail''', vous pourrez y créer des objets/calques et les manipuler.&lt;br /&gt;
&lt;br /&gt;
La {{l|Timebar|timeline}} que vous pouvez voir dans l'image n'apparait que si vous avez défini une durée non nulle dans la fenêtre des paramètres de votre projet. Sur la gauche, vous pouvez voir le numéro de l'image courante et à droite deux boutons pour passer/sortir du mode animation et pour verrouiller /déverrouiller les images clés (la version 0.63.05 comporte trois boutons). Le tutoriel {{l|Doc:Animation Basics}} est une bonne introduction à l'utilisation de ces boutons.&lt;br /&gt;
 &lt;br /&gt;
L'image ci-dessus contient trois éléments dans le canevas. La ligne noire - appelée {{l|BLine|BLine}} - est sélectionnée. Les petits points de couleur permettent de contrôler la courbe et sont appelés des {{l|duck|ducks}}.&lt;br /&gt;
&lt;br /&gt;
(Remarque du traducteur : l'image dont il est question n'apparaît pas non plus dans la version anglaise mais on la voit en petit dans l'image suivante)&lt;br /&gt;
&lt;br /&gt;
==Le navigateur, Les options des outils et le panneau des calques==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
La troisième fenêtre contient à son tour trois zones dans lesquelles peuvent apparaître différents {{l|Category:Panels|panneaux}} : sur l'image le {{l|Navigator Panel|le panneau de navigation}}, le {{l|Tool Options Panel|le panneau des options des outils}} et le {{l|Layers Panel|le panneau des calques}} son actifs.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder à une description détaillé des autres panneaux {{l|Category:Panels|ici}}.&lt;br /&gt;
&lt;br /&gt;
== Le panneau des paramètres et de la ligne-temps==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
La quatrième et dernière fenêtre montre le  {{l|Params Panel|le panneau des paramètres}}, où vous pouvez trouver tous les paramètres et valeurs détaillés pour l'élément actif comme la couleur, l'épaisseur, l'opacité, la position et ainsi de suite. A droite, c'est la {{l|Timetrack Panel|ligne-temps}} qui vous permet de créer et de modifier les {{l|waypoints}} (points étapes).&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15798</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15798"/>
				<updated>2012-04-21T17:33:33Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 This page needs a better layout!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve la palette des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Alors que la plupart des applications graphiques ont un ensemble de menus en haut de l'écran, de la fenêtre MDI, ou de la zone de dessin, Synfig a un '''{{l|Canvas Menu Caret|caret}}''' : un petit triangle noir dans le coin supérieur gauche du canevas sous lequel vous trouverez tous les menus que vous pourriez attendre et qui vous permettront d'accéder à la plupart des fonctionnalités de Synfig.&lt;br /&gt;
&lt;br /&gt;
La zone en damier grisé est votre '''espace de travail''', vous pourrez y créer des objets/calques et les manipuler.&lt;br /&gt;
&lt;br /&gt;
La {{l|Timebar|timeline}} que vous pouvez voir dans l'image n'apparait que si vous avez défini une durée non nulle dans la fenêtre des paramètres de votre projet. Sur la gauche, vous pouvez voir le numéro de l'image courante et à droite deux boutons pour passer/sortir du mode animation et pour verrouiller /déverrouiller les images clés (la version 0.63.05 comporte trois boutons). Le tutoriel {{l|Doc:Animation Basics}} est une bonne introduction à l'utilisation de ces boutons.&lt;br /&gt;
 &lt;br /&gt;
L'image ci-dessus contient trois éléments dans le canevas. La ligne noire - appelée {{l|BLine|BLine}} - est sélectionnée. Les petits points de couleur permettent de contrôler la courbe et sont appelés des {{l|duck|ducks}}.&lt;br /&gt;
&lt;br /&gt;
(Remarque du traducteur : l'image dont il est question n'apparaît pas non plus dans la version anglaise mais on la voit en petit dans l'image suivante)&lt;br /&gt;
&lt;br /&gt;
==Le navigateur, Les options des outils et le panneau des calques==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
La troisième fenêtre contient à son tour trois zones dans lesquelles peuvent apparaître différents {{l|Category:Panels|panneaux}} : sur l'image le {{l|Navigator Panel|le panneau de navigation}}, le {{l|Tool Options Panel|le panneau des options des outils}} et le {{l|Layers Panel|le panneau des calques}} son actifs.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder à une description détaillé des autres panneaux {{l|Category:Panels|ici}}.&lt;br /&gt;
&lt;br /&gt;
==The Parameter and Time Track Panel==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
The fourth and last window shows the {{l|Params Panel}}, where you can find detailed parameters and settings for the active element like colour, width, opacity, location and so on. To the right is the {{l|Timetrack Panel}} that allows you to create and modify {{l|waypoints}}.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15797</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15797"/>
				<updated>2012-04-21T17:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 This page needs a better layout!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve la palette des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Alors que la plupart des applications graphiques ont un ensemble de menus en haut de l'écran, de la fenêtre MDI, ou de la zone de dessin, Synfig a un '''{{l|Canvas Menu Caret|caret}}''' : un petit triangle noir dans le coin supérieur gauche du canevas sous lequel vous trouverez tous les menus que vous pourriez attendre et qui vous permettront d'accéder à la plupart des fonctionnalités de Synfig.&lt;br /&gt;
&lt;br /&gt;
La zone en damier grisé est votre '''espace de travail''', vous pourrez y créer des objets/calques et les manipuler.&lt;br /&gt;
&lt;br /&gt;
La {{l|Timebar|timeline}} que vous pouvez voir dans l'image n'apparait que si vous avez défini une durée non nulle dans la fenêtre des paramètres de votre projet. Sur la gauche, vous pouvez voir le numéro de l'image courante et à droite deux boutons pour passer/sortir du mode animation et pour verrouiller /déverrouiller les images clés (la version 0.63.05 comporte trois boutons). Le tutoriel {{l|Doc:Animation Basics}} est une bonne introduction à l'utilisation de ces boutons.&lt;br /&gt;
 &lt;br /&gt;
L'image ci-dessus contient trois éléments dans le canevas. La ligne noire - appelée {{l|BLine|BLine}} - est sélectionnée. Les petits points de couleur permettent de contrôler la courbe et sont appelés des {{l|duck|ducks}}.&lt;br /&gt;
&lt;br /&gt;
(Remarque du traducteur : l'image dont il est question n'apparaît pas non plus dans la version anglaise mais on la voit en petit dans l'image suivante)&lt;br /&gt;
&lt;br /&gt;
==The Navigator, Tool Options and Layers Panel==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
The third window contains again three areas, each of which can show different {{l|Category:Panels|panels}}: in this picture the {{l|Navigator Panel}}, the {{l|Tool Options Panel}} and the {{l|Layers Panel}} are active.&lt;br /&gt;
&lt;br /&gt;
You can access detailed descriptions of the other panels {{l|Category:Panels|here}}.&lt;br /&gt;
&lt;br /&gt;
==The Parameter and Time Track Panel==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
The fourth and last window shows the {{l|Params Panel}}, where you can find detailed parameters and settings for the active element like colour, width, opacity, location and so on. To the right is the {{l|Timetrack Panel}} that allows you to create and modify {{l|waypoints}}.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15796</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15796"/>
				<updated>2012-04-21T17:09:26Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 This page needs a better layout!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve la palette des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Alors que la plupart des applications graphiques ont un ensemble de menus en haut de l'écran, de la fenêtre MDI, ou de la zone de dessin, Synfig a un '''{{l|Canvas Menu Caret|caret}}''' : un petit triangle noir dans le coin supérieur gauche du canevas sous lequel vous trouverez tous les menus que vous pourriez attendre et qui vous permettront d'accéder à la plupart des fonctionnalités de Synfig.&lt;br /&gt;
&lt;br /&gt;
La zone en damier grisé est votre '''espace de travail''', vous pourrez y créer des objets/calques et les manipuler.&lt;br /&gt;
&lt;br /&gt;
The {{l|Timebar|timeline}} that you can see in the picture here only appears when you have defined a non-zero duration in the settings dialog of your project. To the left you can see the number of the current frame and on the right side two buttons to switch the animation status and to lock/unlock the keyframes. The {{l|Doc:Animation Basics}} Tutorial gives a good introduction on how to work with this buttons.&lt;br /&gt;
&lt;br /&gt;
In the picture above there are three elements on the canvas, the black curve - called {{l|BLine|BLine}} - is selected. The little coloured dots control the curve and are called {{l|duck|ducks}}.&lt;br /&gt;
&lt;br /&gt;
==The Navigator, Tool Options and Layers Panel==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
The third window contains again three areas, each of which can show different {{l|Category:Panels|panels}}: in this picture the {{l|Navigator Panel}}, the {{l|Tool Options Panel}} and the {{l|Layers Panel}} are active.&lt;br /&gt;
&lt;br /&gt;
You can access detailed descriptions of the other panels {{l|Category:Panels|here}}.&lt;br /&gt;
&lt;br /&gt;
==The Parameter and Time Track Panel==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
The fourth and last window shows the {{l|Params Panel}}, where you can find detailed parameters and settings for the active element like colour, width, opacity, location and so on. To the right is the {{l|Timetrack Panel}} that allows you to create and modify {{l|waypoints}}.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15795</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15795"/>
				<updated>2012-04-21T17:05:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 This page needs a better layout!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve la palette des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Alors que la plupart des applications graphiques ont un ensemble de menus en haut de l'écran, de la fenêtre MDI, ou de la zone de dessin, Synfig a un '''{{l|Canvas Menu Caret|caret}}''' : un petit triangle noir dans le coin supérieur gauche du canevas sous lequel vous trouverez tous les menus que vous pourriez attendre et qui vous permettront d'accéder à la plupart des fonctionnalités de Synfig.&lt;br /&gt;
&lt;br /&gt;
The area with the grey check-board pattern is your '''working area''' in which you can create elements/layers and manipulate them.&lt;br /&gt;
&lt;br /&gt;
The {{l|Timebar|timeline}} that you can see in the picture here only appears when you have defined a non-zero duration in the settings dialog of your project. To the left you can see the number of the current frame and on the right side two buttons to switch the animation status and to lock/unlock the keyframes. The {{l|Doc:Animation Basics}} Tutorial gives a good introduction on how to work with this buttons.&lt;br /&gt;
&lt;br /&gt;
In the picture above there are three elements on the canvas, the black curve - called {{l|BLine|BLine}} - is selected. The little coloured dots control the curve and are called {{l|duck|ducks}}.&lt;br /&gt;
&lt;br /&gt;
==The Navigator, Tool Options and Layers Panel==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
The third window contains again three areas, each of which can show different {{l|Category:Panels|panels}}: in this picture the {{l|Navigator Panel}}, the {{l|Tool Options Panel}} and the {{l|Layers Panel}} are active.&lt;br /&gt;
&lt;br /&gt;
You can access detailed descriptions of the other panels {{l|Category:Panels|here}}.&lt;br /&gt;
&lt;br /&gt;
==The Parameter and Time Track Panel==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
The fourth and last window shows the {{l|Params Panel}}, where you can find detailed parameters and settings for the active element like colour, width, opacity, location and so on. To the right is the {{l|Timetrack Panel}} that allows you to create and modify {{l|waypoints}}.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15794</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15794"/>
				<updated>2012-04-21T16:56:52Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 This page needs a better layout!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La Boîte à outils==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|La Boîte à outil (Toolbox)]]&lt;br /&gt;
La fenêtre {{l|Category:Toolbox|Boîte à outils}} est la fenêtre principale de Synfig : même si vous avez ouvert plusieurs projets, il n'y aura qu'une seule Boîte à outil.&lt;br /&gt;
&lt;br /&gt;
La fenêtre est divisée en trois zones ou panneaux :&lt;br /&gt;
&lt;br /&gt;
* La première zone contient les boutons donnant acces '''aux opérations sur les fichiers''' habituelles : créer un nouveau fichier, ouvrir un fichier, sauver (tous les) fichier(s) (sous un nouveau nom), annuler et refaire ainsi qu'un acces à la configuration des fenêtres et au système d'aide.&lt;br /&gt;
&lt;br /&gt;
* Juste en dessous ce trouve la palette des outils qui vous permettront de créer et de manipuler les objets (ou mieux : {{l|layer|calque}}, car chaque objet est contenu dans son propre calque)). Vous trouverez une décription détaillée de chacun de ces outils {{l|Category:Tools|ici}}.&lt;br /&gt;
&lt;br /&gt;
* La dernière zone contient la '''configuration par défaut''' pour les nouveaux calques : couleurs de l'avant- et arrière plan, épaisseur du tracé, opacité et mode pour le calque.&lt;br /&gt;
&lt;br /&gt;
==La fenêtre Canevas==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Une fois que vous avez ouvert un fichier ou créé un nouveau projet (par exemple à l'aide des boutons de la boîte à outils) vous verrez la fenêtre '''canevas'''. C'est l'endroit où vous créerez votre animation !&lt;br /&gt;
&lt;br /&gt;
Whereas most graphics apps have a set of menus at the top of the screen, the top of the MDI window, or the top of the drawing window, Synfig has a '''{{l|Canvas Menu Caret|caret}}''': the little black triangle in the upper left corner of the canvas. Beneath are all the menus you would expect and that allow you to access most of Synfig's features.&lt;br /&gt;
&lt;br /&gt;
The area with the grey check-board pattern is your '''working area''' in which you can create elements/layers and manipulate them.&lt;br /&gt;
&lt;br /&gt;
The {{l|Timebar|timeline}} that you can see in the picture here only appears when you have defined a non-zero duration in the settings dialog of your project. To the left you can see the number of the current frame and on the right side two buttons to switch the animation status and to lock/unlock the keyframes. The {{l|Doc:Animation Basics}} Tutorial gives a good introduction on how to work with this buttons.&lt;br /&gt;
&lt;br /&gt;
In the picture above there are three elements on the canvas, the black curve - called {{l|BLine|BLine}} - is selected. The little coloured dots control the curve and are called {{l|duck|ducks}}.&lt;br /&gt;
&lt;br /&gt;
==The Navigator, Tool Options and Layers Panel==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
The third window contains again three areas, each of which can show different {{l|Category:Panels|panels}}: in this picture the {{l|Navigator Panel}}, the {{l|Tool Options Panel}} and the {{l|Layers Panel}} are active.&lt;br /&gt;
&lt;br /&gt;
You can access detailed descriptions of the other panels {{l|Category:Panels|here}}.&lt;br /&gt;
&lt;br /&gt;
==The Parameter and Time Track Panel==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
The fourth and last window shows the {{l|Params Panel}}, where you can find detailed parameters and settings for the active element like colour, width, opacity, location and so on. To the right is the {{l|Timetrack Panel}} that allows you to create and modify {{l|waypoints}}.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15793</id>
		<title>Doc:Interface/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Interface/fr&amp;diff=15793"/>
				<updated>2012-04-21T15:51:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ratanes: Created page with &amp;quot;&amp;lt;!-- Page info --&amp;gt; {{Title|Interface}} {{Navigation|Category:Manual|Doc:Adding Layers}} {{Category|Manual}} {{Category|Tutorials}} {{Category|Tutorials Basic}} &amp;lt;!-- Page info end...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Interface}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Adding Layers}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Basic}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
 This page needs a better layout!&lt;br /&gt;
-- En cours de traduction --&lt;br /&gt;
&lt;br /&gt;
Synfig Studio ne démarre pas avec une seule fenêtre, mais il ouvre plusieurs fenêtres individuelles sur votre bureau. Si vous êtes familier de [http://www.gimp.org The GIMP], vous devriez reconnaître cet agencement. Cette page essaie de vous donner un apperçu des différents éléments que vous devriez trouver après avoir lancé synfig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Toolbox window==&lt;br /&gt;
[[File:Toolbox.png|150px|thumb|right|The Toolbox]]&lt;br /&gt;
The {{l|Category:Toolbox}} is the main window of Synfig: even if you have several open projects, there will only be one Toolbox. &lt;br /&gt;
&lt;br /&gt;
The window is separated into three areas or palettes:&lt;br /&gt;
&lt;br /&gt;
* The upper palette contains buttons with access to standard '''file operations''': create a new file, open a file, save (all) file(s) (under a new name), undo and redo as well as access to the settings dialog and the help system.&lt;br /&gt;
&lt;br /&gt;
* Located in the palette underneath are the '''tools''' which allow you to create and manipulate objects (or better: {{l|layer|layers}}, as each object lies in its own layer). You can find a detailed description of each tool {{l|Category:Tools|here}}.&lt;br /&gt;
&lt;br /&gt;
* The lowest palette contains the '''default settings''' for new layers: fore- and background colors, line width, opacity and layer mode.&lt;br /&gt;
==The Canvas window==&lt;br /&gt;
[[File:canvas.png|center|The Canvas]]&lt;br /&gt;
Once you have opened a file or created a new project (e.g. via the buttons in the toolbox) you'll see the '''canvas''' window. This is where you'll create your animation!&lt;br /&gt;
&lt;br /&gt;
Whereas most graphics apps have a set of menus at the top of the screen, the top of the MDI window, or the top of the drawing window, Synfig has a '''{{l|Canvas Menu Caret|caret}}''': the little black triangle in the upper left corner of the canvas. Beneath are all the menus you would expect and that allow you to access most of Synfig's features.&lt;br /&gt;
&lt;br /&gt;
The area with the grey check-board pattern is your '''working area''' in which you can create elements/layers and manipulate them.&lt;br /&gt;
&lt;br /&gt;
The {{l|Timebar|timeline}} that you can see in the picture here only appears when you have defined a non-zero duration in the settings dialog of your project. To the left you can see the number of the current frame and on the right side two buttons to switch the animation status and to lock/unlock the keyframes. The {{l|Doc:Animation Basics}} Tutorial gives a good introduction on how to work with this buttons.&lt;br /&gt;
&lt;br /&gt;
In the picture above there are three elements on the canvas, the black curve - called {{l|BLine|BLine}} - is selected. The little coloured dots control the curve and are called {{l|duck|ducks}}.&lt;br /&gt;
&lt;br /&gt;
==The Navigator, Tool Options and Layers Panel==&lt;br /&gt;
[[File:layers_window.png|250px|left|thumb|Navigator and Layers Panel]]&lt;br /&gt;
The third window contains again three areas, each of which can show different {{l|Category:Panels|panels}}: in this picture the {{l|Navigator Panel}}, the {{l|Tool Options Panel}} and the {{l|Layers Panel}} are active.&lt;br /&gt;
&lt;br /&gt;
You can access detailed descriptions of the other panels {{l|Category:Panels|here}}.&lt;br /&gt;
&lt;br /&gt;
==The Parameter and Time Track Panel==&lt;br /&gt;
[[File:params_etc.png|600px|thumb|Parameters and Time Track panels]]&lt;br /&gt;
The fourth and last window shows the {{l|Params Panel}}, where you can find detailed parameters and settings for the active element like colour, width, opacity, location and so on. To the right is the {{l|Timetrack Panel}} that allows you to create and modify {{l|waypoints}}.&lt;/div&gt;</summary>
		<author><name>Ratanes</name></author>	</entry>

	</feed>