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

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Canvas_Properties_Dialog&amp;diff=19007</id>
		<title>Canvas Properties Dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Canvas_Properties_Dialog&amp;diff=19007"/>
				<updated>2014-02-08T19:19:14Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Add description section heading so that TOC appears at top&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Canvas Properties Dialog}}&lt;br /&gt;
{{Category|Dialogs}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
[[Image:Canvas properties 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
This Canvas Properties dialog is used to establish the properties of the current main canvas.  If you have defined the SYNFIG_ENABLE_NEW_CANVAS_EDIT_PROPERTIES {{l|Environment Variables|environment variable}}, then this will automatically be displayed when you start a new project.  To change these parameters while working on a project, go to the {{l|Canvas_Menu_Caret|caret menu}}, select '{{l|Edit Menu|edit}}' and then 'properties'.  Or you can alternatively use the {{l|Keyboard Shortcuts|keyboard shortcut}} F8.&lt;br /&gt;
&lt;br /&gt;
In the main dialog you can set:&lt;br /&gt;
&lt;br /&gt;
#Canvas Info:&lt;br /&gt;
#* Name&lt;br /&gt;
#* Description&lt;br /&gt;
&lt;br /&gt;
== Image tab ==&lt;br /&gt;
In the '''Image''' tab you can set:&lt;br /&gt;
&lt;br /&gt;
#Image Size:&lt;br /&gt;
#* Width&lt;br /&gt;
#* Height&lt;br /&gt;
#* X Resolution&lt;br /&gt;
#* Y Resolution&lt;br /&gt;
#* Physical Width&lt;br /&gt;
#* Physical Height&lt;br /&gt;
#Image Area:&lt;br /&gt;
#* Top Left (x,y)&lt;br /&gt;
#* Bottom right (x,y) - Those parameters defining the Top Left and Bottom Right canvas corners relatively to the center of the coordinates.&lt;br /&gt;
&lt;br /&gt;
== Time tab ==&lt;br /&gt;
In the '''Time''' tab you can set:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas properties time 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
#Time Info:&lt;br /&gt;
#* Frames per second&lt;br /&gt;
#* Start Time (seconds)&lt;br /&gt;
#* End Time (seconds)&lt;br /&gt;
#* Duration (seconds)&lt;br /&gt;
&lt;br /&gt;
== Other tab ==&lt;br /&gt;
In the '''Other''' tab you can set:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas properties other 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Locks and Links:&lt;br /&gt;
#* Image Width&lt;br /&gt;
#* Image Height&lt;br /&gt;
#* Image Aspect&lt;br /&gt;
#* Image Span&lt;br /&gt;
#* Pixel Width&lt;br /&gt;
#* Pixel Height&lt;br /&gt;
#* Pixel Aspect&lt;br /&gt;
#Other:&lt;br /&gt;
#*Focus Point&lt;br /&gt;
&lt;br /&gt;
== Resizing the Canvas ==&lt;br /&gt;
In the '''Other''' tab, uncheck all of the Locks and Links:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas_Prop_for_resize.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Then edit Image Width and Height. This will resize the canvas, stretching it's contents in the process.&lt;br /&gt;
&lt;br /&gt;
== Expanding the Canvas ==&lt;br /&gt;
In the '''Other''' tab, check only Pixel Aspect in Locks and Links:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas Prop for expand.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Then edit Image Width and Height. This will expand the canvas, keeping it's contents at the same size but adding extra space at the top/bottom and left/right.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please note that since this dialog caused confusion, even among some very experienced people, here are some unofficial {{l|Image_Dimensions|thoughts}} about image dimensions.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Canvas_Properties_Dialog&amp;diff=19006</id>
		<title>Canvas Properties Dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Canvas_Properties_Dialog&amp;diff=19006"/>
				<updated>2014-02-08T19:18:10Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Add instructions to resize and to expand canvas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Canvas Properties Dialog}}&lt;br /&gt;
{{Category|Dialogs}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
[[Image:Canvas properties 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
This Canvas Properties dialog is used to establish the properties of the current main canvas.  If you have defined the SYNFIG_ENABLE_NEW_CANVAS_EDIT_PROPERTIES {{l|Environment Variables|environment variable}}, then this will automatically be displayed when you start a new project.  To change these parameters while working on a project, go to the {{l|Canvas_Menu_Caret|caret menu}}, select '{{l|Edit Menu|edit}}' and then 'properties'.  Or you can alternatively use the {{l|Keyboard Shortcuts|keyboard shortcut}} F8.&lt;br /&gt;
&lt;br /&gt;
In the main dialog you can set:&lt;br /&gt;
&lt;br /&gt;
#Canvas Info:&lt;br /&gt;
#* Name&lt;br /&gt;
#* Description&lt;br /&gt;
&lt;br /&gt;
== Image tab ==&lt;br /&gt;
In the '''Image''' tab you can set:&lt;br /&gt;
&lt;br /&gt;
#Image Size:&lt;br /&gt;
#* Width&lt;br /&gt;
#* Height&lt;br /&gt;
#* X Resolution&lt;br /&gt;
#* Y Resolution&lt;br /&gt;
#* Physical Width&lt;br /&gt;
#* Physical Height&lt;br /&gt;
#Image Area:&lt;br /&gt;
#* Top Left (x,y)&lt;br /&gt;
#* Bottom right (x,y) - Those parameters defining the Top Left and Bottom Right canvas corners relatively to the center of the coordinates.&lt;br /&gt;
&lt;br /&gt;
== Time tab ==&lt;br /&gt;
In the '''Time''' tab you can set:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas properties time 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
#Time Info:&lt;br /&gt;
#* Frames per second&lt;br /&gt;
#* Start Time (seconds)&lt;br /&gt;
#* End Time (seconds)&lt;br /&gt;
#* Duration (seconds)&lt;br /&gt;
&lt;br /&gt;
== Other tab ==&lt;br /&gt;
In the '''Other''' tab you can set:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas properties other 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Locks and Links:&lt;br /&gt;
#* Image Width&lt;br /&gt;
#* Image Height&lt;br /&gt;
#* Image Aspect&lt;br /&gt;
#* Image Span&lt;br /&gt;
#* Pixel Width&lt;br /&gt;
#* Pixel Height&lt;br /&gt;
#* Pixel Aspect&lt;br /&gt;
#Other:&lt;br /&gt;
#*Focus Point&lt;br /&gt;
&lt;br /&gt;
== Resizing the Canvas ==&lt;br /&gt;
In the '''Other''' tab, uncheck all of the Locks and Links:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas_Prop_for_resize.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Then edit Image Width and Height. This will resize the canvas, stretching it's contents in the process.&lt;br /&gt;
&lt;br /&gt;
== Expanding the Canvas ==&lt;br /&gt;
In the '''Other''' tab, check only Pixel Aspect in Locks and Links:&lt;br /&gt;
&lt;br /&gt;
[[File:Canvas Prop for expand.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Then edit Image Width and Height. This will expand the canvas, keeping it's contents at the same size but adding extra space at the top/bottom and left/right.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please note that since this dialog caused confusion, even among some very experienced people, here are some unofficial {{l|Image_Dimensions|thoughts}} about image dimensions.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Canvas_Prop_for_expand.png&amp;diff=19005</id>
		<title>File:Canvas Prop for expand.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Canvas_Prop_for_expand.png&amp;diff=19005"/>
				<updated>2014-02-08T19:11:20Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Locks and Links settings required in Canvas Properties to expand the canvas.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Locks and Links settings required in Canvas Properties to expand the canvas.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Canvas_Prop_for_resize.png&amp;diff=19004</id>
		<title>File:Canvas Prop for resize.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Canvas_Prop_for_resize.png&amp;diff=19004"/>
				<updated>2014-02-08T19:04:42Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Locks and Links settings required in Canvas Properties to performa a canvas resize.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Locks and Links settings required in Canvas Properties to performa a canvas resize.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:How_Synfig_Works&amp;diff=8475</id>
		<title>Dev:How Synfig Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:How_Synfig_Works&amp;diff=8475"/>
				<updated>2009-02-13T14:56:03Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Synfig-engine.png]]&lt;br /&gt;
&lt;br /&gt;
The diagram shows more or less how Synfig is currently organized. &amp;quot;V&amp;quot; stands for valuenodes, &amp;quot;L&amp;quot; for layers, &amp;quot;BL&amp;quot; for blank layer (completely transparent layer default background), &amp;quot;BM&amp;quot; for blend method.&lt;br /&gt;
&lt;br /&gt;
When Synfig needs to render a frame it starts by evaluating the valuenodes parameters of layers. If a valuenode is a Convert type then it evaluates its parameters.  This process works recursively, going all the way down to the leaf nodes, calculating their value, then calculating the value of their parent, and so on until reaching the root of the node tree.&lt;br /&gt;
&lt;br /&gt;
Note that valuenodes can be animated, meaning that they change value as animation time progresses. Since any leaf valuenode may have changed, the entire tree needs to be evaluated on each frame.&lt;br /&gt;
&lt;br /&gt;
Once a layer has the values for it's parameters, it renders the intended shape or effect onto a raster. A raster is an array of pixels, each pixel with its color/opacity. It doesn't carry any information about the vector shapes that it's representing, only their pixel data.&lt;br /&gt;
&lt;br /&gt;
Then comes blending. The raster result of the previous layers is combined with the current one according to the set blending method.  Some layers (transforms, distortions, etc) just modify the raster result of the previous layers and pass that on to the next layer, instead of blending.&lt;br /&gt;
&lt;br /&gt;
Note that a layer sees all the layers underneath as a single combined raster. That layer cannot distinguish the pixel data that comes from the next layer that's underneath, from pixel data from any other layer that's underneath.&lt;br /&gt;
&lt;br /&gt;
The distinction between vector and raster &amp;quot;worlds&amp;quot; is important (green background for vector, red for raster in the diagram). In vector world the objects are represented symbolically, with numbers and equations that describe their caracteristics. In raster world everything is represented in a concrete way, as pixel data.&lt;br /&gt;
&lt;br /&gt;
There needs to be a way to go from vector to raster world. This is called rasterization or rendering.  The layers (some of them that is) sit in between the two worlds, providing the rendering.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:How_Synfig_Works&amp;diff=8474</id>
		<title>Dev:How Synfig Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:How_Synfig_Works&amp;diff=8474"/>
				<updated>2009-02-13T14:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Added vector/raster world explanation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Synfig-engine.png]]&lt;br /&gt;
&lt;br /&gt;
The diagram shows more or less how Synfig is currently organized. &amp;quot;V&amp;quot; stands for valuenodes, &amp;quot;L&amp;quot; for layers, &amp;quot;BL&amp;quot; for blank layer (completely transparent layer default background), &amp;quot;BM&amp;quot; for blend method.&lt;br /&gt;
&lt;br /&gt;
When Synfig needs to render a frame it starts by evaluating the valuenodes parameters of layers. If a valuenode is a Convert type then it evaluates its parameters.  This process works recursively, going all the way down to the leaf nodes, calculating their value, then calculating the value of their parent, and so on until reaching the root of the node tree.&lt;br /&gt;
&lt;br /&gt;
Note that valuenodes can be animated, meaning that they change value as animation time progresses. Since any leaf valuenode may have changed, the entire tree needs to be evaluated on each frame.&lt;br /&gt;
&lt;br /&gt;
Once a layer has the values for it's parameters, it renders the intended shape or effect onto a raster. A raster is an array of pixels, each pixel with its color/opacity. It doesn't carry any information about the vector shapes that it's representing, only their pixel data.&lt;br /&gt;
&lt;br /&gt;
Then comes blending. The raster result of the previous layers is combined with the current one according to the set blending method.  Some layers (transforms, distortions, etc) just modify the raster result of the previous layers and pass that on to the next layer, instead of blending.&lt;br /&gt;
&lt;br /&gt;
Note that a layer see all the layers underneath as a single combined raster. That layer cannot distinguish the pixel data that comes from the next layer that's underneath, from pixel data from any other layer that's underneath.&lt;br /&gt;
&lt;br /&gt;
The distinction between vector and raster &amp;quot;worlds&amp;quot; is important (green background for vector, red for raster in the diagram). In vector world the objects are represented symbolically, with numbers and equations that describe their caracteristics. In raster world everything is represented in a concrete way, as pixel data.&lt;br /&gt;
&lt;br /&gt;
There needs to be a way to go from vector to raster world. This is called rasterization or rendering.  The layers (some of them that is) sit in between the two worlds, providing the rendering.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:How_Synfig_Works&amp;diff=8473</id>
		<title>Dev:How Synfig Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:How_Synfig_Works&amp;diff=8473"/>
				<updated>2009-02-13T14:36:19Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Small explanation of the internals of Synfig&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Synfig-engine.png]]&lt;br /&gt;
&lt;br /&gt;
The diagram shows more or less how Synfig is currently organized. &amp;quot;V&amp;quot; stands for valuenodes, &amp;quot;L&amp;quot; for layers, &amp;quot;BL&amp;quot; for blank layer (completely transparent layer default background), &amp;quot;BM&amp;quot; for blend method.&lt;br /&gt;
&lt;br /&gt;
When Synfig needs to render a frame it starts by evaluating the valuenodes parameters of layers. If a valuenode is a Convert type then it evaluates its parameters.  This process works recursively, going all the way down to the leaf nodes, calculating their value, then calculating the value of their parent, and so on until reaching the root of the node tree.&lt;br /&gt;
&lt;br /&gt;
Note that valuenodes can be animated, meaning that they change value as animation time progresses. Since any leaf valuenode may have changed, the entire tree needs to be evaluated on each frame.&lt;br /&gt;
&lt;br /&gt;
Once a layer has the values for it's parameters, it renders the intended shape or effect onto a raster. A raster is an array of pixels, each pixel with its color/opacity. It doesn't carry any information about the vector shapes that it's representing, only their pixel data.&lt;br /&gt;
&lt;br /&gt;
Then comes blending. The raster result of the previous layers is combined with the current one according to the set blending method.  Some layers (transforms, distortions, etc) just modify the raster result of the previous layers and pass that on to the next layer, instead of blending.&lt;br /&gt;
&lt;br /&gt;
Note that a layer see all the layers underneath as a single combined raster. That layer cannot distinguish the pixel data that comes from the next layer that's underneath, from pixel data from any other layer that's underneath.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Synfig-engine.png&amp;diff=8472</id>
		<title>File:Synfig-engine.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Synfig-engine.png&amp;diff=8472"/>
				<updated>2009-02-13T13:58:45Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Diagram of the internal organization of Synfig's valuenodes, layers, etc.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagram of the internal organization of Synfig's valuenodes, layers, etc.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=8470</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=8470"/>
				<updated>2009-02-13T05:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Adding vector object concept.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''''Warning''''': We need more people working on the code if we are going to be able to achieve all the feature requests.&lt;br /&gt;
&lt;br /&gt;
Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/TODO etl], [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/TODO synfig] and [https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
Please clean this section up as desired.&lt;br /&gt;
&lt;br /&gt;
* A different color dialog for picking/changing colors easier.&lt;br /&gt;
** A color wheel like inkscape has (or the same) [done]&lt;br /&gt;
** Swatch menu from gimp with .gpl files.&lt;br /&gt;
* Workflow improvements, like content help and ui-refinement.&lt;br /&gt;
** set the fine line between design and animation work.&lt;br /&gt;
** Greet the user at startup, give hints and help in the ui to better the usability and user-experience.&lt;br /&gt;
* test synfig cross-platform (Linux, Windows, Mac)&lt;br /&gt;
* Installer for windows [done]&lt;br /&gt;
* Pluggable App (run from memory stick)&lt;br /&gt;
* make a short film about synfigs capabilitys in a starwars kind of spaceship setting as promo video about 3 minutes long.&lt;br /&gt;
* Sound layer&lt;br /&gt;
* full tablet support&lt;br /&gt;
* small set of vector contend for fast animation results&lt;br /&gt;
* Help is available as pdf-file and distributed with the program&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Input:'''&lt;br /&gt;
* Import rastergraphics png, jpg, tif [done]&lt;br /&gt;
* Import vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to animated gif [done]&lt;br /&gt;
* Render output to png, bmp, OpenEXR [done] &lt;br /&gt;
* Export vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
== Interchangeable/customizing Splash screen ==&lt;br /&gt;
[3] GIMP has this feature of letting users [http://docs.gimp.org/2.2/en/using-customize-splashscreen.html|customize GIMP's splash screen]. GIMP looks for &amp;lt;code&amp;gt;'''samples'''&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;'''.gimp-2.x'''&amp;lt;/code&amp;gt; then randomly picks a picture from it to become the spash image.&lt;br /&gt;
&lt;br /&gt;
This will also help GNU/Linux distro, like Ubuntu, to adopt Synfig and put their logo on the splash screen.&lt;br /&gt;
&lt;br /&gt;
Also, official Synfig distribution can pack sample arts created by other artists to be randomly displayed -- like the synfig.org's title's background image.&lt;br /&gt;
&lt;br /&gt;
== Verbosity levels for error output ==&lt;br /&gt;
&lt;br /&gt;
Synfigstudio needs verbosity levels for the error output. Levels are info, warning and error. Make sure, to spew out only errors when something nasty happens. If someone wants to know all what happens in synfigstudio, the user should activate a higher level of verbosity with the command line switch --verbose=all,info,warning&lt;br /&gt;
&lt;br /&gt;
== Usage screen for new users ==&lt;br /&gt;
&lt;br /&gt;
Synfig and Synfigstudio need a usage screen, which helps a new user to type in the right syntax on the command line. Any switch not known to the program should point to the usage screen. On the bottom of the usage screen could be a hint: &amp;quot; For more help use synfig --help&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Keyboard shortcuts for panning ==&lt;br /&gt;
&lt;br /&gt;
The navigation and canvas windows need shortcut keys that pan the canvas view horizontally and vertically. Probably just the arrow keys would work for this, as well as the home/end/pageup/pagedown keys. Ctrl and shift variants could make the panning more or less.&lt;br /&gt;
: You can pan with a middle mouse button. --[[User:Zelgadis|Zelgadis]] 00:59, 24 October 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Linking Zoom layer to Paste Canvas ==&lt;br /&gt;
&lt;br /&gt;
[3] It is impossible to link Center of Zoom layer to Origin of Paste Canvas without exporting a value. It often needed for pans &amp;amp; zooms. Suggestion: rename &amp;quot;Center&amp;quot; parameter of Zoom Layer to the &amp;quot;Origin&amp;quot;. Will improve the workflow. --[[User:Zelgadis|Zelgadis]]&lt;br /&gt;
&lt;br /&gt;
== Convert Strings ==&lt;br /&gt;
[4] It could be very good to have feature to represent Convert sequences as strings and vice versa - make convert sequences from strings. Example: To produce this convert sequence: &lt;br /&gt;
&lt;br /&gt;
[[Image:WishList-ConvertStrings.png]]&lt;br /&gt;
&lt;br /&gt;
I just right-click on &amp;quot;Origin&amp;quot; parameter and choosing &amp;quot;String Convert&amp;quot; menu item. In the appeared dialog I just entering: &amp;quot;=Composite(Scale(x, Switch(scalar, 1.0, 0)), y)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Also if I clicking on the parameter already containing convert sequence and choosing &amp;quot;String Convert&amp;quot;, it shows string representation of current convert sequence with an ability to edit.&lt;br /&gt;
&lt;br /&gt;
This feature will make possible to easy copy convert sequences from one parameter to another.  --[[User:Zelgadis|Zelgadis]] 03:46, 2 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Non scalable timeline ==&lt;br /&gt;
[3] It should be useful for me to have non scalable timeline. It's hard to set timing when the distance between frames is always different in different documents and in different situations. Suggestion: make a non-scalable mode for timeline, where 1 second interval is always the same. Will improve the workflow. --[[User:Zelgadis|Zelgadis]]&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in [[Sewing BLines]], when linking red tangent to yellow they are placed opposite against each other. This is normal from the program's point of view, but not normal for new users. Even more, to avoid this effect user needs to made some complex steps (see [[Sewing BLines#Solution]]). It takes a lot of time if we vahe lot of verticles to sew their tangents.&lt;br /&gt;
&lt;br /&gt;
Suggestion:&lt;br /&gt;
* When linking tangents with the same color, program should act as usual.&lt;br /&gt;
* When linking tangents with different color program should automaticaly add Convert-&amp;gt;Scale (-1) to avoid their opposite placement.&lt;br /&gt;
To allow linking two tangents in opposite position, I suggest to add a new menu option for tangents &amp;quot;Link Opposite&amp;quot;. When linking two tangents with this option:&lt;br /&gt;
* When linking tangents with the different color, program should act as it acts now - no additional converts added.&lt;br /&gt;
* When linking tangents with the same color program should automaticaly add Convert-&amp;gt;Scale (-1) to plcae them opposite against each other.&lt;br /&gt;
&lt;br /&gt;
--[[User:Zelgadis|Zelgadis]]&lt;br /&gt;
&lt;br /&gt;
==Movement blur effect==&lt;br /&gt;
To make the motion most realistic for movies, it should be possible to activate in the render dialog the option to smear the border of all objects, which move faster than a given value. For example, if a ball gets shot over the canvas/rendering-screen with speed over 50 px/frame it should have a blurry streak attached. This effect could be applied only at rendering time as an after-effect. --[[User:SvH|SvH]] 09:50, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:There is a [[Motion Blur Layer]] that you can apply to the entire document or to the layers you want. It allows to turn the blur effect on and off during animation. I think it is more flexible that your proposal. [[User:Genete|Genete]] 10:13, 28 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Morph sets==&lt;br /&gt;
This feature is similar to some other suggestions below, just with another way to approach. In animations are many movements, which can be put in some kind of library, to make use of at a later time. For example, movements to animate the key moments of a mouth, sampling syllables. For vector graphics, it should be possible to define some key points, which move just a small amount of space, to form another syllable. These syllables in this example, should be stored in a drop down list, to be able to select them for the key time on the timeline.&lt;br /&gt;
A morph-set for walking-left-to-right is different from a morph-set for a mounth, which has as options a,e,i,o,u,bah-disgust,happy-smile. The morph-set has to be stored as vector coordinates in a relative way(offset), e.g. X1=+212,+34;X2=-56,-23;X3=+3,-88;&lt;br /&gt;
&lt;br /&gt;
To make use of the morph-set for the mouth, you have to define first, which vector points in your drawn mouth, correspond to the key-points of your morph-set. X1, X2, X3, Xn&lt;br /&gt;
&lt;br /&gt;
--[[User:SvH|SvH]] 06:53, 27 May 2008 (EDT)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Render time approximation==&lt;br /&gt;
Synfigstudio should get a button in the render dialog, which calculates the total render time for the actual settings (frames per second, length of the film, resolution, output format) It should testrender 1 picture, when the amount of total frames is below 1000. Over 1000 frames, it should testrender 10 pictures for more precise calculation.&lt;br /&gt;
&lt;br /&gt;
--[[User:SvH|SvH]] 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
==Smartrendering==&lt;br /&gt;
I have made 25,000 small png-pictures with my 800Mhz computer in about 45 minutes. Synfigstudio did calculate each single frame of it. Nothing changed in this picture, so it does only need to get written to disk for the amount of pictures, until the next change (animation) has an effect on the output picture. This should save time for bigger projects with thousands of pictures. With smartrendering it is also possible to predict the total amound of space in Megabytes (Mibibytes) of the final render of the movie. It should calculate how much it needs and see, if enough space is free on the harddisk before the rendering get started.&lt;br /&gt;
&lt;br /&gt;
--[[User:SvH|SvH]] 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== get_color method in text and radial blur ==&lt;br /&gt;
&lt;br /&gt;
[5] Without get_color method distorion produces artifacts &lt;br /&gt;
[http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1831355&amp;amp;group_id=144022&amp;amp;atid=757416 bug  1831355]. So I would like to get this problem fixed before doing something else. --[[User:AkhIL|AkhIL]] 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Full functional of group dialog ==&lt;br /&gt;
&lt;br /&gt;
[5] Group dialog is broken now [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1796833&amp;amp;group_id=144022&amp;amp;atid=757416 bug 1796833]. So we should get old features work right before making new one. --[[User:AkhIL|AkhIL]] 22:41, 1 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== import/export .swf files ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== import/export .svg frames sequence, and/or .svg animations ==&lt;br /&gt;
&lt;br /&gt;
very important productivity feature&lt;br /&gt;
&lt;br /&gt;
== a realtime .sif synchronized text window ==&lt;br /&gt;
&lt;br /&gt;
just like the xml editor of Inkscape, or the html editor in Dreamweaver (this is hugelly useful for productivity)&lt;br /&gt;
&lt;br /&gt;
I thinks scripting API can be implement in this way. For example you make XML DOM like implementation for python which alows to change DOM tree from python code and see chenges in canvas. By this way you can implement import/export scripts. Automation scripts. And a lot of different things. Even synchronization of animation between blender and synfig. --[[User:AkhIL|AkhIL]] 23:10, 26 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== choosing colour from gimp/inkscape palettes ==&lt;br /&gt;
&lt;br /&gt;
very useful when you need some colour comformity of what you're doing &lt;br /&gt;
&lt;br /&gt;
== Good high-level documentation of the source code ==&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found [[Releases/DeveloperPreview#Support | here]]). --[[User:Genete|Genete]] 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== Mathematical functions to animate ==&lt;br /&gt;
(2/4) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
[[User:ajotatxe|ajotatxe]] 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) [[User:Pxegeek|Pxegeek]] 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
: I'd also rate it with a (4) (and updated the rating accordingly), not for this special case, but to make many workarounds much easier.  Simulating [Parabolic Shot|free fall], for example, would be a lot easier with real formulas.  I don't know, though how easy it will be to implement, maybe waiting for a scripting interface to be implemented is better than hacking this feature in an ad-hoc manner.  --[[User:Rubikcube|Rubikcube]] 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Warning about editing bizarre things in animate editing mode ==&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
[[User:ajotatxe|ajotatxe]] 20 November 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bones with FK &amp;amp; IK + grouping of objects into folders ==&lt;br /&gt;
&lt;br /&gt;
(5) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
== Animated sketch ==&lt;br /&gt;
&lt;br /&gt;
(5) it would be great, if the tool Sketch was animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&lt;br /&gt;
: For now as a workaround we could use animation program called Pencil. See [[Related Projects]] page. --[[User:Zelgadis|Zelgadis]]&lt;br /&gt;
&lt;br /&gt;
: So, currently it could be achieved by using other software, but integration with synfig is poor, cause it requires importing a movie through a sequence of images. This is not intuitive and not obvious for new users. It will be good if synfig will have it implemented like [url=http://www.blender.org/development/release-logs/blender-248/grease-pencil/]blender's Grease Pencil[/url]. This feature will improve workflow, make synfig usable for frame-by frame animation (it is intuitive way of learning animation and powerful tool for producing preproduction work like animatic). --[[User:Zelgadis|Zelgadis]]&lt;br /&gt;
&lt;br /&gt;
: It would be nice to also implement the onion peel feature, where you can see the frame before or after, and/or selectable keyframes if this is included. An example can be seen in the program Pencil--[[User:richardwad1|richardwad1]]&lt;br /&gt;
&lt;br /&gt;
== Duck for Amount value in Zoom layer ==&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --[[User:Zelgadis|Zelgadis]] 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- [[User:Dooglus|dooglus]] 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --[[User:Zelgadis|Zelgadis]] 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::[[Convert#Logarithm|Logarithm]] convert type for real parameters exists since svn 2034. [[User:Genete|Genete]] 10:17, 30 August 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Automatic colour palette optimisation ==&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arbitrary Color Channels ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
== Autorecover History ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
== Layer Convert ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - [[How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?]] - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) [[User:SnapSilverlight|Snap]] 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
== Vector fill bucket ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new [[Region Layer|region layer]]). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
*Inkscape has a very innvative version of this tool. Maybe you can just grab the code from there and integrate it in synfig? --[[User:SvH|SvH]] 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== [[redraw tool]] ==&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See [[UI Reloaded]] for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for [[Smooth Move Tool]] ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
== Networkability ==&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
== Intuitive tangent modification ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
-Agreed; blender does this with its IPO curves, and it's a really efficient way to work.&lt;br /&gt;
&lt;br /&gt;
== Plugin API ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a [[Wiki Wish List|Wiki Wish]] for documentation, depending on how much has already been completed. [[User:SnapSilverlight|Snap]] 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== Python support ==&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ([[User:Snap|SnapSilverlight]]) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
I suppose to join this request with [[Wish_list#a_realtime_.sif_synchronized_text_window]]. We can implement python access to XML DOM and write XML Editor in python. --[[User:AkhIL|AkhIL]] 06:54, 30 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== mod_synfig ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
== synfig nsplugin ==&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Align function ==&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
== Improved SVG import ==&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. [[User:KMeist|KMeist]] 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
[[svg2synfig]] could be incorporated using an open source XSLT processor. --[[User:Dmd|Dmd]] 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Gradient Paint Tool ==&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--[[User:Triclops|Triclops]] 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bone Animation Tools ==&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--[[User:Ziolive|ziolive]] 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --[[User:SvH|SvH]] 01:33, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== AVI Backgrounds ==&lt;br /&gt;
Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
: Already implemented for ffmpeg pipeline of ppm in svn r2161 [[User:Genete|Genete]] 05:36, 9 November 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Character tool on Tool Options Dialog ==&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
== Collect for Publication ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing animations in source form.&lt;br /&gt;
&lt;br /&gt;
== Object Library ==&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
:I'd suggest this should be public domain and distributed by openclipart.org -- --[[User:PaulWise|pabs]]&lt;br /&gt;
&lt;br /&gt;
== Flash Export ==&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.[[User:Conceit|Conceit]]&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. [[User:cdj05a|cdj05a]]&lt;br /&gt;
&lt;br /&gt;
(4[me]/5[others]) Definitely would love flash export. There is no well maintained Flash animation studio that is Open Source. To have Synfig become that along with all that it already is would be absolutely wonderful. You'd also possibly add to your user base all the flash animators out there that don't want to pay Adobe. Some people would only want it for the flash animation hence the 5 for others. [[User:jblandrum|jblandrum]]&lt;br /&gt;
&lt;br /&gt;
== Single window ==&lt;br /&gt;
&lt;br /&gt;
Depending on individual desktop setups, single window is sometimes preferable to many  windows. Can we have a single-window option?&lt;br /&gt;
&lt;br /&gt;
Also, even with many windows, Windows-users especially might find it better if all the windows only appeared as a single one on the taskbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export Wizard ==&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
[[User:Hiddenghost|hiddenghost]]&lt;br /&gt;
&lt;br /&gt;
== Using Synfig as a portable app ==&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
[[User:Zenoscope|zenoscope]]&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages [[User:PaulWise|pabs]] 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow organize child valuenodes in an hierarchy ==&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. At the moment they are reordered in alphabetical order which is useless and annoying.&lt;br /&gt;
&lt;br /&gt;
== Triangle sliders to be always visible ==&lt;br /&gt;
(3) I would like that the triangle sliders from [[Colors Dialog]] and [[Gradient Editor Dialog]] were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --[[User:Genete|Genete]] 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
== XICC support ==&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Area to Edit ==&lt;br /&gt;
&lt;br /&gt;
An option like blender - select area to update would be nice, so the only part of the image that updates when you add or change something is in the selected area&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- [[User:Dooglus|dooglus]] 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Histograms ==&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- [[User:Dooglus|dooglus]] 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Sound Layer ==&lt;br /&gt;
&lt;br /&gt;
(4) It would be a very good improvement if the sound system were implemented into synfig in [[Sound Layer | this]] way. --[[User:Genete|Genete]] 07:46, 8 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
== Rearrange the view of waypoints for Canvas param ==&lt;br /&gt;
As reported in [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1888858&amp;amp;group_id=144022&amp;amp;atid=757416 Bug #1888858] waypoints are not displayed for canvas switch events.&lt;br /&gt;
I suggest to rearrange waypoints display according to [[Media:Canvas_prop.png|this scheme]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Width weigths ==&lt;br /&gt;
Is it possible to add &amp;quot;weigths&amp;quot; for widths? ^_^ I.e. width changes not all the way along the segment. Maybe something like a duck on bline which indicates the region where the width of current vertex isn't changed.&lt;br /&gt;
[[Media:width-proposal.png|Illustration here.]]&lt;br /&gt;
&lt;br /&gt;
More ideas around this concept in [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-04-16.log this conversation]. Although the log of that day is very interesting the lines related to this idea are from 22:38 to 23:43. [[User:Genete|Genete]] 17:51, 16 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improved Colour Dialog ==&lt;br /&gt;
How easy is it to stick in a colour square/wheel? Messing with sliders is somewhat obstructive.&lt;br /&gt;
&lt;br /&gt;
== Insert Waypoints ==&lt;br /&gt;
A button to create a waypoint for every selected duck, in its current position. Moving each duck up a bit and down again quickly gets tedious.&lt;br /&gt;
:If the duck in question has already a waypoint then you don't need to move it to create a new waypoint. Just select the corresponding parameter in your child list panel and select 'Add Waypoint' from the right click context menu over the parameter. No need to have the duck selected. If you want to freeze the entire bline just do that over the Bline Point List. [[User:Genete|Genete]] 07:48, 29 April 2008 (EDT)&lt;br /&gt;
::Yes, but it would be nice to have opportunity to add waypoint to parameer which not have any ducks yet (i.e. non-animated parameter). --[[User:Zelgadis|Zelgadis]] 08:33, 29 April 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automatically split tangeants ==&lt;br /&gt;
&lt;br /&gt;
Holding shift while moving tangeant ducks should automatically split them. They can be rejoined if necessary through the context menu as they are now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A way to link params without exporting ==&lt;br /&gt;
I need a way to link params with different names without exporting. It is possible to achive by manualy editing of sif file. But inposible by gui. I will be nice to have linking by drag-n-drop. Or just by selecting reference param, pushing copy button, selecting another param and bushing link button. ---[[User:AkhIL|AkhIL]] 21:47, 30 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Allow select the origin of rotation when using the Rotate Tool ==&lt;br /&gt;
&lt;br /&gt;
It can be initially set to the geometrical center of the selected ducks or the gravity center depending of the selected checkboxes in the tool options panel. Later the user could move it before perform the rotation operation. It is a waste of time to rotate and translate the ducks every time a rotation manipulation is done. ---[[User:Genete|Genete]] 12:16, 4 June 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:I was adding this request at the same time than you Genete :-). Here is an example of how this issue is solved in Inkscape:&lt;br /&gt;
&lt;br /&gt;
:[[Image:rotate-tool-inkscape.png|center]]&lt;br /&gt;
&lt;br /&gt;
:---[[User:Yaco|Yaco]]&lt;br /&gt;
&lt;br /&gt;
== Labels for rows in the Timetrack window [1]==&lt;br /&gt;
The rows in the timetrack palette and the parameters palette are obviously related, doing a scroll in the Timetrack window with the mouse makes the parameters window scroll. &lt;br /&gt;
&lt;br /&gt;
It's be nice to have the rows labeled with the corresponding label from the parameters palette, and to have the &amp;quot;list&amp;quot; parameter at the top of the time track window, with the possibility of dragging them around to move them up or down, personally I would prefer the &amp;quot;list&amp;quot; to be up the top so I can see the keyframes I'm making. &lt;br /&gt;
&lt;br /&gt;
[[Image:Stencil 3.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
:---[[User:zenoscope|zenoscope]]&lt;br /&gt;
&lt;br /&gt;
:Is this what you want? Just arrange the dock able dialogs as you need. [[User:Genete|Genete]] 10:03, 30 July 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:[[Image:Params-TimeTrack.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, that works. Cheers :) :---[[User:zenoscope|zenoscope]]&lt;br /&gt;
&lt;br /&gt;
== Non-symetrical but &amp;quot;smooth&amp;quot; tangents on ducks ==&lt;br /&gt;
Add another mode for duck tangent, where the tangent can have different radius, but keep the same angle. (a &amp;quot;split tangents (radius only)&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dockable windows ==&lt;br /&gt;
The current GUI is a pain in the rear by not complete covering the desktop and it's showing 5 tabs instead of  usual one tab so it's frustrating to switch windows if you running more than one software. (windows version)&lt;br /&gt;
&lt;br /&gt;
:--[[User:super animator|super animator]]&lt;br /&gt;
&lt;br /&gt;
== Combining the installations files ==&lt;br /&gt;
This is the most common problem that the user will face when trying to running program for the first time since the user needs to install 4 files instead of one. This common problem needs to be fixed.&lt;br /&gt;
&lt;br /&gt;
:--[[User:super animator|super animator]]&lt;br /&gt;
&lt;br /&gt;
== A Particle Tool/Particle Object Editor ==&lt;br /&gt;
I  thought it might be interesting to add a Particle tool that is intuitive. Genete's script is amazing and I am sure I will do a lot of things with it once I have a chance to sit down and figure it out, but if there were a way to make it into tool with all the settings on sliders, it would be much easier. His script adds endless possibilities of nice effects to make animations look better. I personally rate this rather high. 3.5/5&lt;br /&gt;
&lt;br /&gt;
:--[[User:richardwad1|richardwad1]]&lt;br /&gt;
&lt;br /&gt;
== A programation language as code behind like python, ruby or any ==&lt;br /&gt;
Code behind should be important to program the animation or events associated, programers and designers could work in a colaborative workspace and make applications with richfull content on desktop applicactions or web applications like expression blend or macromedia flash CS.&lt;br /&gt;
&lt;br /&gt;
:--[[User:nickholai|nickholai]]&lt;br /&gt;
&lt;br /&gt;
== Embedding animation on web applications ==&lt;br /&gt;
Like Macromedia Flash, it seems to require a plug in for internet explorer or firefox diferent as silverlight or flash, open source and &amp;quot;software libre&amp;quot; projects are working on animation but using the flash plug in, this wish needs a free plug in.&lt;br /&gt;
&lt;br /&gt;
:--[[User:nickholai|nickholai]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems a bit confusing; why do you want a plug in for synfig? When we add the import and export swf. file feature, it will use the flash plug in. Besides the flash player program is free, so you don't have to pay anything.  I find that this feature is useless until you explain to us better why you think this software needs a plug-in.&lt;br /&gt;
&lt;br /&gt;
Create a thread in the synfig forum if you want to continue to talk about this. We're listening.&lt;br /&gt;
:--[[User:super animator|super animator]]&lt;br /&gt;
&lt;br /&gt;
== Split Tangent indicator ==&lt;br /&gt;
&lt;br /&gt;
Its hard to tell if a tangent is split or not without clicking on it (either to use the context menu, or move a duck). All of the ducks should change to another shape (eg a square) for a quick visual indication of a ducks state.&lt;br /&gt;
&lt;br /&gt;
:---[[User:zenoscope|zenoscope]]&lt;br /&gt;
&lt;br /&gt;
== Guide lines ==&lt;br /&gt;
&lt;br /&gt;
Guide lines that can be dragged from the side (like in the Gimp) would be very &lt;br /&gt;
useful.&lt;br /&gt;
:---[[User:zenoscope|zenoscope]]&lt;br /&gt;
&lt;br /&gt;
== Progress indicators ==&lt;br /&gt;
&lt;br /&gt;
Eg % complete in opening file, pop-up window which indicates how many frames are rendered of a render, eg &amp;quot;rendering 10 of 999&amp;quot; that can be closed/ignored if needed. &lt;br /&gt;
:---[[User:zenoscope|zenoscope]]&lt;br /&gt;
&lt;br /&gt;
== Improve the Timeline ==&lt;br /&gt;
&lt;br /&gt;
I know, this is one hell of a wish, but, as in all, i think that is best if you think in the ideals conditions and then you downgrade into what is possible to achieve in a reasonable period of time.&lt;br /&gt;
&lt;br /&gt;
:D greetings!!&lt;br /&gt;
&lt;br /&gt;
[4] Normal mode // [4] Layer mode // [4] Secuence mode &lt;br /&gt;
&lt;br /&gt;
.I think that this modes are three diferent windows layout, therefore the hability to create new and save different windows layout, should be the first to do in order to achieve this three modes.&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 [[User:Belifilmaker|Belifilmaker]]&lt;br /&gt;
[[Image:Timeline-normal-mode-explained.jpg|left|thumb|800px]]&lt;br /&gt;
[[Image:Timeline-layer-mode-explained.jpg|left|thumb|800px]]&lt;br /&gt;
[[Image:Timeline-secuence-mode-explained.jpg|left|thumb|800px]]&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
[[User:Zenoscope|Zenoscope]]&lt;br /&gt;
&lt;br /&gt;
== Vector Objects ==&lt;br /&gt;
Represent objects (ie. circles, rectangles, regions, outlines, etc) as a new type of element. These objects exist as childs of some layer. The layer then takes care of rendering these objects to a raster. Currently layers do both things, represent objects and render them.&lt;br /&gt;
&lt;br /&gt;
Having objects as a seperate entity would allow defining operations between them. For example:&lt;br /&gt;
* Take two region objects and find the union of their regions. This would produce a vector representation of the resulting region (ie. Bline) which in turn can be used for other operations (ie. link vertex to Bline).&lt;br /&gt;
* Apply transformation to a vector object producing a vector object as a result which can be further processed.&lt;br /&gt;
* Trace a [[Media:Smooth_silhoutte.png|smooth silhoutte]] around a set of vector objects.&lt;br /&gt;
* Slice an animated vector object into pieces and be able to move the pieces around (while preserving the original animation). Would be useful for reflection on a broken glass effect.&lt;br /&gt;
&lt;br /&gt;
:---[[User:Yoyobuae|Yoyobuae]]&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Smooth_silhoutte.png&amp;diff=8469</id>
		<title>File:Smooth silhoutte.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Smooth_silhoutte.png&amp;diff=8469"/>
				<updated>2009-02-13T05:16:24Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Smooth silhoutte tracing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Smooth silhoutte tracing.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Smooth_silhoutte.sifz&amp;diff=8468</id>
		<title>File:Smooth silhoutte.sifz</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Smooth_silhoutte.sifz&amp;diff=8468"/>
				<updated>2009-02-13T03:10:39Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Tracing with a smooth curve the silhoutte of shapes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tracing with a smooth curve the silhoutte of shapes&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=People&amp;diff=6606</id>
		<title>People</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=People&amp;diff=6606"/>
				<updated>2008-04-08T01:53:40Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Adding myself to the People page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;!-- ALPHABTICAL ORDER PLEASEE!!! --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DILOXYN --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Diloxyn.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[http://synfig.org/FAQ#Why_doesn.27t_dyloxin_talk_on_the_Synfig_IRC_channel.3F Dyloxin]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
dyloxin is a bot that sits in the [[Communication|Synfig IRC channel]] and stores the [[Communication|IRC logs]], not a human. It has no commands, so you won't get any response out of it either.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- DOOGLUS --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Dooglus2.jpg|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User: dooglus | dooglus]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
He's an alien, a legal alien, he's an Englishman in New York.  Or Czechoslovakia.  Or some such.  Dooglus is the resident chief programmer and greatest contributer to Synfig since it's release to GPL (1500+ commits and going strong).  He favours Linux as an OS, but has been known to run Windows on occasion.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- GENETE --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Genete-2.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Genete|Genete]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- ICARUS --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Factor.gif|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:factor|Icarus Factor]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- KIBI --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:KiBi.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;KiBi&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- PABS --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Pabs3.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:PaulWise|pabs]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Helping out with synfig since it was GPLed. Sysadmin, occasional coder, wiki editor, not much of an artist.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- PIXELGEEK --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Pixelgeek-2.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:pxegeek|Pixelgeek]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
He's an alien, a legal alien, he's an Englishman in New York.  Or Oregon.  Or some such. Ask him questions about how Synfig works under Windows.  &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- RORE --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Avatar_rore.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:rore|Rore]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- Ulrikboden --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Magnifiedulrik.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Ulrik|Ulrikboden]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- YACO --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Yaco.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Yaco|Yaco]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''This is just an example, someone EDIT THIS!!'''. A great person, helps a lot with the project. Love fishing. Use to make sandwiches. Try not to cry.Try not to cry.Try not to cry.Try not to cry.Try not to cry.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- Yoyobuae --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:yoyobuae.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;[[User:Yoyobuae|Yoyobuae]]&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
An occasional contributer with a couple of submitted patches here and there.  Still learning to handle himself with the code, but willing to answer any questions to the best of his knowledge. Also a novice artist, mainly interested dragons, birds and furry art in general.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!-- You! --&amp;gt;&lt;br /&gt;
&amp;lt;tr syle=&amp;quot;border-bottom: 2px solid #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:none.png|72px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:justify; border-left: 5px solid #eee&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:120%; padding:4px; margin-bottom:10px; vertical-align:top; border-bottom:1px solid #ccc;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Your name here!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
'''You. Yes, you, my dear reader.''' If you contribute to the project, please join with us into making this possible. We do need your help.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Also semi-frequent visitors - [[User:Zelig|Zelig]],[[User:Atrus|Atrus]],[[User:Madsen|Madsen]], [[User:Bombe |Bombe]], TMM, Tokyo, Zipola, [[User:zotz|zotz]], [[User:Omry|Omry]], [[User:Riggzy|Riggzy]], Zelgadis, AkHil.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Yoyobuae.png&amp;diff=6604</id>
		<title>File:Yoyobuae.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Yoyobuae.png&amp;diff=6604"/>
				<updated>2008-04-08T01:52:08Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: my picture =)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;my picture =)&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:New_Animation_Tools&amp;diff=6483</id>
		<title>Dev:New Animation Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:New_Animation_Tools&amp;diff=6483"/>
				<updated>2008-04-05T21:17:14Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: A new Wiki page for suggesting a new animation tool ideas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Animation Tools on Synfig ==&lt;br /&gt;
It may sound a bit harsh, but for a &amp;quot;2d vector animation studio&amp;quot; Synfig Studio has far too few and far too simple animation tools.  Only the first five (Normal, Smooth move, Scale, Rotate and Mirror) in the tool box can do some sort of animation.&lt;br /&gt;
&lt;br /&gt;
IMHO this needs  to change.  So I started thinking about what new tools would be useful for animation.&lt;br /&gt;
&lt;br /&gt;
== Motion Tool ==&lt;br /&gt;
The name says it all, a tool designed to easily add motion to any of Synfig's objects.&lt;br /&gt;
&lt;br /&gt;
At the moment one of the first five tools is used to move things around in animation mode in order to create waypoints, and therefore defining the animation.  While using Synfig I've notice a few things:&lt;br /&gt;
&lt;br /&gt;
* Having to jump all around the timeline&lt;br /&gt;
* Guess estimating how fast/slow will the motion be&lt;br /&gt;
* Problems trying to simulate motions in specific patterns (ie. Circular)&lt;br /&gt;
&lt;br /&gt;
Taking this into consideration the Motion Tool could work like this:&lt;br /&gt;
&lt;br /&gt;
* Only set the time to the start of the motion, the tool inserts waypoints further down the timeline automatically&lt;br /&gt;
* Either type in the speed on the Tool Options panel, or have a graphical representation of it (ducks perhaps)&lt;br /&gt;
* Allow the motion to describe an arbitrary path, the tool calculates the right position, time and number of waypoints to insert&lt;br /&gt;
* Optionally, specify a certain pattern for the motion to follow (ie. Circular)&lt;br /&gt;
&lt;br /&gt;
== Morph tool ==&lt;br /&gt;
A tool that can easily morph between two shapes (Blines).&lt;br /&gt;
&lt;br /&gt;
The description makes it sound simple.  But there are a few things to consider first:&lt;br /&gt;
&lt;br /&gt;
* Does the vertexes on each shape correspond with vertexes on another?&lt;br /&gt;
* Where does the vertexes, which don't correspond, go to (in the other shape)?&lt;br /&gt;
* How do you make everything morph smoothly?&lt;br /&gt;
&lt;br /&gt;
Luckily, the code knows exactly how to do it:&lt;br /&gt;
&lt;br /&gt;
* The vertexes that do correspond in both shapes, are simply interpolated&lt;br /&gt;
* The ones that appear in one shape, but not in the other, have their Activepoint set to On in one shape and to Off in the other&lt;br /&gt;
* The Origin parameter in the Blinepoints tells which part of the other shape a vertex move towards, when there's no corresponding vertex on that shape&lt;br /&gt;
* Interpolation makes everything move smoothly&lt;br /&gt;
&lt;br /&gt;
But the truth is that Activepoints are a rather obscure feature of Synfig. The Morph tool would make them easier to use:&lt;br /&gt;
&lt;br /&gt;
* First set which shape you want to morph&lt;br /&gt;
* Select the start shape (from another Bline) and time&lt;br /&gt;
* Select the end shape and time&lt;br /&gt;
* Drag the points on the morphed shape around, changing which vertex or part they correspond to (in the corresponding shape)&lt;br /&gt;
* Vertexes are automatically interpolated or turned on/off accordingly&lt;br /&gt;
&lt;br /&gt;
== Pose tool ==&lt;br /&gt;
Also a tool to animate shapes, but its objective is to create and apply poses to shapes.&lt;br /&gt;
&lt;br /&gt;
There is a way to [[Reuse Animations]], but it would be better to have an easy (and faster) to use tool for the job.&lt;br /&gt;
&lt;br /&gt;
This tool would be able to:&lt;br /&gt;
&lt;br /&gt;
* Create poses from ready made shapes&lt;br /&gt;
* Apply these poses to other shapes, animating them&lt;br /&gt;
* Deal with mismatch of the number/position of vertexes&lt;br /&gt;
&lt;br /&gt;
This tool bears many similarities with the morph tool, perhaps it might be possible to make an unified tool that does both jobs well.&lt;br /&gt;
&lt;br /&gt;
== Math/Physics tool ==&lt;br /&gt;
It's entirely possible to create mathematically defined motions in Synfig (thanks to it's convert types).  But it is also true that this features would be a bit to hard or time consuming to understand and use.&lt;br /&gt;
&lt;br /&gt;
Perhaps this tool could be subdivided in a set of modes:&lt;br /&gt;
* Free falling mode: Objects falling/flying in presence of gravity&lt;br /&gt;
* Elastic deforming: Any sort of elastic object that deforms with force&lt;br /&gt;
* Hair simulation: 2d hair simulation of some sorts&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
Perhaps this tool won't be essential in order to animate, but a few simple but cool effects would certainly add a lot to an animation.  Of course math/physics can get very complex rather fast.  So perhaps only the simplest cases would be considered, specially if they in return produce a rather stunning effect.&lt;br /&gt;
&lt;br /&gt;
== Animated Character tool ==&lt;br /&gt;
A tool that makes easier the animation of characters.&lt;br /&gt;
&lt;br /&gt;
Probably would need to be a conjunction of tools, perhaps with a number of submodes:&lt;br /&gt;
* Bones: Used to rig and then to animate a character using bones technique&lt;br /&gt;
* Morph/Pose: Use the poses and transitions that other tools generate and combine them in order to form the entire character&lt;br /&gt;
* Walk: Make your character walk with his feet firm on the ground&lt;br /&gt;
* Talk: Use poses defining phonemes to have the character talk&lt;br /&gt;
* Face: Manage facial expressions (defined by poses), control the focus point of eyes, etc&lt;br /&gt;
&lt;br /&gt;
== Make your own Suggestions ==&lt;br /&gt;
&lt;br /&gt;
Feel free to add any other tool idea you have, or make comments on the ones already posted. The best would be to have a lot of tools ideas first, then we can see which tools are similar, and make a single unified tool that does many jobs.&lt;br /&gt;
&lt;br /&gt;
I tried to make my tool suggestions practical, imagining what would a real animator working on a project would like from it. Tools that are easy and fast to use and that accomplish a certain goal. On the other hand, I have zero experience on real world animation work, so I was just making things up as go. Imagination is a powerful thing though =).&lt;br /&gt;
&lt;br /&gt;
Latter on, I will also try to look into the implementation details, and post whatever I find here, or perhaps in a page specific to each tool. Then we can tweak the tool to fit what's possible to implement, or come up an idea on how to implement the tool. Hopefully this method will help to achieve a complete implementation, even if little by little.&lt;br /&gt;
&lt;br /&gt;
The idea is to at least end up with a well defined tool, and a good starting point for a developer to start his work.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Talk:Link_to_BLine&amp;diff=5996</id>
		<title>Talk:Link to BLine</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Talk:Link_to_BLine&amp;diff=5996"/>
				<updated>2008-03-03T17:31:23Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: corrected typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By a [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-03-03.log discussion] at the IRC channel it has been requested to be possible to:&lt;br /&gt;
&lt;br /&gt;
1) Provide easy way for user to attach a vertex of a bline to another bline but without the need of create a new vertex over that bline. That allow simplify the animation of complex compositions due to it needs less vertices.&lt;br /&gt;
&lt;br /&gt;
See Yoyobuae example:&lt;br /&gt;
&lt;br /&gt;
[[Image:sif_icon.png|16px]][http://members.lycos.co.uk/yoyobuae/bline_attached_2sections.sifz bline attached]&lt;br /&gt;
&lt;br /&gt;
In that example there are some vertices converted to Bline vertex and some tangents converted to Bline tangents. Manipulating the exported parameter that represent the position of the vertex along the curve it is possible to easily modify the shape of the composition allowing a better morphing of the shapes created.&lt;br /&gt;
&lt;br /&gt;
Currently it done through various export/connect manipulations.&lt;br /&gt;
&lt;br /&gt;
'''Suggestion:''' It's desired that this attachment be achieve visually, by using the mouse and context menus.  The current method requires the use of exported values and parameter linking, which is less intuitive and also is slower.&lt;br /&gt;
&lt;br /&gt;
'''Possible realization way:'''&lt;br /&gt;
# Select the duck you want to link to bline. It could be &lt;br /&gt;
## bline vertex duck &lt;br /&gt;
## bline tangent duck&lt;br /&gt;
## or real duck&lt;br /&gt;
# Right click on the bline (not the bline vertex!)&lt;br /&gt;
# Link&lt;br /&gt;
## Linking creating appropriate convert sequences.&lt;br /&gt;
## if selected vertex duck, it placed on bline at position where clicked&lt;br /&gt;
## if selected tangent duck, it links with bline tangent at click position&lt;br /&gt;
### Which one of two? Maybe both? --[[User:Zelgadis|Zelgadis]] 12:27, 3 March 2008 (EST)&lt;br /&gt;
### We need to scale tangents as in example above&lt;br /&gt;
## if selected real duck, it links with bline width at click position&lt;br /&gt;
### currently width value at specific point of bline couldn't be easily retrieved via export/convert combinations --[[User:Zelgadis|Zelgadis]] 12:27, 3 March 2008 (EST)&lt;br /&gt;
# If was more than one duck selected for linking (i.e. bline vertex duck and bline tangent duck) then they Amount values (in &amp;quot;Bline Vertex&amp;quot;/&amp;quot;Bline Tangent&amp;quot; converts) must be linked  to ensure that they retrieved from the same position on a bline (if changed).&lt;br /&gt;
&lt;br /&gt;
2) Derived from that request it appears the need to be able to manipulate the ducks that have been converted to a composition. That is: inverse manipulation of valuenodes.&lt;br /&gt;
For the moment there are some convert types that allow inverse manipulation and only for certain parameters. For example tangents allow inverse manipulation (you modify the x/y position and it calculates the r,theta values. It is know that inverse manipulation leads on some inconsistencies. If the the function that convert a type into other is not biunivocal then it can produce undesired results form the point of view of the final user. For example, the Scale convert type would not have any inconsistency due to it has a easy computable reverse function (the reciprocal)&lt;br /&gt;
&lt;br /&gt;
Considering that and taking account that inverse calculation of valuenodes based on ducks position could need some extra computation, it would be good if some convert types can have inverse manipulation.&lt;br /&gt;
&lt;br /&gt;
'''The proposal is''' that BLine Vertex converted types allow inverse manipulation. So, manipulating a vertex duck you move the attached vertex along the bline and also match the tangent of the attached vertex to the bline's tangent at that position.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Talk:Link_to_BLine&amp;diff=5994</id>
		<title>Talk:Link to BLine</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Talk:Link_to_BLine&amp;diff=5994"/>
				<updated>2008-03-03T17:05:01Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: added some content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By a [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-03-03.log discussion] at the IRC channel it has been requested to be possible to:&lt;br /&gt;
&lt;br /&gt;
1) Attach a vertex of a bline to another bline but without the need of create a new vertex over that bline. That allow simplify the animation of complex compositions due to it needs less vertices.&lt;br /&gt;
&lt;br /&gt;
See Yoyobuae example:&lt;br /&gt;
&lt;br /&gt;
[[Image:sif_icon.png|16px]][http://members.lycos.co.uk/yoyobuae/bline_attached_2sections.sifz bline attached]&lt;br /&gt;
&lt;br /&gt;
In that example there are some vertices converted to Bline vertex and some tangents converted to Bline tangents. Manipulating the exported parameter that represent the position of the vertex along the curve it is possible to easily modify the shape of the composition allowing a better morphing of the shapes created.&lt;br /&gt;
&lt;br /&gt;
It's desired that this attachment be achieve visually, by using the mouse and context menus.  The current method requires the use of exported values and parameter linking, which is less intuitive and also is slower.&lt;br /&gt;
&lt;br /&gt;
2) Derived from that request it appears the need to be able to manipulate the ducks that have been converted to a composition. That is: inverse manipulation of valuenodes.&lt;br /&gt;
For the moment there are some convert types that allow inverse manipulation and only for certain parameters. For example tangents allow inverse manipulation (you modify the x/y position and it calculates the r,theta values. It is know that inverse manipulation leads on some inconsistencies. If the the function that convert a type into other is not biunivocal then it can produce undesired results form the point of view of the final user. For example, the Scale convert type would not have any inconsistency due to it has a easy computable reverse function (the reciprocal)&lt;br /&gt;
&lt;br /&gt;
Considering that and taking account that inverse calculation of valuenodes based on ducks position could need some extra computation, it would be good if some convert types can have inverse manipulation.&lt;br /&gt;
&lt;br /&gt;
The proposal is that BLine Vertex converted types allow inverse manipulation. So, manipulating a vertex duck you move the attached vertex along the bline and also match the tangent of the attached vertex to the bline's tangent at that position.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Talk:Link_to_BLine&amp;diff=5993</id>
		<title>Talk:Link to BLine</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Talk:Link_to_BLine&amp;diff=5993"/>
				<updated>2008-03-03T16:51:01Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: corrected typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By a [http://dooglus.rincevent.net/synfig/logs/2008/%23synfig-2008-03-03.log discussion] at the IRC channel it has been requested to be possible to:&lt;br /&gt;
&lt;br /&gt;
1) Attach a vertex of a bline to another bline but without the need of create a new vertex over that bline. That allow simplify the animation of complex compositions due to it needs less vertices.&lt;br /&gt;
&lt;br /&gt;
See Yoyobuae example:&lt;br /&gt;
&lt;br /&gt;
[[Image:sif_icon.png|16px]][http://members.lycos.co.uk/yoyobuae/bline_attached_2sections.sifz bline attached]&lt;br /&gt;
&lt;br /&gt;
In that example there are some vertices converted to Bline vertex and some tangents converted to Bline tangents. Manipulating the exported parameter that represent the position of the vertex along the curve it is possible to easily modify the shape of the composition allowing a better morphing of the shapes created.&lt;br /&gt;
&lt;br /&gt;
2) Derived from that request it appears the need to be able to manipulate the ducks that have been converted to a composition. That is: inverse manipulation of valuenodes.&lt;br /&gt;
For the moment there are some convert types that allow inverse manipulation and only for certain parameters. For example tangents allow inverse manipulation (you modify the x/y position and it calculates the r,theta values. It is know that inverse manipulation leads on some inconsistencies. If the the function that convert a type into other is not biunivocal then it can produce undesired results form the point of view of the final user. For example, the Scale convert type would not have any inconsistency due to it has a easy computable reverse function (the reciprocal)&lt;br /&gt;
&lt;br /&gt;
Considering that and taking account that inverse calculation of valuenodes based on ducks position could need some extra computation, it would be good if some convert types can have inverse manipulation.&lt;br /&gt;
&lt;br /&gt;
The proposal is that BLine Vertex converted types allow inverse manipulation. So, manipulating a vertex duck you move the attached vertex along the bline and also match the tangent of the attached vertex to the bline's tangent at that position.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Convert&amp;diff=5792</id>
		<title>Convert</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Convert&amp;diff=5792"/>
				<updated>2008-02-24T23:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: /* Compatibility */  Change to compatibility table format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Right-clicking on a value in the Parameters dialog brings up a context menu which has a sub-menu called &amp;quot;Convert&amp;quot;.  The &amp;quot;Convert&amp;quot; menu allows you to specify that the parameter should be controlled automatically in various ways.  Depending on the type of the parameter the Convert menu will contain different options.&lt;br /&gt;
&lt;br /&gt;
To convert the value back to its original type, select &amp;quot;Disconnect&amp;quot; from its context menu.&lt;br /&gt;
&lt;br /&gt;
== Convert Types ==&lt;br /&gt;
&lt;br /&gt;
=== Add ===&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Add&amp;quot; adds three sub-parameters, the first two of which are the same type as the parameter itself:&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;LHS&amp;quot;&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;RHS&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Add&amp;quot; conversion can be used with parameters of type [[Convert#Angle|angle]], [[Convert#Color|color]], [[Convert#Gradient|gradient]], [[Convert#Integer|integer]], [[Convert#Real|real]], [[Convert#Time|time]], and [[Convert#Vector|vector]].&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   (LHS + RHS) * Scalar&lt;br /&gt;
&lt;br /&gt;
=== aTan2 ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#Angle|angle]]-valued parameter to &amp;quot;aTan2&amp;quot; adds two sub-parameters:&lt;br /&gt;
* real &amp;quot;X&amp;quot;&lt;br /&gt;
* real &amp;quot;Y&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   atan2(y,x)&lt;br /&gt;
&lt;br /&gt;
ie. atan(y/x) but without an error when x is 0.  The value is the angle between the x axis and the vector (x,y).&lt;br /&gt;
&lt;br /&gt;
=== BLine ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#List|list]] parameter to &amp;quot;BLine&amp;quot; doesn't seem to change anything.  Perhaps that's the default type for lists of vertices, such as are found in outlines and regions?&lt;br /&gt;
&lt;br /&gt;
=== BLine Tangent ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Angle|angle]] or [[Convert#Vector|vector]] parameter to &amp;quot;BLine Tangent&amp;quot; adds three sub-parameters:&lt;br /&gt;
* bline &amp;quot;BLine&amp;quot;&lt;br /&gt;
* bool &amp;quot;Loop&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Amount is a number between 0 and 1, defining the distance along the given bline.  The resulting value for the whole parameter is the tangent to the bline, at the given point along the bline, either as an angle or as a vector, depending which type was converted.&lt;br /&gt;
&lt;br /&gt;
This [[Following a BLine|tutorial]] gives an example of the use of this convert type.&lt;br /&gt;
&lt;br /&gt;
=== BLine Vertex ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Vector|vector]] parameter to &amp;quot;BLine Vertex&amp;quot; adds three sub-parameters:&lt;br /&gt;
* bline &amp;quot;BLine&amp;quot;&lt;br /&gt;
* bool &amp;quot;Loop&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Amount is a number between 0 and 1, defining the distance along the given bline.  The resulting value for the whole parameter is a vector giving the position of the given point along the bline.&lt;br /&gt;
&lt;br /&gt;
This [[Following a BLine|tutorial]] gives an example of the use of this convert type.&lt;br /&gt;
&lt;br /&gt;
=== BLine Width ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] parameter to &amp;quot;BLine Width&amp;quot; adds three sub-parameters:&lt;br /&gt;
* bline &amp;quot;BLine&amp;quot;&lt;br /&gt;
* bool &amp;quot;Loop&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Amount is a number between 0 and 1, defining the distance along the given bline.  The resulting value for the whole parameter is the width of the bline at the given point along it.&lt;br /&gt;
&lt;br /&gt;
=== Composite ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#BLinePoint|blinepoint]] parameter to &amp;quot;Composite&amp;quot; adds six sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vertex&amp;quot;&lt;br /&gt;
* real &amp;quot;Width&amp;quot;&lt;br /&gt;
* real &amp;quot;Origin&amp;quot;&lt;br /&gt;
* bool &amp;quot;Split Tangents&amp;quot;&lt;br /&gt;
* vector &amp;quot;Tangent 1&amp;quot;&lt;br /&gt;
* vector &amp;quot;Tangent 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Color|color]] parameter to &amp;quot;Composite&amp;quot; adds four real-valued sub-parameters:&lt;br /&gt;
* real &amp;quot;Red&amp;quot;&lt;br /&gt;
* real &amp;quot;Green&amp;quot;&lt;br /&gt;
* real &amp;quot;Blue&amp;quot;&lt;br /&gt;
* real &amp;quot;Alpha&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Segment|segment]] parameter to &amp;quot;Composite&amp;quot; adds four vertex sub-parameters:&lt;br /&gt;
* vertex &amp;quot;Vertex 1&amp;quot;&lt;br /&gt;
* vertex &amp;quot;Tangent 1&amp;quot;&lt;br /&gt;
* vertex &amp;quot;Vertex 2&amp;quot;&lt;br /&gt;
* vertex &amp;quot;Tangent 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Vector|vector]] parameter to &amp;quot;Composite&amp;quot; adds two real-valued sub-parameters:&lt;br /&gt;
* real &amp;quot;X-Axis&amp;quot;&lt;br /&gt;
* real &amp;quot;Y-Axis&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is a blinepoint, color, segment, or vector made by combining the component parts.&lt;br /&gt;
&lt;br /&gt;
=== Cos ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]]-valued parameter to &amp;quot;Cos&amp;quot; adds two sub-parameters:&lt;br /&gt;
* angle &amp;quot;Angle&amp;quot;&lt;br /&gt;
* real &amp;quot;Amplitude&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   Amplitude * cos(Angle)&lt;br /&gt;
&lt;br /&gt;
=== Duplicate ===&lt;br /&gt;
&lt;br /&gt;
This ValueNode type is only used by the [[Duplicate Layer]].  It never appears in the Convert menu.  It is used to control the range of the Index in the Duplicate Layer (q.v.).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Duplicate&amp;quot; ValueNode type has 3 real-valued sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* real &amp;quot;From&amp;quot;&lt;br /&gt;
* real &amp;quot;To&amp;quot;&lt;br /&gt;
* real &amp;quot;Step&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The value of the ValueNode varies from the value of &amp;quot;From&amp;quot; to the value of &amp;quot;To&amp;quot; in steps of size &amp;quot;Step&amp;quot;.   The sign of &amp;quot;Step&amp;quot; is ignored.  If From&amp;lt;To the steps are positive, else they're negative.&lt;br /&gt;
&lt;br /&gt;
=== Dynamic List ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#List|list]] parameter to &amp;quot;Dynamic List&amp;quot; seems to replace each of the &amp;quot;Vertex NNN&amp;quot; sub-parameters with &amp;quot;Item NNN&amp;quot; parameters which can't be expanded, but can be exported.&lt;br /&gt;
&lt;br /&gt;
=== Exponential ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] parameter to &amp;quot;Exponential&amp;quot; adds two sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* real &amp;quot;Exponent&amp;quot;&lt;br /&gt;
* real &amp;quot;Scale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the result raising the [http://en.wikipedia.org/wiki/E_%28mathematical_constant%29 mathematical constant 'e'] to the power of Exponent, and scaling the result by Scale.  That is, it returns:&lt;br /&gt;
  Scale * e^Exponent&lt;br /&gt;
&lt;br /&gt;
This is useful for tracking layers which have been zoomed, since the Zoom layer scales by e^(zoom factor).&lt;br /&gt;
&lt;br /&gt;
See [http://youtube.com/watch?v=GAWtndOHkUw this video] for an example of the use of this convert type.&lt;br /&gt;
&lt;br /&gt;
=== From Integer ===&lt;br /&gt;
&lt;br /&gt;
This is currently disabled.  It converts an integer to one of several types.&lt;br /&gt;
&lt;br /&gt;
=== Gradient Rotate ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Gradient|gradient]] parameter to &amp;quot;Gradient Rotate&amp;quot; adds two sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* gradient &amp;quot;Gradient&amp;quot;&lt;br /&gt;
* real &amp;quot;Offset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is a gradient based on the &amp;quot;Gradient&amp;quot; parameter, but shifted left (for negative values) or right, according to the value of the &amp;quot;Offset&amp;quot; parameter.  An offset of 1.0 will shift the gradient by its entire visible width.  Values shifted off the left or right edge aren't lost - they aren't visible in the gradient as it's displayed in the parameters dialog, but they will still be used when rendering (depending on parameters such as 'Loop' and 'Zigzag', which can cause gradients to be looped between their their left and right edges, rather than using the non-displayed parts).&lt;br /&gt;
&lt;br /&gt;
=== Linear ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#Angle|angle]] parameter to be 'Linear' adds two angle sub-parameters:&lt;br /&gt;
* angle &amp;quot;Rate&amp;quot;&lt;br /&gt;
* angle &amp;quot;Offset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Color|color]] parameter to be 'Linear' adds two angle sub-parameters (since svn r617):&lt;br /&gt;
* color &amp;quot;Rate&amp;quot;&lt;br /&gt;
* color &amp;quot;Offset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#Integer|integer]] parameter to be 'Linear' adds two angle sub-parameters (since svn r617):&lt;br /&gt;
* integer &amp;quot;Rate&amp;quot;&lt;br /&gt;
* integer &amp;quot;Offset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] parameter to be 'Linear' adds two real-valued sub-parameters:&lt;br /&gt;
* real &amp;quot;Rate&amp;quot;&lt;br /&gt;
* real &amp;quot;Offset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Time|time]] parameter to be 'Linear' adds two time sub-parameters:&lt;br /&gt;
* time &amp;quot;Rate&amp;quot;&lt;br /&gt;
* time &amp;quot;Offset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Vector|vector]] parameter to be 'Linear' adds two vector sub-parameters:&lt;br /&gt;
* vector &amp;quot;Slope&amp;quot;&lt;br /&gt;
* vector &amp;quot;Offset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The parameter's value will change linearly over time, starting with the value specified by &amp;quot;Offset&amp;quot; at time zero, and increasing by the value specified by &amp;quot;Rate&amp;quot; (or &amp;quot;Slope&amp;quot;, in the case of vector parameters) every second.&lt;br /&gt;
&lt;br /&gt;
The resulting value for vector parameters is:&lt;br /&gt;
   Offset + Slope*time&lt;br /&gt;
&lt;br /&gt;
and for the other 5 types of parameter it is:&lt;br /&gt;
   Offset + Rate*time&lt;br /&gt;
&lt;br /&gt;
=== Radial Composite ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Color|color]] to &amp;quot;Radial Composite&amp;quot; adds four sub-parameters:&lt;br /&gt;
* real &amp;quot;Luma&amp;quot;&lt;br /&gt;
* real &amp;quot;Saturation&amp;quot;&lt;br /&gt;
* angle &amp;quot;Hue&amp;quot;&lt;br /&gt;
* real &amp;quot;Alpha&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Vector|vector]] to &amp;quot;Radial Composite&amp;quot; adds two sub-parameters:&lt;br /&gt;
* real &amp;quot;Radius&amp;quot;&lt;br /&gt;
* angle &amp;quot;Theta&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For color parameters, the resulting value is the color with the given lima, saturation, hue, and alpha amounts.&lt;br /&gt;
&lt;br /&gt;
For vector parameters, the resulting value is the point reached by traveling a distance &amp;quot;Radius&amp;quot; from the origin, in the distance given by the angle &amp;quot;Theta&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Random === &lt;br /&gt;
'''(currently only in [[Source_code|subversion]])'''&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Random&amp;quot; adds five sub-parameters, the first of which is the same type as the converted parameter:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Link&amp;quot;&lt;br /&gt;
* real &amp;quot;Radius&amp;quot;&lt;br /&gt;
* integer &amp;quot;Seed&amp;quot;&lt;br /&gt;
* real &amp;quot;Animation Speed&amp;quot;&lt;br /&gt;
* integer &amp;quot;Interpolation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Random&amp;quot; can be used on [[Convert#Angle|angles]], [[Convert#Color|colors]], [[Convert#Integer|integers]], [[Convert#Real|reals]], [[Convert#Time|times]], and [[Convert#Vector|vectors]].&lt;br /&gt;
&lt;br /&gt;
It is used to cause a parameter's value to vary randomly over time, around a central value:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Link&amp;quot; provides the central value.&lt;br /&gt;
* &amp;quot;Radius&amp;quot; defines the maximum random difference.&lt;br /&gt;
* &amp;quot;Seed&amp;quot; seeds the random number generator&lt;br /&gt;
* &amp;quot;Animation Speed&amp;quot; defines how often a new random value is chosen (in choices per second)&lt;br /&gt;
* &amp;quot;Interpolation&amp;quot; determines how the value is interpolated from one random choice to the next.  Possible values are:&lt;br /&gt;
** 0 - no interpolation; the value jumps from one value to the next&lt;br /&gt;
** 1 - linear interpolation&lt;br /&gt;
** 2 - cosine&lt;br /&gt;
** 3 - spline&lt;br /&gt;
** 4 - cubic (the default); uses [http://www.gamedev.net/reference/articles/article1497.asp Catmull-Rom] spline interpolation&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Interpolation&amp;quot; sub-parameter should really be a drop-down menu, rather than an integer field, but that isn't yet implemented.&lt;br /&gt;
&lt;br /&gt;
=== Range ===&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Range&amp;quot; adds three sub-parameters, all the same type as the parameter itself:&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Min&amp;quot;&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Max&amp;quot;&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Link&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Range&amp;quot; can be used on [[Convert#Angle|angles]], [[Convert#Integer|integers]], [[Convert#Real|reals]], and [[Convert#Time|times]].&lt;br /&gt;
&lt;br /&gt;
It is used to limit the value of the linked parameter to be between Min and Max.&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   Min (if Link &amp;lt; Min)&lt;br /&gt;
   Max (if Link &amp;gt; Max)&lt;br /&gt;
   Link (otherwise)&lt;br /&gt;
&lt;br /&gt;
=== Reciprocal ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]]-valued parameter to &amp;quot;Reciprocal&amp;quot; adds three sub-parameters:&lt;br /&gt;
* real &amp;quot;Link&amp;quot;&lt;br /&gt;
* real &amp;quot;Epsilon&amp;quot;.&lt;br /&gt;
* real &amp;quot;Infinite&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   1/Link (Link &amp;lt;= -epsilon or epsilon &amp;lt;= Link)&lt;br /&gt;
   Infinite (if 0 &amp;lt;= Link &amp;lt; epsilon)&lt;br /&gt;
   -Infinite (if -epsilon &amp;lt; Link &amp;lt; 0)&lt;br /&gt;
&lt;br /&gt;
The epsilon and infinite parameters are only needed to prevent division by zero.  For regular operation the resulting value is simply the reciprocal of Link.&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Reference&amp;quot; adds a single sub-parameter called &amp;quot;Link&amp;quot;.  The &amp;quot;Link&amp;quot; parameter is the same type as the parameter being converted.&lt;br /&gt;
&lt;br /&gt;
It doesn't seem to do anything at all, other than adding an extra parameter.  Whatever value is put into &amp;quot;Link&amp;quot; becomes the value of the parameter being converted.&lt;br /&gt;
&lt;br /&gt;
The only use for this conversion type I can think of is the following:&lt;br /&gt;
&lt;br /&gt;
* you know that point A should follow point B, so you export point B and connect point A to it&lt;br /&gt;
* you're not yet sure exactly how point B should move, so you experiment with different conversion types for point B&lt;br /&gt;
* changing the conversion type for point B breaks the connection you made in the first step&lt;br /&gt;
* converting point B to be a reference, and then experimenting with different conversions in its &amp;quot;Link&amp;quot; parameter allows point A to connect to point B and for the connection to remain in place while you experiment in the &amp;quot;Link&amp;quot; parameter&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   Link&lt;br /&gt;
&lt;br /&gt;
=== Repeat Gradient ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Gradient|gradient]] parameter to &amp;quot;Repeat Gradient&amp;quot; adds seven sub-parameters:&lt;br /&gt;
* gradient &amp;quot;Gradient&amp;quot;&lt;br /&gt;
* integer &amp;quot;Count&amp;quot;&lt;br /&gt;
* real &amp;quot;Width&amp;quot;&lt;br /&gt;
* bool &amp;quot;Specify Start&amp;quot;&lt;br /&gt;
* bool &amp;quot;Specify End&amp;quot;&lt;br /&gt;
* color &amp;quot;Start Color&amp;quot;&lt;br /&gt;
* color &amp;quot;End Color&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is a gradient containing &amp;quot;Count&amp;quot; equally spaced, equally wide copies of gradient &amp;quot;Gradient&amp;quot;.  Each copy has &amp;quot;Gradient&amp;quot; going forwards and then backwards.  &amp;quot;Width&amp;quot; specifies relative width of the forward copy, with a width of 0 or less meaning only the backward copy is used, and a width of 1 or more meaning only the forward copy is used.  A value of 0.5 will result in the forward and reverse copies of &amp;quot;Gradient&amp;quot; being the same width.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Specify Start&amp;quot; is checked then &amp;quot;Start Color&amp;quot; will be inserted at the beginning of the new gradient, otherwise the beginning of &amp;quot;Gradient&amp;quot; will be used as the beginning of the new gradient.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Specify End&amp;quot; is checked then &amp;quot;End Color&amp;quot; will be appended to the end of the new gradient, otherwise the end of &amp;quot;Gradient&amp;quot; will be used as the end of the new gradient.&lt;br /&gt;
&lt;br /&gt;
Here's an example of a repeated gradient - the radiating green/yellow lines are a repeated gradient, applied to a perpendicular curve gradient.  This gradient was repeated with a width of 0.5, meaning it is used backwards and forwards the same amount:&lt;br /&gt;
&lt;br /&gt;
[[Image:Repeat-gradient-valuenode-gradient.png]]&lt;br /&gt;
&lt;br /&gt;
and here's the resulting image, along with the .sif file:&lt;br /&gt;
&lt;br /&gt;
[[Image:Repeat-gradient-valuenode.png]]&lt;br /&gt;
[[Image:Repeat-gradient-valuenode.sif]]&lt;br /&gt;
&lt;br /&gt;
=== Reverse Tangent ===&lt;br /&gt;
&lt;br /&gt;
Converting a blinepoint parameter to &amp;quot;Reverse Tangent&amp;quot; adds two sub-parameters: one called &amp;quot;Reference&amp;quot; of type BLinePoint, and a boolean parameter called &amp;quot;Reverse&amp;quot;.&lt;br /&gt;
* BLinePoint &amp;quot;Reference&amp;quot;&lt;br /&gt;
* bool &amp;quot;Reverse&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Reverse Tangent&amp;quot; can only be used on [[Convert#BLinePoint|blinepoints]].&lt;br /&gt;
&lt;br /&gt;
The resulting value is the same as the reference BLinePoint, but with its tangents switched over.  This is useful when attempting to link the verticies of a region to the vertices of an outline when the region and the outline were drawn in opposite directions, and so tangent1 of an outline vertex needs to be linked to tangent2 of the region vertex, and vice versa.&lt;br /&gt;
&lt;br /&gt;
=== Scale ===&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Scale&amp;quot; adds two sub-parameters: one called &amp;quot;Link&amp;quot;, of the same type as the parameter itself, and a real-valued parameter called &amp;quot;Scalar&amp;quot;.&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Link&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Scale&amp;quot; can be used on [[Convert#Angle|angles]], [[Convert#Color|colors]], [[Convert#Integer|integers]], [[Convert#Real|reals]], [[Convert#Time|times]], and [[Convert#Vector|vectors]].&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   Link * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Segment Tangent ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Vector|vector]] parameter to &amp;quot;Segment Tangent&amp;quot; adds two sub-parameters:&lt;br /&gt;
* segment &amp;quot;Segment&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Amount is a number between 0 and 1, defining the distance along the given segment.  The resulting value for the whole parameter is the tangent to the segment, at the given point along the segment.&lt;br /&gt;
&lt;br /&gt;
=== Segment Vertex ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Vector|vector]] parameter to &amp;quot;Segment Vertex&amp;quot; adds two sub-parameters:&lt;br /&gt;
* segment &amp;quot;Segment&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Amount is a number between 0 and 1, defining the distance along the given segment.  The resulting value is the vertex at the given point along the segment.&lt;br /&gt;
&lt;br /&gt;
=== Sine ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]]-valued parameter to &amp;quot;Sine&amp;quot; adds two sub-parameters:&lt;br /&gt;
* angle &amp;quot;Angle&amp;quot;&lt;br /&gt;
* real &amp;quot;Amplitude&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   Amplitude * sin(Angle)&lt;br /&gt;
&lt;br /&gt;
=== Step ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#Angle|angle]], [[Convert#Color|color]], [[Convert#Integer|integer]], [[Convert#Real|real]], [[Convert#Time|time]], or [[Convert#Vector|vector]] parameter to be 'Step' adds four sub-parameters:&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Link&amp;quot;&lt;br /&gt;
* time &amp;quot;Duration&amp;quot;&lt;br /&gt;
* time &amp;quot;Start Time&amp;quot;&lt;br /&gt;
* real &amp;quot;Intersection&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The parameter's value will change in steps.  Each step is &amp;quot;Duration&amp;quot; seconds long.  The steps start at times &amp;quot;Start Time&amp;quot;, &amp;quot;Start Time&amp;quot;+&amp;quot;Duration&amp;quot;, etc.  The value of the valuenode is the value of &amp;quot;Link&amp;quot; at some time.  &amp;quot;Intersection&amp;quot; determines which time is used.  An &amp;quot;Intersection&amp;quot; of 0.0 means that the value of &amp;quot;Link&amp;quot; at the start of the step should be used.  An &amp;quot;Intersection&amp;quot; of 0.5 (the default) means to use the value of &amp;quot;Link&amp;quot; at the middle of the step, etc.&lt;br /&gt;
&lt;br /&gt;
The resulting value at time &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; is:&lt;br /&gt;
   &amp;lt;math&amp;gt;Link \Bigg ( \Bigg ( Duration \cdot \left ( \left \lfloor \frac{T - Start\ Time}{Duration} \right \rfloor + Intersection \right ) \Bigg ) + Start \ Time \Bigg )&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Link&amp;quot; is a sine wave.  &amp;quot;Duration&amp;quot; is 10f (the frame rate is 24 fps).  &amp;quot;Start Time&amp;quot; is 1s.&lt;br /&gt;
&lt;br /&gt;
So one step starts at 1s, and others start at 0s 14f, 0s 4f, 1s 10f, etc.&lt;br /&gt;
&lt;br /&gt;
This is the sine wave:&lt;br /&gt;
&lt;br /&gt;
[[Image:Smooth-sine.png]]&lt;br /&gt;
&lt;br /&gt;
And this is the effect of the Step valuenode on it, with an &amp;quot;Intersection&amp;quot; of 0.0.  Notice that at time 0s, the step has a negative value -- that step runs from -6f to 4f, and so its value is the value of Link at time -6f.  ''These images were created in [http://www.gimp.org/ The Gimp] - it's not currently possible to view two curves at the same time in Synfig Studio.''&lt;br /&gt;
&lt;br /&gt;
[[Image:Stepped-sine-0.0.png]]&lt;br /&gt;
&lt;br /&gt;
Here it is with an &amp;quot;Intersection&amp;quot; of 0.5:&lt;br /&gt;
&lt;br /&gt;
[[Image:Stepped-sine-0.5.png]]&lt;br /&gt;
&lt;br /&gt;
and here, with an &amp;quot;Intersection&amp;quot; of 1.0:&lt;br /&gt;
&lt;br /&gt;
[[Image:Stepped-sine-1.0.png]]&lt;br /&gt;
&lt;br /&gt;
=== Stripes ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Gradient|gradient]] parameter to &amp;quot;Stripes&amp;quot; adds four sub-parameters:&lt;br /&gt;
* color &amp;quot;Color 1&amp;quot;&lt;br /&gt;
* color &amp;quot;Color 2&amp;quot;&lt;br /&gt;
* integer &amp;quot;Stripe Count&amp;quot;&lt;br /&gt;
* real &amp;quot;Width&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is a gradient containing &amp;quot;Stripe Count&amp;quot; equally spaced, equally wide stripes of color &amp;quot;Color 2&amp;quot; with a background of &amp;quot;Color 1&amp;quot;.  &amp;quot;Width&amp;quot; specifies the width of the stripes, with a width of 0 or less meaning they are invisible, and a width of 1 or more meaning the whole gradient is of &amp;quot;Color 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Subtract ===&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Subtract&amp;quot; adds three sub-parameters, the first two of which are the same type as the parameter itself:&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;LHS&amp;quot;&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;RHS&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Subtract&amp;quot; conversion can be used with parameters of type [[Convert#Angle|angle]], [[Convert#Color|color]], [[Convert#Gradient|gradient]], [[Convert#Integer|integer]], [[Convert#Real|real]], [[Convert#Time|time]], and [[Convert#Vector|vector]].&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   (LHS - RHS) * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Switch ===&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Switch&amp;quot; adds three sub-parameters:&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Link Off&amp;quot;&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Link On&amp;quot;&lt;br /&gt;
* bool &amp;quot;Switch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Link Off&amp;quot; and &amp;quot;Link On&amp;quot; are the same type as the parameter being converted.&lt;br /&gt;
&lt;br /&gt;
The resulting value is the value of &amp;quot;Link Off&amp;quot; when &amp;quot;Switch&amp;quot; is off, and &amp;quot;Link On&amp;quot; when &amp;quot;Switch&amp;quot; is on.&lt;br /&gt;
&lt;br /&gt;
This conversion can be used on all value types.&lt;br /&gt;
&lt;br /&gt;
=== Time Loop ===&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Time Loop&amp;quot; adds four sub-parameters: one called &amp;quot;Link&amp;quot;, of the same type as the parameter itself, and three time parameters:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Link&amp;quot;&lt;br /&gt;
* time &amp;quot;Link Time&amp;quot; &lt;br /&gt;
* time &amp;quot;Local Time&amp;quot;&lt;br /&gt;
* time &amp;quot;Duration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It works similarly to the [[Time Loop Layer]] but affects only a single parameter.&lt;br /&gt;
&lt;br /&gt;
For any integer value n, from &amp;quot;Local Time + abs(Duration)*n&amp;quot; to &amp;quot;Local Time + abs(Duration)*(n+1)&amp;quot;, the resulting value of the parameter is the same as that of the &amp;quot;Link&amp;quot; parameter from &amp;quot;Link Time&amp;quot; to &amp;quot;Link Time + Duration&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In other words, &amp;quot;Duration&amp;quot; seconds of values of the parameter &amp;quot;Link&amp;quot; starting from time &amp;quot;Link Time&amp;quot; onwards are looped over and over, with the value of the &amp;quot;Link&amp;quot;ed parameter at time &amp;quot;Link Time&amp;quot; corresponding to the resulting value at time &amp;quot;Local Time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
As an example, suppose the &amp;quot;Link&amp;quot; parameter has a value of time the current time.  At 0s the value is 0, at 10s the value is 20.&lt;br /&gt;
&lt;br /&gt;
If we set:&lt;br /&gt;
* Link Time = 5s&lt;br /&gt;
* Local Time = 2s&lt;br /&gt;
* Duration = 4s&lt;br /&gt;
then from 2s to 6s and from 6s to 10s, etc., the resulting value is the value of &amp;quot;Link&amp;quot; from 5s to 9s, as follows:&lt;br /&gt;
&lt;br /&gt;
Then the resulting values will be:&lt;br /&gt;
* 0s -&amp;gt; &amp;quot;Link&amp;quot; value at 7s = 14&lt;br /&gt;
* 1s -&amp;gt; &amp;quot;Link&amp;quot; value at 8s = 16&lt;br /&gt;
* 2s -&amp;gt; &amp;quot;Link&amp;quot; value at 5s = 10 (at &amp;quot;Link Time&amp;quot; = 2s, result is the value of &amp;quot;Link&amp;quot; at &amp;quot;Link Time&amp;quot; = 5s = 10)&lt;br /&gt;
* 3s -&amp;gt; &amp;quot;Link&amp;quot; value at 6s = 12&lt;br /&gt;
* 4s -&amp;gt; &amp;quot;Link&amp;quot; value at 7s = 14&lt;br /&gt;
* 5s -&amp;gt; &amp;quot;Link&amp;quot; value at 8s = 16&lt;br /&gt;
* 6s -&amp;gt; &amp;quot;Link&amp;quot; value at 5s = 10 (&amp;quot;Duration&amp;quot; = 4s later, the value is the same as at 2s)&lt;br /&gt;
* 7s -&amp;gt; &amp;quot;Link&amp;quot; value at 6s = 12&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Duration&amp;quot; is zero, the resulting value is whatever the value of the &amp;quot;Link&amp;quot; parameter is at time &amp;quot;Link Time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;Duration&amp;quot; is negative, the resulting value at &amp;quot;Local Time&amp;quot; still matches the value of &amp;quot;Link&amp;quot; at &amp;quot;Link Time&amp;quot;, but the animation goes in the opposite direction.   For example:&lt;br /&gt;
&lt;br /&gt;
If we set:&lt;br /&gt;
* Link Time = 5s&lt;br /&gt;
* Local Time = 2s&lt;br /&gt;
* Duration = -4s&lt;br /&gt;
then from 2s to 6s and from 6s to 10s, etc., the resulting value is the value of &amp;quot;Link&amp;quot; from 5s to 1s, as follows:&lt;br /&gt;
&lt;br /&gt;
Then the resulting values will be:&lt;br /&gt;
* 0s -&amp;gt; &amp;quot;Link&amp;quot; value at 3s = 6&lt;br /&gt;
* 1s -&amp;gt; &amp;quot;Link&amp;quot; value at 2s = 4&lt;br /&gt;
* 2s -&amp;gt; &amp;quot;Link&amp;quot; value at 5s = 10 (at &amp;quot;Link Time&amp;quot; = 2s, result is the value of &amp;quot;Link&amp;quot; at &amp;quot;Link Time&amp;quot; = 5s = 10)&lt;br /&gt;
* 3s -&amp;gt; &amp;quot;Link&amp;quot; value at 4s = 8&lt;br /&gt;
* 4s -&amp;gt; &amp;quot;Link&amp;quot; value at 3s = 6&lt;br /&gt;
* 5s -&amp;gt; &amp;quot;Link&amp;quot; value at 2s = 4&lt;br /&gt;
* 6s -&amp;gt; &amp;quot;Link&amp;quot; value at 5s = 10 (4s later, the value is the same as at &amp;quot;Link Time&amp;quot; = 2s)&lt;br /&gt;
* 7s -&amp;gt; &amp;quot;Link&amp;quot; value at 4s = 8&lt;br /&gt;
&lt;br /&gt;
This conversion can be used on all value types.&lt;br /&gt;
&lt;br /&gt;
=== Timed Swap ===&lt;br /&gt;
&lt;br /&gt;
This convert type was disabled in Synfig 0.61.06 and earlier because it didn't work.&lt;br /&gt;
&lt;br /&gt;
Converting a parameter to &amp;quot;Timed Swap&amp;quot; adds four sub-parameters:&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;Before&amp;quot;&lt;br /&gt;
* &amp;lt;param&amp;gt; &amp;quot;After&amp;quot;&lt;br /&gt;
* time &amp;quot;Swap Time&amp;quot;&lt;br /&gt;
* time &amp;quot;Swap Duration&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Before&amp;quot; and &amp;quot;After&amp;quot; are the same type as the parameter being converted.&lt;br /&gt;
&lt;br /&gt;
This conversion type linearly switches from &amp;quot;Before&amp;quot; to &amp;quot;After&amp;quot;, taking &amp;quot;Swap Duration&amp;quot; seconds to do so, and completing the swap at &amp;quot;Swap Time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note that this doesn't give us anything that we can't achieve using the &amp;quot;[[Convert#Linear|Linear]]&amp;quot; conversion type and a few waypoints, except that it works on more types than the somewhat restricted &amp;quot;Linear&amp;quot; conversion.  The &amp;quot;Linear&amp;quot; conversion could be extended to work on the missing types.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Timed Swap&amp;quot; can be used on [[Convert#Angle|angles]], [[Convert#Color|colors]], [[Convert#Integer|integers]], [[Convert#Real|reals]], [[Convert#Time|times]], and [[Convert#Vector|vectors]].&lt;br /&gt;
&lt;br /&gt;
The resulting value is:&lt;br /&gt;
   if time &amp;gt; &amp;quot;Swap Time&amp;quot; then &amp;quot;After&amp;quot;&lt;br /&gt;
   else if time &amp;lt; (&amp;quot;Swap Time&amp;quot; - &amp;quot;Swap Duration&amp;quot;) then &amp;quot;Before&amp;quot;&lt;br /&gt;
   else interpolate between &amp;quot;Before&amp;quot; and &amp;quot;After&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Two-Tone ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Gradient|gradient]] to &amp;quot;Two-Tone&amp;quot; adds two color-valued sub-parameters:&lt;br /&gt;
* color &amp;quot;Color1&amp;quot;&lt;br /&gt;
* color &amp;quot;Color2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting gradient has two CPoints, one at each end, starting with &amp;quot;Color1&amp;quot; and ending with &amp;quot;Color2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These color parameters can be animated, giving us the ability to have the gradient change color over time.  This can be used as a workaround for [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1568818&amp;amp;group_id=144022&amp;amp;atid=757416 this bug].&lt;br /&gt;
&lt;br /&gt;
== Which Value Types can use which Convert Types? ==&lt;br /&gt;
&lt;br /&gt;
There are 13 different types of value in Synfig.  Each of these types has a different set of convert types available to it, as follows:&lt;br /&gt;
&lt;br /&gt;
=== Angle ===&lt;br /&gt;
&lt;br /&gt;
* Angle parameters can be converted to [[Convert#Add|Add]], [[Convert#aTan2|aTan2]], [[Convert#BLine Tangent|BLine Tangent]], [[Convert#Linear|Linear]], [[Convert#Random|Random]], [[Convert#Range|Range]], [[Convert#Scale|Scale]], [[Convert#Step|Step]], [[Convert#Subtract|Subtract]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Timed Swap|Timed Swap]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== BLinePoint ===&lt;br /&gt;
&lt;br /&gt;
* BLinePoint parameters can be converted to [[Convert#Composite|Composite]], [[Convert#Reverse Tangent|Reverse Tangent]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Bool ===&lt;br /&gt;
&lt;br /&gt;
* Bool parameters can only be converted to the [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Canvas ===&lt;br /&gt;
&lt;br /&gt;
* Canvas parameters can be converted to the [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], and [[Convert#Reference|Reference]] type.&lt;br /&gt;
&lt;br /&gt;
=== Color ===&lt;br /&gt;
&lt;br /&gt;
* Color parameters can be converted to [[Convert#Add|Add]], [[Convert#Composite|Composite]], [[Convert#Linear|Linear]], [[Convert#Radial Composite|Radial Composite]], [[Convert#Random|Random]], [[Convert#Scale|Scale]], [[Convert#Step|Step]], [[Convert#Subtract|Subtract]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Timed Swap|Timed Swap]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Gradient ===&lt;br /&gt;
&lt;br /&gt;
* Gradient parameters can be converted to [[Convert#Add|Add]], [[Convert#Gradient Rotate|Gradient Rotate]], [[Convert#Repeat Gradient|Repeat Gradient]], [[Convert#Stripes|Stripes]], [[Convert#Subtract|Subtract]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Two-Tone|Two-Tone]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Integer ===&lt;br /&gt;
&lt;br /&gt;
* Integer parameters can be converted to [[Convert#Add|Add]], [[Convert#Linear|Linear]], [[Convert#Random|Random]], [[Convert#Range|Range]], [[Convert#Scale|Scale]], [[Convert#Step|Step]], [[Convert#Subtract|Subtract]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Timed Swap|Timed Swap]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== List ===&lt;br /&gt;
&lt;br /&gt;
* List parameters can be converted to [[Convert#BLine|BLine]], [[Convert#Dynamic List|Dynamic List]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Real ===&lt;br /&gt;
&lt;br /&gt;
* Real parameters can be converted to [[Convert#Add|Add]], [[Convert#BLine Width|BLine Width]], [[Convert#Cos|Cos]], [[Convert#Exponential|Exponential]], [[Convert#Linear|Linear]], [[Convert#Random|Random]], [[Convert#Range|Range]], [[Convert#Reciprocal|Reciprocal]], [[Convert#Scale|Scale]], [[Convert#Sine|Sine]], [[Convert#Step|Step]], [[Convert#Subtract|Subtract]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Timed Swap|Timed Swap]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Segment ===&lt;br /&gt;
&lt;br /&gt;
* Segment parameters can be converted to the [[Convert#Composite|Composite]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
&lt;br /&gt;
* String parameters can be converted to the [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Time ===&lt;br /&gt;
&lt;br /&gt;
* Time parameters can be converted to the [[Convert#Add|Add]], [[Convert#Linear|Linear]], [[Convert#Random|Random]], [[Convert#Range|Range]], [[Convert#Scale|Scale]], [[Convert#Step|Step]], [[Convert#Subtract|Subtract]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Timed Swap|Timed Swap]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Vector ===&lt;br /&gt;
&lt;br /&gt;
* Vector parameters can be converted to [[Convert#Add|Add]], [[Convert#BLine Tangent|BLine Tangent]], [[Convert#BLine Vertex|BLine Vertex]], [[Convert#Composite|Composite]], [[Convert#Linear|Linear]], [[Convert#Radial Composite|Radial Composite]], [[Convert#Random|Random]], [[Convert#Scale|Scale]], [[Convert#Segment Tangent|Segment Tangent]], [[Convert#Segment Vertex|Segment Vertex]], [[Convert#Step|Step]], [[Convert#Subtract|Subtract]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Timed Swap|Timed Swap]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
== Compatibility ==&lt;br /&gt;
&lt;br /&gt;
When a new ValueNode type is added to Synfig, the .sif file format is extended to include a way of writing the new type.  This extension won't be able to be read by any older version of Synfig.  Here's a list of the ValueNode types that have been added, along with the subversion revision number in which they first appeared:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:55%&amp;quot;&lt;br /&gt;
| '''Version''' || '''Revision''' || '''Convert'''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hr&amp;gt; || &amp;lt;hr&amp;gt; || &amp;lt;hr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.08)''' || ''not yet released''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1694 || [[#BLine Width|BLine Width]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1691 || [[#Step|Step]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1354 || [[#Subtract|Subtract]] (for gradients)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1354 || [[#Add|Add]] (for gradients)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1267 || [[#From Integer|From Integer]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1267 || [[#Duplicate|Duplicate]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1238 || [[#Reciprocal|Reciprocal]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1226 || [[#Time Loop|Time Loop]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1162 || [[#Reverse Tangent|Reverse Tangent]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1132 || [[#aTan2|aTan2]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1111 || [[#Cos|Cos]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 923 || [[#Switch|Switch]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 907 || [[#Random|Random]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hr&amp;gt; || &amp;lt;hr&amp;gt; || &amp;lt;hr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.07)''' || 878 || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 776 || [[#Range|Range]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 744 || [[#BLine Vertex|BLine Vertex]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 744 || [[#BLine Tangent|BLine Tangent]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 742 || [[#Add|Add]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 739 || [[#Exponential|Exponential]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 666 || [[#Repeat Gradient|Repeat Gradient]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 610 || [[#Timed Swap|Timed Swap]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hr&amp;gt; || &amp;lt;hr&amp;gt; || &amp;lt;hr&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.06)''' || 536 || &amp;amp;nbsp;&lt;br /&gt;
|-|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Talk:Convert&amp;diff=5789</id>
		<title>Talk:Convert</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Talk:Convert&amp;diff=5789"/>
				<updated>2008-02-24T22:55:09Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: /* Compatibility (Yoyobuae's table format suggestion) */  editing table width&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Timed Swap's Brokenness ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Timed Swap&amp;quot; convert crashes synfig as soon as it is used.&lt;br /&gt;
&lt;br /&gt;
The problem seems to be with ValueNode_TimedSwap::set_swap_length() and ValueNode_TimedSwap::set_swap_time() which both try to check that the type of their argument is correct, but fail to do so. [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
== The Feature Itself - Proposed Additions ==&lt;br /&gt;
&lt;br /&gt;
While useful, it appears a little incomplete.  Suppose I want to fix one of a polygon's vertices such that it always forms a 90 degree angle with the vertex before it, and is a set distance from that vertex.  I could do that if I could work out the angle of the previous side to the horizontal, but that doesn't seem to be possible.  Also, while it's possible to use the composite conversion to construct a vector from an X and a Y value, it doesn't seem to be possible to go in the opposite direction.  If I have a vector and I want to use just its X coordinate, I don't think I can. [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
I propose some new conversions: [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
:Let me play with those feature for vertexs and I'll let you know. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Vector Angle ===&lt;br /&gt;
&lt;br /&gt;
Converting an angle parameter to &amp;quot;Vector Angle&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the angle between &amp;quot;Vector&amp;quot; and the horizontal, multiplied by &amp;quot;Scalar&amp;quot;:&lt;br /&gt;
   atan(Vector.Y/Vector.X) * Scalar&lt;br /&gt;
&lt;br /&gt;
:This would be mathematically unconsistent. Vector angel is already given by atan(Vector.X/Vector.Y). If you multiply it by Scalar then angle would be another thing (I don't know what). For example, Rotate layer have a angle value that is defined by an angle (real value). Its visual control is given by a radial duck attached to the center. If you modify the distance of the duck from the origin the duck will go to a defined (and not modificable) distance, due to the angle is the only useful value of the duck's position.&lt;br /&gt;
&lt;br /&gt;
:Also, better use atan2 function (or the defined in the math library) that allow a Y value of 0 without obtaining an exception call. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
::Good point.  I'll use atan2 rather than atan.  I'm not sure about X/Y vs. Y/X - I'll use whatever works best.  I'm thinking the Scalar might be useful if I want some object to rotate twice as quickly as some other object, for example.  If you don't want this, leave the Scalar at its default value of 1.0.  I was just copying the way that the Subtract convert works:  it returns (LHS-RHS)*Scalar.  There's no need to the Scalar really, but maybe it'll be useful sometimes. [[User:Dooglus|dooglus]] 11:17, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Vector Length ===&lt;br /&gt;
&lt;br /&gt;
Converting a real-valued parameter to &amp;quot;Vector Length&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the length of &amp;quot;Vector&amp;quot;, multiplied by &amp;quot;Scalar&amp;quot;:&lt;br /&gt;
   |Vector| * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Vector X ===&lt;br /&gt;
&lt;br /&gt;
Converting a real parameter to &amp;quot;Vector X&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is:&lt;br /&gt;
   Vector.X * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Vector Y ===&lt;br /&gt;
&lt;br /&gt;
Converting a real parameter to &amp;quot;Vector Y&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is:&lt;br /&gt;
   Vector.Y * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Gradient Color ===&lt;br /&gt;
&lt;br /&gt;
Converting a color parameter to &amp;quot;Gradient Color&amp;quot; adds sub-parameters:&lt;br /&gt;
* gradient &amp;quot;Gradient&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is the color at position &amp;quot;Amount&amp;quot; in the given &amp;quot;Gradient&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This would allow us to pick specific single colors from a gradient, allow us to color-cycle layers through the colors in a gradient, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Angle Vector Dot ===&lt;br /&gt;
&lt;br /&gt;
Converting a Real parameter to a &amp;quot; Angle Vector Dot&amp;quot; adds sub-parameters:&lt;br /&gt;
*Vector 1&lt;br /&gt;
*Vector 2&lt;br /&gt;
&lt;br /&gt;
The return value is the arcosine of the scalar product of both vectors divided by the product of their magnitudes.&lt;br /&gt;
&lt;br /&gt;
 acos((Vector1 · Vector2)/(|Vector1| * |Vector2|))&lt;br /&gt;
&lt;br /&gt;
This would allow calculate the angle between any two vectors as well as the dot product of two vectors is the product of their absolute values of its magnitudes by the cosine of its angle.&lt;br /&gt;
&lt;br /&gt;
 Dot = Vector1 · Vector2 = |Vector1| * |Vector2| * cos(alpha)&lt;br /&gt;
there alpha is the angle between vector1 and vector 2.&lt;br /&gt;
--[[User:Genete|Genete]] 09:05, 21 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interval === &lt;br /&gt;
&lt;br /&gt;
Converting a Real, Angle, Integer (or other kind of scalar parameter) adds sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* MAX&lt;br /&gt;
* MIN&lt;br /&gt;
* Scalar&lt;br /&gt;
&lt;br /&gt;
The return value is the same number than the given by Scalar but truncated to its boundaries MAX, MIN.&lt;br /&gt;
&lt;br /&gt;
  if Scalar &amp;gt;= MAX then return MAX&lt;br /&gt;
  else if Scalar &amp;lt;= MIN then return MIN&lt;br /&gt;
  else return Scalar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
This would allow link parameters of objects to the same of other objects but limited to certain intervals. The intervals could be also linked to other objects parameters so it would allow maintain the movement of a layer/Vertex or what ever other parameter inside certain limits defined by drawn parameters... --[[User:Genete|Genete]] 02:28, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: Thanks for the suggestion.  I just added it, in [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=r776 r776] and [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=r777 r777].&lt;br /&gt;
&lt;br /&gt;
: I called it '[[Convert#Range|Range]]', since it specifies a range of acceptable values.  Hope that's OK with you! -- [[User:Dooglus|dooglus]] 17:19, 27 September 2007 (EDT)&lt;br /&gt;
:: It is prefect! Range is a more precise name. Thanks for implement it so fast, you're welcome!. I think this conversion would be very useful to limit rotations and translations. I've just compiled from svn r780 and it works great!--[[User:Genete|Genete]] 18:05, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Switch===&lt;br /&gt;
&lt;br /&gt;
Converting a any parameter to Switch adds tree sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* Link (reference)&lt;br /&gt;
* Link Alternative (reference)&lt;br /&gt;
* Switch (on/off)&lt;br /&gt;
&lt;br /&gt;
The returned value is Link is Switch sub parameter is set to off (default value) and Link Alternative if the Switch sub parameter is set to on.&lt;br /&gt;
&lt;br /&gt;
It will allow modify the parameter to different types of conversions and also different exported parameters during animation. For example make a layer to follow two different Blines during animation.&lt;br /&gt;
&lt;br /&gt;
Also it would eventually allow to link or unlink vertex to other vertex.&lt;br /&gt;
--[[User:Genete|Genete]] 06:54, 13 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
=== Losing Waypoints ===&lt;br /&gt;
&lt;br /&gt;
''The &amp;quot;Convert&amp;quot; menu allows you to specify that the parameter should be controlled automatically in various ways''. Ok, but once the parameter is converted to the other(s) one(s), how can it be automatically ''controlled''? Maybe the parameter is now controlled by waypoints and keyframes as the normal parameters?. I'm interested into this feature because I have found that some layers (Eg. Curve Gradient) donesn't work properly in the version I have of synfigstudio (Vertices are &amp;quot;Unknown type&amp;quot;. I hope using &amp;quot;convert&amp;quot; can arrange it and use some types of layers that seems that the default values are incorrectly set. Bye, [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:What version to do use?  When you convert the parameter, all existing waypoints for that parameter are deleted (I think) and you won't be allowed to edit that parameter directly any more.  Instead, you edit the new sub-parameters.&lt;br /&gt;
&lt;br /&gt;
:Suppose you have a circle.  Right-click its radius and convert to linear.  Switch to animate-edit-mode, set the default interpolation type to be Constant (that's the very bottom setting in the toolbox window) and at time zero, set the rate to be 0.5 and the offset to be 0.5.  That means the radius starts at 0.5 units and grows by 0.5 every second.  You might have your parameters to be displayed in 'points' or some other unit.  You can change that from the toolbox using File&amp;gt;Setup&amp;gt;Misc&amp;gt;Unit System.  Set that to Units for this example.  Don't forget to set it back after if you want to work in points again.&lt;br /&gt;
&lt;br /&gt;
:You'll see that there are now waypoints on the 'offset' and 'rate' parameters, and you can animate those parameters just like you could animate the radius before.&lt;br /&gt;
&lt;br /&gt;
:Go forward to 1s in the animation.  You'll see that the circle's radius is now 1 (it grew by 0.5u from 0.5u), and set the rate to -0.5 and the offset to 1.5.  This will cause the circle's radius to start shrinking by 0.5 per second from the 1s point onwards.  The 1.5 offset is to arrange that the radius doesn't jump suddenly at 1s.  If the radius is to go down from 1.0 at 1s at 0.5 per second, it would have been at 1.5 at 0s, so that's the offset we use.&lt;br /&gt;
&lt;br /&gt;
:Does that make sense? [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
::I still having 0.61.05 (apr 29 2007). I hope can update ASAP.&lt;br /&gt;
&lt;br /&gt;
::Regarding &amp;quot;Convert&amp;quot; WOW! it is wonderful! absolutely amazing. It opens lots of new possibilities. Thanks for document it. - [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Exporting and Connecting ===&lt;br /&gt;
&lt;br /&gt;
Can converted parameters be linked to other objects' normal/converted parameters? [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:Yes.  The best way to do this is via the 'Export' menu entry.  Make sure you only have a single layer selected, then you can right-click on any parameter (regular, or converted) and say 'Export' to make the parameter easily available to other layers.  It will ask you to name the parameter.  There's a bug in Synfig (up to and including 0.61.06) which causes a crash when renaming exported values, so chose carefully.  Then go to the 'Children' dialog, open up the &amp;quot;ValueBase Nodes&amp;quot; tree and you'll see all your exported values there.  In the Children dialog, select the one you want to link to.  Then select the layer you want to use the exported value in, right-click the parameter and select &amp;quot;Connect&amp;quot;.  That will connect to whatever is selected in the Children dialog, so long as it is the correct type.  (You can't link a color to a vertex - it doesn't make any sense). [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
One suggestion for the initial description:&lt;br /&gt;
''To convert the value back to its original type, select &amp;quot;Disconnect&amp;quot; from its context menu.''&lt;br /&gt;
I would add: ''Disconnect would loose all the waypoints of the converted parameters and don't produce a conversion of the inserted waypoints''. BTW it could be a very cool feature. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:OK, I'll add something like that, but what you wrote isn't quite true.  Disconnect will lose all the waypoints only if the parameter hasn't been exported or linked somewhere else.&lt;br /&gt;
&lt;br /&gt;
:If you want to try converting a parameter to something else, but don't want it to forget your waypoints, export the parameter before you convert it.  Then you can 'Connect' back to it by selecting it in the Children dialog first, then right-click, 'Connect' on the parameter in the Parameters dialog.&lt;br /&gt;
&lt;br /&gt;
:: It makes some sense now. The Child tab was a mystery to me because always is empty. Ill try it. [[User:Genete|Genete]] 16:23, 6 Sep 2007 (EDT). But wait a moment... 'Export' is like keep a animation that can be used later with 'Connect'...? Can I recover the exported animation to play at any moment during time line?... Wow that's so cool!! [[User:Genete|Genete]] 16:36, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: Not quite.  When you export a parameter, what you're exporting is the whole lifetime of that parameter - its waypoints, sub-parameters and so on.  What you're talking about is similar to what happens when you export the canvas in an encapsulated layer.  Try this:  draw something, using a bunch of layers, and encapsulate the layers together into a single layer.  Then select that layer and go to its parameters.  It has a parameter called 'Canvas'.  Export and name that, then look in the Canvases dialog.  Double-click your exported canvas and it will open in a window of its own.  You can edit it in isolation there.  Also, if you look in the Children dialog, you'll see your canvas in the top section, separate from the ValueBase things.&lt;br /&gt;
&lt;br /&gt;
::: The thing about re-using exported canvases at different points in time is something I've not been able to work out yet.  I think it may be possible, but I've not had a good look.&lt;br /&gt;
&lt;br /&gt;
::: Something else worth mentioning is this: if you look at the parameters for any encapsulated layer, or any &amp;quot;Layers&amp;gt;New&amp;gt;(Other|Default)&amp;gt;PasteCanvas&amp;quot; (I moved it from Default to Other in subversion - it was the only thing in the 'Other' menu), the 'Canvas' parameter gives you a drop-down menu listing all the canvases you've exported.  If you have animate-edit mode enabled, then editing this Canvas parameter creates waypoints (although for some reason they don't show up) which keep a record of which canvas is showing when.  You can use this to switch between 'scenes' in an animation.&lt;br /&gt;
&lt;br /&gt;
::: Keep asking the questions - it's good to get this typed up - eventually I might even get around to putting it all in some kind of order!  :) [[User:Dooglus|dooglus]] 18:34, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:The problem with your suggestion of the cool feature is that it's possible to produce very complex patterns by using combinations of 'converts' - much more complex than can be created by waypoints, so in general there's no way to produce a set of waypoint to give the same animation.  It would be possible to get close, by generating hundreds of waypoints, but that's a waste - why not just keep the type converted? [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
Also I don't know if conversion would maintain the waypoints of the original parameters. If not it would be also a cool feature. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:No, conversion and disconnection both wipe all the waypoints, because there's generally no way to convert between them.  The 'undo' (control-z) function will of course get you your waypoints back if you convert by mistake.&lt;br /&gt;
&lt;br /&gt;
=== Editing Wiki Talk Pages ===&lt;br /&gt;
&lt;br /&gt;
:By the way, when replying to something, use one more ':' at the start of each paragraph than at the start of the thing you're replying to.  Then your reply will be indented.  Also, typing three '~'s in a row will automatically sign your text (like this: [[User:Dooglus|dooglus]]) - useful for old text you forgot to sign before, and finally, typing four '~'s will sign and date your message, making it easier to follow.  Like this: [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: Thanks for the edition tips and for your patience. I'm not familiar with this kind of editors. [[User:Genete|Genete]] 16:23, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Usage of Convert -&amp;gt; BLine ===&lt;br /&gt;
&lt;br /&gt;
I've discovered an usage of BLine. It is in the same sense that you have explained. Maybe it is my version but if I insert a Curve Gradient using New Layer right-click menu the curve gradient is inserted but the ducks of the curve are not shown so i cannot manipulate or insert any new point in the curve. If you make a Convert-&amp;gt; bline on the Vertexes list then the points ducks are shown and everything works OK. - [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Converting Color parameter to Add ===&lt;br /&gt;
&lt;br /&gt;
I don't understand this kind of conversion for colors. If I convert a color into a Add type then it displays three sub parameters: LHS (color), RHS (color) and Scalar (float). The wiki says that the result is (LHS+RHS)*Scalar. The result not always is the thing one could think it would work. I believe that the RGBA individual values of each LHS and RHS colors are added and multiplied by the scalar. Maybe this should be the right way but in my opinion the colors should be truncated to its maximum - minimum values (0-100). If not you're obtaining an alpha value of bigger than 100 that only have sense for the amount parameter.  For the rest of RGB values added values gives a shift in its meaning so red becomes green and green red. Just a thought. --[[User:Genete|Genete]] 14:24, 24 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: It does exactly that - for each of R, G, B, and A, it added LHS + RHS and multiplies the result by the scalar.  If Scalar=0.5 then this can be used to take the mean average of 2 colors.  If any of R,G,B,A go &amp;lt;0 or &amp;gt;100, that doesn't matter.  Synfig works with colors outside the range 0-100.  I don't really understand it, but a color with an Alpha of 1000 on a layer with amount of 0.1 will be more opaque than a color with Alpha 100 on the same layer.  I think this may have something to do with Synfig's [http://en.wikipedia.org/wiki/High_dynamic_range_imaging HDRI] aspirations. [[User:Dooglus|dooglus]] 15:45, 24 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Segment - Unknown Data type - ===&lt;br /&gt;
&lt;br /&gt;
When converting a Vertex to Segment Vertex or Segment Tangent it creates two sub parameters one of  them is called SEG Segment. When double click for editing it says &amp;quot;Unknown Data type&amp;quot;. Is a data type pending to define, a bug or other thing? What should be a ''Segment'' then? --[[User:Genete|Genete]] 18:33, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: I never tried editing one directly before, so I hadn't seen that message.  Try right-clicking the segment and converting it to composite - then you'll see what it is.  Also, see [[Types]] for a list of the 13 types that Synfig uses.&lt;br /&gt;
&lt;br /&gt;
: I think it is probably what synfig used before blines were added - it's a single spline curve, with 2 points and 2 tangents.  Basically, it's a bline, but with only 2 vertices.  Maybe we don't need it any more, but I don't like modifying code when I don't understand the consequences.  I do enough of that already... -- [[User:Dooglus|dooglus]] 18:58, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Default values for Conversions ==&lt;br /&gt;
&lt;br /&gt;
When you have a constant Value Node with a current value and you convert it to any of the convert types it would be desirable that the resulting value of the converted type returns the same than the original constant value.&lt;br /&gt;
&lt;br /&gt;
Current definitions of Exponential and Reciprocal convert types changes the value of the Value Node being converted. &lt;br /&gt;
&lt;br /&gt;
I propose these changes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Exponential:&lt;br /&gt;
&amp;lt;u&amp;gt;Current behaviour&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Exponential gives:&lt;br /&gt;
&lt;br /&gt;
Exponent = 1 ;  Scale = X ; Resulting Value = e¹*X&lt;br /&gt;
&lt;br /&gt;
''Desired behaviour'':&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Exponential gives:&lt;br /&gt;
&lt;br /&gt;
Exponent = 0 ;  Scale = X ; Resulting Value = e°*X = X&lt;br /&gt;
&lt;br /&gt;
#Reciprocal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Current behaviour&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Reciprocal gives:&lt;br /&gt;
&lt;br /&gt;
Link = X ; Resulting Value = 1/X&lt;br /&gt;
&lt;br /&gt;
''Desired behaviour'':&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Reciprocal gives:&lt;br /&gt;
&lt;br /&gt;
Link = 1/X; Resulting Value = 1/(1/X) = X&lt;br /&gt;
&lt;br /&gt;
== Compatibility (Yoyobuae's table format suggestion) ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:55%&amp;quot;&lt;br /&gt;
| '''Version''' || '''Revision''' || '''Convert'''&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.08)''' || ''not yet released''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1694 || [[#BLine Width|BLine Width]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1691 || [[#Step|Step]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1354 || [[#Subtract|Subtract]] (for gradients)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1354 || [[#Add|Add]] (for gradients)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1267 || [[#From Integer|From Integer]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1267 || [[#Duplicate|Duplicate]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1238 || [[#Reciprocal|Reciprocal]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1226 || [[#Time Loop|Time Loop]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1162 || [[#Reverse Tangent|Reverse Tangent]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1132 || [[#aTan2|aTan2]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1111 || [[#Cos|Cos]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 923 || [[#Switch|Switch]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 907 || [[#Random|Random]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || &amp;amp;nbsp; ||&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.07)''' || 878 || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 776 || [[#Range|Range]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 744 || [[#BLine Vertex|BLine Vertex]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 744 || [[#BLine Tangent|BLine Tangent]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 742 || [[#Add|Add]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 739 || [[#Exponential|Exponential]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 666 || [[#Repeat Gradient|Repeat Gradient]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 610 || [[#Timed Swap|Timed Swap]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || &amp;amp;nbsp; ||&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.06)''' || 536 || &amp;amp;nbsp;&lt;br /&gt;
|-|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Talk:Convert&amp;diff=5788</id>
		<title>Talk:Convert</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Talk:Convert&amp;diff=5788"/>
				<updated>2008-02-24T22:45:43Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: /* Compatibility (Yoyobuae's table format suggestion) */  editing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Timed Swap's Brokenness ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Timed Swap&amp;quot; convert crashes synfig as soon as it is used.&lt;br /&gt;
&lt;br /&gt;
The problem seems to be with ValueNode_TimedSwap::set_swap_length() and ValueNode_TimedSwap::set_swap_time() which both try to check that the type of their argument is correct, but fail to do so. [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
== The Feature Itself - Proposed Additions ==&lt;br /&gt;
&lt;br /&gt;
While useful, it appears a little incomplete.  Suppose I want to fix one of a polygon's vertices such that it always forms a 90 degree angle with the vertex before it, and is a set distance from that vertex.  I could do that if I could work out the angle of the previous side to the horizontal, but that doesn't seem to be possible.  Also, while it's possible to use the composite conversion to construct a vector from an X and a Y value, it doesn't seem to be possible to go in the opposite direction.  If I have a vector and I want to use just its X coordinate, I don't think I can. [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
I propose some new conversions: [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
:Let me play with those feature for vertexs and I'll let you know. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Vector Angle ===&lt;br /&gt;
&lt;br /&gt;
Converting an angle parameter to &amp;quot;Vector Angle&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the angle between &amp;quot;Vector&amp;quot; and the horizontal, multiplied by &amp;quot;Scalar&amp;quot;:&lt;br /&gt;
   atan(Vector.Y/Vector.X) * Scalar&lt;br /&gt;
&lt;br /&gt;
:This would be mathematically unconsistent. Vector angel is already given by atan(Vector.X/Vector.Y). If you multiply it by Scalar then angle would be another thing (I don't know what). For example, Rotate layer have a angle value that is defined by an angle (real value). Its visual control is given by a radial duck attached to the center. If you modify the distance of the duck from the origin the duck will go to a defined (and not modificable) distance, due to the angle is the only useful value of the duck's position.&lt;br /&gt;
&lt;br /&gt;
:Also, better use atan2 function (or the defined in the math library) that allow a Y value of 0 without obtaining an exception call. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
::Good point.  I'll use atan2 rather than atan.  I'm not sure about X/Y vs. Y/X - I'll use whatever works best.  I'm thinking the Scalar might be useful if I want some object to rotate twice as quickly as some other object, for example.  If you don't want this, leave the Scalar at its default value of 1.0.  I was just copying the way that the Subtract convert works:  it returns (LHS-RHS)*Scalar.  There's no need to the Scalar really, but maybe it'll be useful sometimes. [[User:Dooglus|dooglus]] 11:17, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Vector Length ===&lt;br /&gt;
&lt;br /&gt;
Converting a real-valued parameter to &amp;quot;Vector Length&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the length of &amp;quot;Vector&amp;quot;, multiplied by &amp;quot;Scalar&amp;quot;:&lt;br /&gt;
   |Vector| * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Vector X ===&lt;br /&gt;
&lt;br /&gt;
Converting a real parameter to &amp;quot;Vector X&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is:&lt;br /&gt;
   Vector.X * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Vector Y ===&lt;br /&gt;
&lt;br /&gt;
Converting a real parameter to &amp;quot;Vector Y&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is:&lt;br /&gt;
   Vector.Y * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Gradient Color ===&lt;br /&gt;
&lt;br /&gt;
Converting a color parameter to &amp;quot;Gradient Color&amp;quot; adds sub-parameters:&lt;br /&gt;
* gradient &amp;quot;Gradient&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is the color at position &amp;quot;Amount&amp;quot; in the given &amp;quot;Gradient&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This would allow us to pick specific single colors from a gradient, allow us to color-cycle layers through the colors in a gradient, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Angle Vector Dot ===&lt;br /&gt;
&lt;br /&gt;
Converting a Real parameter to a &amp;quot; Angle Vector Dot&amp;quot; adds sub-parameters:&lt;br /&gt;
*Vector 1&lt;br /&gt;
*Vector 2&lt;br /&gt;
&lt;br /&gt;
The return value is the arcosine of the scalar product of both vectors divided by the product of their magnitudes.&lt;br /&gt;
&lt;br /&gt;
 acos((Vector1 · Vector2)/(|Vector1| * |Vector2|))&lt;br /&gt;
&lt;br /&gt;
This would allow calculate the angle between any two vectors as well as the dot product of two vectors is the product of their absolute values of its magnitudes by the cosine of its angle.&lt;br /&gt;
&lt;br /&gt;
 Dot = Vector1 · Vector2 = |Vector1| * |Vector2| * cos(alpha)&lt;br /&gt;
there alpha is the angle between vector1 and vector 2.&lt;br /&gt;
--[[User:Genete|Genete]] 09:05, 21 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interval === &lt;br /&gt;
&lt;br /&gt;
Converting a Real, Angle, Integer (or other kind of scalar parameter) adds sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* MAX&lt;br /&gt;
* MIN&lt;br /&gt;
* Scalar&lt;br /&gt;
&lt;br /&gt;
The return value is the same number than the given by Scalar but truncated to its boundaries MAX, MIN.&lt;br /&gt;
&lt;br /&gt;
  if Scalar &amp;gt;= MAX then return MAX&lt;br /&gt;
  else if Scalar &amp;lt;= MIN then return MIN&lt;br /&gt;
  else return Scalar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
This would allow link parameters of objects to the same of other objects but limited to certain intervals. The intervals could be also linked to other objects parameters so it would allow maintain the movement of a layer/Vertex or what ever other parameter inside certain limits defined by drawn parameters... --[[User:Genete|Genete]] 02:28, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: Thanks for the suggestion.  I just added it, in [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=r776 r776] and [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=r777 r777].&lt;br /&gt;
&lt;br /&gt;
: I called it '[[Convert#Range|Range]]', since it specifies a range of acceptable values.  Hope that's OK with you! -- [[User:Dooglus|dooglus]] 17:19, 27 September 2007 (EDT)&lt;br /&gt;
:: It is prefect! Range is a more precise name. Thanks for implement it so fast, you're welcome!. I think this conversion would be very useful to limit rotations and translations. I've just compiled from svn r780 and it works great!--[[User:Genete|Genete]] 18:05, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Switch===&lt;br /&gt;
&lt;br /&gt;
Converting a any parameter to Switch adds tree sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* Link (reference)&lt;br /&gt;
* Link Alternative (reference)&lt;br /&gt;
* Switch (on/off)&lt;br /&gt;
&lt;br /&gt;
The returned value is Link is Switch sub parameter is set to off (default value) and Link Alternative if the Switch sub parameter is set to on.&lt;br /&gt;
&lt;br /&gt;
It will allow modify the parameter to different types of conversions and also different exported parameters during animation. For example make a layer to follow two different Blines during animation.&lt;br /&gt;
&lt;br /&gt;
Also it would eventually allow to link or unlink vertex to other vertex.&lt;br /&gt;
--[[User:Genete|Genete]] 06:54, 13 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
=== Losing Waypoints ===&lt;br /&gt;
&lt;br /&gt;
''The &amp;quot;Convert&amp;quot; menu allows you to specify that the parameter should be controlled automatically in various ways''. Ok, but once the parameter is converted to the other(s) one(s), how can it be automatically ''controlled''? Maybe the parameter is now controlled by waypoints and keyframes as the normal parameters?. I'm interested into this feature because I have found that some layers (Eg. Curve Gradient) donesn't work properly in the version I have of synfigstudio (Vertices are &amp;quot;Unknown type&amp;quot;. I hope using &amp;quot;convert&amp;quot; can arrange it and use some types of layers that seems that the default values are incorrectly set. Bye, [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:What version to do use?  When you convert the parameter, all existing waypoints for that parameter are deleted (I think) and you won't be allowed to edit that parameter directly any more.  Instead, you edit the new sub-parameters.&lt;br /&gt;
&lt;br /&gt;
:Suppose you have a circle.  Right-click its radius and convert to linear.  Switch to animate-edit-mode, set the default interpolation type to be Constant (that's the very bottom setting in the toolbox window) and at time zero, set the rate to be 0.5 and the offset to be 0.5.  That means the radius starts at 0.5 units and grows by 0.5 every second.  You might have your parameters to be displayed in 'points' or some other unit.  You can change that from the toolbox using File&amp;gt;Setup&amp;gt;Misc&amp;gt;Unit System.  Set that to Units for this example.  Don't forget to set it back after if you want to work in points again.&lt;br /&gt;
&lt;br /&gt;
:You'll see that there are now waypoints on the 'offset' and 'rate' parameters, and you can animate those parameters just like you could animate the radius before.&lt;br /&gt;
&lt;br /&gt;
:Go forward to 1s in the animation.  You'll see that the circle's radius is now 1 (it grew by 0.5u from 0.5u), and set the rate to -0.5 and the offset to 1.5.  This will cause the circle's radius to start shrinking by 0.5 per second from the 1s point onwards.  The 1.5 offset is to arrange that the radius doesn't jump suddenly at 1s.  If the radius is to go down from 1.0 at 1s at 0.5 per second, it would have been at 1.5 at 0s, so that's the offset we use.&lt;br /&gt;
&lt;br /&gt;
:Does that make sense? [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
::I still having 0.61.05 (apr 29 2007). I hope can update ASAP.&lt;br /&gt;
&lt;br /&gt;
::Regarding &amp;quot;Convert&amp;quot; WOW! it is wonderful! absolutely amazing. It opens lots of new possibilities. Thanks for document it. - [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Exporting and Connecting ===&lt;br /&gt;
&lt;br /&gt;
Can converted parameters be linked to other objects' normal/converted parameters? [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:Yes.  The best way to do this is via the 'Export' menu entry.  Make sure you only have a single layer selected, then you can right-click on any parameter (regular, or converted) and say 'Export' to make the parameter easily available to other layers.  It will ask you to name the parameter.  There's a bug in Synfig (up to and including 0.61.06) which causes a crash when renaming exported values, so chose carefully.  Then go to the 'Children' dialog, open up the &amp;quot;ValueBase Nodes&amp;quot; tree and you'll see all your exported values there.  In the Children dialog, select the one you want to link to.  Then select the layer you want to use the exported value in, right-click the parameter and select &amp;quot;Connect&amp;quot;.  That will connect to whatever is selected in the Children dialog, so long as it is the correct type.  (You can't link a color to a vertex - it doesn't make any sense). [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
One suggestion for the initial description:&lt;br /&gt;
''To convert the value back to its original type, select &amp;quot;Disconnect&amp;quot; from its context menu.''&lt;br /&gt;
I would add: ''Disconnect would loose all the waypoints of the converted parameters and don't produce a conversion of the inserted waypoints''. BTW it could be a very cool feature. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:OK, I'll add something like that, but what you wrote isn't quite true.  Disconnect will lose all the waypoints only if the parameter hasn't been exported or linked somewhere else.&lt;br /&gt;
&lt;br /&gt;
:If you want to try converting a parameter to something else, but don't want it to forget your waypoints, export the parameter before you convert it.  Then you can 'Connect' back to it by selecting it in the Children dialog first, then right-click, 'Connect' on the parameter in the Parameters dialog.&lt;br /&gt;
&lt;br /&gt;
:: It makes some sense now. The Child tab was a mystery to me because always is empty. Ill try it. [[User:Genete|Genete]] 16:23, 6 Sep 2007 (EDT). But wait a moment... 'Export' is like keep a animation that can be used later with 'Connect'...? Can I recover the exported animation to play at any moment during time line?... Wow that's so cool!! [[User:Genete|Genete]] 16:36, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: Not quite.  When you export a parameter, what you're exporting is the whole lifetime of that parameter - its waypoints, sub-parameters and so on.  What you're talking about is similar to what happens when you export the canvas in an encapsulated layer.  Try this:  draw something, using a bunch of layers, and encapsulate the layers together into a single layer.  Then select that layer and go to its parameters.  It has a parameter called 'Canvas'.  Export and name that, then look in the Canvases dialog.  Double-click your exported canvas and it will open in a window of its own.  You can edit it in isolation there.  Also, if you look in the Children dialog, you'll see your canvas in the top section, separate from the ValueBase things.&lt;br /&gt;
&lt;br /&gt;
::: The thing about re-using exported canvases at different points in time is something I've not been able to work out yet.  I think it may be possible, but I've not had a good look.&lt;br /&gt;
&lt;br /&gt;
::: Something else worth mentioning is this: if you look at the parameters for any encapsulated layer, or any &amp;quot;Layers&amp;gt;New&amp;gt;(Other|Default)&amp;gt;PasteCanvas&amp;quot; (I moved it from Default to Other in subversion - it was the only thing in the 'Other' menu), the 'Canvas' parameter gives you a drop-down menu listing all the canvases you've exported.  If you have animate-edit mode enabled, then editing this Canvas parameter creates waypoints (although for some reason they don't show up) which keep a record of which canvas is showing when.  You can use this to switch between 'scenes' in an animation.&lt;br /&gt;
&lt;br /&gt;
::: Keep asking the questions - it's good to get this typed up - eventually I might even get around to putting it all in some kind of order!  :) [[User:Dooglus|dooglus]] 18:34, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:The problem with your suggestion of the cool feature is that it's possible to produce very complex patterns by using combinations of 'converts' - much more complex than can be created by waypoints, so in general there's no way to produce a set of waypoint to give the same animation.  It would be possible to get close, by generating hundreds of waypoints, but that's a waste - why not just keep the type converted? [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
Also I don't know if conversion would maintain the waypoints of the original parameters. If not it would be also a cool feature. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:No, conversion and disconnection both wipe all the waypoints, because there's generally no way to convert between them.  The 'undo' (control-z) function will of course get you your waypoints back if you convert by mistake.&lt;br /&gt;
&lt;br /&gt;
=== Editing Wiki Talk Pages ===&lt;br /&gt;
&lt;br /&gt;
:By the way, when replying to something, use one more ':' at the start of each paragraph than at the start of the thing you're replying to.  Then your reply will be indented.  Also, typing three '~'s in a row will automatically sign your text (like this: [[User:Dooglus|dooglus]]) - useful for old text you forgot to sign before, and finally, typing four '~'s will sign and date your message, making it easier to follow.  Like this: [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: Thanks for the edition tips and for your patience. I'm not familiar with this kind of editors. [[User:Genete|Genete]] 16:23, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Usage of Convert -&amp;gt; BLine ===&lt;br /&gt;
&lt;br /&gt;
I've discovered an usage of BLine. It is in the same sense that you have explained. Maybe it is my version but if I insert a Curve Gradient using New Layer right-click menu the curve gradient is inserted but the ducks of the curve are not shown so i cannot manipulate or insert any new point in the curve. If you make a Convert-&amp;gt; bline on the Vertexes list then the points ducks are shown and everything works OK. - [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Converting Color parameter to Add ===&lt;br /&gt;
&lt;br /&gt;
I don't understand this kind of conversion for colors. If I convert a color into a Add type then it displays three sub parameters: LHS (color), RHS (color) and Scalar (float). The wiki says that the result is (LHS+RHS)*Scalar. The result not always is the thing one could think it would work. I believe that the RGBA individual values of each LHS and RHS colors are added and multiplied by the scalar. Maybe this should be the right way but in my opinion the colors should be truncated to its maximum - minimum values (0-100). If not you're obtaining an alpha value of bigger than 100 that only have sense for the amount parameter.  For the rest of RGB values added values gives a shift in its meaning so red becomes green and green red. Just a thought. --[[User:Genete|Genete]] 14:24, 24 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: It does exactly that - for each of R, G, B, and A, it added LHS + RHS and multiplies the result by the scalar.  If Scalar=0.5 then this can be used to take the mean average of 2 colors.  If any of R,G,B,A go &amp;lt;0 or &amp;gt;100, that doesn't matter.  Synfig works with colors outside the range 0-100.  I don't really understand it, but a color with an Alpha of 1000 on a layer with amount of 0.1 will be more opaque than a color with Alpha 100 on the same layer.  I think this may have something to do with Synfig's [http://en.wikipedia.org/wiki/High_dynamic_range_imaging HDRI] aspirations. [[User:Dooglus|dooglus]] 15:45, 24 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Segment - Unknown Data type - ===&lt;br /&gt;
&lt;br /&gt;
When converting a Vertex to Segment Vertex or Segment Tangent it creates two sub parameters one of  them is called SEG Segment. When double click for editing it says &amp;quot;Unknown Data type&amp;quot;. Is a data type pending to define, a bug or other thing? What should be a ''Segment'' then? --[[User:Genete|Genete]] 18:33, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: I never tried editing one directly before, so I hadn't seen that message.  Try right-clicking the segment and converting it to composite - then you'll see what it is.  Also, see [[Types]] for a list of the 13 types that Synfig uses.&lt;br /&gt;
&lt;br /&gt;
: I think it is probably what synfig used before blines were added - it's a single spline curve, with 2 points and 2 tangents.  Basically, it's a bline, but with only 2 vertices.  Maybe we don't need it any more, but I don't like modifying code when I don't understand the consequences.  I do enough of that already... -- [[User:Dooglus|dooglus]] 18:58, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Default values for Conversions ==&lt;br /&gt;
&lt;br /&gt;
When you have a constant Value Node with a current value and you convert it to any of the convert types it would be desirable that the resulting value of the converted type returns the same than the original constant value.&lt;br /&gt;
&lt;br /&gt;
Current definitions of Exponential and Reciprocal convert types changes the value of the Value Node being converted. &lt;br /&gt;
&lt;br /&gt;
I propose these changes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Exponential:&lt;br /&gt;
&amp;lt;u&amp;gt;Current behaviour&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Exponential gives:&lt;br /&gt;
&lt;br /&gt;
Exponent = 1 ;  Scale = X ; Resulting Value = e¹*X&lt;br /&gt;
&lt;br /&gt;
''Desired behaviour'':&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Exponential gives:&lt;br /&gt;
&lt;br /&gt;
Exponent = 0 ;  Scale = X ; Resulting Value = e°*X = X&lt;br /&gt;
&lt;br /&gt;
#Reciprocal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Current behaviour&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Reciprocal gives:&lt;br /&gt;
&lt;br /&gt;
Link = X ; Resulting Value = 1/X&lt;br /&gt;
&lt;br /&gt;
''Desired behaviour'':&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Reciprocal gives:&lt;br /&gt;
&lt;br /&gt;
Link = 1/X; Resulting Value = 1/(1/X) = X&lt;br /&gt;
&lt;br /&gt;
== Compatibility (Yoyobuae's table format suggestion) ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
| '''Version''' || '''Revision''' || '''Convert'''&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.08)''' || ''not yet released''&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1694 || [[#BLine Width|BLine Width]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1691 || [[#Step|Step]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1354 || [[#Subtract|Subtract]] (for gradients)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1354 || [[#Add|Add]] (for gradients)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1267 || [[#From Integer|From Integer]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1267 || [[#Duplicate|Duplicate]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1238 || [[#Reciprocal|Reciprocal]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1226 || [[#Time Loop|Time Loop]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1162 || [[#Reverse Tangent|Reverse Tangent]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1132 || [[#aTan2|aTan2]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1111 || [[#Cos|Cos]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 923 || [[#Switch|Switch]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 907 || [[#Random|Random]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || &amp;amp;nbsp; ||&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.07)''' || 878 || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 776 || [[#Range|Range]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 744 || [[#BLine Vertex|BLine Vertex]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 744 || [[#BLine Tangent|BLine Tangent]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 742 || [[#Add|Add]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 739 || [[#Exponential|Exponential]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 666 || [[#Repeat Gradient|Repeat Gradient]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 610 || [[#Timed Swap|Timed Swap]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || &amp;amp;nbsp; ||&lt;br /&gt;
|-&lt;br /&gt;
| '''(0.61.06)''' || 536 || &amp;amp;nbsp;&lt;br /&gt;
|-|}&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Talk:Convert&amp;diff=5785</id>
		<title>Talk:Convert</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Talk:Convert&amp;diff=5785"/>
				<updated>2008-02-24T22:22:00Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Adding a table format suggestion for compatibility list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Timed Swap's Brokenness ==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Timed Swap&amp;quot; convert crashes synfig as soon as it is used.&lt;br /&gt;
&lt;br /&gt;
The problem seems to be with ValueNode_TimedSwap::set_swap_length() and ValueNode_TimedSwap::set_swap_time() which both try to check that the type of their argument is correct, but fail to do so. [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
== The Feature Itself - Proposed Additions ==&lt;br /&gt;
&lt;br /&gt;
While useful, it appears a little incomplete.  Suppose I want to fix one of a polygon's vertices such that it always forms a 90 degree angle with the vertex before it, and is a set distance from that vertex.  I could do that if I could work out the angle of the previous side to the horizontal, but that doesn't seem to be possible.  Also, while it's possible to use the composite conversion to construct a vector from an X and a Y value, it doesn't seem to be possible to go in the opposite direction.  If I have a vector and I want to use just its X coordinate, I don't think I can. [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
I propose some new conversions: [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
:Let me play with those feature for vertexs and I'll let you know. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Vector Angle ===&lt;br /&gt;
&lt;br /&gt;
Converting an angle parameter to &amp;quot;Vector Angle&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the angle between &amp;quot;Vector&amp;quot; and the horizontal, multiplied by &amp;quot;Scalar&amp;quot;:&lt;br /&gt;
   atan(Vector.Y/Vector.X) * Scalar&lt;br /&gt;
&lt;br /&gt;
:This would be mathematically unconsistent. Vector angel is already given by atan(Vector.X/Vector.Y). If you multiply it by Scalar then angle would be another thing (I don't know what). For example, Rotate layer have a angle value that is defined by an angle (real value). Its visual control is given by a radial duck attached to the center. If you modify the distance of the duck from the origin the duck will go to a defined (and not modificable) distance, due to the angle is the only useful value of the duck's position.&lt;br /&gt;
&lt;br /&gt;
:Also, better use atan2 function (or the defined in the math library) that allow a Y value of 0 without obtaining an exception call. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
::Good point.  I'll use atan2 rather than atan.  I'm not sure about X/Y vs. Y/X - I'll use whatever works best.  I'm thinking the Scalar might be useful if I want some object to rotate twice as quickly as some other object, for example.  If you don't want this, leave the Scalar at its default value of 1.0.  I was just copying the way that the Subtract convert works:  it returns (LHS-RHS)*Scalar.  There's no need to the Scalar really, but maybe it'll be useful sometimes. [[User:Dooglus|dooglus]] 11:17, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Vector Length ===&lt;br /&gt;
&lt;br /&gt;
Converting a real-valued parameter to &amp;quot;Vector Length&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the length of &amp;quot;Vector&amp;quot;, multiplied by &amp;quot;Scalar&amp;quot;:&lt;br /&gt;
   |Vector| * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Vector X ===&lt;br /&gt;
&lt;br /&gt;
Converting a real parameter to &amp;quot;Vector X&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is:&lt;br /&gt;
   Vector.X * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Vector Y ===&lt;br /&gt;
&lt;br /&gt;
Converting a real parameter to &amp;quot;Vector Y&amp;quot; adds sub-parameters:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
* real &amp;quot;Scalar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is:&lt;br /&gt;
   Vector.Y * Scalar&lt;br /&gt;
&lt;br /&gt;
=== Gradient Color ===&lt;br /&gt;
&lt;br /&gt;
Converting a color parameter to &amp;quot;Gradient Color&amp;quot; adds sub-parameters:&lt;br /&gt;
* gradient &amp;quot;Gradient&amp;quot;&lt;br /&gt;
* real &amp;quot;Amount&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The return value is the color at position &amp;quot;Amount&amp;quot; in the given &amp;quot;Gradient&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This would allow us to pick specific single colors from a gradient, allow us to color-cycle layers through the colors in a gradient, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Angle Vector Dot ===&lt;br /&gt;
&lt;br /&gt;
Converting a Real parameter to a &amp;quot; Angle Vector Dot&amp;quot; adds sub-parameters:&lt;br /&gt;
*Vector 1&lt;br /&gt;
*Vector 2&lt;br /&gt;
&lt;br /&gt;
The return value is the arcosine of the scalar product of both vectors divided by the product of their magnitudes.&lt;br /&gt;
&lt;br /&gt;
 acos((Vector1 · Vector2)/(|Vector1| * |Vector2|))&lt;br /&gt;
&lt;br /&gt;
This would allow calculate the angle between any two vectors as well as the dot product of two vectors is the product of their absolute values of its magnitudes by the cosine of its angle.&lt;br /&gt;
&lt;br /&gt;
 Dot = Vector1 · Vector2 = |Vector1| * |Vector2| * cos(alpha)&lt;br /&gt;
there alpha is the angle between vector1 and vector 2.&lt;br /&gt;
--[[User:Genete|Genete]] 09:05, 21 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interval === &lt;br /&gt;
&lt;br /&gt;
Converting a Real, Angle, Integer (or other kind of scalar parameter) adds sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* MAX&lt;br /&gt;
* MIN&lt;br /&gt;
* Scalar&lt;br /&gt;
&lt;br /&gt;
The return value is the same number than the given by Scalar but truncated to its boundaries MAX, MIN.&lt;br /&gt;
&lt;br /&gt;
  if Scalar &amp;gt;= MAX then return MAX&lt;br /&gt;
  else if Scalar &amp;lt;= MIN then return MIN&lt;br /&gt;
  else return Scalar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
This would allow link parameters of objects to the same of other objects but limited to certain intervals. The intervals could be also linked to other objects parameters so it would allow maintain the movement of a layer/Vertex or what ever other parameter inside certain limits defined by drawn parameters... --[[User:Genete|Genete]] 02:28, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: Thanks for the suggestion.  I just added it, in [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=r776 r776] and [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=r777 r777].&lt;br /&gt;
&lt;br /&gt;
: I called it '[[Convert#Range|Range]]', since it specifies a range of acceptable values.  Hope that's OK with you! -- [[User:Dooglus|dooglus]] 17:19, 27 September 2007 (EDT)&lt;br /&gt;
:: It is prefect! Range is a more precise name. Thanks for implement it so fast, you're welcome!. I think this conversion would be very useful to limit rotations and translations. I've just compiled from svn r780 and it works great!--[[User:Genete|Genete]] 18:05, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Switch===&lt;br /&gt;
&lt;br /&gt;
Converting a any parameter to Switch adds tree sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* Link (reference)&lt;br /&gt;
* Link Alternative (reference)&lt;br /&gt;
* Switch (on/off)&lt;br /&gt;
&lt;br /&gt;
The returned value is Link is Switch sub parameter is set to off (default value) and Link Alternative if the Switch sub parameter is set to on.&lt;br /&gt;
&lt;br /&gt;
It will allow modify the parameter to different types of conversions and also different exported parameters during animation. For example make a layer to follow two different Blines during animation.&lt;br /&gt;
&lt;br /&gt;
Also it would eventually allow to link or unlink vertex to other vertex.&lt;br /&gt;
--[[User:Genete|Genete]] 06:54, 13 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
&lt;br /&gt;
=== Losing Waypoints ===&lt;br /&gt;
&lt;br /&gt;
''The &amp;quot;Convert&amp;quot; menu allows you to specify that the parameter should be controlled automatically in various ways''. Ok, but once the parameter is converted to the other(s) one(s), how can it be automatically ''controlled''? Maybe the parameter is now controlled by waypoints and keyframes as the normal parameters?. I'm interested into this feature because I have found that some layers (Eg. Curve Gradient) donesn't work properly in the version I have of synfigstudio (Vertices are &amp;quot;Unknown type&amp;quot;. I hope using &amp;quot;convert&amp;quot; can arrange it and use some types of layers that seems that the default values are incorrectly set. Bye, [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:What version to do use?  When you convert the parameter, all existing waypoints for that parameter are deleted (I think) and you won't be allowed to edit that parameter directly any more.  Instead, you edit the new sub-parameters.&lt;br /&gt;
&lt;br /&gt;
:Suppose you have a circle.  Right-click its radius and convert to linear.  Switch to animate-edit-mode, set the default interpolation type to be Constant (that's the very bottom setting in the toolbox window) and at time zero, set the rate to be 0.5 and the offset to be 0.5.  That means the radius starts at 0.5 units and grows by 0.5 every second.  You might have your parameters to be displayed in 'points' or some other unit.  You can change that from the toolbox using File&amp;gt;Setup&amp;gt;Misc&amp;gt;Unit System.  Set that to Units for this example.  Don't forget to set it back after if you want to work in points again.&lt;br /&gt;
&lt;br /&gt;
:You'll see that there are now waypoints on the 'offset' and 'rate' parameters, and you can animate those parameters just like you could animate the radius before.&lt;br /&gt;
&lt;br /&gt;
:Go forward to 1s in the animation.  You'll see that the circle's radius is now 1 (it grew by 0.5u from 0.5u), and set the rate to -0.5 and the offset to 1.5.  This will cause the circle's radius to start shrinking by 0.5 per second from the 1s point onwards.  The 1.5 offset is to arrange that the radius doesn't jump suddenly at 1s.  If the radius is to go down from 1.0 at 1s at 0.5 per second, it would have been at 1.5 at 0s, so that's the offset we use.&lt;br /&gt;
&lt;br /&gt;
:Does that make sense? [[User:Dooglus|dooglus]]&lt;br /&gt;
&lt;br /&gt;
::I still having 0.61.05 (apr 29 2007). I hope can update ASAP.&lt;br /&gt;
&lt;br /&gt;
::Regarding &amp;quot;Convert&amp;quot; WOW! it is wonderful! absolutely amazing. It opens lots of new possibilities. Thanks for document it. - [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Exporting and Connecting ===&lt;br /&gt;
&lt;br /&gt;
Can converted parameters be linked to other objects' normal/converted parameters? [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:Yes.  The best way to do this is via the 'Export' menu entry.  Make sure you only have a single layer selected, then you can right-click on any parameter (regular, or converted) and say 'Export' to make the parameter easily available to other layers.  It will ask you to name the parameter.  There's a bug in Synfig (up to and including 0.61.06) which causes a crash when renaming exported values, so chose carefully.  Then go to the 'Children' dialog, open up the &amp;quot;ValueBase Nodes&amp;quot; tree and you'll see all your exported values there.  In the Children dialog, select the one you want to link to.  Then select the layer you want to use the exported value in, right-click the parameter and select &amp;quot;Connect&amp;quot;.  That will connect to whatever is selected in the Children dialog, so long as it is the correct type.  (You can't link a color to a vertex - it doesn't make any sense). [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
One suggestion for the initial description:&lt;br /&gt;
''To convert the value back to its original type, select &amp;quot;Disconnect&amp;quot; from its context menu.''&lt;br /&gt;
I would add: ''Disconnect would loose all the waypoints of the converted parameters and don't produce a conversion of the inserted waypoints''. BTW it could be a very cool feature. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:OK, I'll add something like that, but what you wrote isn't quite true.  Disconnect will lose all the waypoints only if the parameter hasn't been exported or linked somewhere else.&lt;br /&gt;
&lt;br /&gt;
:If you want to try converting a parameter to something else, but don't want it to forget your waypoints, export the parameter before you convert it.  Then you can 'Connect' back to it by selecting it in the Children dialog first, then right-click, 'Connect' on the parameter in the Parameters dialog.&lt;br /&gt;
&lt;br /&gt;
:: It makes some sense now. The Child tab was a mystery to me because always is empty. Ill try it. [[User:Genete|Genete]] 16:23, 6 Sep 2007 (EDT). But wait a moment... 'Export' is like keep a animation that can be used later with 'Connect'...? Can I recover the exported animation to play at any moment during time line?... Wow that's so cool!! [[User:Genete|Genete]] 16:36, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: Not quite.  When you export a parameter, what you're exporting is the whole lifetime of that parameter - its waypoints, sub-parameters and so on.  What you're talking about is similar to what happens when you export the canvas in an encapsulated layer.  Try this:  draw something, using a bunch of layers, and encapsulate the layers together into a single layer.  Then select that layer and go to its parameters.  It has a parameter called 'Canvas'.  Export and name that, then look in the Canvases dialog.  Double-click your exported canvas and it will open in a window of its own.  You can edit it in isolation there.  Also, if you look in the Children dialog, you'll see your canvas in the top section, separate from the ValueBase things.&lt;br /&gt;
&lt;br /&gt;
::: The thing about re-using exported canvases at different points in time is something I've not been able to work out yet.  I think it may be possible, but I've not had a good look.&lt;br /&gt;
&lt;br /&gt;
::: Something else worth mentioning is this: if you look at the parameters for any encapsulated layer, or any &amp;quot;Layers&amp;gt;New&amp;gt;(Other|Default)&amp;gt;PasteCanvas&amp;quot; (I moved it from Default to Other in subversion - it was the only thing in the 'Other' menu), the 'Canvas' parameter gives you a drop-down menu listing all the canvases you've exported.  If you have animate-edit mode enabled, then editing this Canvas parameter creates waypoints (although for some reason they don't show up) which keep a record of which canvas is showing when.  You can use this to switch between 'scenes' in an animation.&lt;br /&gt;
&lt;br /&gt;
::: Keep asking the questions - it's good to get this typed up - eventually I might even get around to putting it all in some kind of order!  :) [[User:Dooglus|dooglus]] 18:34, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:The problem with your suggestion of the cool feature is that it's possible to produce very complex patterns by using combinations of 'converts' - much more complex than can be created by waypoints, so in general there's no way to produce a set of waypoint to give the same animation.  It would be possible to get close, by generating hundreds of waypoints, but that's a waste - why not just keep the type converted? [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
Also I don't know if conversion would maintain the waypoints of the original parameters. If not it would be also a cool feature. [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
:No, conversion and disconnection both wipe all the waypoints, because there's generally no way to convert between them.  The 'undo' (control-z) function will of course get you your waypoints back if you convert by mistake.&lt;br /&gt;
&lt;br /&gt;
=== Editing Wiki Talk Pages ===&lt;br /&gt;
&lt;br /&gt;
:By the way, when replying to something, use one more ':' at the start of each paragraph than at the start of the thing you're replying to.  Then your reply will be indented.  Also, typing three '~'s in a row will automatically sign your text (like this: [[User:Dooglus|dooglus]]) - useful for old text you forgot to sign before, and finally, typing four '~'s will sign and date your message, making it easier to follow.  Like this: [[User:Dooglus|dooglus]] 11:06, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: Thanks for the edition tips and for your patience. I'm not familiar with this kind of editors. [[User:Genete|Genete]] 16:23, 6 Sep 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Usage of Convert -&amp;gt; BLine ===&lt;br /&gt;
&lt;br /&gt;
I've discovered an usage of BLine. It is in the same sense that you have explained. Maybe it is my version but if I insert a Curve Gradient using New Layer right-click menu the curve gradient is inserted but the ducks of the curve are not shown so i cannot manipulate or insert any new point in the curve. If you make a Convert-&amp;gt; bline on the Vertexes list then the points ducks are shown and everything works OK. - [[User:Genete|Genete]]&lt;br /&gt;
&lt;br /&gt;
=== Converting Color parameter to Add ===&lt;br /&gt;
&lt;br /&gt;
I don't understand this kind of conversion for colors. If I convert a color into a Add type then it displays three sub parameters: LHS (color), RHS (color) and Scalar (float). The wiki says that the result is (LHS+RHS)*Scalar. The result not always is the thing one could think it would work. I believe that the RGBA individual values of each LHS and RHS colors are added and multiplied by the scalar. Maybe this should be the right way but in my opinion the colors should be truncated to its maximum - minimum values (0-100). If not you're obtaining an alpha value of bigger than 100 that only have sense for the amount parameter.  For the rest of RGB values added values gives a shift in its meaning so red becomes green and green red. Just a thought. --[[User:Genete|Genete]] 14:24, 24 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: It does exactly that - for each of R, G, B, and A, it added LHS + RHS and multiplies the result by the scalar.  If Scalar=0.5 then this can be used to take the mean average of 2 colors.  If any of R,G,B,A go &amp;lt;0 or &amp;gt;100, that doesn't matter.  Synfig works with colors outside the range 0-100.  I don't really understand it, but a color with an Alpha of 1000 on a layer with amount of 0.1 will be more opaque than a color with Alpha 100 on the same layer.  I think this may have something to do with Synfig's [http://en.wikipedia.org/wiki/High_dynamic_range_imaging HDRI] aspirations. [[User:Dooglus|dooglus]] 15:45, 24 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Segment - Unknown Data type - ===&lt;br /&gt;
&lt;br /&gt;
When converting a Vertex to Segment Vertex or Segment Tangent it creates two sub parameters one of  them is called SEG Segment. When double click for editing it says &amp;quot;Unknown Data type&amp;quot;. Is a data type pending to define, a bug or other thing? What should be a ''Segment'' then? --[[User:Genete|Genete]] 18:33, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
: I never tried editing one directly before, so I hadn't seen that message.  Try right-clicking the segment and converting it to composite - then you'll see what it is.  Also, see [[Types]] for a list of the 13 types that Synfig uses.&lt;br /&gt;
&lt;br /&gt;
: I think it is probably what synfig used before blines were added - it's a single spline curve, with 2 points and 2 tangents.  Basically, it's a bline, but with only 2 vertices.  Maybe we don't need it any more, but I don't like modifying code when I don't understand the consequences.  I do enough of that already... -- [[User:Dooglus|dooglus]] 18:58, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Default values for Conversions ==&lt;br /&gt;
&lt;br /&gt;
When you have a constant Value Node with a current value and you convert it to any of the convert types it would be desirable that the resulting value of the converted type returns the same than the original constant value.&lt;br /&gt;
&lt;br /&gt;
Current definitions of Exponential and Reciprocal convert types changes the value of the Value Node being converted. &lt;br /&gt;
&lt;br /&gt;
I propose these changes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Exponential:&lt;br /&gt;
&amp;lt;u&amp;gt;Current behaviour&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Exponential gives:&lt;br /&gt;
&lt;br /&gt;
Exponent = 1 ;  Scale = X ; Resulting Value = e¹*X&lt;br /&gt;
&lt;br /&gt;
''Desired behaviour'':&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Exponential gives:&lt;br /&gt;
&lt;br /&gt;
Exponent = 0 ;  Scale = X ; Resulting Value = e°*X = X&lt;br /&gt;
&lt;br /&gt;
#Reciprocal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Current behaviour&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Reciprocal gives:&lt;br /&gt;
&lt;br /&gt;
Link = X ; Resulting Value = 1/X&lt;br /&gt;
&lt;br /&gt;
''Desired behaviour'':&lt;br /&gt;
&lt;br /&gt;
Converting a Real ValueNode = X to Reciprocal gives:&lt;br /&gt;
&lt;br /&gt;
Link = 1/X; Resulting Value = 1/(1/X) = X&lt;br /&gt;
&lt;br /&gt;
== Compatibility (Yoyobuae's table format suggestion) ==&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Talk:Blend_Method_Parameter&amp;diff=5777</id>
		<title>Talk:Blend Method Parameter</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Talk:Blend_Method_Parameter&amp;diff=5777"/>
				<updated>2008-02-20T22:14:13Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: New Blend Method, postintg an idea&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==New Blend Method==&lt;br /&gt;
&lt;br /&gt;
I would like to have a blend method that allows apply effects over a certain region of a composition. Let's call this new Blend Method &amp;quot;X&amp;quot;. So the Layer stack would be like this:&lt;br /&gt;
&lt;br /&gt;
 Effect Layer (Blend Method: X)&lt;br /&gt;
 Cropping Layer (Blend Method: A)&lt;br /&gt;
 Background Layer (Blend Method: doesn't matter)&lt;br /&gt;
&lt;br /&gt;
A is any Blend Method.&lt;br /&gt;
&lt;br /&gt;
The blend method X would do the following:&lt;br /&gt;
&lt;br /&gt;
Apply the effect over the background using the composite blend method:&lt;br /&gt;
&lt;br /&gt;
 Effect Layer (Blend Method Composite)&lt;br /&gt;
 Background Layer &lt;br /&gt;
 -----------------------&lt;br /&gt;
 Effected Background Layer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then apply a Straight Onto blend method over the Cropping layer&lt;br /&gt;
&lt;br /&gt;
 Effect Background Layer (Blend Method Straight Onto)&lt;br /&gt;
 Cropping Layer &lt;br /&gt;
 ---------------------------------------&lt;br /&gt;
 Cropped Effected Background&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Later apply the result on the background using the Cropping Layer Blend Method&lt;br /&gt;
&lt;br /&gt;
 Cropped Effected Background (Blend Method A)&lt;br /&gt;
 Background Layer&lt;br /&gt;
 -------------------------------------------&lt;br /&gt;
 Cropped Effected Background Onto Background&lt;br /&gt;
&lt;br /&gt;
I propose call this X Blend Method: &amp;quot;Cropped Onto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Layers as Function objects ==&lt;br /&gt;
&lt;br /&gt;
Let's say layers behave like a function: f(x), where f is the layer defined operation and x the context.  The result is passed on to the next layer, which does something similar.&lt;br /&gt;
&lt;br /&gt;
When we have several layers (in this example: f, g, h, i) we end up with:&lt;br /&gt;
f(g(h(i(blank)))&lt;br /&gt;
&lt;br /&gt;
A paste canvas is a bit different though it takes two arguments: p(x,y) where x is the context and y is the context returned by the top layer of the inline canvas.  Lets now put this paste canvas on top of the layers in the previous example:&lt;br /&gt;
p(f(g(h(i(blank))),y(blank))&lt;br /&gt;
where y is the inline canvas.&lt;br /&gt;
&lt;br /&gt;
From this point of view all of this is very similar to how function objects work. But we lack the ability to compose function objects (like STL does, with SGI extensions that is).&lt;br /&gt;
&lt;br /&gt;
Lets say there is a layer type: compose.  This layer takes its context, and renders an inline canvas on top of that context. So that:&lt;br /&gt;
compose(context(),inline()) = inline(context())&lt;br /&gt;
&lt;br /&gt;
This would allow applying a certain effect, as defined in the inline canvas, far more easily.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Bline_Speed&amp;diff=5760</id>
		<title>Dev:Bline Speed</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Bline_Speed&amp;diff=5760"/>
				<updated>2008-02-15T20:29:15Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bline's parameter's &amp;quot;speed&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
If you have played enough with Blines, &amp;quot;Bline Vertex&amp;quot; and &amp;quot;Bline Tangent&amp;quot; converts you perhaps have noticed that a change in the &amp;quot;Amount&amp;quot; parameter doesn't always step forward/backwards the same amount.  For example, adding 0.1 to &amp;quot;Amount&amp;quot; doesn't move a &amp;quot;Bline Vertex&amp;quot; by the same distance all the time.&lt;br /&gt;
&lt;br /&gt;
Near the bline's vertexes (or near the curved parts) you'll notice that evenly spaced &amp;quot;Amount&amp;quot; values are either compressed together or expanded away from each other.  Trying to make an object follow a bline will lead to the object changing speeds as it goes along it.&lt;br /&gt;
&lt;br /&gt;
The problem lies in how Blines are defined and how a position in the Bline changes as &amp;quot;Amount&amp;quot; parameter changes.  I'll refer to the rate of change as the Bline's &amp;quot;speed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Why does &amp;quot;speed&amp;quot; changes? ==&lt;br /&gt;
&lt;br /&gt;
Firstly, a Synfig Bline is composed of several bezier sections.  Each segment is a cubic bezier line.  This sections are joined back to back, allowing for arbitrarily complex shapes.  All the properties that for a single section, also hold true for any number of sections. So I'm gonna focus on Blines with a single section, in other words, Blines with only two vertexes.&lt;br /&gt;
&lt;br /&gt;
A Bline with a single section reduces to a [http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves Cubic Bezier] defined like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{B}(t)=(1-t)^3\mathbf{P}_0+3t(1-t)^2\mathbf{P}_1+3t^2(1-t)\mathbf{P}_2+t^3\mathbf{P}_3 \mbox{ , } t \in [0,1].&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This equation describes the shape of the curve.  As the &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; parameter increases from zero up to one, the point defined by the equation moves from the Bezier's start towards it's end. The rate of the motion to as &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; increases describes the curve's &amp;quot;speed&amp;quot;. Taking the [http://en.wikipedia.org/wiki/Derivative derivative] of this equation yields the &amp;quot;speed&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{d\mathbf{B}(t)}{dt}=&lt;br /&gt;
  (1-t)^2&lt;br /&gt;
  [&lt;br /&gt;
    3&lt;br /&gt;
    (&lt;br /&gt;
      \mathbf{P}_1&lt;br /&gt;
      -&lt;br /&gt;
      \mathbf{P}_0&lt;br /&gt;
    )&lt;br /&gt;
  ]&lt;br /&gt;
  +&lt;br /&gt;
  2t(1-t)&lt;br /&gt;
  [&lt;br /&gt;
    3&lt;br /&gt;
    (&lt;br /&gt;
      \mathbf{P}_2&lt;br /&gt;
      -&lt;br /&gt;
      \mathbf{P}_1&lt;br /&gt;
    )&lt;br /&gt;
  ]&lt;br /&gt;
  +&lt;br /&gt;
  t^2&lt;br /&gt;
  [&lt;br /&gt;
    3&lt;br /&gt;
    (&lt;br /&gt;
      \mathbf{P}_3&lt;br /&gt;
      -&lt;br /&gt;
      \mathbf{P}_2&lt;br /&gt;
    )&lt;br /&gt;
  ]&lt;br /&gt;
\mbox{ , }t \in [0,1].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may have noticed that this equation is equivalent to a [http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Quadratic_B.C3.A9zier_curves Quadratic Bezier]. This tells us that the &amp;quot;speed&amp;quot; can and does change as the &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; parameter changes.&lt;br /&gt;
&lt;br /&gt;
== Adjusting a Bline's &amp;quot;speed&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Our objective is now to compensate the derivative to achieve a desired &amp;quot;speed&amp;quot;. We cannot change the control points to the curve without changing it's shape. The only other thing we can change is the parameter &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt;. Therefore, we define a function &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; so that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d\mathbf{B}(g(t))}{dt}=\boldsymbol{s}(t)\,\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;math&amp;gt;\boldsymbol{s}(t)&amp;lt;/math&amp;gt; is a vector &amp;lt;math&amp;gt;(s_x(t),s_y(t))\,\!&amp;lt;/math&amp;gt; that defines the desired speed as a function of &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt;. The curve needs to move in a whole range of directions as the curve describes its shape. Our objective is only to control its magnitude. This magnitude condition can be expressed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s_x^2(t)+s_y^2(t)=s_{mag}^2(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;math&amp;gt;s_{mag}(t)\,\!&amp;lt;/math&amp;gt; is a function defining the desired &amp;quot;speed&amp;quot; magnitude.&lt;br /&gt;
&lt;br /&gt;
We can expand our first equation a bit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d\mathbf{B}(g(t))}{dt}=\frac{d\mathbf{B}(g(t))}{d(g(t))}\,\frac{dg(t)}{dt}=\boldsymbol{s}(t)\,\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the equation like this lets us use the original Bline's derivative definition, by replacing &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt;.  Next we replace the x and y components into the magnitude condition equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Bigg[\frac{dB_x(g(t))}{d(g(t))}\,\frac{dg(t)}{dt}\Bigg]^2+\Bigg[\frac{dB_y(g(t))}{d(g(t))}\,\frac{dg(t)}{dt}\Bigg]^2=s_{mag}^2(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rearranging we obtain an [http://en.wikipedia.org/wiki/Differential_equation#Types_of_differential_equations ordinary non-linear differential equation]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{dg(t)}{dt}=\frac{s_{mag}(t)}{\sqrt{\Big[\frac{dB_x(g(t))}{d(g(t))}\Big]^2+\Big[\frac{dB_y(g(t))}{d(g(t))}\Big]^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solving this equation yields a function &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; such that the curve's &amp;quot;speed&amp;quot; is dictated by the function &amp;lt;math&amp;gt;s_{mag}(t)\,\!&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Solving the equation ==&lt;br /&gt;
&lt;br /&gt;
All that is left is to solve the equation. It is quite complex and as I said before, the differential equation that we got is non-linear. This makes it hard to find &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; in a clear formula.&lt;br /&gt;
&lt;br /&gt;
But even such a complex equation is easy to solve numerically. Keeping in mind that what we want is simply the value of &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; so we can plug it into &amp;quot;Amount&amp;quot;.  A numerical solution of the equation gives us just that, the value of &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; at certain intervals.&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Runge-kutta Runge-Kutta] method serves this purpose quite well, and it's quite simple also.  All we need is to evaluate the derivative of the function that we need to find, and feed the values into the Runge-Kutta method.&lt;br /&gt;
&lt;br /&gt;
Let's try a simple case, constant speed. If &amp;lt;math&amp;gt;s_{mag}(t)\,\!&amp;lt;/math&amp;gt; is a constant value, then it would need to be equal to the Bline's length, so that as the &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; goes from 0.0 up to 1.0, the curve moves from the start to the end.  Too little speed and the curve won't reach the end when &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; reaches 1.0.  Too much and the curve will go past the end when &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; reaches 1.0.&lt;br /&gt;
&lt;br /&gt;
Conveniently, this method also allows to find a Bline's length. If we assume &amp;lt;math&amp;gt;s_{mag}(t)=1\,\!&amp;lt;/math&amp;gt; then the curve will reach it's end when &amp;lt;math&amp;gt;t=LENGTH\,\!&amp;lt;/math&amp;gt;, where LENGTH is the Bline's length.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Bline_Speed&amp;diff=5759</id>
		<title>Dev:Bline Speed</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Bline_Speed&amp;diff=5759"/>
				<updated>2008-02-15T20:20:58Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Adding an explanation page to a method to ensure things move at certain speed when following a Bline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bline's parameter's &amp;quot;speed&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
If you have played enough with Blines, &amp;quot;Bline Vertex&amp;quot; and &amp;quot;Bline Tangent&amp;quot; converts you perhaps have noticed that a change in the &amp;quot;Amount&amp;quot; parameter doesn't always step forward/backwards the same amount.  For example, adding 0.1 to &amp;quot;Amount&amp;quot; doesn't move a &amp;quot;Bline Vertex&amp;quot; by the same distance all the time.&lt;br /&gt;
&lt;br /&gt;
Near the bline's vertexes (or near the curved parts) you'll notice that evenly spaced &amp;quot;Amount&amp;quot; values are either compressed together or expanded away from each other.  Trying to make an object follow a bline will lead to the object changing speeds as it goes along it.&lt;br /&gt;
&lt;br /&gt;
The problem lies in how Blines are defined and how a position in the Bline changes as &amp;quot;Amount&amp;quot; parameter changes.  I'll refer to the rate of change as the Bline's &amp;quot;speed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Why does &amp;quot;speed&amp;quot; changes? ==&lt;br /&gt;
&lt;br /&gt;
Firstly, a Synfig Bline is composed of several bezier sections.  Each segment is a cubic bezier line.  This sections are joined back to back, allowing for arbitrarily complex shapes.  All the properties that for a single section, also hold true for any number of sections. So I'm gonna focus on Blines with a single section, in other words, Blines with only two vertexes.&lt;br /&gt;
&lt;br /&gt;
A Bline with a single section reduces to a [http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves Cubic Bezier] defined like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{B}(t)=(1-t)^3\mathbf{P}_0+3t(1-t)^2\mathbf{P}_1+3t^2(1-t)\mathbf{P}_2+t^3\mathbf{P}_3 \mbox{ , } t \in [0,1].&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This equation describes the shape of the curve.  As the &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; parameter increases from zero up to one, the point defined by the equation moves from the Bezier's start towards it's end. The rate of the motion to as &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; increases describes the curve's &amp;quot;speed&amp;quot;. Taking the [http://en.wikipedia.org/wiki/Derivative derivative] of this equation yields the &amp;quot;speed&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{d\mathbf{B}(t)}{dt}=&lt;br /&gt;
  (1-t)^2&lt;br /&gt;
  [&lt;br /&gt;
    3&lt;br /&gt;
    (&lt;br /&gt;
      \mathbf{P}_1&lt;br /&gt;
      -&lt;br /&gt;
      \mathbf{P}_0&lt;br /&gt;
    )&lt;br /&gt;
  ]&lt;br /&gt;
  +&lt;br /&gt;
  2t(1-t)&lt;br /&gt;
  [&lt;br /&gt;
    3&lt;br /&gt;
    (&lt;br /&gt;
      \mathbf{P}_2&lt;br /&gt;
      -&lt;br /&gt;
      \mathbf{P}_1&lt;br /&gt;
    )&lt;br /&gt;
  ]&lt;br /&gt;
  +&lt;br /&gt;
  t^2&lt;br /&gt;
  [&lt;br /&gt;
    3&lt;br /&gt;
    (&lt;br /&gt;
      \mathbf{P}_3&lt;br /&gt;
      -&lt;br /&gt;
      \mathbf{P}_2&lt;br /&gt;
    )&lt;br /&gt;
  ]&lt;br /&gt;
\mbox{ , }t \in [0,1].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may have noticed that this equation is equivalent to a [http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Quadratic_B.C3.A9zier_curves Quadratic Bezier]. This tells us that the &amp;quot;speed&amp;quot; can and does change as the &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; parameter changes.&lt;br /&gt;
&lt;br /&gt;
== Adjusting a Bline's &amp;quot;speed&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Our objective is now to compensate the derivative to achieve a desired &amp;quot;speed&amp;quot;. We cannot change the control points to the curve without changing it's shape. The only other thing we can change is the parameter &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt;. Therefore, we define a function &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; so that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d\mathbf{B}(g(t))}{dt}=\boldsymbol{s}(t)\,\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;math&amp;gt;\boldsymbol{s}(t)&amp;lt;/math&amp;gt; is a vector &amp;lt;math&amp;gt;(s_x(t),s_y(t))\,\!&amp;lt;/math&amp;gt; that defines the desired speed as a function of &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt;. The curve needs to move in a whole range of directions as the curve describes its shape. Our objective is only to control its magnitude. This magnitude condition can be expressed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s_x^2(t)+s_y^2(t)=s_{mag}^2(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;math&amp;gt;s_{mag}(t)\,\!&amp;lt;/math&amp;gt; is a function defining the desired &amp;quot;speed&amp;quot; magnitude.&lt;br /&gt;
&lt;br /&gt;
We can expand our first equation a bit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d\mathbf{B}(g(t))}{dt}=\frac{d\mathbf{B}(g(t))}{d(g(t))}\,\frac{dg(t)}{dt}=\boldsymbol{s}(t)\,\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the equation like this lets us use the Bline's derivative, by replacing &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt;.  Next we replace the x and y components into the magnitude condition equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Bigg[\frac{dB_x(g(t))}{d(g(t))}\,\frac{dg(t)}{dt}\Bigg]^2+\Bigg[\frac{dB_y(g(t))}{d(g(t))}\,\frac{dg(t)}{dt}\Bigg]^2=s_{mag}^2(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rearranging we obtain an [http://en.wikipedia.org/wiki/Differential_equation#Types_of_differential_equations ordinary non-linear differential equation]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{dg(t)}{dt}=\frac{s_{mag}(t)}{\sqrt{\Big[\frac{dB_x(g(t))}{d(g(t))}\Big]^2+\Big[\frac{dB_y(g(t))}{d(g(t))}\Big]^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solving this equation yields a function &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; such that the curve's &amp;quot;speed&amp;quot; is dictated by the function &amp;lt;math&amp;gt;s_{mag}(t)\,\!&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Solving the equation ==&lt;br /&gt;
&lt;br /&gt;
All that is left is to solve the equation. It is quite complex and as I said before, the differential equation that we got is non-linear. This makes it hard to find &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; in a clear formula.&lt;br /&gt;
&lt;br /&gt;
But even such a complex equation is easy to solve numerically. Keeping in mind that what we want is simply the value of &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; so we can plug into &amp;quot;Amount&amp;quot;.  A numerical solution of the equation gives us just that, the value of &amp;lt;math&amp;gt;g(t)\,\!&amp;lt;/math&amp;gt; at certain intervals.&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Runge-kutta Runge-Kutta] method serves this purpose quite well, and it's quite simple also.  All we need is to evaluate the derivative of the function that we need to find, and feed the values into the Runge-Kutta method.&lt;br /&gt;
&lt;br /&gt;
Let's try a simple case, constant speed. If &amp;lt;math&amp;gt;s_{mag}(t)\,\!&amp;lt;/math&amp;gt; is a constant value, then it would need to be equal to the Bline's length, so that as the &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; goes from 0.0 up to 1.0, the curve moves from the start to the end.  Too little speed and the curve won't reach the end when &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; reaches 1.0.  Too much and the curve will go past the end when &amp;lt;math&amp;gt;t\,\!&amp;lt;/math&amp;gt; reaches 1.0.&lt;br /&gt;
&lt;br /&gt;
Conveniently, this method also allows to find a Bline's length. If we assume &amp;lt;math&amp;gt;s_{mag}(t)=1\,\!&amp;lt;/math&amp;gt; then the curve will reach it's end when &amp;lt;math&amp;gt;t=LENGTH\,\!&amp;lt;/math&amp;gt;, where LENGTH is the Bline's length.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=5649</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=5649"/>
				<updated>2008-02-03T18:32:12Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: /* Tweening for images developed in other imaging programs */  Added some info and links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Got a great idea for a new feature? Just add it here, or on the [http://sourceforge.net/tracker/?group_id=144022&amp;amp;atid=757419 feature requests tracker]. Before you do, please check the [http://svn.voria.com/code/ETL/trunk/TODO etl], [http://svn.voria.com/code/synfig-core/trunk/TODO synfig] and [http://svn.voria.com/code/synfig-studio/trunk/TODO synfigstudio] TODO files for similar ideas. Please add a rating of how essential this feature is to your workflow according to the following scale:&lt;br /&gt;
&lt;br /&gt;
#&amp;quot;Well, it might be nifty. To someone.&amp;quot;&lt;br /&gt;
#&amp;quot;I probably would make use this&amp;quot;&lt;br /&gt;
#&amp;quot;It's not essential, but I'd really like to have this at my disposal.&amp;quot;&lt;br /&gt;
#&amp;quot;Synfig would be soooo much better with this change&amp;quot;&lt;br /&gt;
#&amp;quot;I can't/won't use Synfig without it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Wishes ==&lt;br /&gt;
&lt;br /&gt;
=== Good high-level documentation of the source code ===&lt;br /&gt;
&lt;br /&gt;
(2) It'd be nice if a newbie could quickly navigate around the source code. The best thing to do would be to add top-level comments in each file, explaining what that file does, a README.TXT in each directory, explaining what's in that directory. This would be pretty fast and easy to do, and make it much easier for new programmers to join. &lt;br /&gt;
&lt;br /&gt;
Time permitting, it would also be good to document on a high level what the data structures are, but that's harder, since those tend to evolve, and it is often difficult to keep in sync. It would also be useful to document what individual functions do (just a one-liner high-level description), but that also takes more time.&lt;br /&gt;
: There is a page link in the wiki that connect to the [http://www.synfig.com/doc Synfig API Documentation]. I think this link should be highlighted to be more accessible for newbies contributors and mature developers (the link was found [[Releases/DeveloperPreview#Support | here]]). --[[User:Genete|Genete]] 10:02, 11 December 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Mathematical functions to animate ===&lt;br /&gt;
(2) If you want to make a waving flag, it would be handful a sine function, tuned with random correctors, for example. &lt;br /&gt;
: -This should generate waypoints each 1, 2, 4 frames or any other step at artist's wish.&lt;br /&gt;
: -When applying a function you can add it to current values, add it to 1st frame values or simply override old values. Perhaps other options (such multiplication) would be fine, too. Something like texture editor in [http://www.artofillusion.org Art of Illusion], perhaps.&lt;br /&gt;
Perhaps it would be useful reusing the [http://www.gnu.org/software/octave/ Octave] source code to parse mathematical expressions.&lt;br /&gt;
I have rated this wish with a '2' because undoubtly many users will not be familiar to mathematical concepts, but for those who will be, I'd rate it with a 4. It would be possible to make a ball describing a parabolic moving in no time.&lt;br /&gt;
[[User:ajotatxe|ajotatxe]] 20 November 2007&lt;br /&gt;
: dooglus can probably chime in better than I here (see his example of balls on mathematical paths at http://uk.youtube.com/watch?v=YTpSfUthuVE ), but I believe that this is already possible.  Synfig does support a variety of mathematical transforms for parameters, although the way you do this is by no means intuitive.  (You might also want to check out the preambletaffy.sifz example for an easier approach to a waving flag. I know you were just using that as an example, but for the record...) [[User:Pxegeek|Pxegeek]] 00:58, 21 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Warning about editing bizarre things in animate editing mode ===&lt;br /&gt;
(3.5) It seems to have little sense animate certain things like Blend Method or Type of Feather. It would be very nice that the program asked comfirmation if you change these attributes in animate editing mode. If you do want to, you would have three options: &amp;quot;Yes, never ask&amp;quot;, &amp;quot;Yes, never ask for this attribute&amp;quot;, &amp;quot;No&amp;quot;. I guess that internally, this attributes has integer type (or something like that) and the attributes that you normally want to animate, float type, so I think that this feature is relatively easy to implement. My English is not very good, so please feel free to fix this post.&lt;br /&gt;
[[User:ajotatxe|ajotatxe]] 20 November 2007&lt;br /&gt;
&lt;br /&gt;
=== General outline / Polygon-based Outline / &amp;quot;Set Tangents to Zero&amp;quot; button ===&lt;br /&gt;
(3.5) I'm no artist, thus my primary form of art is stick figures, not to mention, many interesting animations are done in stick-figure style. Stick figures must be perfectly straight to get the effect across, so when I'm making an outline using B-Curves, it is too time consuming to set the tangents to 0 each time. Similarly, outlines of other shapes like squares, circles and so forth would be very useful. Whichever of the above is easiest, please implement right away. --[[User:Dragontamer|Dragontamer]] 02:35, 19 November 2007 (EST)&lt;br /&gt;
: For perfectly straight lines, click without moving the mouse.  You will get a single point with no tangents.  Outline shapes would require some development, particularly with some thought given to backward compatibility.  A workaround you might consider is to create a duplicate shape with a different color and make the top one slightly smaller, so the outline of the one below shows.  [[User:Pxegeek|Pxegeek]] 21:58, 19 November 2007 (EST)&lt;br /&gt;
:: Well, in general, whenever I click on a point to edit it (say, to make it move somewhere in animation mode), there is a decent chance that I click on a tangent instead. Then, if I want to right click the point itself, I usually right click the tangent marker instead. It isn't that big a deal, but simplicity at the cost of power generally is a good thing, especially when it will save a few mouse clicks. &lt;br /&gt;
:: As for the outlines, yeah, I've tried that and it is a decent solution for now, although it is no replacement for a real outline. I am going to also experiment with a clamp to see if I can make the center of the shape have 100% alpha... but I don't have synfig on the computer I'm on right now. Thanks for the tips Pxegeek. --[[User:Dragontamer|Dragontamer]] 01:58, 27 November 2007 (EST)&lt;br /&gt;
::: You can press Alt+3 to hide tangent ducks. --[[User:Zelgadis|Zelgadis]] 09:27, 27 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Bones with FK &amp;amp; IK + grouping of objects into folders ===&lt;br /&gt;
&lt;br /&gt;
(1) Bones cane move specific vector assigned to them or the bones can have envelopes that move the vectors within their field of influence, much Like Anime Studio/Moho does. It's quite a time saving process of animating. Objects created can be saved into separate groups or folders using the same system as Anime Studio/Moho -Shadowphoenix 27/8/2007&lt;br /&gt;
&lt;br /&gt;
=== Copy &amp;amp; Paste/Image Importing ===&lt;br /&gt;
&lt;br /&gt;
(4) I sometimes make graphics in other programs, or use clipart and other images. Would it be possible for Synfig to be able to import images and/or copy and paste them?--Khlieeq 2007-07-19&lt;br /&gt;
Well, it doesn't support Copy &amp;amp; paste from the clipboard, but you can import images using &amp;quot;New Layer -&amp;gt; Other -&amp;gt; Import&amp;quot;.  This will create an Import layer, for which you can then edit the properties to point to the file containing your image.  PXEGeek.  2007-07-19&lt;br /&gt;
&lt;br /&gt;
=== Animated sketch ===&lt;br /&gt;
&lt;br /&gt;
(1) it would be great, if the tool Sketch will return and it will be animatable (for example, in a form of a special sketch-layer). --Zelgadis 2007-06-14&lt;br /&gt;
&amp;lt;br&amp;gt;For the first part of the request, note that the sketch tool can be re-enabled using environment variables.  See [[FAQ#Where_did_the_polygon.2C_draw.2C_sketch.2C_and_width_tools_go.3F|FAQ]] for details.  [[user:pxegeek|PXEGeek]] 9/26/07&lt;br /&gt;
&lt;br /&gt;
=== Duck for Amount value in Zoom layer ===&lt;br /&gt;
&lt;br /&gt;
(2) It would be nice if Amount value in Zoom layer was controlled by additional duck. --[[User:Zelgadis|Zelgadis]] 02:49, 29 December 2007 (EST)&lt;br /&gt;
: I found that I can better use Warp layer instead of Zoom to change size. But it'd be nice to have Amount duck for Zoom layer anyway...&lt;br /&gt;
:: The Amount parameter works exponentially; each time you add 1 to the Amount, the image is zoomed by a further factor of e (= 2.71828 or so).  Would a duck be any use if it just controlled the value of Amount in a linear way?&lt;br /&gt;
:: Workarounds include: export Amount, select it in the children dialog.  Whatever's selected in the children dialog shows a duck.  You can adjust it using that duck.&lt;br /&gt;
:: Also, if you use a Stretch layer, convert the Amount to Composite, export the X-Axis and connect it to the Y-Axis, then you have a duck-controllable fixed-aspect zoom. -- [[User:Dooglus|dooglus]] 15:32, 15 January 2008 (EST)&lt;br /&gt;
::: Yeah I found this workaround, but it's to much actions - i prefer better use Warp or Stretch layers. Why not the link Amount duck and Amount value with logarithmic function? ;) --[[User:Zelgadis|Zelgadis]] 10:33, 17 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Recursive Waypoint Manipulation ===&lt;br /&gt;
&lt;br /&gt;
(4) it is really tiresome to revert changes to waypoints created by manipulating tangent/position ducks or change their interpolation functions. making it possible to right-click-modify the waypoint shown for objects that have some waypoint in a referenced sub-object would be great! -- timonator 2007-06-01&lt;br /&gt;
:You can do it in two ways: changing the interpolation method of the waypoint of paste canvas or editing the keyframe properties. The first allow to modify the waypoints interpolation method for all the waypoints of all the parameters of all the layers that are inside the paste canvas layer. You can right click on the left or right part of the waypoint to edit by a context menu the left or the right interpolation method of the waipoints. The second method would add and modify all the parameters that have any waypoint in the animation. See [[Keyframe]] for more detail. --[[User:Genete|Genete]] 13:10, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Automatic colour palette optimisation ===&lt;br /&gt;
&lt;br /&gt;
(0) it would be nice to use libcontrast [http://david.navi.cx/blog/?p=132] [http://david.navi.cx/blog/?p=94] [http://david.navi.cx/blog/?p=99] [http://svn.gnome.org/svn/xchat-gnome/trunk/src/libcontrast/] to automatically adjust selected or all the palette items for best visual contrast. It would also be interesting to have a layer that uses this code to filter the image.&lt;br /&gt;
&lt;br /&gt;
=== Tweening for images developed in other imaging programs ===&lt;br /&gt;
&lt;br /&gt;
It's obvious I am a beginner at image movement, but morphing is not enough: movement across the page is needed.  Thanks for listening. [[User:Comwell@bellsouth.net|Comwell]]&amp;lt;br&amp;gt;&lt;br /&gt;
Imported images can be moved across the page.  They can also be scaled, rotated and deformed.  Was there a specific example you had in mind?  [[User:Pxegeek|pxegeek]]&amp;lt;br&amp;gt;&lt;br /&gt;
:I also would like a way to tween images that have been drawn in other programs. I've had trouble drawing with Bline tool and the drawing tool in Synfig, and I'd rather just draw with a paint brush (like the one in Photoshop). Another problem I have is that Synfig tends to shut down on me every 20 minutes or so, and it's really frustrating even with the auto recover feature, because my sketches disappear. It'd be nice if I'm able to draw all of the keyframes in Photoshop or another image program and import it to Synfig so that Synfig can tween and animate them. Thank you. [[User:xychefoo@gmail.com|Huina]]&lt;br /&gt;
::You CAN use images, drawn in other programs. Just select &amp;quot;File-&amp;gt;Import&amp;quot; from [[Canvas Menu Caret|canvas menu]] --[[User:Zelgadis|Zelgadis]] 01:39, 24 November 2007 (EST)&lt;br /&gt;
:::But how do you animate using images from other sources? I tried to make 2 keyframes with 2 different images, and it doesn't animate. It just stays as 1 picture for the entire render. The closest thing I saw to importing images from another source into Synfig and having it animate is the Walking Cycle Tutorial, but I would still have to trace the images to make it animate. As I said earlier, I'm not entirely fond of using the draw/Bline tool.  [[User:xychefoo@gmail.com|Huina]]&lt;br /&gt;
:::: Huina, there's no way to do what you want right now.  Interpolating between two images that are not created in Synfig is well beyond its scope right now.  However, what you could do is take an image and separate elements of the picture onto different layers (e.g. have a picture of an arm and another of the rest of the body) and you can move those around, stretch and rotate them.  (If you're familiar with the work of Terry Gilliam on Monty Python you'll know what I mean) I don't know how feasible it is to implement your request (I suspect some heavy lifting).  We'll keep it on the list, but don't hold your breath.  [[User:Pxegeek|Pxegeek]] 19:57, 24 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
:::: I think, you hardly find any other animation package  which allow you to do such things. You could use a special tools for this task, like xmorph (http://xmorph.sourceforge.net/). But to do the tween between two bitmap images you STILL need to set points. It's not tracing, but very similar. Anyway, result may be poor and I'd better suggest to use technique, described in Walking Cycle Tutorial or which the [[User:Pxegeek|Pxegeek]] meant. --[[User:Zelgadis|Zelgadis]] 02:08, 25 November 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
:::: There is a technique called &amp;quot;optical flow&amp;quot;.  It takes two input frames and calculates the movement of each individual pixel between the frames, allowing interpolation to be done. Here's an example: http://www.fxguide.com/article333.html.  It doesn't require setting of control points, but it has problems it's own set of problems: http://www.fxguide.com/article333.html. --[[User:Yoyobuae|Yoyobuae]] 13:32, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Auto-link option in [[Draw tool]] ===&lt;br /&gt;
&lt;br /&gt;
(4) so that you can draw a line, and have its endpoint automatically link to a duck - or if Auto-connect is off, you can get a line object linked to the end of another line object. / I missed this too, it even should be like that by default I think. [[User:Maxy|Maxy]] 13:22, 25 Apr 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
: Isn't this done already?  We don't have line objects, but blines are automatically linked to if auto-connect is on.  Am I missing something? -- [[User:Dooglus|dooglus]] 17:29, 27 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
::To clarify dooglus' comments - If you have an outline created by the draw tool highlighted in the layer dialog and the &amp;lt;b&amp;gt;auto-extend&amp;lt;/b&amp;gt; checkbox is checked, then you can continue drawing with the draw tool in that same layer.  Blines created with the Bline tool cannot be extended once a different tool or layer is selected.  [[User:Pxegeek|Pxegeek]] 23:46, 12 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: A line is a line - Synfig doesn't remember whether it was created with the Bline tool or the Draw tool - so you can extend blines created with the bline tool using the draw tool.  Just make sure the line is selected (so that its ducks are visible), not looped (so that it has end points to extend from), enable the draw tool, check 'auto extend' and start drawing at one of its end ducks. [[User:Dooglus|dooglus]] 05:47, 13 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
So this sounds like it is already done.  But on a related note, being able to open an existing bline in the bline tool to extend it would be useful. -- [[User:Dooglus|dooglus]] 04:51, 29 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Arbitrary Color Channels ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; The ability for the user to create any number of custom channels for various purposes.&lt;br /&gt;
&lt;br /&gt;
=== Autorecover History ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; It would be great if autorecover could also recover the associated history of a file in the event of a crash.&lt;br /&gt;
&lt;br /&gt;
=== Layer Convert ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;(4)&amp;lt;/strike&amp;gt; (2) &amp;amp;mdash; The original intent of this feature request has been solved and documented - [[How_do_I#Fill_an_outline.3F|How do I....Fill an Outline?]] - but it would still be nice to have a way to convert one sort of path layer to another. ''(Downgraded to level 2) [[User:SnapSilverlight|Snap]] 12:32, 17 Jan 2006 (PST)''&lt;br /&gt;
&lt;br /&gt;
=== Layer hide boolean parameter ===&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; An animatable way to remove a layer from visibility and consideration in tools. And as an option, to hide the layer in the layer list while it is invisible. This crosses over functionality from the [[Amount Parameter]], the Show/Hide checkbox in the [[Layers Panel]], and builds upon it as well, allowing the [[Layers Panel]] to dynamically unclutter. ''(This feature request is a refactoring of the [[Amount Parameter]])''&lt;br /&gt;
: With the addition of the [[Convert#Switch|Switch]] type conversion it is not needed this feature request. You can convert the Amount parameter to a Switch value and give 0 and 1 to the Linked OFF/ON values. --[[User:Genete|Genete]] 13:20, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Vector fill bucket ===&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Like the traditional bitmap fill, but this fills the area clicked out to the nearest boundary paths with a region of that area, set to the foreground color (it actually would create a new [[Region Layer|region layer]]). &amp;lt;p&amp;gt;Alternatively, a single-duck layer object, that performs a simple bitmap fill from its (animatable) location, with its stored color value. (This second approach is similar to the behavior of one of Softimage's TOONZ[http://www.google.com/search?q=softimage+TOONZ]'s tools)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If this is implemented, it will probably be necessary to change the existing &amp;quot;fill&amp;quot; tool's name and icon to a &amp;quot;color injector&amp;quot; (hypodermic needle / turkey injector icon) tool, as that's closer to describing what it does.&lt;br /&gt;
&lt;br /&gt;
=== [[redraw tool]] ===&lt;br /&gt;
&lt;br /&gt;
(4-5) &amp;amp;mdash; Intutive reshaping of path-based layers. See link.&lt;br /&gt;
&lt;br /&gt;
=== [http://developer.gnome.org/projects/gup/hig/ Gnome HIG Compliance] ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;mdash; This should solve all complaints about the layout, without requiring Synfig to be &amp;quot;just like program (x)&amp;quot;. See [[UI Reloaded]] for progress on this.&lt;br /&gt;
&lt;br /&gt;
=== Feedback for [[Smooth Move Tool]] ===&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; This tool does what a lot of folks are looking for, warping selected ducks in a &amp;quot;soft&amp;quot; fashion. But it's not very obvious what sort of effect it will have, from the tool's interface. It needs some sort of momentary center-of-action and radius indicator at the very least. Perhaps an &amp;quot;influence gradient&amp;quot; overlaid on the canvas once Synfig's core is sped up?&lt;br /&gt;
&lt;br /&gt;
=== Networkability ===&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Like Inkscape's &amp;quot;inkboard&amp;quot; feature (using Jabber), or Blender's Verse server [http://www.blender.org/modules/verse/index.php], or OpenCanvas's Networking option. This should probably farm off all the networking stuff to the telepathy framework so that synfig doesn't have to deal with all the account/etc issues.&lt;br /&gt;
&lt;br /&gt;
=== Riding ducks ===&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Not chocobos. The ability to link a duck from one shape to an arbitrary position on another path, without creating an extra shape duck on that path.&lt;br /&gt;
&lt;br /&gt;
=== Intuitive tangent modification ===&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; (BBQ Pulled Duck) Inkscape has this for still handles - basically, grab a section of the spline between handles, and pull it around, the program automatically alters the tangent handles to match. What would be really neat is if you could do the same for temporal handles - be able to grab the spline between keyframes, and yank it around, and have Synfig automatically adjust the key interpolation to match. Not sure exactly what the workflow in the UI would be for this, however.&lt;br /&gt;
&lt;br /&gt;
=== Plugin API ===&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Would be nice to enable additional functionality to be added to the program without it necessarily needing to be in the Synfig source tree. ''According to the Synfig 0.61.01 roadmap on [http://deepdarc.com/ deepdarc.com], there is a plugin API already implemented. So instead, this may be a [[Wiki Wish List|Wiki Wish]] for documentation, depending on how much has already been completed. [[User:SnapSilverlight|Snap]] 19:57, 13 Jan 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Python support ===&lt;br /&gt;
&lt;br /&gt;
(1) of some sort will no doubt be demanded by the userbase eventually, for studio-specific automation of tasks, noncompiled plugins, etc. I ([[User:Snap|SnapSilverlight]]) don't have any particular use for it at the moment, tho'.&lt;br /&gt;
&lt;br /&gt;
=== mod_synfig ===&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; For Apache. Render .sif to some format like png/mng on access.&lt;br /&gt;
&lt;br /&gt;
=== synfig nsplugin ===&lt;br /&gt;
&lt;br /&gt;
(1) &amp;amp;mdash; Let Mozilla and Mozilla-based view synfig files in-browser.&lt;br /&gt;
&lt;br /&gt;
=== Image filmstrip import ===&lt;br /&gt;
&lt;br /&gt;
(2) &amp;amp;mdash; Allow import of a series of images (TGA, etc) as frames of an animation, on a layer. &amp;lt;br&amp;gt;&lt;br /&gt;
Response - 'lst' files of a list of images can be imported.  I've used this to develop a walk cycle.  See [[Walk_Cycle|Walk cycle]] for an example.  [[user:pxegeek|pxegeek]]&lt;br /&gt;
&lt;br /&gt;
=== Bitmap Objects and Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;(5)&amp;lt;/s&amp;gt;(0) &amp;amp;mdash; Simmilar to the above but for more than for just purely bitmap based animations. I feel that the to do production quality animations you need production quality backgrounds, foregrounds, and effects. Many of which are very difficult or even impossible to achieve with vector based graphics. I suggest support for alpha transparencies as well to make this truely useful. An example of how this could be used would be a bitmap background and a bitmap foreground that can be panned as the scene moves.&lt;br /&gt;
::''Static bitmaps with alpha are possible already, if that is what you mean. I have just documented it in [[How do I]]. [[User:Maxy|Maxy]] 06:35, 9 Apr 2006 (PDT)''&lt;br /&gt;
&lt;br /&gt;
=== Align function ===&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; Align objects at a common border (as in Inkscape)&lt;br /&gt;
&lt;br /&gt;
=== Improved SVG import ===&lt;br /&gt;
&lt;br /&gt;
(4) &amp;amp;mdash; Currently, all importing an SVG does is render it in ImageMagick. What I want is the ability to import the SVG document so that all the shapes, etc. of the SVG document show up as their equivilant synfig layers - i.e. if I had put them there myself. I'm trying to write a patch for this but the codebase is mostly undocumented. [[User:KMeist|KMeist]] 16:38, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
[[svg2synfig]] could be incorporated using an open source XSLT processor. --[[User:Dmd|Dmd]] 13:34, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Gradient Paint Tool ===&lt;br /&gt;
&lt;br /&gt;
How about a tool that can 'paint' a gradient object.  For example the options would be width and gradient type, one would make a stroke with the tool and the gradient would be automatically applied inside of the outline (set by width).  This would save the trouble of having to the all the encapsulation stuff. (Actually any tool that makes creating gradient one step would be good).--[[User:Triclops|Triclops]] 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Character Animation Tools ===&lt;br /&gt;
&lt;br /&gt;
I have seen some interesting methods for helping character design/animation in different 2d/3d software.  Hash's animation master has 'poses' which are extremes of a model, for example smiling and frowning, once you add these extremes ot a set you can use slider to create a pose that somewhere inbetween.  The real power of this is when you have serveral different poses on the same object, a face say,  you can easily come up with new facial expressions. Maybe something similar could be done with synfig using layers and groups, the implementation could something similar to Moho's switch layers. --[[User:Triclops|Triclops]] 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
: Have you read this tutorial? [[Reuse Animations]]. It is very close to the Switch layer of Moho/Anime Studio. Also You can change the Canvas parameter to any other canvas dynamically in the time line by clicking on it and selecting other exported canvas. Other option is convert the canvas to a Switch type and alternate between two different canvas.  --[[User:Genete|Genete]] 13:26, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Another character Animation Tools ===&lt;br /&gt;
&lt;br /&gt;
Bone system with inverse kinematics, very important for quick animation. You put bones on a drawed man and you can animate him like a puppet. I'm using that in Moho (lost marble product).--[[User:Ziolive|ziolive]] 23 Aug 2006&lt;br /&gt;
&lt;br /&gt;
*'''AVI Backgrounds''' - Is there any way I can add an avi as a background so I could add facial expressions to a stop-motion animated figure. [zotz here, I was thinking DV background or extra timeline. I would like to mix animations with live footage. rating (3/4)]&lt;br /&gt;
&lt;br /&gt;
=== Character tool on Tool Options Dialog ===&lt;br /&gt;
&lt;br /&gt;
I want to use the as a character generator for a TV show. By using chroma key hide the background.  Even better interface to a video overlay card with Alpha blending.&lt;br /&gt;
&lt;br /&gt;
=== Collect for Publication ===&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Menu item, functionality that would collect alll files referenced in a sif and place them all in a tgz for sending elsewhere or publishing anumations in source form.&lt;br /&gt;
&lt;br /&gt;
=== Object Library ===&lt;br /&gt;
&lt;br /&gt;
(3/4) - (zotz) Haven't thought this all through yet, but synfig could come with a library of categotrised &amp;quot;objects&amp;quot; with a copyleft license (GPL?  CC BY-SA?) An animation clip art type deal.&lt;br /&gt;
**I'd suggest this should be public domain and distributed by openclipart.org -- --[[User:PaulWise|pabs]]&lt;br /&gt;
&lt;br /&gt;
=== Flash Export ===&lt;br /&gt;
&lt;br /&gt;
(3/4) Well, might just be me but if there was a posiblity to  export in .swf or .fla, I think the project might become a lot more popular.[[User:Conceit|Conceit]]&lt;br /&gt;
&lt;br /&gt;
(4/5) I wholeheartedly agree. I would definitely use synfig more if this feature were added and it would most definitely increase popularity. [[User:cdj05a|cdj05a]]&lt;br /&gt;
&lt;br /&gt;
=== Single window ===&lt;br /&gt;
&lt;br /&gt;
(2/4)why does Synfig generate so many separate windows? just starting it clutters my desktop, I think it would be useful if they were atleast displayed as one in the start bar. [[User:Conceit|Conceit]]&lt;br /&gt;
&lt;br /&gt;
=== Line width tool ===&lt;br /&gt;
(4) It will be good to have a tool for easy changing line width. There was a such tool in earlier versions, but it's not usable. I'm often use variable line width, when drawing in synfig, so it is important for me. -- [[User:Zelgadis|Zelgadis]] 2007-09-09&lt;br /&gt;
&lt;br /&gt;
: It is [[FAQ#Where did the polygon, draw, sketch, and width tools go?|still available]].  Also, you can turn on the width ducks, using Alt-5. -- [[User:Dooglus|dooglus]] 12:18, 9 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: It is available, but I never was able to figure out how it works. Alt-5 works, but it is hard to set width to zero, for example. -- [[User:Zelgadis|Zelgadis]] 2007-09-10&lt;br /&gt;
&lt;br /&gt;
::: Are you wanting something that works on one vertex at a time?  Or all the vertices in an area?  Apparently the width tool was designed to work on a bunch of vertices at once.  I didn't figure out how it works though, either. -- [[User:Dooglus|dooglus]] 16:57, 10 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
:::: Width tool is surely a mystery. :) I'm waiting for something that works on one vertex at time. I liked the way as width was changed in Moho (Anime Studio now) - there was a special width tool and holding left mouse button on the vertex and moving cursor left decreasing width value, moving right - increasing. Maybe it make sense to rework Width tool in such way. -- [[User:Zelgadis|Zelgadis]] 2007-09-13&lt;br /&gt;
&lt;br /&gt;
=== Export Wizard ===&lt;br /&gt;
&lt;br /&gt;
(2/4) Conversion and export to other file formats (mpg, avi, flash formats, others, and the synfig format) with a step by step wizard for choosing format and place of saving. Similar to Gimp's saving of .png files but for movie/video type files. --&lt;br /&gt;
[[User:Hiddenghost|hiddenghost]]&lt;br /&gt;
&lt;br /&gt;
=== Using Synfig as a portable app ===&lt;br /&gt;
&lt;br /&gt;
(3) This isn't really a feature request (though it could be) but I was wondering if synfig could be used as a portable application (as in www.portableapps.com). Does the windows install require registry access? i really want to use Synfig at work, but I'm reluctant to install it just in case it leave footprints in the regisitry or something, and it would be sweet to use it on my travels as well. Only thing is, I can't test it out at home because I am using Linux.&lt;br /&gt;
See also: http://portableapps.com/node/5761&lt;br /&gt;
[[User:Zenoscope|zenoscope]]&lt;br /&gt;
&lt;br /&gt;
This isn't currently possible without modifying the source code. That has been on my TODO list for ages [[User:PaulWise|pabs]] 01:17, 26 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allow organize child valuenodes in an hierarchy ===&lt;br /&gt;
(3-2) And allow maintain the organization once the file is saved. Now they are reordered in alphabetical order what is very usefulness. --[[User:Genete|Genete]] 13:37, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Triangle sliders to be always visible ===&lt;br /&gt;
(3) I would like that the triangle sliders from [[Colors Dialog]] and [[Gradient Editor Dialog]] were visible whatever color or channel you're editing. Some times when the color or channel is to bright or light the slider is difficult to distinguish. --[[User:Genete|Genete]] 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== XICC support ===&lt;br /&gt;
&lt;br /&gt;
It would be cool if synfigstudio had support for [http://burtonini.com/blog/computers/xicc XICC].&lt;br /&gt;
&lt;br /&gt;
=== Improved User Experience for First Contact ===&lt;br /&gt;
* Single file download and installer (at least for Windows)&lt;br /&gt;
* Ability to draw the first object directly after starting the application (start with an empty document)&lt;br /&gt;
* Ability to animate the object directly after drawing the first object (new documents have a say 3 seconds timeline)&lt;br /&gt;
In my opinion this is crucial to attract potential users. Because if I see how easy it is to create my first animation I'm going to accept all the bugs and clumsyness. A good example is the Pencil animation software. --[[User:Dmd|Dmd]] 13:50, 26 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
: I've implemented #2 and #3 above in svn r1519 &amp;amp; 1520.  If no files are specified to be opened when running studio, it'll make a new one.  It won't pop up the canvas properties dialog when making new canvases by default.  And the default end time is 5s (3s is small enough to cause the time slider to show &amp;quot;1s 12f&amp;quot;, whereas 5s looks cleaner). -- [[User:Dooglus|dooglus]] 04:00, 29 January 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Area to Edit ===&lt;br /&gt;
&lt;br /&gt;
 08:43 &amp;lt; factor&amp;gt; also an option like blender - select area to update would be nice&lt;br /&gt;
 08:44 &amp;lt; factor&amp;gt; so the only part of the image that updates whne you add or change someting is in the selected area&lt;br /&gt;
 08:44 &amp;lt; factor&amp;gt; makes it quicker for doing changes&lt;br /&gt;
&lt;br /&gt;
ie. when working on a complex composition, studio doesn't know, when I tweak a tiny part of the composition, that only that part needs redrawing, so it redraws the whole thing.  It would be good if there was some way of telling it which part to focus on. -- [[User:Dooglus|dooglus]] 04:02, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Histograms ===&lt;br /&gt;
&lt;br /&gt;
 01:23  * AkhIL wish to have histograms and luma/color scope like [http://mac.softpedia.com/progScreenshots/Avid-Xpress-DV-Screenshot-14207.html] in synfig&lt;br /&gt;
&lt;br /&gt;
I've looked at those pictures but don't know what they're showing.  Can you describe what those scopes are doing, and what the histograms display?  ie. what are the X and Y axes of the histograms? -- [[User:Dooglus|dooglus]] 04:07, 3 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
First look this description in blender wiki [http://wiki.blender.org/index.php/Manual/VSE_Modes]&lt;br /&gt;
&lt;br /&gt;
Ok There is four things.&lt;br /&gt;
* Upper left is Lumascope (Luma Waveform in blender). X-Axis represents image's X-Axys. Y-Axis  is average luminescence of column of pixels.&lt;br /&gt;
* Upper right is Chromascope (Chroma Vectorscope in blender). Just look description on blender wiki.&lt;br /&gt;
* Lower left is like Lumascope but for each channel &lt;br /&gt;
* Lower right is histograms. X is luminescence and Y is count of pixels with such luminiscence.&lt;br /&gt;
&lt;br /&gt;
== Granted Wishes ==&lt;br /&gt;
&lt;br /&gt;
=== MNG target filetype ===&lt;br /&gt;
&lt;br /&gt;
The ability to save as/in the Free/Open MNG (.mng) format [http://libpng.org/pub/mng/]&lt;br /&gt;
&lt;br /&gt;
A partial implementation was committed in SVN r470.&lt;br /&gt;
&lt;br /&gt;
It was implemented in svn 986. See [[Render options]]. --[[User:Genete|Genete]] 13:12, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Optionally display RGB in Hex in Color dialog ===&lt;br /&gt;
&lt;br /&gt;
(3) When colors are quoted as 3 bytes of hexadecimal, you have to convert them to decimal, divide by 255, multiply by 100 to get a number to type into the dialog box.  It's painful to match color schemes for example, with the [http://tango.freedesktop.org/Tango_Icon_Theme_Guidelines Tango Icon Theme style guidelines].  [[User:pxegeek|PXEGeek]] 3/16/07&lt;br /&gt;
&lt;br /&gt;
: Added in [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=40dda9d27b5249ee32f62d84c819ff569f078929 svn r354].  You can type 3 or 6 digit hex codes and hit return to use.  3 digit code 36a gives colour 3366aa (each digit is duplicated) -- [[User:Dooglus|dooglus]] 3/18/07&lt;br /&gt;
&lt;br /&gt;
:: Many thanks - already used many times! PXEGeek.&lt;br /&gt;
&lt;br /&gt;
::: Did you notice that you can use single digit codes too?  '5' gives 555555 for instance, giving you 16 equally spaces shades of black through white. -- [[User:Dooglus|dooglus]] 17:51, 25 September 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Restore Default Layout ===&lt;br /&gt;
&lt;br /&gt;
(3) &amp;amp;mdash; It's very difficult to put all the dialogs back where they were when you started the program, if you've closed them. In addition, with many programs, if you've done something with your window manager to take a window's position off screen, this command is sometimes the only way to bring them back.&lt;br /&gt;
-&amp;gt; I'd like to second this one - especially with the bug where dialog boxes sometime shrink to nothing or offscreen, and no amount of maximizing or minimizing restores them.  The only solution is to kill the windows, and none of the combo options in the dialog menu match the default configuration.  4/4/07 PXEGeek&lt;br /&gt;
&lt;br /&gt;
: Implemented in [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=commitdiff;h=036306f3c2c265a604971728d50fcce258766552 svn r757] -- [[User:Dooglus|dooglus]] 17:48, 25 September 2007 (EDT)&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_5.png&amp;diff=5611</id>
		<title>File:Fake 3D-Vector Dot Product 5.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_5.png&amp;diff=5611"/>
				<updated>2008-01-30T19:19:16Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: &amp;quot;Radius&amp;quot; parameter of the &amp;quot;Result Scalar&amp;quot; inside &amp;quot;Vector Dot Product&amp;quot; layer used in the Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Radius&amp;quot; parameter of the &amp;quot;Result Scalar&amp;quot; inside &amp;quot;Vector Dot Product&amp;quot; layer used in the [[Fake 3D#Vector Dot Product|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_4.png&amp;diff=5610</id>
		<title>File:Fake 3D-Vector Dot Product 4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_4.png&amp;diff=5610"/>
				<updated>2008-01-30T19:08:54Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: &amp;quot;Vector List&amp;quot; of the &amp;quot;Result XYZ vector&amp;quot; inside &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Vector List&amp;quot; of the &amp;quot;Result XYZ vector&amp;quot; inside &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the [[Fake 3D#Vector Dot Product|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_3.png&amp;diff=5609</id>
		<title>File:Fake 3D-Vector Dot Product 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_3.png&amp;diff=5609"/>
				<updated>2008-01-30T18:35:53Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: &amp;quot;Vector List&amp;quot; of the &amp;quot;LHS XYZ vector&amp;quot; inside &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Vector List&amp;quot; of the &amp;quot;LHS XYZ vector&amp;quot; inside &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the [[Fake 3D#Vector Dot Product|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_2.png&amp;diff=5608</id>
		<title>File:Fake 3D-Vector Dot Product 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_2.png&amp;diff=5608"/>
				<updated>2008-01-30T18:28:18Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Selecting the &amp;quot;LHS XYZ vector&amp;quot; inside &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Selecting the &amp;quot;LHS XYZ vector&amp;quot; inside &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the [[Fake 3D#Vector Dot Product|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_1.png&amp;diff=5607</id>
		<title>File:Fake 3D-Vector Dot Product 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_1.png&amp;diff=5607"/>
				<updated>2008-01-30T17:18:41Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Corrected typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector Dot Product&amp;quot; layer used in the [[Fake 3D#Vector Dot Product|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_1.png&amp;diff=5606</id>
		<title>File:Fake 3D-Vector Dot Product 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Dot_Product_1.png&amp;diff=5606"/>
				<updated>2008-01-30T17:18:00Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Resulting structure for the &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the [[Fake 3D#Vector Dot Product|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_3.png&amp;diff=5561</id>
		<title>File:Fake 3D-Vector Component Multiply 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_3.png&amp;diff=5561"/>
				<updated>2008-01-30T04:27:55Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the &amp;quot;Result XYZ vector&amp;quot; object used in the Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the &amp;quot;Result XYZ vector&amp;quot; object used in the [[Fake 3D#Vector Componentwise Multiply|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_2.png&amp;diff=5557</id>
		<title>File:Fake 3D-Vector Component Multiply 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_2.png&amp;diff=5557"/>
				<updated>2008-01-30T01:28:27Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Changed a link's look&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the &amp;quot;LHS XYZ vector&amp;quot; object used in the [[Fake 3D#Vector Componentwise Multiply|Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_2.png&amp;diff=5556</id>
		<title>File:Fake 3D-Vector Component Multiply 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_2.png&amp;diff=5556"/>
				<updated>2008-01-30T01:26:05Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the &amp;quot;LHS XYZ vector&amp;quot; object used in the Fake 3D#Vector Componentwise Multiply tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the &amp;quot;LHS XYZ vector&amp;quot; object used in the [[Fake 3D#Vector Componentwise Multiply]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_1.png&amp;diff=5555</id>
		<title>File:Fake 3D-Vector Component Multiply 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_Component_Multiply_1.png&amp;diff=5555"/>
				<updated>2008-01-30T00:44:16Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Resulting structure for the &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector Componentwise Multiply&amp;quot; layer used in the [[Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_List.png&amp;diff=5554</id>
		<title>File:Fake 3D-Vector List.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_List.png&amp;diff=5554"/>
				<updated>2008-01-30T00:42:50Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Corrected typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the XYZ_vector used in the [[Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_List.png&amp;diff=5551</id>
		<title>File:Fake 3D-Vector List.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Fake_3D-Vector_List.png&amp;diff=5551"/>
				<updated>2008-01-29T23:45:02Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the XYZ_vector used int Fake 3D tutorial.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Resulting structure for the &amp;quot;Vector List&amp;quot; parameter of the XYZ_vector used int [[Fake 3D]] tutorial.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Mingw_installation&amp;diff=5407</id>
		<title>Dev:Mingw installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Mingw_installation&amp;diff=5407"/>
				<updated>2008-01-22T02:06:30Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: /* [http://www.gnu.org/software/gettext Gettext] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Categories--&amp;gt;&lt;br /&gt;
[[Category:Building]]&lt;br /&gt;
[[Category:Windows]]&lt;br /&gt;
&lt;br /&gt;
==MinGW==&lt;br /&gt;
First - download [http://www.mingw.org/ MinGW] installer. You may get version 5.1.3 or higher (recommended).&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/MinGW-5.1.3.exe (135.5 Kb)&lt;br /&gt;
&lt;br /&gt;
Run MinGW-5.1.3.exe. Select &amp;quot;Download and install&amp;quot;. Choose &amp;quot;Candidate&amp;quot; package, because &amp;quot;Current&amp;quot; is too old. When the installer asks which packages to install, select:&lt;br /&gt;
&lt;br /&gt;
* MinGW base tools&lt;br /&gt;
* g++ Compiler&lt;br /&gt;
* g77 Compiler&lt;br /&gt;
* MinGW Make&lt;br /&gt;
&lt;br /&gt;
Note: you really do need to install Fortran; even though Synfig does not require it, it is required by the autoconf configuration scripts. These are the minimal required package versions which are needed to successfully build win32 synfig:&lt;br /&gt;
&lt;br /&gt;
* mingw-runtime-3.12.tar.gz (429.7 Kb)&lt;br /&gt;
* w32api-3.9.tar.gz (1.6 Mb)&lt;br /&gt;
* binutils-2.17.50-20060824-1.tar.gz (8.9 Mb)&lt;br /&gt;
* gcc-core-3.4.5-20060117-1.tar.gz (3.3 Mb)&lt;br /&gt;
* gcc-g++-3.4.5-20060117-1.tar.gz (4.5 Mb)&lt;br /&gt;
* gcc-g77-3.4.5-20060117-1.tar.gz (2.0 Mb)&lt;br /&gt;
* mingw32-make-3.81-2.tar.gz (95 Kb)&lt;br /&gt;
&lt;br /&gt;
Confirm default installation path &amp;lt;code&amp;gt;C:\MinGW&amp;lt;/code&amp;gt;. If you install MinGW into another directory, synfig compilation may fail.&lt;br /&gt;
&lt;br /&gt;
===MSYS===&lt;br /&gt;
Now download and install MSYS - a shell and tools kit.&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe (2.7 Mb)&lt;br /&gt;
&lt;br /&gt;
Run MSYS-1.0.10.exe, confirm default installation path &amp;lt;code&amp;gt;C:\msys\1.0&amp;lt;/code&amp;gt;. Wait until installation completes. Then the installer opens a console and asks some questions.&lt;br /&gt;
&lt;br /&gt;
''This is a post install process that will try to normalize between''&amp;lt;br /&amp;gt;&lt;br /&gt;
''your MinGW install if any as well as your previous MSYS installs''&amp;lt;br /&amp;gt;&lt;br /&gt;
''if any. I don't have any traps as aborts will not hurt anything.''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Do you wish to continue with the post install? [yn ]''&lt;br /&gt;
&lt;br /&gt;
Answer &amp;quot;y&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
''Do you have MinGW installed? [yn ]''&lt;br /&gt;
&lt;br /&gt;
Answer &amp;quot;y&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
''Please answer following the in the form of c:/foo/bar.''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Where is your MinGW installation?''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer &amp;quot;&amp;lt;code&amp;gt;c:/mingw&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The installer script prints some text and finally writes:&lt;br /&gt;
&lt;br /&gt;
''Oh joy, you do not have c:/mingw/bin/make.exe. Keep it that way.''&lt;br /&gt;
&lt;br /&gt;
It's OK. The first phase of installation is completed. Press any key.&lt;br /&gt;
&lt;br /&gt;
===MSYS Developer Toolkit===&lt;br /&gt;
Download MSYS Developer Toolkit, which contain such required tools as [http://www.gnu.org/software/autoconf/ autoconf], [http://www.gnu.org/software/automake/ automake], [http://www.gnu.org/software/libtool/ libtool], [http://www.cpan.org/ perl], pkg-tools, etc. Unfortunately, many tools included in MSYS DTK is too old and we need update it manually later.&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe (9.8 Mb)&lt;br /&gt;
&lt;br /&gt;
Run msysDTK-1.0.1.exe. Confirm your MSYS installation path &amp;lt;code&amp;gt;C:\msys\1.0&amp;lt;/code&amp;gt;. Nothing more. Installation will continue without any additional questions.&lt;br /&gt;
&lt;br /&gt;
===bash===&lt;br /&gt;
The current bash version is not enough for Synfig building and neither is the new 2.05b version. It contains an error and you need to download 3.1 snapshot:&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 (538.2 Kb)&lt;br /&gt;
&lt;br /&gt;
Make sure that all msys sessions are closed, then just decompress bash-3.1 directory from archive into &amp;lt;code&amp;gt;C:\msys\1.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also, you may want to edit &amp;lt;code&amp;gt;C:\msys\1.0\msys.bat&amp;lt;/code&amp;gt; file. You may find string which contain &amp;lt;code&amp;gt;if &amp;quot;x%MINGW32BGCOLOR%&amp;quot; == &amp;quot;x&amp;quot; set MINGW32BGCOLOR=&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;Black&amp;lt;/code&amp;gt; as color. Into &amp;lt;code&amp;gt;if &amp;quot;x%MINGW32FGCOLOR%&amp;quot; == &amp;quot;x&amp;quot; set MINGW32FGCOLOR=&amp;lt;/code&amp;gt; you may set color &amp;lt;code&amp;gt;White&amp;lt;/code&amp;gt;. In string &amp;lt;code&amp;gt;start rxvt -backspacekey&amp;lt;/code&amp;gt; you may replace &amp;lt;code&amp;gt;-fn Courier-12&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;-fn Courier-16&amp;lt;/code&amp;gt;. In my opinion this makes msys sessions look better.&lt;br /&gt;
&lt;br /&gt;
===[http://www.gnu.org/software/autoconf/ autoconf]===&lt;br /&gt;
As written before, some tool are too old for Synfig build. For example, since revision 547 synfig required autoconf and automake, included in MSYS DTK are not acceptible. And we need replace them by new version.&lt;br /&gt;
&lt;br /&gt;
Download new autoconf from:&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/msys-autoconf-2.59.tar.bz2 (394.7 Kb)&lt;br /&gt;
&lt;br /&gt;
Decompress content of archive to &amp;lt;code&amp;gt;C:\msys\1.0&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
===[http://www.gnu.org/software/automake/ automake]===&lt;br /&gt;
Download new automake from:&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/msys-automake-1.8.2.tar.bz2 (304 Kb)&lt;br /&gt;
&lt;br /&gt;
Decompress content of archive to &amp;lt;code&amp;gt;C:\msys\1.0&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===[http://www.gnu.org/software/libtool/ libtool]===&lt;br /&gt;
In Synfig Core bootstrap file we can find that libtool prior to version 1.4.2 has an error in libltdl but msys has only 1.4e. I think - will be better to update it instead of patching. Download libtool 1.5 from:&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/msys-libtool-1.5.tar.bz2 (411.3 Kb)&lt;br /&gt;
&lt;br /&gt;
Decompress content of archive to &amp;lt;code&amp;gt;C:\msys\1.0&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.gnu.org/software/gettext Gettext] ===&lt;br /&gt;
Starting from SVN 1143, Synfig offers support for internationalization (languages translations). For this, Gettext is needed.  You'll need the [http://mirror.calvin.edu/cygwin/release/gettext/gettext-devel/ gettext-devel] package from the [http://www.cygwin.com/ Cygwin] project. Unpack the archive so that everything is under /usr/local instead of /usr. Note that any binaries that are not from the MinGW project or built specially for MSYS cannot be placed in the /msys/1.0/bin (/bin and /usr/bin inside MSYS) directory. You then need to hack the /usr/local/bin/autopoint script so that prefix is defined as /usr/local instead of /usr.  Warning - ugly hack follows - Autopoint expects to find an archive.tar.gz in usr/share, so copy gettext (found on usr/share/ on the archive) file structure to /usr/share also.&lt;br /&gt;
&lt;br /&gt;
===[http://www.mktemp.org/ mktemp]===&lt;br /&gt;
Synfig requires mktemp for building, but for some unknown reason this tool is not installed by default in MinGW. Download the MinGW implementation of this tool from:&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/mktemp-1.5-MSYS.tar.bz2 (4 Kb)&lt;br /&gt;
&lt;br /&gt;
Decompress mktemp.exe from this archive to &amp;lt;code&amp;gt;C:\msys\1.0\bin&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
===[http://darwinsys.com/file/ file]===&lt;br /&gt;
libtool requires the &amp;quot;file&amp;quot; tool to check filetypes of libraries. So we need to download it:&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/mingw/file-4.16-MSYS-1.0.11-snapshot.tar.bz2 (236.2 Kb)&lt;br /&gt;
&lt;br /&gt;
and decompress content of directory file-4.16 from the archive to &amp;lt;code&amp;gt;C:\msys\1.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===cygpath emulation===&lt;br /&gt;
As far as I read, Cygwin only supports paths like /C/somedir/somefile. MinGW can use native windows paths also. Cygwin has a special tool for this (and some another features). MinGW has not. But several Synfig configure scripts require this tool so it will be better to make it. Just save the following text as &amp;lt;code&amp;gt;C:\msys\1.0\bin\cygpath&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
# A simple cygpath replacement&lt;br /&gt;
&lt;br /&gt;
until [ -z &amp;quot;$1&amp;quot; ]&lt;br /&gt;
do&lt;br /&gt;
    if [ &amp;quot;${1:0:1}&amp;quot; != &amp;quot;-&amp;quot; ]; then&lt;br /&gt;
        echo $1 | sed -e 's/\\/\//g' -e 's/^\([a-zA-Z]\):/\/\1/g'&lt;br /&gt;
    fi&lt;br /&gt;
    shift&lt;br /&gt;
done&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[http://www.winterdrache.de/freeware/png2ico/index.html png2ico]===&lt;br /&gt;
Early version of Synfig used [http://www.kernel.org/pub/software/graphics/pngtoico/ pngtoico] tool to produce icons from png files. Unfortunately this tool is broken now. You can see this for youeself by installing the official build of Synfig Studio 0.61.05. The latest versions of Synfig using another tool: png2ico. This tool is not perfect, but it works. Download it from:&lt;br /&gt;
&lt;br /&gt;
* http://www.winterdrache.de/freeware/png2ico/data/png2ico-win-2002-12-08.zip (89.9 Kb)&lt;br /&gt;
&lt;br /&gt;
And decompress png2ico.exe file to &amp;lt;code&amp;gt;C:\msys\1.0\bin&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
==Non MinGW packages==&lt;br /&gt;
===[http://subversion.tigris.org Subversion]===&lt;br /&gt;
Synfig source is stored in a subversion repository. You will need the svn client to get it. Also the svn client is required by the Synfig build scripts, to receive the revision number of the source.&lt;br /&gt;
You can download the Windows subversion package from this page:&lt;br /&gt;
&lt;br /&gt;
* http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&lt;br /&gt;
&lt;br /&gt;
When I wrote this the latest version was 1.4.3:&lt;br /&gt;
&lt;br /&gt;
* http://subversion.tigris.org/files/documents/15/36797/svn-1.4.3-setup.exe (3.58 Mb)&lt;br /&gt;
&lt;br /&gt;
But it is best to get the newest available version.&lt;br /&gt;
&lt;br /&gt;
===[http://sourceforge.net/projects/nsis/ NSIS]===&lt;br /&gt;
NSIS is the Nullsoft Scriptable Install System, a free and open source installer for WinAmp, a popular windows music player.&lt;br /&gt;
When I wrote this the latest version was 2.27:&lt;br /&gt;
&lt;br /&gt;
* http://downloads.sourceforge.net/nsis/nsis-2.28-setup.exe (1.4 Mb)&lt;br /&gt;
&lt;br /&gt;
You can use this or any newer version.&lt;br /&gt;
&lt;br /&gt;
===[http://www.imagemagick.org ImageMagick]===&lt;br /&gt;
When I wrote this the latest version was 6.3.4-10:&lt;br /&gt;
&lt;br /&gt;
* http://www.imagemagick.org/download/binaries/ImageMagick-6.3.4-10-Q16-windows-dll.exe (6.9 Mb)&lt;br /&gt;
&lt;br /&gt;
ImageMagick is required to build Studio, also Core has an ImageMagick render target.&lt;br /&gt;
&lt;br /&gt;
==Gtk+/Gtkmm==&lt;br /&gt;
===[http://www.gtk.org/ GTK+]===&lt;br /&gt;
Go to [http://gladewin32.sourceforge.net/modules/news/ this page] and download the latest GTK+ devel package for windows:&lt;br /&gt;
&lt;br /&gt;
* http://gladewin32.sourceforge.net/modules/wfdownloads/visit.php?lid=110 (12 Mb)&lt;br /&gt;
&lt;br /&gt;
You need only install the following components:&lt;br /&gt;
&lt;br /&gt;
* Gtk+ Runtime (required)&lt;br /&gt;
* Register Environment Variables&lt;br /&gt;
* Devel header/libraries&lt;br /&gt;
&lt;br /&gt;
Confirm registration for environment: ''MSYS (C:\msys\1.0)''.&lt;br /&gt;
&lt;br /&gt;
Install GTK+ to &amp;lt;code&amp;gt;C:\GTK&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===[http://www.gtkmm.org/ GTKmm]===&lt;br /&gt;
Go to [http://www.pcpm.ucl.ac.be/~gustin/win32_ports/ this page] and download the latest GTKmm devel package for Windows:&lt;br /&gt;
&lt;br /&gt;
* http://ftp.gnome.org/pub/gnome/binaries/win32/gtkmm/2.10/gtkmm-win32-devel-2.10.8-1.exe (16.1 Mb)&lt;br /&gt;
&lt;br /&gt;
You need only install the following components:&lt;br /&gt;
&lt;br /&gt;
* libsigc++&lt;br /&gt;
* cairomm&lt;br /&gt;
* glibmm&lt;br /&gt;
* gtkmm&lt;br /&gt;
* libxml++&lt;br /&gt;
&lt;br /&gt;
For each selected component you may keep only&lt;br /&gt;
&lt;br /&gt;
* Runtime&lt;br /&gt;
* Development&lt;br /&gt;
&lt;br /&gt;
subcategories. Install GTKmm to &amp;lt;code&amp;gt;C:\GTK&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Collision Resolution===&lt;br /&gt;
If you have several Gtk-applications (f.e. InkScape), you can receive a strange errors, like &amp;quot;''the procedure entry point XML_SetDoctypeDeclHandler could not be located in the dynamic link library xmlparse.dll''&amp;quot;. Thats mean you have an old version of this library in windows system32 directory, installed by another program. Just search and rename/delete this old library and all will work perfectly again.&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Building_on_Windows&amp;diff=5406</id>
		<title>Dev:Building on Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Building_on_Windows&amp;diff=5406"/>
				<updated>2008-01-22T01:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Yoyobuae: /* _src directory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Categories--&amp;gt;&lt;br /&gt;
[[Category:Building]]&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
If you didn't already install Mingw, [[Mingw installation|this page]] will guide you through the process.&lt;br /&gt;
&lt;br /&gt;
If you didn't already start an msys session, do so now. Just double click the MSYS shortcut or run &amp;lt;code&amp;gt;C:\msys\1.0\msys.bat&amp;lt;/code&amp;gt;. An msys session will be opened, creating your profile directory at &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;&amp;lt;/code&amp;gt;. As you can see, MinGW uses your windows login as the user name in its fake UNIX environment. Be careful, I've not checked whether it works with non latin-character account names.&lt;br /&gt;
&lt;br /&gt;
Now, use explorer or your favorite file manager and go to &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;&amp;lt;/code&amp;gt;. Create a directory there for all Synfig operations. For example, let it be &amp;lt;code&amp;gt;synfig&amp;lt;/code&amp;gt;. Go into this directory.&lt;br /&gt;
&lt;br /&gt;
Ok, now you are at &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig&amp;lt;/code&amp;gt;. Create four directories here:&lt;br /&gt;
* &amp;lt;code&amp;gt;_filez&amp;lt;/code&amp;gt;, for patches (and maybe later, additional files).&lt;br /&gt;
* &amp;lt;code&amp;gt;_src&amp;lt;/code&amp;gt;, for program sources.&lt;br /&gt;
* &amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt;, for building programs.&lt;br /&gt;
* &amp;lt;code&amp;gt;temp&amp;lt;/code&amp;gt;, for local installation programs and libraries, which are required for building synfig. (For example: ETL, synfig (core for studio), OpenEXR, etc...)&lt;br /&gt;
&lt;br /&gt;
Of course, you can choose your own name for all the directories and choose their locations. All you need then is to set a new path in the configuration file. But for now we choose the easy way.&lt;br /&gt;
&lt;br /&gt;
==Files==&lt;br /&gt;
Save this configuration file as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\synbuild.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# Synfig for Win32 build configuration script.&lt;br /&gt;
#############################################################################&lt;br /&gt;
# 1. Files and Directories&lt;br /&gt;
&lt;br /&gt;
# Uncompressed Synfig svn snapshots and another package sources&lt;br /&gt;
SYN_SOURCE_DIR=`dirname ~/.`&amp;quot;/synfig/_src&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Directory additional files (patches f.e.)&lt;br /&gt;
SYN_FILEZ_DIR=`dirname ~/.`&amp;quot;/synfig/_filez&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Temporary installations (ETL headers, synfig binaries for icon and image making)&lt;br /&gt;
SYN_TEMP_INSTALL=`dirname ~/.`&amp;quot;/synfig/temp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Build directory&lt;br /&gt;
SYN_BUILD_DIR=`dirname ~/.`&amp;quot;/synfig/build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# OpenEXR source package&lt;br /&gt;
SYN_OPENEXR_VERSION=&amp;quot;1.4.0&amp;quot;&lt;br /&gt;
SYN_OPENEXR_SRC=&amp;quot;${SYN_SOURCE_DIR}/openexr-${SYN_OPENEXR_VERSION}a.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#############################################################################&lt;br /&gt;
# 2. External tools&lt;br /&gt;
&lt;br /&gt;
# Path to ImageMagick directory.&lt;br /&gt;
SYN_IMAGEMAGICK_PATH=&amp;quot;/C/Program Files/ImageMagick&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Path to Subversion bin directory.&lt;br /&gt;
SYN_SUBVERSION_PATH=&amp;quot;/C/Program Files/Subversion/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Path to NSIS directory with makensis.exe file.&lt;br /&gt;
SYN_NSIS_PATH=&amp;quot;/C/Program Files/NSIS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#############################################################################&lt;br /&gt;
# 3. Build setup&lt;br /&gt;
&lt;br /&gt;
# Build host&lt;br /&gt;
MINGW_HOST=&amp;quot;mingw32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Make debug build of Synfig Core&lt;br /&gt;
SYN_CORE_DEBUG_BUILD=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Make debug build of Synfig Studio&lt;br /&gt;
SYN_STUDIO_DEBUG_BUILD=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#############################################################################&lt;br /&gt;
# 4. Patches (you can place here any additional patches)&lt;br /&gt;
&lt;br /&gt;
# ETL patches&lt;br /&gt;
ETL_PATCHES=$(cat &amp;lt;&amp;lt;:END_ETL:&lt;br /&gt;
:END_ETL:)&lt;br /&gt;
&lt;br /&gt;
# Synfig Core patches&lt;br /&gt;
SYNCORE_PATCHES=$(cat &amp;lt;&amp;lt;:END_SYNCORE:&lt;br /&gt;
:END_SYNCORE:)&lt;br /&gt;
&lt;br /&gt;
# Sunfig Studio patches&lt;br /&gt;
SYNSTUDIO_PATCHES=$(cat &amp;lt;&amp;lt;:END_SYNSTUDIO:&lt;br /&gt;
:END_SYNSTUDIO:)&lt;br /&gt;
&lt;br /&gt;
# OpenEXR patches&lt;br /&gt;
OPENEXR_PATCHES=$(cat &amp;lt;&amp;lt;:END_OPENEXR:&lt;br /&gt;
openexr-1.4.0-pkgconfig.patch&lt;br /&gt;
openexr-1.4.0-mingw32.patch&lt;br /&gt;
:END_OPENEXR:)&lt;br /&gt;
&lt;br /&gt;
#############################################################################&lt;br /&gt;
# 5. Autoconfiguration&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$GTK_BASEPATH&amp;quot; ]; then&lt;br /&gt;
  CPPFLAGS=&amp;quot;-I${GTK_BASEPATH}/include $CPPFLAGS&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$SYN_IMAGEMAGICK_PATH&amp;quot; ]; then&lt;br /&gt;
  PATH=&amp;quot;${SYN_IMAGEMAGICK_PATH}:${PATH}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$SYN_SUBVERSION_PATH&amp;quot; ]; then&lt;br /&gt;
  PATH=&amp;quot;${SYN_SUBVERSION_PATH}:${PATH}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$SYN_NSIS_PATH&amp;quot; ]; then&lt;br /&gt;
  PATH=&amp;quot;${SYN_NSIS_PATH}:${PATH}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ -d &amp;quot;${SYN_TEMP_INSTALL}/ETL&amp;quot; ]; then&lt;br /&gt;
  PATH=&amp;quot;${SYN_TEMP_INSTALL}/ETL/bin:${PATH}&amp;quot;&lt;br /&gt;
  PKG_CONFIG_PATH=&amp;quot;${SYN_TEMP_INSTALL}/ETL/lib/pkgconfig:${PKG_CONFIG_PATH}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ -d &amp;quot;${SYN_TEMP_INSTALL}/synfig-devel&amp;quot; ]; then&lt;br /&gt;
  PATH=&amp;quot;${SYN_TEMP_INSTALL}/synfig-devel/bin:${PATH}&amp;quot;&lt;br /&gt;
  PKG_CONFIG_PATH=&amp;quot;${SYN_TEMP_INSTALL}/synfig-devel/lib/pkgconfig:${PKG_CONFIG_PATH}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ -d &amp;quot;${SYN_TEMP_INSTALL}/openexr&amp;quot; ]; then&lt;br /&gt;
  PATH=&amp;quot;${SYN_TEMP_INSTALL}/openexr/bin:${PATH}&amp;quot;&lt;br /&gt;
  PKG_CONFIG_PATH=&amp;quot;${SYN_TEMP_INSTALL}/openexr/lib/pkgconfig:${PKG_CONFIG_PATH}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
export PATH&lt;br /&gt;
export PKG_CONFIG_PATH&lt;br /&gt;
export CPPFLAGS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save OpenEXR build script as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\make_openexr.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making OpenEXR...&amp;quot;&lt;br /&gt;
# Including configuration&lt;br /&gt;
if [ -r &amp;quot;./synbuild.conf&amp;quot; ]; then&lt;br /&gt;
  . ./synbuild.conf&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;No config file for synfig build (./synbuild.conf) found.&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
CURRENT_DIR=`pwd`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Cleanup directories&amp;quot;&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/openexr&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -rf ${SYN_TEMP_INSTALL}/openexr&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Preparing sources&amp;quot;&lt;br /&gt;
tar -xzf ${SYN_OPENEXR_SRC} -C ${SYN_BUILD_DIR}&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Applying patches...&amp;quot;&lt;br /&gt;
cd  ${SYN_BUILD_DIR}/openexr-${SYN_OPENEXR_VERSION}&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
for SFILE in ${OPENEXR_PATCHES[@]}&lt;br /&gt;
do&lt;br /&gt;
  patch -p1 &amp;lt;${SYN_FILEZ_DIR}/${SFILE}&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Configuring&amp;quot;&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
./configure --host=${MINGW_HOST} --prefix=${SYN_TEMP_INSTALL}/openexr \&lt;br /&gt;
  --disable-static --disable-threading --disable-posix-sem&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making&amp;quot;&lt;br /&gt;
make&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
make install&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cd ${CURRENT_DIR}&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/openexr-${SYN_OPENEXR_VERSION}&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Done: OpenEXR&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save ETL build script as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\make_etl.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making ETL...&amp;quot;&lt;br /&gt;
# Including configuration&lt;br /&gt;
if [ -r &amp;quot;./synbuild.conf&amp;quot; ]; then&lt;br /&gt;
  . ./synbuild.conf&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;No config file for synfig build (./synbuild.conf) found.&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
CURRENT_DIR=`pwd`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Cleanup directories&amp;quot;&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/ETL&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -rf ${SYN_TEMP_INSTALL}/ETL&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Preparing sources&amp;quot;&lt;br /&gt;
mkdir  ${SYN_BUILD_DIR}/ETL&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cp -R ${SYN_SOURCE_DIR}/ETL/*  ${SYN_BUILD_DIR}/ETL/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cp -R ${SYN_SOURCE_DIR}/ETL/.svn  ${SYN_BUILD_DIR}/ETL/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Applying patches...&amp;quot;&lt;br /&gt;
cd  ${SYN_BUILD_DIR}/ETL&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
for SFILE in ${ETL_PATCHES[@]}&lt;br /&gt;
do&lt;br /&gt;
  patch -p1 &amp;lt;${SYN_FILEZ_DIR}/${SFILE}&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Configuring&amp;quot;&lt;br /&gt;
autoreconf -if&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
./configure --host=${MINGW_HOST} --prefix=${SYN_TEMP_INSTALL}/ETL&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making&amp;quot;&lt;br /&gt;
make install&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cd ${CURRENT_DIR}&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/ETL&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Done: ETL&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save Synfig Core build script as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\make_core.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making Synfig-Core...&amp;quot;&lt;br /&gt;
# Including configuration&lt;br /&gt;
if [ -r &amp;quot;./synbuild.conf&amp;quot; ]; then&lt;br /&gt;
  . ./synbuild.conf&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;No config file for synfig build (./synbuild.conf) found.&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
CURRENT_DIR=`pwd`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Cleanup directories&amp;quot;&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/synfig-core&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -rf ${SYN_TEMP_INSTALL}/synfig-devel&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Preparing sources&amp;quot;&lt;br /&gt;
mkdir ${SYN_BUILD_DIR}/synfig-core&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cp -R ${SYN_SOURCE_DIR}/synfig-core/* ${SYN_BUILD_DIR}/synfig-core/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cp -R ${SYN_SOURCE_DIR}/synfig-core/.svn ${SYN_BUILD_DIR}/synfig-core/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Applying patches...&amp;quot;&lt;br /&gt;
cd  ${SYN_BUILD_DIR}/synfig-core&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
for SFILE in ${SYNCORE_PATCHES[@]}&lt;br /&gt;
do&lt;br /&gt;
  patch -p1 &amp;lt;${SYN_FILEZ_DIR}/${SFILE}&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Configuring&amp;quot;&lt;br /&gt;
libtoolize --ltdl --copy -f&lt;br /&gt;
autoreconf -if&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
mkdir win32build&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cd win32build&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
if [ &amp;quot;$SYN_CORE_DEBUG_BUILD&amp;quot; == &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
  ../configure --host=${MINGW_HOST} --prefix=C:/PROGRA~1/Synfig --disable-optimization --enable-debug&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
else&lt;br /&gt;
  ../configure --host=${MINGW_HOST} --prefix=C:/PROGRA~1/Synfig --enable-optimization=1 --disable-debug&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making&amp;quot;&lt;br /&gt;
# libtool hack patch [begin]&lt;br /&gt;
patch -p2 &amp;lt;${SYN_FILEZ_DIR}/synfig-core-hack-libtool.patch&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
# libtool hack patch [end]&lt;br /&gt;
make package&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
mv ./synfig-*.exe ${CURRENT_DIR}/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
make clean&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
# auto build hack installation [begin]&lt;br /&gt;
make install prefix=${SYN_TEMP_INSTALL}/synfig-devel&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
# auto build hack installation [end]&lt;br /&gt;
cd ${CURRENT_DIR}&lt;br /&gt;
&lt;br /&gt;
# auto build hack patch [begin]&lt;br /&gt;
echo &amp;quot;Postprocessing&amp;quot;&lt;br /&gt;
SYN_SED_PATH=`echo ${SYN_TEMP_INSTALL}/synfig-devel | sed -e 's/\//\\\\\//g'`&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
mv ${SYN_TEMP_INSTALL}/synfig-devel/bin/synfig-config ${SYN_TEMP_INSTALL}/synfig-devel/bin/synfig-config.tmp&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
sed -e &amp;quot;s/C:\/PROGRA~1\\/Synfig/${SYN_SED_PATH}/g&amp;quot; \&lt;br /&gt;
  ${SYN_TEMP_INSTALL}/synfig-devel/bin/synfig-config.tmp &amp;gt;${SYN_TEMP_INSTALL}/synfig-devel/bin/synfig-config&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -f ${SYN_TEMP_INSTALL}/synfig-devel/bin/synfig-config.tmp&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
mv ${SYN_TEMP_INSTALL}/synfig-devel/lib/pkgconfig/synfig.pc ${SYN_TEMP_INSTALL}/synfig-devel/lib/pkgconfig/synfig.pc.tmp&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
sed -e &amp;quot;s/C:\/PROGRA~1\\/Synfig/${SYN_SED_PATH}/g&amp;quot; \&lt;br /&gt;
  ${SYN_TEMP_INSTALL}/synfig-devel/lib/pkgconfig/synfig.pc.tmp &amp;gt;${SYN_TEMP_INSTALL}/synfig-devel/lib/pkgconfig/synfig.pc&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -f ${SYN_TEMP_INSTALL}/synfig-devel/lib/pkgconfig/synfig.pc.tmp&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
# auto build hack patch [end]&lt;br /&gt;
&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/synfig-core&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Done: synfig-core&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save Synfig Studio build script as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\make_studio.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making Synfig-Studio...&amp;quot;&lt;br /&gt;
# Including configuration&lt;br /&gt;
if [ -r &amp;quot;./synbuild.conf&amp;quot; ]; then&lt;br /&gt;
  . ./synbuild.conf&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;No config file for synfig build (./synbuild.conf) found.&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
CURRENT_DIR=`pwd`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Cleanup directories&amp;quot;&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/synfig-studio&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Preparing sources&amp;quot;&lt;br /&gt;
mkdir ${SYN_BUILD_DIR}/synfig-studio&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cp -R ${SYN_SOURCE_DIR}/synfig-studio/* ${SYN_BUILD_DIR}/synfig-studio/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cp -R ${SYN_SOURCE_DIR}/synfig-studio/.svn ${SYN_BUILD_DIR}/synfig-studio/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Applying patches...&amp;quot;&lt;br /&gt;
cd  ${SYN_BUILD_DIR}/synfig-studio&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
for SFILE in ${SYNSTUDIO_PATCHES[@]}&lt;br /&gt;
do&lt;br /&gt;
  patch -p1 &amp;lt;${SYN_FILEZ_DIR}/${SFILE}&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Configuring&amp;quot;&lt;br /&gt;
autoreconf -if&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
mkdir win32build&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cd win32build&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
if [ &amp;quot;$SYN_STUDIO_DEBUG_BUILD&amp;quot; == &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
  ../configure --host=${MINGW_HOST} --prefix=C:/PROGRA~1/Synfig --disable-optimization --enable-debug&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
else&lt;br /&gt;
  ../configure --host=${MINGW_HOST} --prefix=C:/PROGRA~1/Synfig --enable-optimization=1 --disable-debug&lt;br /&gt;
  [ $? -eq 0 ] || exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Making&amp;quot;&lt;br /&gt;
make package&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
mv ./synfigstudio-*.exe ${CURRENT_DIR}/&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
cd ${CURRENT_DIR}&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
rm -rf ${SYN_BUILD_DIR}/synfig-studio&lt;br /&gt;
[ $? -eq 0 ] || exit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Done: synfig-studio&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===_src directory===&lt;br /&gt;
Go to the &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\_src&amp;lt;/code&amp;gt; directory. Get the latest sources of Synfig from its repository.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ svn co http://svn.voria.com/code/ETL/trunk/ ETL&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;$ svn co http://svn.voria.com/code/synfig-core/trunk/ synfig-core&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;$ svn co http://svn.voria.com/code/synfig-studio/trunk/ synfig-studio&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The commands have a space between the URL address and the third paramater, it's easy to miss it. There should be three, space separated, paramaters in total after the &amp;quot;svn&amp;quot; command.&lt;br /&gt;
&lt;br /&gt;
Download the current stable [http://www.openexr.com/ OpenEXR] version from:&lt;br /&gt;
&lt;br /&gt;
* http://download.savannah.nongnu.org/releases/openexr/openexr-1.4.0a.tar.gz (9.22 Mb)&lt;br /&gt;
&lt;br /&gt;
Finally you must have three directories (ETL, synfig-core and synfig-studio) and the openexr-1.4.0a.tar.gz file in your &amp;lt;code&amp;gt;_src&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
===_filez directory===&lt;br /&gt;
Save the following text as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\_filez\synfig-core-hack-libtool.patch&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;diff -Nuar synfig-core.orig/win32build/libtool synfig-core/win32build/libtool&lt;br /&gt;
--- synfig-core.orig/win32build/libtool	Wed Feb  7 21:52:34 2007&lt;br /&gt;
+++ synfig-core/win32build/libtool	Wed Feb  7 21:57:12 2007&lt;br /&gt;
@@ -2805,7 +2805,7 @@&lt;br /&gt;
 	  fi&lt;br /&gt;
 	elif test &amp;quot;$build_libtool_libs&amp;quot; = yes; then&lt;br /&gt;
 	  # Not a shared library&lt;br /&gt;
-	  if test &amp;quot;$deplibs_check_method&amp;quot; != pass_all; then&lt;br /&gt;
+	  if test &amp;quot;$deplibs_check_method&amp;quot; != pass_all &amp;amp;&amp;amp; test &amp;quot;$old_library&amp;quot; != &amp;quot;libltdl.a&amp;quot;; then&lt;br /&gt;
 	    # We're trying link a shared library against a static one&lt;br /&gt;
 	    # but the system doesn't support it.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then save the following as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\_filez\openexr-1.4.0-mingw32.patch&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;diff -Nuar openexr-1.4.0.orig/IlmThread/Makefile.in openexr-1.4.0/IlmThread/Makefile.in&lt;br /&gt;
--- openexr-1.4.0.orig/IlmThread/Makefile.in	Wed Aug  9 05:45:52 2006&lt;br /&gt;
+++ openexr-1.4.0/IlmThread/Makefile.in	Wed Apr 18 20:31:58 2007&lt;br /&gt;
@@ -62,7 +62,8 @@&lt;br /&gt;
 am_libIlmThread_la_OBJECTS = IlmThreadPool.lo IlmThread.lo \&lt;br /&gt;
 	IlmThreadSemaphore.lo IlmThreadMutex.lo IlmThreadPosix.lo \&lt;br /&gt;
 	IlmThreadSemaphorePosix.lo IlmThreadSemaphorePosixCompat.lo \&lt;br /&gt;
-	IlmThreadMutexPosix.lo&lt;br /&gt;
+	IlmThreadMutexPosix.lo IlmThreadWin32.lo IlmThreadSemaphoreWin32.lo \&lt;br /&gt;
+	IlmThreadMutexWin32.lo&lt;br /&gt;
 libIlmThread_la_OBJECTS = $(am_libIlmThread_la_OBJECTS)&lt;br /&gt;
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config&lt;br /&gt;
 depcomp = $(SHELL) $(top_srcdir)/depcomp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally save the following as &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig\_filez\openexr-1.4.0-pkgconfig.patch&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;diff -Nuar openexr-1.4.0.orig/OpenEXR.pc.in openexr-1.4.0/OpenEXR.pc.in&lt;br /&gt;
--- openexr-1.4.0.orig/OpenEXR.pc.in	Wed Aug  9 05:37:50 2006&lt;br /&gt;
+++ openexr-1.4.0/OpenEXR.pc.in	Fri Apr 20 20:52:46 2007&lt;br /&gt;
@@ -7,5 +7,5 @@&lt;br /&gt;
 Name: OpenEXR&lt;br /&gt;
 Description: OpenEXR image library&lt;br /&gt;
 Version: @OPENEXR_VERSION@&lt;br /&gt;
-Libs: -L${libdir} -lIlmImf -lImath -lHalf -lIex -lz @PTHREAD_LIBS@&lt;br /&gt;
-Cflags: @PTHREAD_CFLAGS@ -I${OpenEXR_includedir}&lt;br /&gt;
+Libs: -L${libdir} -lIlmImf -lImath -lHalf -lIex -lz&lt;br /&gt;
+Cflags: -I@includedir@ -I${OpenEXR_includedir}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
This section describes the parameters of &amp;lt;code&amp;gt;synbuild.conf&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===Files and Directories===&lt;br /&gt;
As you can see in this section you can define the path and name of the special directories (with sources, patches and temporary directories). If you install the build scripts as written above, there is nothing to change.&lt;br /&gt;
&lt;br /&gt;
Also this section contains the path and version of the OpenEXR source files.&lt;br /&gt;
&lt;br /&gt;
===External tools===&lt;br /&gt;
In this section you need to define the path to the executable files of the three auxiliary packages: ImageMagick, Subversion and NSIS. ImageMagick and Subversion binaries are located using the PATH environment variable, but their paths are added to the end of the path list and so we can get name collisions. For example, the ImageMagick &amp;quot;convert&amp;quot; tool has the same name as the &amp;quot;convert&amp;quot; tool from Borland Delphi Explorer, which may have been installed before ImageMagick.&lt;br /&gt;
&lt;br /&gt;
===Build setup===&lt;br /&gt;
'''MINGW_HOST''' - host parameter of &amp;quot;configure&amp;quot; script. Do not change it.&lt;br /&gt;
&lt;br /&gt;
'''SYN_CORE_DEBUG_BUILD''' - if &amp;quot;yes&amp;quot;, Synfig Core will be made with debug info.&lt;br /&gt;
&lt;br /&gt;
'''SYN_STUDIO_DEBUG_BUILD''' - if &amp;quot;yes&amp;quot;, Synfig Studio will be made with debug info.&lt;br /&gt;
&lt;br /&gt;
===Patches===&lt;br /&gt;
In this section you can find a number of patch definition blocks, looking like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;padding: 1em; border: 1px dashed #2f6fab; color: Black; background-color: #f9f9f9; line-height: 1.1em;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;# ETL patches&lt;br /&gt;
ETL_PATCHES=$(cat &amp;lt;&amp;lt;:END_ETL:&lt;br /&gt;
:END_ETL:)&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if you place any filenames of patches between '':END_ETL:'' blocks, it will be applied before the configuration of ETL. Patch files need to be stored in the &amp;lt;code&amp;gt;_filez&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
This section is useful if you want to test your own patches before sending them to the Synfig developers.&lt;br /&gt;
&lt;br /&gt;
===Autoconfiguration===&lt;br /&gt;
This section contatins code which sets up the required environment variables and (by default) there is no need to change anything.&lt;br /&gt;
&lt;br /&gt;
==Build Order==&lt;br /&gt;
Note: If you want build synfig without slowing down other tasks running on the same machine while the build takes place, open a single msys session, then open &amp;quot;Task Manager&amp;quot;, search for the ''sh.exe'' process and set its priority to &amp;quot;Below normal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note: Running an on-access antivirus scanner can dramatically decrease compilation speed.&lt;br /&gt;
&lt;br /&gt;
===OpenEXR===&lt;br /&gt;
This package needs to be built only once. A rebuild is only required if you get a new version or want to apply a new patch to it or you update the compiler and it is incompatible with the previous binaries.&lt;br /&gt;
&lt;br /&gt;
In your msys console go to the &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig&amp;lt;/code&amp;gt; directory by typing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ cd ~/synfig&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ ./make_openexr.sh&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for the &amp;quot;Done: OpenEXR&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
===ETL===&lt;br /&gt;
Rebuild it when you get a new version of Synfig.&lt;br /&gt;
&lt;br /&gt;
In your msys console go to the &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig&amp;lt;/code&amp;gt; directory by typing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ cd ~/synfig&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ ./make_etl.sh&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for the &amp;quot;Done: ETL&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
===Synfig Core===&lt;br /&gt;
Rebuild it when you get a new version of Synfig.&lt;br /&gt;
&lt;br /&gt;
In your msys console go to the &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig&amp;lt;/code&amp;gt; directory by typing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ cd ~/synfig&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ ./make_core.sh&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for the &amp;quot;Done: synfig-core&amp;quot; message. It can take a long time. The Synfig Core installer will be moved into the current directory.&lt;br /&gt;
&lt;br /&gt;
===Synfig Studio===&lt;br /&gt;
Rebuild it when you get a new version of Synfig.&lt;br /&gt;
&lt;br /&gt;
In your msys console go to the &amp;lt;code&amp;gt;C:\msys\1.0\home\&amp;lt;windows login&amp;gt;\synfig&amp;lt;/code&amp;gt; directory by typing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ cd ~/synfig&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;nowiki&amp;gt;$ ./make_studio.sh&amp;lt;/nowiki&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for the &amp;quot;Done: synfig-studio&amp;quot; message. It can take a long time. The Synfig Studio installer will be moved into the current directory.&lt;br /&gt;
&lt;br /&gt;
==Additional tools==&lt;br /&gt;
These tools are not required to build Synfig, but they can help in the debugging process.&lt;br /&gt;
&lt;br /&gt;
P.S. Post this later. ;-)&lt;br /&gt;
&lt;br /&gt;
(Atrus - keen to hear what you recommend for debug.  Also any debug processes you go through to fix the bugs.  There's several bugs (mainly preview rendering) that I see under the current builds of Windows that are not under Linux or the old 0.61.05 for Windows - Pxegeek 2/7/07)&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows]]&lt;/div&gt;</summary>
		<author><name>Yoyobuae</name></author>	</entry>

	</feed>