<?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=Nikitakit</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=Nikitakit"/>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/Special:Contributions/Nikitakit"/>
		<updated>2026-05-26T21:55:49Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/Ideas&amp;diff=15349</id>
		<title>Dev:GoogleSoC/Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/Ideas&amp;diff=15349"/>
				<updated>2012-03-07T10:12:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cairo-based renderer ==&lt;br /&gt;
Synfig currently provides a custom software renderer, which is is not able to take advantage of advanced optimization and hardware acceleration techniques. Porting the renderer to the Cairo graphics library will allow for a faster, more versatile framework.&lt;br /&gt;
* {{L|Dev:Cairo_render_migration|Cairo migration plan}}&lt;br /&gt;
== Single-Window UI ==&lt;br /&gt;
Condense the Synfig user interface into a single window to provide a simpler, easier workflow for animators.&lt;br /&gt;
* [http://synfig.org/forums/viewtopic.php?f=14&amp;amp;t=3248 Single-window UI Brainstorm]&lt;br /&gt;
== Sound Support ==&lt;br /&gt;
Synfig currently lacks support for importing sound clips and synchronizing them with the animation. This project would consist of selecting an appropriate audio framework (e.g. gstreamer), integrating it into Synfig, and providing a suitable user interface to synchronize sound and animation.&lt;br /&gt;
* {{L|Dev:Sound_Layer|Sound Layer Proposal}}&lt;br /&gt;
== Bones GUI ==&lt;br /&gt;
Support for bones was added in a separate branch of Synfig, but it currently lacks a good user interface. This project would involve writing a GUI to edit bones and integrating it into the current development branch of Synfig.&lt;br /&gt;
* [http://synfig.org/forums/viewtopic.php?f=14&amp;amp;t=311 Bones GUI]&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15348</id>
		<title>Dev:GoogleSoC/ApplicationForm</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15348"/>
				<updated>2012-03-07T09:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Logs on separate line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questions from http://www.google-melange.com/gsoc/org/application/google/gsoc2012 (needs registration)&lt;br /&gt;
&lt;br /&gt;
* '''Organization name:'''&lt;br /&gt;
** Synfig&lt;br /&gt;
&lt;br /&gt;
* '''Organization description:'''&lt;br /&gt;
** We are a community of developers and animators focused on the development of Synfig Studio, a 2D vector animation program aiming to improve artistic workflow by focusing on tweening and interpolation. We work together to refine and add new features to the Synfig software, create tutorials, and run challenges to help and inspire our artists.&lt;br /&gt;
&lt;br /&gt;
* '''Organization home page url:'''&lt;br /&gt;
** http://synfig.org/&lt;br /&gt;
&lt;br /&gt;
* '''Main organization License:'''&lt;br /&gt;
** GNU GPL v2 or later.&lt;br /&gt;
&lt;br /&gt;
* '''What is the URL for your Ideas page?'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/Ideas&lt;br /&gt;
&lt;br /&gt;
* '''What is the main IRC channel for your organization?'''&lt;br /&gt;
** #synfig on irc.freenode.net&lt;br /&gt;
** Logs are available at: http://dooglus.rincevent.net/synfig/logs&lt;br /&gt;
&lt;br /&gt;
* '''What is the main development mailing list for your organization?'''&lt;br /&gt;
** http://lists.sourceforge.net/lists/listinfo/synfig-devl&lt;br /&gt;
&lt;br /&gt;
* '''Why is your organization applying to participate in Google Summer of Code 2012? What do you hope to gain by participating?'''&lt;br /&gt;
** We hope to attract new and enthusiastic developers to the project.&lt;br /&gt;
&lt;br /&gt;
* '''Did your organization participate in past Google Summer of Codes? If so, please summarize your involvement and the successes and challenges of your participation.'''&lt;br /&gt;
** Our organization has not participated in any past GSoCs.&lt;br /&gt;
&lt;br /&gt;
* '''If your organization has not previously participated in Google Summer of Code, have you applied in the past? If so, for what year(s)?'''&lt;br /&gt;
** We applied to GSoC in 2008 and 2010.&lt;br /&gt;
&lt;br /&gt;
* '''Does your organization have an application template you would like to see students use? If so, please provide it now.'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/StudentApplicationTemplate&lt;br /&gt;
&lt;br /&gt;
* '''What criteria did you use to select your mentors for this year's program? Please be as specific as possible.'''&lt;br /&gt;
** For our mentors, we have selected the most motivated and consistent contributors to the project who have extensive knowledge of specific areas of the Synfig Studio source code.&lt;br /&gt;
** Mentor: Carlos López González, Lead Developer&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing students?'''&lt;br /&gt;
** We ask students to provide their email and phone number to the project administrator. Our mentors will maintain regular contact with students throughout the summer and let them know that we are always available to answer questions and provide guidance. If a student disappears without notice, the mentor will contact him/her via email to clarify the situation. If there is no reply within 3 days, the administrator will phone him/her personally. If the student cannot be reached, the administrator will contact Google and report the situation.&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing mentors?'''&lt;br /&gt;
** Our backup mentor will be available throughout the summer to provide additional support for students, and will be able to fill in for the primary mentor if he is unavailable. In the case of an emergency, or if the mentor disappears and the project administrator fails contact him by phone, the backup mentor will fully take over his responsibilities.&lt;br /&gt;
&lt;br /&gt;
* '''What steps will you take to encourage students to interact with your project's community before, during and after the program?'''&lt;br /&gt;
** We want to have students who are active with the project before the application process begins. We ask potential students to introduce themselves on the project mailing list and forums and to speak with some of our developers and animators. We will treat them as any new member of our community and help them learn how the project works, and we will answer any questions they may have.&lt;br /&gt;
** As part of our application process, we require that students are able to compile and run Synfig, and we ask them to submit several patches or pull requests and any artwork made in Synfig that they want to share. Those who show active involvement and eagerness to participate will be favored for acceptance into the program, and we believe that enthusiastic students will choose to stay after the summer is over.&lt;br /&gt;
** Once a student's code is reviewed and critiqued, we will strive to integrate it into a new release of Synfig. If students see the tangible impact of their work over the summer, they will be more motivated to remain a part of our community after GSoC is over.&lt;br /&gt;
&lt;br /&gt;
* '''Are you a new organization who has a Googler or other organization to vouch for you? If so, please list their name(s) here.'''&lt;br /&gt;
** N.A.&lt;br /&gt;
&lt;br /&gt;
* '''Are you an established or larger organization who would like to vouch for a new organization applying this year? If so, please list their name(s) here.'''&lt;br /&gt;
** N.A.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15347</id>
		<title>Dev:GoogleSoC/ApplicationForm</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15347"/>
				<updated>2012-03-07T09:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Proofread and small edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questions from http://www.google-melange.com/gsoc/org/application/google/gsoc2012 (needs registration)&lt;br /&gt;
&lt;br /&gt;
* '''Organization name:'''&lt;br /&gt;
** Synfig&lt;br /&gt;
&lt;br /&gt;
* '''Organization description:'''&lt;br /&gt;
** We are a community of developers and animators focused on the development of Synfig Studio, a 2D vector animation program aiming to improve artistic workflow by focusing on tweening and interpolation. We work together to refine and add new features to the Synfig software, create tutorials, and run challenges to help and inspire our artists.&lt;br /&gt;
&lt;br /&gt;
* '''Organization home page url:'''&lt;br /&gt;
** http://synfig.org/&lt;br /&gt;
&lt;br /&gt;
* '''Main organization License:'''&lt;br /&gt;
** GNU GPL v2 or later.&lt;br /&gt;
&lt;br /&gt;
* '''What is the URL for your Ideas page?'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/Ideas&lt;br /&gt;
&lt;br /&gt;
* '''What is the main IRC channel for your organization?'''&lt;br /&gt;
** #synfig on irc.freenode.net Logs: http://dooglus.rincevent.net/synfig/logs&lt;br /&gt;
&lt;br /&gt;
* '''What is the main development mailing list for your organization?'''&lt;br /&gt;
** http://lists.sourceforge.net/lists/listinfo/synfig-devl&lt;br /&gt;
&lt;br /&gt;
* '''Why is your organization applying to participate in Google Summer of Code 2012? What do you hope to gain by participating?'''&lt;br /&gt;
** We hope to attract new and enthusiastic developers to the project.&lt;br /&gt;
&lt;br /&gt;
* '''Did your organization participate in past Google Summer of Codes? If so, please summarize your involvement and the successes and challenges of your participation.'''&lt;br /&gt;
** Our organization has not participated in any past GSoCs.&lt;br /&gt;
&lt;br /&gt;
* '''If your organization has not previously participated in Google Summer of Code, have you applied in the past? If so, for what year(s)?'''&lt;br /&gt;
** We applied to GSoC in 2008 and 2010.&lt;br /&gt;
&lt;br /&gt;
* '''Does your organization have an application template you would like to see students use? If so, please provide it now.'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/StudentApplicationTemplate&lt;br /&gt;
&lt;br /&gt;
* '''What criteria did you use to select your mentors for this year's program? Please be as specific as possible.'''&lt;br /&gt;
** For our mentors, we have selected the most motivated and consistent contributors to the project who have extensive knowledge of specific areas of the Synfig Studio source code.&lt;br /&gt;
** Mentor: Carlos López González, Lead Developer&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing students?'''&lt;br /&gt;
** We ask students to provide their email and phone number to the project administrator. Our mentors will maintain regular contact with students throughout the summer and let them know that we are always available to answer questions and provide guidance. If a student disappears without notice, the mentor will contact him/her via email to clarify the situation. If there is no reply within 3 days, the administrator will phone him/her personally. If the student cannot be reached, the administrator will contact Google and report the situation.&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing mentors?'''&lt;br /&gt;
** Our backup mentor will be available throughout the summer to provide additional support for students, and will be able to fill in for the primary mentor if he is unavailable. In the case of an emergency, or if the mentor disappears and the project administrator fails contact him by phone, the backup mentor will fully take over his responsibilities.&lt;br /&gt;
&lt;br /&gt;
* '''What steps will you take to encourage students to interact with your project's community before, during and after the program?'''&lt;br /&gt;
** We want to have students who are active with the project before the application process begins. We ask potential students to introduce themselves on the project mailing list and forums and to speak with some of our developers and animators. We will treat them as any new member of our community and help them learn how the project works, and we will answer any questions they may have.&lt;br /&gt;
** As part of our application process, we require that students are able to compile and run Synfig, and we ask them to submit several patches or pull requests and any artwork made in Synfig that they want to share. Those who show active involvement and eagerness to participate will be favored for acceptance into the program, and we believe that enthusiastic students will choose to stay after the summer is over.&lt;br /&gt;
** Once a student's code is reviewed and critiqued, we will strive to integrate it into a new release of Synfig. If students see the tangible impact of their work over the summer, they will be more motivated to remain a part of our community after GSoC is over.&lt;br /&gt;
&lt;br /&gt;
* '''Are you a new organization who has a Googler or other organization to vouch for you? If so, please list their name(s) here.'''&lt;br /&gt;
** N.A.&lt;br /&gt;
&lt;br /&gt;
* '''Are you an established or larger organization who would like to vouch for a new organization applying this year? If so, please list their name(s) here.'''&lt;br /&gt;
** N.A.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15346</id>
		<title>Dev:GoogleSoC/ApplicationForm</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15346"/>
				<updated>2012-03-07T09:19:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Change answer to question about dealing with disappearing students&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questions from http://www.google-melange.com/gsoc/org/application/google/gsoc2012 (needs registration)&lt;br /&gt;
&lt;br /&gt;
* '''Organization name:'''&lt;br /&gt;
** Synfig&lt;br /&gt;
&lt;br /&gt;
* '''Organization description:'''&lt;br /&gt;
** We are a community of developers and animators focused on development of Synfig Studio, a 2D vector animation program aiming to improve artistic workflow by focusing on tweening and interpolation. We work together to refine and add new features to the Synfig software, create tutorials, and run challenges to help and inspire our artists.&lt;br /&gt;
&lt;br /&gt;
* '''Organization home page url:'''&lt;br /&gt;
** http://synfig.org/&lt;br /&gt;
&lt;br /&gt;
* '''Main organization License:'''&lt;br /&gt;
** GNU GPL v2 or later.&lt;br /&gt;
&lt;br /&gt;
* '''What is the URL for your Ideas page?'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/Ideas&lt;br /&gt;
&lt;br /&gt;
* '''What is the main IRC channel for your organization?'''&lt;br /&gt;
** #synfig on irc.freenode.net Logs: http://dooglus.rincevent.net/synfig/logs&lt;br /&gt;
&lt;br /&gt;
* '''What is the main development mailing list for your organization?'''&lt;br /&gt;
** http://lists.sourceforge.net/lists/listinfo/synfig-devl&lt;br /&gt;
&lt;br /&gt;
* '''Why is your organization applying to participate in Google Summer of Code 2012? What do you hope to gain by participating?'''&lt;br /&gt;
** We hope to attract new and enthusiastic developers to the project.&lt;br /&gt;
&lt;br /&gt;
* '''Did your organization participate in past Google Summer of Codes? If so, please summarize your involvement and the successes and challenges of your participation.'''&lt;br /&gt;
** Our organization has not participated in any past GSoCs.&lt;br /&gt;
&lt;br /&gt;
* '''If your organization has not previously participated in Google Summer of Code, have you applied in the past? If so, for what year(s)?'''&lt;br /&gt;
** We applied to GSoC in 2008 and 2010.&lt;br /&gt;
&lt;br /&gt;
* '''Does your organization have an application template you would like to see students use? If so, please provide it now.'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/StudentApplicationTemplate&lt;br /&gt;
&lt;br /&gt;
* '''What criteria did you use to select your mentors for this year's program? Please be as specific as possible.'''&lt;br /&gt;
** For our mentors, we have selected the most motivated and consistent contributors to the project who have extensive knowledge of specific areas of the Synfig Studio source code. Mentor: Carlos López González, Lead Developer&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing students?'''&lt;br /&gt;
** We ask students to provide their email and phone number to the project administrator. Our mentors will maintain regular contact with students throughout the summer and let them know that we are always available to answer questions and provide guidance. If a student disappears without notice, the mentor will contact him/her via email to clarify the situation. If there is no reply within 3 days, the administrator will phone him/her personally. If the student cannot be reached, the administrator will contact Google and report the situation.&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing mentors?'''&lt;br /&gt;
** Our backup mentor will be available throughout the summer to provide additional support for students, and will be able to fill in for the primary mentor if he is unavailable. In the case of an emergency, or if the mentor disappears and the project administrator fails contact him by phone, the backup mentor will fully take over his responsibilities.&lt;br /&gt;
&lt;br /&gt;
* '''What steps will you take to encourage students to interact with your project's community before, during and after the program?'''&lt;br /&gt;
** We want to have students who are active with the project before the application process begins. We ask potential students to introduce themselves on the project mailing list and forums and they would get to talk with some of our developers and animators. We will treat them as any new member of our community and help them learn how the project works, and we will answer any questions they may have.&lt;br /&gt;
As part of our application process, we require that students are able to compile and run Synfig, and we ask them to submit several patches or pull requests and any artwork made in Synfig that they want to share. Those that have shown active involvement and eagerness to participate will be favored for acceptance into the program, and we believe that the enthusiastic students will choose to stay after the summer is over.&lt;br /&gt;
Once a student's code is reviewed and critiqued, we will strive to integrate it into a new release of Synfig. If students see the tangible impact of their work over the summer, they will be more motivated to remain a part of our community after GSoC is over.&lt;br /&gt;
&lt;br /&gt;
* '''Are you a new organization who has a Googler or other organization to vouch for you? If so, please list their name(s) here.'''&lt;br /&gt;
** No, we're not.&lt;br /&gt;
&lt;br /&gt;
* '''Are you an established or larger organization who would like to vouch for a new organization applying this year? If so, please list their name(s) here.'''&lt;br /&gt;
** N.A.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/StudentApplicationTemplate&amp;diff=15345</id>
		<title>Dev:GoogleSoC/StudentApplicationTemplate</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/StudentApplicationTemplate&amp;diff=15345"/>
				<updated>2012-03-07T09:08:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: capitalize Internet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Name and Contact Information ==&lt;br /&gt;
*'''Full Name'''&lt;br /&gt;
*'''Email'''&lt;br /&gt;
*'''Phone number''' ''Please provide your phone number, with country code. We will only call you if we cannot reach you through other means (e.g. if, at some point, you are in an area without Internet access.)''&lt;br /&gt;
*'''IRC nick and forum username'''&lt;br /&gt;
&lt;br /&gt;
== Project Idea ==&lt;br /&gt;
* What project idea do you propose to implement?&lt;br /&gt;
* What is your planned schedule for the project? Please list any tasks/milestones, and when you intend to complete them.&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
* Have you used Synfig or other animation software? If so, for what kind of tasks?&lt;br /&gt;
* Have you been involved with Synfig or any other open source projects? If so, please describe your contributions.&lt;br /&gt;
* What past experience do you have with programming in C++?&lt;br /&gt;
* Please describe any plans you have over the summer in addition to GSoC (vacation, classes, summer job, etc.)&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15337</id>
		<title>Dev:GoogleSoC/ApplicationForm</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15337"/>
				<updated>2012-03-06T11:33:36Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Proofread&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questions from http://www.google-melange.com/gsoc/org/application/google/gsoc2012 (needs registration)&lt;br /&gt;
&lt;br /&gt;
* '''Organization name:'''&lt;br /&gt;
** Synfig&lt;br /&gt;
&lt;br /&gt;
* '''Organization description:'''&lt;br /&gt;
** We are a community of developers and animators centered around Synfig Studio, a 2D vector animation program aiming to improve artistic workflow by focusing on tweening and interpolation. We work together to refine and add new features to the Synfig software, and create tutorials and run challenges to help and inspire our artists.&lt;br /&gt;
&lt;br /&gt;
* '''Organization home page url:'''&lt;br /&gt;
** http://synfig.org/&lt;br /&gt;
&lt;br /&gt;
* '''Main organization License:'''&lt;br /&gt;
** GNU GPL v2 or later.&lt;br /&gt;
&lt;br /&gt;
* '''What is the URL for your Ideas page?'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/Ideas&lt;br /&gt;
&lt;br /&gt;
* '''What is the main IRC channel for your organization?'''&lt;br /&gt;
** #synfig on irc.freenode.net Logs: http://dooglus.rincevent.net/synfig/logs&lt;br /&gt;
&lt;br /&gt;
* '''What is the main development mailing list for your organization?'''&lt;br /&gt;
** http://lists.sourceforge.net/lists/listinfo/synfig-devl&lt;br /&gt;
&lt;br /&gt;
* '''Why is your organization applying to participate in Google Summer of Code 2012? What do you hope to gain by participating?'''&lt;br /&gt;
** We hope to attract new and enthusiastic developers to the project. &lt;br /&gt;
&lt;br /&gt;
* '''Did your organization participate in past Google Summer of Codes? If so, please summarize your involvement and the successes and challenges of your participation.'''&lt;br /&gt;
** Our organization has not participated in any past GSoCs.&lt;br /&gt;
&lt;br /&gt;
* '''If your organization has not previously participated in Google Summer of Code, have you applied in the past? If so, for what year(s)?'''&lt;br /&gt;
** We applied to GSoC in 2008 and 2010.&lt;br /&gt;
&lt;br /&gt;
* '''Does your organization have an application template you would like to see students use? If so, please provide it now.'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/StudentApplicationTemplate&lt;br /&gt;
&lt;br /&gt;
* '''What criteria did you use to select your mentors for this year's program? Please be as specific as possible.'''&lt;br /&gt;
** For our mentors, we have selected the most motivated and consistent contributors to the project who extensive knowledge of specific areas of the Synfig Studio source code. Mentor: Carlos López González, Lead Developer&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing students?'''&lt;br /&gt;
** We ask students to provide their email and phone number to the project administrator. If a student disappears without notice, the mentor will contact him/her via email to clarify the situation. If there is no reply within 3 days, the administrator will phone him/her personally. If the student cannot be reached, the administrator will contact Google and report the situation.&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing mentors?'''&lt;br /&gt;
** Our backup mentor will be available throughout the summer to provide additional support for students, and will be able to fill in for the primary mentor if he is unavailable. In the case of an emeregency, or if the mentor is disappears and the project administrator fails contact him by phone, the backup mentor will fully take over his responsibilities.&lt;br /&gt;
&lt;br /&gt;
* '''What steps will you take to encourage students to interact with your project's community before, during and after the program?'''&lt;br /&gt;
** We want students who are active with the project before the application process begins. We ask potential students to introduce themselves on the project mailing list and forums and get to talk with some of our developers and animators. We will treat them as any new member of our community and help them learn the project and answer any questions they may have.&lt;br /&gt;
As part of our application process, we require that students are able to compile and run Synfig and ask them to submit several patches or pull requests, and any artwork made in Synfig that they want to share. Those that have shown active envolvement and eagerness to participated will be favored for acceptance into the program, and we believe that the enthusiastic students will stay after the summer is over.&lt;br /&gt;
Once a student's code is reviewed and critiqued, we will strive to integrate it into a new release of Synfig. If students see the tangible impact of their work over the summer, they will be more motivated to remain a part of our community after GSoC is over.&lt;br /&gt;
&lt;br /&gt;
* '''Are you a new organization who has a Googler or other organization to vouch for you? If so, please list their name(s) here.'''&lt;br /&gt;
** No, we're not.&lt;br /&gt;
&lt;br /&gt;
* '''Are you an established or larger organization who would like to vouch for a new organization applying this year? If so, please list their name(s) here.'''&lt;br /&gt;
** N.A.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/StudentApplicationTemplate&amp;diff=15336</id>
		<title>Dev:GoogleSoC/StudentApplicationTemplate</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/StudentApplicationTemplate&amp;diff=15336"/>
				<updated>2012-03-06T11:31:28Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Name and Contact Information ==&lt;br /&gt;
*'''Name'''&lt;br /&gt;
*'''Email'''&lt;br /&gt;
*'''Phone number''' ''Please provide your phone number, with country code. We will only call you if we cannot reach you through other means (e.g. if, at some point, you are in an area without internet access.)''&lt;br /&gt;
*'''IRC nick and forum username'''&lt;br /&gt;
&lt;br /&gt;
== Project Idea ==&lt;br /&gt;
* What project idea do you propose to implement?&lt;br /&gt;
* What is your planned schedule for the project? Please list any tasks/milestones, and when you intend to complete them.&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
* Have you used Synfig or other animation software? If so, for what kind of tasks?&lt;br /&gt;
* Have you been involved with Synfig or any other open source projects? If so, please describe your contributions.&lt;br /&gt;
* What past experience do you have with programming in C++?&lt;br /&gt;
* Please describe any plans you have over the summer in addition to GSoC (vacation, classes, summer job, etc.)&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
''Before you apply, we would like you to discuss your project ideas with us and make one or two small changes to the Synfig source code.''&lt;br /&gt;
* Clone the Synfig source code repository and compile it.&lt;br /&gt;
* Introduce yourself on our mailing list. ''If you have questions at any point, please ask us on the mailing list, IRC, or forums''&lt;br /&gt;
* Find and fix one or two bugs in the program, and submit a patch or pull request. Please make sure that we can connect it with your application.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15335</id>
		<title>Dev:GoogleSoC/ApplicationForm</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/ApplicationForm&amp;diff=15335"/>
				<updated>2012-03-06T11:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questions from http://www.google-melange.com/gsoc/org/application/google/gsoc2012 (needs registration)&lt;br /&gt;
&lt;br /&gt;
* '''Organization name:'''&lt;br /&gt;
** Synfig&lt;br /&gt;
&lt;br /&gt;
* '''Organization description:'''&lt;br /&gt;
** We are a community of developers and animators centered around Synfig Studio, a 2D vector animation program aiming to improve artistic workflow by focusing on tweening and interpolation. We work together to refine and add new features to the Synfig software, and create tutorials and run challenges to help and inspire our artists.&lt;br /&gt;
&lt;br /&gt;
* '''Organization home page url:'''&lt;br /&gt;
** http://synfig.org/&lt;br /&gt;
&lt;br /&gt;
* '''Main organization License:'''&lt;br /&gt;
** GNU GPL v2 or later.&lt;br /&gt;
&lt;br /&gt;
* '''What is the URL for your Ideas page?'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/Ideas&lt;br /&gt;
&lt;br /&gt;
* '''What is the main IRC channel for your organization?'''&lt;br /&gt;
** #synfig on irc.freenode.net Logs: http://dooglus.rincevent.net/synfig/logs&lt;br /&gt;
&lt;br /&gt;
* '''What is the main development mailing list for your organization?'''&lt;br /&gt;
** http://lists.sourceforge.net/lists/listinfo/synfig-devl&lt;br /&gt;
&lt;br /&gt;
* '''Why is your organization applying to participate in Google Summer of Code 2012? What do you hope to gain by participating?'''&lt;br /&gt;
** We hope to attract new and enthusiastic developers to the project. &lt;br /&gt;
&lt;br /&gt;
* '''Did your organization participate in past Google Summer of Codes? If so, please summarize your involvement and the successes and challenges of your participation.'''&lt;br /&gt;
** Our organization have not participated in the past GSoCs.&lt;br /&gt;
&lt;br /&gt;
* '''If your organization has not previously participated in Google Summer of Code, have you applied in the past? If so, for what year(s)?'''&lt;br /&gt;
** We applied to GSoC in 2008 and 2010.&lt;br /&gt;
&lt;br /&gt;
* '''Does your organization have an application template you would like to see students use? If so, please provide it now.'''&lt;br /&gt;
** http://wiki.synfig.org/wiki/Dev:GoogleSoC/StudentApplicationTemplate&lt;br /&gt;
&lt;br /&gt;
* '''What criteria did you use to select your mentors for this year's program? Please be as specific as possible.'''&lt;br /&gt;
** For our mentors, we have selected the most motivated and consistent contributors to the project who extensive knowledge of specific areas of the Synfig Studio source code. Mentor: Carlos López González, Lead Developer&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing students?'''&lt;br /&gt;
** We ask students to provide their email and phone number to the project administrator. If a student disappears without notice, the mentor will contact him/her via email to clarify the situation. If there is no reply within 3 days, the administrator will phone him/her personally. If the student cannot be reached, the administrator will contact Google and report the situation.&lt;br /&gt;
&lt;br /&gt;
* '''What is your plan for dealing with disappearing mentors?'''&lt;br /&gt;
** Our backup mentor will be available throughout the summer to provide additional support for students, and will be able to fill in for the primary mentor if he is unavailable. In the case of an emeregency, or if the mentor is disappears and the project administrator fails contact him by phone, the backup mentor will fully take over his responsibilities.&lt;br /&gt;
&lt;br /&gt;
* '''What steps will you take to encourage students to interact with your project's community before, during and after the program?'''&lt;br /&gt;
** We want students who are active with the project before the application process begins. We ask potential students to introduce themselves on the project mailing list and forums and get to talk with some of our developers and animators. We will treat them as any new member of our community and help them learn the project and answer any questions they may have.&lt;br /&gt;
As part of our application process, we require that students are able to compile and run Synfig and ask them to submit several patches or pull requests, and any artwork made in Synfig that they want to share. Those that have shown active envolvement and eagerness to participated will be favored for acceptance into the program, and we believe that the enthusiastic students will stay after the summer is over.&lt;br /&gt;
Once a student's code is reviewed and critiqued, we will strive to integrate it into a new release of Synfig. If students see the tangible impact of their work over the summer, they will be more motivated to remain a part of our community after GSoC is over.&lt;br /&gt;
&lt;br /&gt;
* '''Are you a new organization who has a Googler or other organization to vouch for you? If so, please list their name(s) here.'''&lt;br /&gt;
** No, we're not.&lt;br /&gt;
&lt;br /&gt;
* '''Are you an established or larger organization who would like to vouch for a new organization applying this year? If so, please list their name(s) here.'''&lt;br /&gt;
** No, we're not.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC&amp;diff=15334</id>
		<title>Dev:GoogleSoC</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC&amp;diff=15334"/>
				<updated>2012-03-06T11:28:43Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Administrators and Mentors ==&lt;br /&gt;
&lt;br /&gt;
Please read: [http://libregraphicsworld.org/blog/entry/some-insights-on-google-summer-of-code Some insights on Google Summer of Code]&lt;br /&gt;
&lt;br /&gt;
* Administrator: {{l|User:Zelgadis|Konstantin Dmitriev aka Zelgadis}}, LinkID: zelgadis&lt;br /&gt;
* Mentor: {{l|User:Genete|Carlos López González aka Genete}}, LinkID: genete&lt;br /&gt;
* Backup Mentor: Nikita Kitaev aka Nikitakit&lt;br /&gt;
* Backup Administrator: David Rylander aka Rylleman, LinkID: d_rylander&lt;br /&gt;
&lt;br /&gt;
== List of documents ==&lt;br /&gt;
&lt;br /&gt;
* {{L|Dev:GoogleSoC/ApplicationForm|Application Form}}&lt;br /&gt;
* {{L|Dev:GoogleSoC/StudentApplicationTemplate|Student Application Template}}&lt;br /&gt;
* {{L|Dev:GoogleSoC/Ideas|Ideas}}&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/StudentApplicationTemplate&amp;diff=15333</id>
		<title>Dev:GoogleSoC/StudentApplicationTemplate</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:GoogleSoC/StudentApplicationTemplate&amp;diff=15333"/>
				<updated>2012-03-06T11:23:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Created page with &amp;quot;== Name and Contact Information == *'''Name''' *'''Email''' *'''Phone number''' ''Please provide your phone number, with country code. We will only call you if we cannot reach yo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Name and Contact Information ==&lt;br /&gt;
*'''Name'''&lt;br /&gt;
*'''Email'''&lt;br /&gt;
*'''Phone number''' ''Please provide your phone number, with country code. We will only call you if we cannot reach you through other means (e.g. if, at some point, you are in an area without internet access.)''&lt;br /&gt;
*'''IRC nick and forum username'''&lt;br /&gt;
&lt;br /&gt;
== Project Idea ==&lt;br /&gt;
* What project idea do you propose to implement?&lt;br /&gt;
* What is your planned schedule for the project? Please list any tasks/milestones, and when you intend to complete them.&lt;br /&gt;
&lt;br /&gt;
== Questions ==&lt;br /&gt;
* Have you used Synfig or other animation software? If so, for what kind of tasks?&lt;br /&gt;
* Have you been involved with Synfig or any other open source projects? If so, please describe your contributions.&lt;br /&gt;
* What past experience do you have with programming in C++?&lt;br /&gt;
* Please describe any plans you have over the summer in addition to GSoC (vacation, classes, summer job, etc.)&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
''Before you apply, we would like you to discuss your project ideas with us and make one or two small changes to the Synfig source code.''&lt;br /&gt;
* Clone the Synfig source code repository and compile it.&lt;br /&gt;
* Introduce yourself on our mailing list. ''If you have any questions at all, please ask us on the mailing list, IRC, or forums''&lt;br /&gt;
* Find and fix one or two bugs in the program, and submit a patch or pull request. Please make sure that we can connect it with your application.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13356</id>
		<title>Dev:Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13356"/>
				<updated>2010-11-03T21:11:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The action system provides a good entry-point into Synfig because it functions as a stand-alone component that only interacts with Synfig's core data structure. This page is intended to provide a quick overview of the structure of the action system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Data Structures==&lt;br /&gt;
&lt;br /&gt;
The action system interacts with the underlying data structure of a Synfig document. An action is most likely to affect the parameters of a given layer or object, which are described by the following classes.&lt;br /&gt;
&lt;br /&gt;
===Value (ValueBase)===&lt;br /&gt;
The ValueBase class can store values of any of the {{l|Dev:Types|13 Value Types}}, such as numbers, points, and colors. Before reading or setting any values, it is important to check the type of value being used (by calling value.get_type()). Getting the contents of the value as a C++ type also requires knowing what type is expected (e.g. value.get(Real())).&lt;br /&gt;
&lt;br /&gt;
===ValueNode===&lt;br /&gt;
A {{l|ValueNode}} is a value can change with time. A &amp;quot;converted&amp;quot; or &amp;quot;animated&amp;quot; parameter is always a ValueNode.&lt;br /&gt;
&lt;br /&gt;
Calling &amp;quot;value_node(time)&amp;quot; retrieves the value at that given time.&lt;br /&gt;
&lt;br /&gt;
===ValueDesc===&lt;br /&gt;
Instances of this class describe a ''location'' where a ValueNode may be rather than that ValueNode itself. For example, they can refer to &amp;quot;the 'amount' parameter of layer x&amp;quot; or &amp;quot;the 5th point in the bline&amp;quot;. That way, the ValueDesc continues to function even if the underlying value has been changed, exported, converted, etc.&lt;br /&gt;
&lt;br /&gt;
Actions typically receive ValueDescs to operate on, only retrieving their values when they are necessary for computations.&lt;br /&gt;
&lt;br /&gt;
==Properties of an Action==&lt;br /&gt;
&lt;br /&gt;
The majority of actions are accessible by right-clicking on certain ducks, parameters, or layers. At that point, Synfig Studio automatically determines which actions can be called based on the data that is currently selected. &lt;br /&gt;
&lt;br /&gt;
The first step is for the action to provide a &amp;quot;Parameter Vocabulary&amp;quot; object that describes what types of parameters it needs in order to function.&lt;br /&gt;
&lt;br /&gt;
===get_param_vocab()===&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* Get the param vocab from the parent action. In most cases, it will be &amp;quot;ParamVocab ret(Action::CanvasSpecific::get_param_vocab());&amp;quot;&lt;br /&gt;
* Create a parameter description for each of the parameters your action needs(see [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1ParamDesc.html ParamDesc])&lt;br /&gt;
** ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE)&lt;br /&gt;
** Set the parameter options e.g. &amp;quot;ParamDesc(...).set_local_name(_(&amp;quot;ValueBase&amp;quot;))&amp;quot;&lt;br /&gt;
** The set actions all return the object, so you should chain them: ParamDesc(...).set_local_name(...).set_supports_multiple(...)&lt;br /&gt;
* Once the parameters are set, add them to the Parameter Vocabulary e.g. &amp;quot;ret.push_back(ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE).set_local_name(_(&amp;quot;ValueBase&amp;quot;)));&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, the parameter types alone are not always sufficient to determine whether the action should be called. As such, checking a given parameter set is done by the action:&lt;br /&gt;
&lt;br /&gt;
===is_candidate(const ParamList &amp;amp;x)===&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* The first step of any candidate check is to test whether the requirements of the ParamDesc are met. &amp;quot;if (!candidate_check(get_param_vocab(), x)) return false;&amp;quot;&lt;br /&gt;
* At this point, you know that all of your parameters are present and can begin testing for specific cases. (For example, the &amp;quot;activepointsetoff&amp;quot; action is only applicable when the activepoint is currently on)&lt;br /&gt;
* If there are no tests to perform, return &amp;quot;true&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once the parameter list is checked, Synfig Studio will pass the actual parameters to the action. The action must then retrieve their values and store them internally. This internal storage allows for the action to be un-done and re-done multiple times.&lt;br /&gt;
&lt;br /&gt;
===set_param(const synfig::String&amp;amp; name, const Action::Param &amp;amp;param)===&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* Retrieve value of the parameter and store it in an internal variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The action needs to be able to check whether all of its parameters are set. While the parameter list is checked when the action is called as a result of a right-click menu, any actions called from other places (e.g. by other actions) manually set parameters and must check that the proper parameters are present.&lt;br /&gt;
&lt;br /&gt;
===is_ready()===&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* Return false if your custom parameters are unset&lt;br /&gt;
* Check that the required parameters for CanvasSpecific actions are met &amp;quot;return Action::CanvasSpecific::is_ready();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Types of actions==&lt;br /&gt;
&lt;br /&gt;
There are two major types of actions.&lt;br /&gt;
&lt;br /&gt;
===Undoable actions===&lt;br /&gt;
The first are standard undoable actions&lt;br /&gt;
*These inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Undoable.html Undoable] and [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1CanvasSpecific.html CanvasSpecific]&lt;br /&gt;
*It is necessary to implement perform() and undo()&lt;br /&gt;
&lt;br /&gt;
===Super-actions===&lt;br /&gt;
The second are Super-actions which can only call other actions. Since undoing a Super-action is simply undoing all of its sub-actions, these do not require an undo method.&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Super.html Super]&lt;br /&gt;
*perform() and undo() are inherited from Super and should not be overridden.&lt;br /&gt;
*Instead, one should implement the prepare() method, which creates sub-actions&lt;br /&gt;
&lt;br /&gt;
To add sub-actions:&lt;br /&gt;
&lt;br /&gt;
* First create the action of the needed type e.g. &amp;quot;Action::Handle action(Action::create(&amp;quot;ValueDescSet&amp;quot;));&amp;quot; or &amp;quot;ValueDescConnect::create()&amp;quot; (TODO: Style review here)&lt;br /&gt;
* Set its parameters:&lt;br /&gt;
**The canvas, canvas interface, and current time of the current action are usually passed on to children&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas&amp;quot;,get_canvas());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas_interface&amp;quot;,get_canvas_interface());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;time&amp;quot;,time);&lt;br /&gt;
**Other parameters will vary from action to action. For ValueDescSet they might be:&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;value_desc&amp;quot;,reference_value_desc);&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;new_value&amp;quot;,value);&lt;br /&gt;
* Add it to the action stack&lt;br /&gt;
** &amp;quot;add_action(action)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13273</id>
		<title>Dev:Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13273"/>
				<updated>2010-10-11T18:39:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Make page more coherent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a work-in-progress documentation of the action system.&lt;br /&gt;
At the moment there are only some brief notes.&lt;br /&gt;
&lt;br /&gt;
==Data Structure==&lt;br /&gt;
&lt;br /&gt;
The action system, for the most part, interacts only with document data structure. As such, it is important to understand what this structure is consists of.&lt;br /&gt;
&lt;br /&gt;
Value (ValueBase): The ValueBase class can store values of any of the 13 {{l|Dev:Types|Types}}. As such, using Values requires one to check the type of the given object (by calling value.get_type()) and to know the value type before fetching its contents (e.g. value.get(Real())).&lt;br /&gt;
&lt;br /&gt;
ValueNode: A {{l|ValueNode}} is a value that changes with time. Calling value_node(time) retrieves the value at that given time.&lt;br /&gt;
&lt;br /&gt;
ValueDesc: Instances of this class describe a ''location'' where a ValueNode may be rather than that ValueNode itself. (For example &amp;quot;the 'amount' parameter of layer x&amp;quot; or &amp;quot;the 5th point in the bline&amp;quot;). That way, the ValueDesc consistently refers to the same location even if the underlying value has been changed, exported, converted, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actions typically receive ValueDescs to operate on and will only retrieve the actual value at that point if necessary&lt;br /&gt;
&lt;br /&gt;
==Properties of an Action==&lt;br /&gt;
&lt;br /&gt;
The majority of actions are accessible by right-clicking on certain ducks, parameters, or layers. At that point, Synfig Studio automatically determines which actions can be called based on the data that is currently selected. The first step is for the action to provide a &amp;quot;Parameter Vocabulary&amp;quot; object that describes what types of parameters it needs in order to function.&lt;br /&gt;
&lt;br /&gt;
get_param_vocab()&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* Get the param vocab from the parent action. In most cases, it will be &amp;quot;ParamVocab ret(Action::CanvasSpecific::get_param_vocab());&amp;quot;&lt;br /&gt;
* Create a parameter description for each of the parameters your action needs(see [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1ParamDesc.html ParamDesc])&lt;br /&gt;
** ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE)&lt;br /&gt;
** Set the parameter options e.g. &amp;quot;ParamDesc(...).set_local_name(_(&amp;quot;ValueBase&amp;quot;))&amp;quot;&lt;br /&gt;
** The set actions all return the object, so you should chain them: ParamDesc(...).set_local_name(...).set_supports_multiple(...)&lt;br /&gt;
* Once the parameters are set, add them to the Parameter Vocabulary e.g. &amp;quot;ret.push_back(ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE).set_local_name(_(&amp;quot;ValueBase&amp;quot;)));&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, the parameter types alone are not always sufficient to determine whether the action should be called. As such, checking a given parameter set is done by the action:&lt;br /&gt;
&lt;br /&gt;
is_candidate(const ParamList &amp;amp;x)&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* The first step of any candidate check is to test whether the requirements of the ParamDesc are met. &amp;quot;if (!candidate_check(get_param_vocab(), x)) return false;&amp;quot;&lt;br /&gt;
* At this point, you know that all of your parameters are present and can begin testing for specific cases. (For example, the &amp;quot;activepointsetoff&amp;quot; action is only applicable when the activepoint is currently on)&lt;br /&gt;
* If there are no tests to perform, simply return true.&lt;br /&gt;
&lt;br /&gt;
Once the parameter list is checked, Synfig Studio will pass the actual parameters to the action. The action must then retrieve their values and store them internally. This internal storage allows for the action to be un-done and re-done multiple times.\&lt;br /&gt;
&lt;br /&gt;
set_param(const synfig::String&amp;amp; name, const Action::Param &amp;amp;param)&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* Retrieve value of the parameter and store it in an internal variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The action needs to be able to check whether all of its parameters are set. While the parameter list is checked when the action is called as a result of a right-click menu, any actions called from other places (e.g. by other actions) manually set parameters and must check that the proper parameters are present.&lt;br /&gt;
&lt;br /&gt;
is_ready()&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* Return false if your custom parameters are unset&lt;br /&gt;
* Check that the required parameters for CanvasSpecific actions are met &amp;quot;return Action::CanvasSpecific::is_ready();&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Types of actions==&lt;br /&gt;
&lt;br /&gt;
There are two major types of actions.&lt;br /&gt;
&lt;br /&gt;
The first are standard undoable actions&lt;br /&gt;
*These inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Undoable.html Undoable] and [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1CanvasSpecific.html CanvasSpecific]&lt;br /&gt;
*It is necessary to implement perform() and undo()&lt;br /&gt;
&lt;br /&gt;
The second are Super-actions which can only call other actions. Since undoing a Super-action is simply undoing all of its sub-actions, these do not require an undo method.&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Super.html Super]&lt;br /&gt;
*The prepare() method creates sub-actions and adds them to the stack by calling &amp;quot;add_action(action)&amp;quot;&lt;br /&gt;
*perform() and undo() are inherited from Super and should not be overridden.&lt;br /&gt;
&lt;br /&gt;
Sub-actions are added by:&lt;br /&gt;
&lt;br /&gt;
* First create the action of the needed type &amp;quot;Action::Handle action(Action::create(&amp;quot;ValueDescSet&amp;quot;));&amp;quot; or &amp;quot;ValueDescConnect::create()&amp;quot; (TODO: Style review here)&lt;br /&gt;
* Set it's parameters:&lt;br /&gt;
**The canvas, canvas interface, and current time are usually simply passed on to children&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas&amp;quot;,get_canvas());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas_interface&amp;quot;,get_canvas_interface());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;time&amp;quot;,time);&lt;br /&gt;
**Other parameters will vary from action to action. For ValueDescSet they might be:&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;value_desc&amp;quot;,reference_value_desc);&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;new_value&amp;quot;,value);&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Roadmap&amp;diff=13272</id>
		<title>Dev:Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Roadmap&amp;diff=13272"/>
				<updated>2010-10-11T18:00:25Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Change roadmap to reflect current plans&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Synfig Roadmap =&lt;br /&gt;
* '''0.63.00 targets'''&lt;br /&gt;
** Smart Tangents Linking&lt;br /&gt;
** Initial Bones support&lt;br /&gt;
* '''0.64.00 targets'''&lt;br /&gt;
** ...&lt;br /&gt;
* '''1.0 targets'''&lt;br /&gt;
** Width ducks independent of BLine points&lt;br /&gt;
** OpenGL rendering&lt;br /&gt;
** Sound support&lt;br /&gt;
** Free drawing tools&lt;br /&gt;
** UI redesign&lt;br /&gt;
&lt;br /&gt;
[http://www.mind42.com/pub/mindmap?mid=04afc25d-b337-483b-bba4-fdbe4de6327e Online Roadmap Of Synfig]. If you want to collaborate to edit this &amp;quot;roadmap mindmap&amp;quot; please let us know in the talk page of this one.&lt;br /&gt;
&lt;br /&gt;
This It is not finished but would be a comprehensive list of things to be done/fix.&lt;br /&gt;
This mind map would help to create the real Road Map for the next release. The road map should be an ordered list of bugs and features that should be fixed/implemented in the next release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Web infrastructure reorganization =&lt;br /&gt;
* Hosting&lt;br /&gt;
** &amp;lt;s&amp;gt;Resolve memory issues&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Cleanup&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Manage all settings with git&amp;lt;/s&amp;gt;&lt;br /&gt;
** Sophisticated backup system&lt;br /&gt;
* CMS&lt;br /&gt;
** Common skin&lt;br /&gt;
** Top banner&lt;br /&gt;
** Main page: Splash and &amp;quot;download now&amp;quot; button&lt;br /&gt;
** Development page&lt;br /&gt;
** Releases information with features overview (like on blender.org)&lt;br /&gt;
*** Put splash screen on each release page&lt;br /&gt;
** Integrated irc client&lt;br /&gt;
** Integrated IRC logs page&lt;br /&gt;
** Download -&amp;gt; Tools&lt;br /&gt;
** Reorder Gallery&lt;br /&gt;
* Documentation&lt;br /&gt;
** Common skin&lt;br /&gt;
** Solid manual/guide&lt;br /&gt;
** &amp;lt;s&amp;gt;PDF export&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Basic implementation&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Ignore navigation panel&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Multilevel headings&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Internal links&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Navigation Templates&amp;lt;/s&amp;gt;&lt;br /&gt;
** Inline .po support&lt;br /&gt;
** Writer guide&lt;br /&gt;
** Translator guide&lt;br /&gt;
** Describe templates&lt;br /&gt;
* Forums&lt;br /&gt;
** Common skin&lt;br /&gt;
* Library&lt;br /&gt;
** Setup ccHost&lt;br /&gt;
** Common skin&lt;br /&gt;
&lt;br /&gt;
=Old Road Map=&lt;br /&gt;
There is '''''no specific roadmap''''', we just work on whatever happens to catch our interest. So far, we've made releases once there are a reasonable number of new fixes and/or features. This usually occurs every 6 months or so. Please see the {{l|Release|release}} page for the process we go through when releasing. Please see the {{l|Wish list|wishlist}} page if you have some ideas. Please see {{l|Software roadmap}} for things we want to do with synfig at some point.&lt;br /&gt;
&lt;br /&gt;
As an open source project, synfig is relatively young. As a result, it has lots of creases that need to be ironed out. The copyright is sorted, the code compiles fine, but there are warts when running the code and important features that are missing. To smooth out those warts, we need people to help out. We cannot do everything ourselves, WE NEED YOUR HELP!!&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13222</id>
		<title>Dev:Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13222"/>
				<updated>2010-09-08T21:32:37Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Some infor on value/valuenode/valuedesc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a work-in-progress documentation of the action system.&lt;br /&gt;
At the moment there are only some brief notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Types of actions&lt;br /&gt;
&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Super.html Super]&lt;br /&gt;
**can only call other actions&lt;br /&gt;
**implement a prepare() method to create sub-actions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Undoable.html Undoable] and [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1CanvasSpecific.html CanvasSpecific]&lt;br /&gt;
**implement perform() and undo()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
get_param_vocab()&lt;br /&gt;
&lt;br /&gt;
Each action must be able to supply a &amp;quot;Parameter Vocabulary&amp;quot; object. This object specifies what parameters the action requires and what type they need to be.&lt;br /&gt;
&lt;br /&gt;
* Get the param vocab from the parent action. In most cases, it will be &amp;quot;ParamVocab ret(Action::CanvasSpecific::get_param_vocab());&amp;quot;&lt;br /&gt;
* Create a parameter description for each of the parameters(see [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1ParamDesc.html ParamDesc])&lt;br /&gt;
** ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE)&lt;br /&gt;
** Set the parameter options e.g. &amp;quot;ParamDesc(...).set_local_name(_(&amp;quot;ValueBase&amp;quot;))&amp;quot;&lt;br /&gt;
** The set actions all return the object, so you should chain them: ParamDesc(...).set_local_name(...).set_supports_multiple(...)&lt;br /&gt;
* Once the parameters are set, they should be added to the Parameter Vocabulary e.g. &amp;quot;ret.push_back(ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE).set_local_name(_(&amp;quot;ValueBase&amp;quot;)));&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is_candidate(const ParamList &amp;amp;x)&lt;br /&gt;
&lt;br /&gt;
Any time the user selects some object (be it a duck, parameter, layer, etc) and right-clicks, she is offered a context menu containing all applicable actions. Synfig checks for candidates by passing them a list of parameters and asking if they are acceptable.&lt;br /&gt;
&lt;br /&gt;
* The first step of any candidate check is to test whether the requirements of the ParamDesc are met. &amp;quot;if (!candidate_check(get_param_vocab(), x)) return false;&amp;quot;&lt;br /&gt;
* At this point, you know that all of your parameters are present and can begin testing for specific cases. (For example, the &amp;quot;activepointsetoff&amp;quot; action is only applicable when the activepoint is currently on)&lt;br /&gt;
* If there are no tests to perform, simply return true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
set_param(const synfig::String&amp;amp; name, const Action::Param &amp;amp;param)&lt;br /&gt;
&lt;br /&gt;
When passed a parameter, the action must be able to determine if it is the right type and, if so, set an internal variable that stores the value of the parameter. All action parameters are stored in variables so that they can be accessed again if the action is undone or has been undone and now should be performed again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is_ready()&lt;br /&gt;
&lt;br /&gt;
This method should check that all internal variables needed have been properly initialized. This test is performed before any action is called to ensure that it has all of its variables set and can be executed safely.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
prepare()&lt;br /&gt;
&lt;br /&gt;
(Only applies to actions inheriting from Super). The prepare function should create sub-actions that need to be performed and call &amp;quot;add_action&amp;quot; or &amp;quot;add_action_front&amp;quot; on them. There is no need to manually implement perform() and undo(), as these will be done automatically by either performing all of the sub-actions or undoing them.&lt;br /&gt;
&lt;br /&gt;
Actions are added by:&lt;br /&gt;
&lt;br /&gt;
* First create the action of the needed type &amp;quot;Action::Handle action(Action::create(&amp;quot;ValueDescSet&amp;quot;));&amp;quot; or &amp;quot;ValueDescConnect::create()&amp;quot; (TODO: Style review here)&lt;br /&gt;
* Set it's parameters:&lt;br /&gt;
**The canvas, canvas interface, and current time are usually simply passed on to children&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas&amp;quot;,get_canvas());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas_interface&amp;quot;,get_canvas_interface());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;time&amp;quot;,time);&lt;br /&gt;
**Other parameters will vary from action to action. For ValueDescSet they might be:&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;value_desc&amp;quot;,reference_value_desc);&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;new_value&amp;quot;,value);&lt;br /&gt;
&lt;br /&gt;
Terminology:&lt;br /&gt;
&lt;br /&gt;
Value (ValueBase): The ValueBase class can store values of any of the 13 {{l|Dev:Types|Types}}. Actions involved in setting a value typically require an object of this type for a parameter. Since a given instance of ValueBase may in fact store objects of different types, it is important to check the type (by calling value.get_type()) and then get the value in the proper type (e.g. value.get(Real()))&lt;br /&gt;
&lt;br /&gt;
ValueNode: A {{l|ValueNode}} is a value that changes with time.&lt;br /&gt;
&lt;br /&gt;
ValueDesc: Instances of this class describe a ''location'' where a ValueNode may be rather than that ValueNode itself. (For example &amp;quot;the 'amount' parameter of layer x&amp;quot; or &amp;quot;the 5th point in the bline&amp;quot;). That way, the ValueDesc consistently refers to the same location even if the underlying value has been changed, exported, converted, etc.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=ValueNode&amp;diff=13221</id>
		<title>ValueNode</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=ValueNode&amp;diff=13221"/>
				<updated>2010-09-08T21:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Update link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category|Glossary}}&lt;br /&gt;
A ValueNode is a value that can change over time.&lt;br /&gt;
&lt;br /&gt;
A ValueNode represents a description of a value and how it changes (or doesn't!) over time.&lt;br /&gt;
&lt;br /&gt;
ValueNodes are the things we see as the value for every parameter of every layer.  The waypoints visible in the timetrack dialog are also part of the ValueNode - waypoints are how Animated ValueNodes work out what value to be at each point in time.&lt;br /&gt;
&lt;br /&gt;
Each ValueNode (and hence each {{l|Parameter}} in Synfig has one of 13 {{l|Dev:Types|Types}}.&lt;br /&gt;
&lt;br /&gt;
There are three kinds of ValueNodes in Synfig.  In the following examples the ValueNode's type is a [http://en.wikipedia.org/wiki/Real_number real number] in each case:&lt;br /&gt;
&lt;br /&gt;
== Constant ValueNodes ==&lt;br /&gt;
&lt;br /&gt;
These have a single value for all time, and no waypoints.  An example of such a ValueNode would be:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;3.4, for ever&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Animated ValueNodes ==&lt;br /&gt;
&lt;br /&gt;
These have {{l|Waypoints}} that specify their value at particular points in time.  For times which don't have a value specified, the value is calculated by interpolating between the waypoints.  An example would be:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;3.4 at the beginning of the animation,&lt;br /&gt;
 move smoothly up to 7.6 at time = 10 seconds,&lt;br /&gt;
 then jump instantly to 2.0&lt;br /&gt;
 and stay there until the end of time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Converted ValueNodes ==&lt;br /&gt;
&lt;br /&gt;
These are ValueNodes which have been {{l|Convert|Converted}} into sub-parameters, each of which is itself a ValueNode.  Right-clicking on a parameter and selecting a type from the 'convert' sub-menu allows you to convert a ValueNode.  Converted ValueNodes don't have waypoints themselves, but their sub-parameters may do.  An example would be:&lt;br /&gt;
  &amp;quot;start at 3.4 and linearly increase by 1.2 per second&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13220</id>
		<title>Dev:Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13220"/>
				<updated>2010-09-08T18:53:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: More writing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a work-in-progress documentation of the action system.&lt;br /&gt;
At the moment there are only some brief notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Types of actions&lt;br /&gt;
&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Super.html Super]&lt;br /&gt;
**can only call other actions&lt;br /&gt;
**implement a prepare() method to create sub-actions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Undoable.html Undoable] and [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1CanvasSpecific.html CanvasSpecific]&lt;br /&gt;
**implement perform() and undo()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
get_param_vocab()&lt;br /&gt;
&lt;br /&gt;
Each action must be able to supply a &amp;quot;Parameter Vocabulary&amp;quot; object. This object specifies what parameters the action requires and what type they need to be.&lt;br /&gt;
&lt;br /&gt;
* Get the param vocab from the parent action. In most cases, it will be &amp;quot;ParamVocab ret(Action::CanvasSpecific::get_param_vocab());&amp;quot;&lt;br /&gt;
* Create a parameter description for each of the parameters(see [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1ParamDesc.html ParamDesc])&lt;br /&gt;
** ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE)&lt;br /&gt;
** Set the parameter options e.g. &amp;quot;ParamDesc(...).set_local_name(_(&amp;quot;ValueBase&amp;quot;))&amp;quot;&lt;br /&gt;
** The set actions all return the object, so you should chain them: ParamDesc(...).set_local_name(...).set_supports_multiple(...)&lt;br /&gt;
* Once the parameters are set, they should be added to the Parameter Vocabulary e.g. &amp;quot;ret.push_back(ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE).set_local_name(_(&amp;quot;ValueBase&amp;quot;)));&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is_candidate(const ParamList &amp;amp;x)&lt;br /&gt;
&lt;br /&gt;
Any time the user selects some object (be it a duck, parameter, layer, etc) and right-clicks, she is offered a context menu containing all applicable actions. Synfig checks for candidates by passing them a list of parameters and asking if they are acceptable.&lt;br /&gt;
&lt;br /&gt;
* The first step of any candidate check is to test whether the requirements of the ParamDesc are met. &amp;quot;if (!candidate_check(get_param_vocab(), x)) return false;&amp;quot;&lt;br /&gt;
* At this point, you know that all of your parameters are present and can begin testing for specific cases. (For example, the &amp;quot;activepointsetoff&amp;quot; action is only applicable when the activepoint is currently on)&lt;br /&gt;
* If there are no tests to perform, simply return true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
set_param(const synfig::String&amp;amp; name, const Action::Param &amp;amp;param)&lt;br /&gt;
&lt;br /&gt;
When passed a parameter, the action must be able to determine if it is the right type and, if so, set an internal variable that stores the value of the parameter. All action parameters are stored in variables so that they can be accessed again if the action is undone or has been undone and now should be performed again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is_ready()&lt;br /&gt;
&lt;br /&gt;
This method should check that all internal variables needed have been properly initialized. This test is performed before any action is called to ensure that it has all of its variables set and can be executed safely.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
prepare()&lt;br /&gt;
&lt;br /&gt;
(Only applies to actions inheriting from Super). The prepare function should create sub-actions that need to be performed and call &amp;quot;add_action&amp;quot; or &amp;quot;add_action_front&amp;quot; on them. There is no need to manually implement perform() and undo(), as these will be done automatically by either performing all of the sub-actions or undoing them.&lt;br /&gt;
&lt;br /&gt;
Actions are added by:&lt;br /&gt;
&lt;br /&gt;
* First create the action of the needed type &amp;quot;Action::Handle action(Action::create(&amp;quot;ValueDescSet&amp;quot;));&amp;quot; or &amp;quot;ValueDescConnect::create()&amp;quot; (TODO: Style review here)&lt;br /&gt;
* Set it's parameters:&lt;br /&gt;
**The canvas, canvas interface, and current time are usually simply passed on to children&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas&amp;quot;,get_canvas());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;canvas_interface&amp;quot;,get_canvas_interface());&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;time&amp;quot;,time);&lt;br /&gt;
**Other parameters will vary from action to action. For ValueDescSet they might be:&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;value_desc&amp;quot;,reference_value_desc);&lt;br /&gt;
***action-&amp;gt;set_param(&amp;quot;new_value&amp;quot;,value);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: explain valuebase, valuenodes, valuedesc, and the differences between them&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13202</id>
		<title>Dev:Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13202"/>
				<updated>2010-09-08T01:52:24Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: More documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a work-in-progress documentation of the action system.&lt;br /&gt;
At the moment there are only some brief notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Types of actions&lt;br /&gt;
&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Super.html Super]&lt;br /&gt;
**can only call other actions&lt;br /&gt;
**implement a prepare() method to create sub-actions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Inherit from [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1Undoable.html Undoable] and [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1CanvasSpecific.html CanvasSpecific]&lt;br /&gt;
**implement perform() and undo()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
get_param_vocab()&lt;br /&gt;
&lt;br /&gt;
Each action must be able to supply a &amp;quot;Parameter Vocabulary&amp;quot; object. This object specifies what parameters the action requires and what type they need to be.&lt;br /&gt;
&lt;br /&gt;
* Get the param vocab from the parent action. In most cases, it will be &amp;quot;ParamVocab ret(Action::CanvasSpecific::get_param_vocab());&amp;quot;&lt;br /&gt;
* Create a parameter description for each of the parameters(see [http://download.tuxfamily.org/synfig/api/synfig-studio/classsynfigapp_1_1Action_1_1ParamDesc.html ParamDesc])&lt;br /&gt;
** ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE)&lt;br /&gt;
** Set the parameter options e.g. &amp;quot;ParamDesc(...).set_local_name(_(&amp;quot;ValueBase&amp;quot;))&amp;quot;&lt;br /&gt;
** The set actions all return the object, so you should chain them: ParamDesc(...).set_local_name(...).set_supports_multiple(...)&lt;br /&gt;
* Once the parameters are set, they should be added to the Parameter Vocabulary e.g. &amp;quot;ret.push_back(ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE).set_local_name(_(&amp;quot;ValueBase&amp;quot;)));&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
is_candidate(const ParamList &amp;amp;x)&lt;br /&gt;
&lt;br /&gt;
Any time the user selects some object (be it a duck, parameter, layer, etc) and right-clicks, she is offered a context menu containing all applicable actions. Synfig checks for candidates by passing them a list of parameters and asking if they are acceptable.&lt;br /&gt;
&lt;br /&gt;
* The first step of any candidate check is to test whether the requirements of the ParamDesc are met. &amp;quot;if (!candidate_check(get_param_vocab(), x)) return false;&amp;quot;&lt;br /&gt;
* At this point, you know that all of your parameters are present and can begin testing for specific cases. (For example, the &amp;quot;activepointsetoff&amp;quot; action is only applicable when the activepoint is currently on)&lt;br /&gt;
* If there are no tests to perform, simply return true.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13201</id>
		<title>Dev:Action System</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=13201"/>
				<updated>2010-09-07T20:25:44Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Initial notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a work-in-progress documentation of the action system.&lt;br /&gt;
At the moment there are only some brief notes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Types of actions&lt;br /&gt;
&lt;br /&gt;
*Inherit from Super&lt;br /&gt;
**can only call other actions&lt;br /&gt;
**implement a prepare() method to create sub-actions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Inherit from Undoable and CanvasSpecific&lt;br /&gt;
**implement perform() and undo()&lt;br /&gt;
&lt;br /&gt;
*Get_Param_Vocab&lt;br /&gt;
** Get the parent param vocab &amp;quot;ParamVocab ret(Action::CanvasSpecific::get_param_vocab());&amp;quot;&lt;br /&gt;
** Then add parameters to it e.g. &amp;quot; ret.push_back(ParamDesc(&amp;quot;new_value&amp;quot;,Param::TYPE_VALUE).set_local_name(_(&amp;quot;ValueBase&amp;quot;)));&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=13181</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=13181"/>
				<updated>2010-09-07T01:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Add some more information to the dev page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Developer Documentation part of this wiki is primarily for the following groups of people:&lt;br /&gt;
&lt;br /&gt;
*Current developers of the code&lt;br /&gt;
*Future and potential developers&lt;br /&gt;
*Those interested in bug filing and generating ideas&lt;br /&gt;
&lt;br /&gt;
Index:&lt;br /&gt;
&lt;br /&gt;
* {{l|Dev:Build Instructions|Build Instructions}}&lt;br /&gt;
* {{l|Dev:Source code|Source code}} description and workflow&lt;br /&gt;
* {{l|Dev:Roadmap|Roadmap}}&lt;br /&gt;
* {{l|Dev:Wish list|Wish List}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Synfig is divided into three main components: etl, synfig-core and synfig-studio.&lt;br /&gt;
* ETL is the extended template library. One of its most important components is the shared object class, which is the base class for most other parts of the application. Using &amp;quot;handles&amp;quot; to shared objects instead of c++ pointers provides garbage collection via reference counting.&lt;br /&gt;
* The core/command-line renderer (&amp;quot;synfig&amp;quot;) contains the document data structure for the application: valuenodes, layers, and canvases.&lt;br /&gt;
* Synfig Studio (&amp;quot;synfig-studio&amp;quot;) provides the gui for the application.&lt;br /&gt;
* See also: {{l|Dev:How Synfig Works|How Synfig Works}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Complete coding tutorials:&lt;br /&gt;
* {{l|Dev:Adding a Layer|Adding a Layer}}&lt;br /&gt;
* Adding a Panel, {{l|Dev:Adding a Panel - Part I|Part I}} and {{l|Dev:Adding a Panel - Part I|Part II}}. Note: these are slightly out of date: please note that the directory &amp;quot;gtkmm&amp;quot; has been renamed to &amp;quot;gui&amp;quot; and some files were moved into subfolders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other:&lt;br /&gt;
&lt;br /&gt;
* [http://synfig.org/wiki/index.php?title=Special%3APrefixIndex&amp;amp;from=&amp;amp;namespace=102  All Dev namespace pages]&lt;br /&gt;
* {{l|Dev:Translation|Translate the application}}&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Source_Outline&amp;diff=13180</id>
		<title>Dev:Source Outline</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Source_Outline&amp;diff=13180"/>
				<updated>2010-09-07T01:15:46Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Remove outdated source tree&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category|Code}}&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
&lt;br /&gt;
A good reference to the ETL/synfig/synfigstudio source code is the [http://download.tuxfamily.org/synfig/api/index.html synfig doxygen documentation]. Please note that currently the API and ABI is subject to change and breakage. We do our best to keep the file format from breaking though.&lt;br /&gt;
&lt;br /&gt;
NOTE: the code tree that used to be listed here became out of date after a restructuring of the source code. Please [http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig/synfig;a=tree browse the tree using gitweb] instead.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=12696</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=12696"/>
				<updated>2010-06-14T01:27:25Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Remove already implemented features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TranslationBar|CONTENT={{Tr/en}} · {{Tr/fr}}}}&lt;br /&gt;
&lt;br /&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;
** 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;
* 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 vectorgraphics (svg,fig)&lt;br /&gt;
&lt;br /&gt;
'''Output:'''&lt;br /&gt;
* Render output to [http://animatedpng.com/ animated PNG]&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. --{{l|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. --{{l|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;
{{l|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.  --{{l|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. --{{l|User:Zelgadis|Zelgadis}}&lt;br /&gt;
&lt;br /&gt;
==Smart linking of tangents==&lt;br /&gt;
[4] As described in {{l|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 {{l|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;
--{{l|User:Zelgadis|Zelgadis}}&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;
--{{l|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;
--{{l|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;
--{{l|User:SvH|SvH}} 12:49, 22 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
:More specifically, only render frames that need to be changed since the last rendering as defined by something like a last edit (or write to filesystem) timestamp and a dependency tree.  ...In the short-term, a tool like gmake might be useful for implementing this accross sessions if we add &amp;quot;last changed&amp;quot; timestamps to one or more sections of sifz files (rather than the almost useless case of a single sifz file timestamp if virtually all information for a project is kept within a single sifz file). We would use the last edit times in the filesystem if synfig recognizes the potentially generated files have names that already exist on disk. [There could be some tricky issues.] ...Within a given SynfigStudio (synfig?) session, we can use the timestamps from disk or just internalize that information without redoing the lookup. In addition, synfig internal dependencies based on what objects were changed since the last rendering can be used to implement a makefile whose make output would include a list of which frames need recalculation. Of course, the job of gmake could be internalized as well. [[User:Jose X|Jose X]] 21:18, 20 May 2010 (UTC)&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. --{{l|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. --{{l|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. --{{l|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 {{l|Releases/DeveloperPreview#Support | here}}). --{{l|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;
{{l|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...) {{l|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.  --{{l|User:Rubikcube|Rubikcube}} 16:38, 29 February 2008 (EST)&lt;br /&gt;
&lt;br /&gt;
:One thing to keep in mind is that 2D animations will not frequently look realistic if you implement the exact mathematics without some sort of 3d perspective transformation. And then there is the complex physics also involved in defining precise trajectories. ..This aside, what is needed is simply a function value generator as a function of n variables where at least one variable can be the frame you are on (I don't have much experience with synfig, but I presume there is a way to explicitly get the value of the frame/time you are on) and where this output value can be linked to any other parameter (of a compatible type); you can hook these function block outputs to inputs of other instances of the generator; and the outputs are defined once on every frame. To do a movement like a parabola you configure the generator to output parabola values (one per frame or even allow skipping frames) and then link these values to the vertices of a translation layer. [In other words, the stuff underneath within scope would likely move relative to other stuff underneath but at an outer scope.] We note that linking this way will create many potentials for conflict between these values and existing waypoint values. We can specify which takes precedence and how to smooth between these. Eg, if waypoints take precedence in some particular case, we can specify how to smooth against the function generator values before and after the waypoint. How do we define the functions? The functions can come from a preselect set of parameterized functions (user enters fills in the parameters with constant values or else links). Two examples of functions with three param values would be: Asin(x)+B and mx+b. Also, very usefully, allow a sequence of values to be copy/pasted to define the function outputs at each step (so the mapping defining the function is a stream interpreted as the output value at each discrete frame value). The generator can be time shifted of course. This function definition approach allows other applications (or things like motion sensors) to generate the function values. Another method that can be useful for defining a function would be to accept a curve (eg, bline) and the function output values would come from the curve based on some method specified (eg, as a function of the length from some starting point along the curve and where the speed of travel is defined by a function L(t) where L is length from start so far and t is time/frame count (eg, L(t)=t means we move at constant speed along the curve, that is, at a value of 5 frames we would be 5 units along the length of the curve)).  ..Anyway, the point is to have a function generator to hook up arbitrarily with inputs and which can co-exist with waypoints that would otherwise conflict. This would allow arbitrary automation of anything (based on precomputed or dynamic algorithmic values) without having to manually define/record a single waypoint. Conceptually, this doesn't seem that complex to integrate into the existing synfig and would be very useful (to allow arbitrary automation). An initial prototype version might integrate with only a few things, only have a limited set of simple predefined functions (plus sequence definition capabilities), have the output value be tossed out whenever a waypoint already existed, and exist only from a single menu entry. I really would like this feature. It would make it easier to speed up animation generation in many new custom ways without having to hack into synfig or into the sif file with some other tool. If I get comfortable with the code base, I might be able to chip in. [Any pointers would be appreciated.] [[User:Jose X|Jose X]] 07:03, 20 May 2010 (UTC)&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;
{{l|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 {{l|Related Projects}} page. --{{l|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). --{{l|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--{{l|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. --{{l|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. -- {{l|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? ;) --{{l|User:Zelgadis|Zelgadis}} 10:33, 17 January 2008 (EST)&lt;br /&gt;
::::{{l|Convert#Logarithm|Logarithm}} convert type for real parameters exists since svn 2034. {{l|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 - {{l|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) {{l|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 {{l|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? --{{l|User:SvH|SvH}} 01:37, 14 May 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
== {{l|Dev: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 {{l|Dev:UI Reloaded}} for progress on this.&lt;br /&gt;
&lt;br /&gt;
== Feedback for {{l|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 {{l|Wiki Wish List|Wiki Wish}} for documentation, depending on how much has already been completed. {{l|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 ({{l|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 {{l|Dev:Wish_list#a_realtime_.sif_synchronized_text_window}}. We can implement python access to XML DOM and write XML Editor in python. --{{l|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;
SVG import support is currently limited to paths - it does not support text or effects. [[User:Nikitakit|nikitakit]] 01:27, 14 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Useful would be the possibility of importing SVG sequences, just like Macromedia/Adobe Flash does with .ai sequences&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).--{{l|User:Triclops|Triclops}} 09:52, 9 Aug 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
(4) Agree. 4 for usability/readability of layers reasons --[[User:Ohoservices|Ohoservices]] 11:33, 27 April 2010 (UTC)&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).--{{l|User:Ziolive|ziolive}} 23 Aug 2006&lt;br /&gt;
*I would find this very useful too. I think it is called '''rigging'''(4/5) --{{l|User:SvH|SvH}} 01:33, 14 May 2008 (EDT)&lt;br /&gt;
*I think this effect can be simulated by adding the correct rotation layers + encapsulation to every object that is to be restrained by joints and then linking vertices. A rotation layer center would be at the corresponding joint. We would then link the vertices of the &amp;quot;limbs&amp;quot; that shared a joint. See {{l|Doc:Cut-out Animation}} ...Perhaps this process could be made more direct through an interface that behinds the scenes creates the proper layers and reorganization all at once as the user decides to link objects to joints. ...Implementing this will involve seeing if already restrained motions allow creating joints. Also, adding a joint may clash with already existing waypoints, so waypoint conflict resolution options and rules will have to be developed. [See also an above remark in the section &amp;quot;Mathematical functions to animate&amp;quot; about linked function generator values conflicting with waypoints.] [[User:Jose X|Jose X]] 20:17, 20 May 2010 (UTC)&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 {{l|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 -- --{{l|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.{{l|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. {{l|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. {{l|User:jblandrum|jblandrum}}&lt;br /&gt;
&lt;br /&gt;
This can be simply done from a python plugin could use SwfTools for converting temporary exported data into .swf file - not very hard thing to do - the information used from SwfTools is very simple to be created, such as simple .swf files are.&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;
{{l|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;
{{l|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 {{l|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 {{l|Colors Dialog}} and {{l|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. --{{l|User:Genete|Genete}} 14:30, 29 October 2007 (EDT)&lt;br /&gt;
&lt;br /&gt;
This is important for usability, should be solved soon.&lt;br /&gt;
--[[User:Ohoservices|Ohoservices]] 10:49, 27 April 2010 (UTC)&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. -- {{l|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? -- {{l|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 {{l|Dev:Sound Layer | this}} way. --{{l|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 {{l|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;
{{l|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. {{l|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. {{l|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). --{{l|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. ---{{l|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. ---{{l|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;
:{{l|Image:rotate-tool-inkscape.png|center}}&lt;br /&gt;
&lt;br /&gt;
:---{{l|User:Yaco|Yaco}}&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;
:--{{l|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;
:--{{l|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;
:--{{l|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;
:--{{l|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;
:--{{l|User:super animator|super animator}}&lt;br /&gt;
&lt;br /&gt;
:Support for svg export would solve the problem (I think), to the extent svg plugins work well (and svg is a more open format than is swf). Would sifz -&amp;gt; svg -&amp;gt; sifz possibly result in data loss/ambiguity (eg, with names)? I don't think sifz has interactivity, right (eg, mouse events that control the visual)? [[User:Jose X|Jose X]] 04:20, 20 May 2010 (UTC)&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;
:---{{l|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;
:---{{l|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;
:---{{l|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;
{{l|Image:Timeline-normal-mode-explained.jpg|200px}} {{l|Image:Timeline-layer-mode-explained.jpg|200px}} {{l|Image:Timeline-secuence-mode-explained.jpg|200px}}&lt;br /&gt;
&lt;br /&gt;
(click to enlarge)&lt;br /&gt;
&lt;br /&gt;
02/01/2009 {{l|User:Belifilmaker|Belifilmaker}}&lt;br /&gt;
&lt;br /&gt;
== Lockable Layers ==&lt;br /&gt;
I would use them all of the time.&lt;br /&gt;
{{l|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 {{l|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;
:---{{l|User:Yoyobuae|Yoyobuae}}&lt;br /&gt;
&lt;br /&gt;
== Free drawing ==&lt;br /&gt;
&lt;br /&gt;
I wish the synfig have ability to do paintings like with brush and eraser. Imagine: you painting over Paste canvas, and synfig automatically creates shapes inside this Paste canvas layer, doing necessary boolean operations and linking between them. So they don't overlap. This would allow flash-like workflow, which is very suitable for newbies. {{l|Dev:Free Drawing|Discussion.}} --{{l|User:Zelgadis|Zelgadis}} 15:27, 9 April 2009 (EDT)&lt;br /&gt;
&lt;br /&gt;
:Even a simpler manifestation of this wish, an eraser feature for the sketch tool, would come in very handy. [[User:Jose X|Jose X]] 19:53, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Projection Layer ==&lt;br /&gt;
&lt;br /&gt;
The projection layer (a new type of transformation layer) would have two angle parameters that define how the lower layers get transformed: as if projected from a canvas angled in 3D space unto a 2D final image. By combining different encapsulations that use the projection layer, we can facilitate some 3D animation realism from simple 2D manipulations.&lt;br /&gt;
[[User:Jose X|Jose X]] 22:14, 20 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==  New Gradient Tool icon ==&lt;br /&gt;
[3]  The Rectangle Tool and Gradient Tool have almost identical icons.  One of them should be changed.&lt;br /&gt;
Arbitrary suggestion:  Make the Rectangle's icon a rectangle instead of a square, with a solid fill, and make the Gradient's icon a coloured gradient instead of grey.&lt;br /&gt;
&lt;br /&gt;
==  Arrowheads  ==&lt;br /&gt;
[4]  I use Synfig for animations that go in instructional videos.  I currently use the Polygon tool for making arrows, but it would be a lot faster if Bline layers had a property for putting shapes like arrowheads at the ends of the path.[[User:Envergure|Envergure]] 18:17, 21 May 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:In addition:&lt;br /&gt;
&lt;br /&gt;
:*The ability to stroke bline paths so as to have the outline be made up of a series one or more arbitrary shapes (ie, besides lines) would also be useful since this would facilitate the animation of discrete objects that relate to each other in space and across frames.&lt;br /&gt;
&lt;br /&gt;
:*Having a shapes repository would be very useful [and with an improved synfig import mechanism that allows exported variables from imported canvases to be seen and be accessible automatically under the imported canvas' namespace -- this would facilitate the use of these .sif libraries/plugins]. And a community of people can collaborate on writing programs to help find shapes that meet certain specs: for example, just like we can write a program to find the optimal way to set up N blines to minimize squared error(?) estimation of a circle, we can write other programs to find how N blines might represent hemi-sphere and many other shapes as faithfully as possible. [Contrast with having users create standard shapes out of blines but using subjective criteria.]&lt;br /&gt;
&lt;br /&gt;
:*A special raster and vector library and set of tutorials can be created to help with the creation of tutorials for synfig documentation. Eg, include png files for &amp;quot;every&amp;quot; view of synfig (eg, every menu entry, panel view, button, etc); have arrows, boxes, bubbles, and other synfig &amp;quot;widgets&amp;quot; that are likely to be used in videos; and include good tutorials and set of instructions for using this art/animation library to build videos or simulated screenshots, etc.&lt;br /&gt;
:::Side effects of this doc project would include helping more people get involved with synfig, motivating more people be able to build such documentation/instructions for projects beyond synfig (though perhaps using synfig to create the scenes), and helping to create a standard set of pictures and best practices for synfig so that the synfig docs will tend towards uniformity (to the degree this is desirable).&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Releases&amp;diff=10948</id>
		<title>Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Releases&amp;diff=10948"/>
				<updated>2009-11-01T05:02:21Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Announcements for all the releases of synfig that have been made:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The pages below have been moved to the website:&lt;br /&gt;
* {{l|Releases/0.61.09|0.61.09}} - October 21st 2008&lt;br /&gt;
* {{l|Releases/0.61.08|0.61.08}} - March 3rd 2008&lt;br /&gt;
* {{l|Releases/0.61.07|0.61.07}} - October 9th 2007&lt;br /&gt;
* {{l|Releases/0.61.07-rc1|0.61.07-rc1}} - October 6th 2007&lt;br /&gt;
* {{l|Releases/0.61.06|0.61.06}} - June 24th 2007&lt;br /&gt;
* {{l|Releases/0.61.05|0.61.05}} - February 27th 2006&lt;br /&gt;
* {{l|Releases/0.61.03|0.61.03}} - December 8th 2005&lt;br /&gt;
* {{l|Releases/0.61.02|0.61.02}} - November 26th 2005&lt;br /&gt;
* {{l|Releases/0.61.01|0.61.01}} - November 6th 2005 '''passed'''&lt;br /&gt;
* {{l|Releases/DeveloperPreview|Developer Preview}} - November 1, 2005 (first release with source code) '''passed'''&lt;br /&gt;
* {{l|Releases/Splash_Archive|Splash Archive}}&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Logo-1.png&amp;diff=10947</id>
		<title>File:Logo-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Logo-1.png&amp;diff=10947"/>
				<updated>2009-11-01T04:34:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: uploaded a new version of &amp;quot;File:Logo-1.png&amp;quot;:&amp;amp;#32;Resize to 50%&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cut the Circle logo&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Releases&amp;diff=10801</id>
		<title>Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Releases&amp;diff=10801"/>
				<updated>2009-10-12T22:50:50Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Move pages to Website&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Announcements for all the releases of synfig that have been made:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The pages below have been moved to the website:&lt;br /&gt;
* {{l|Releases/0.61.09|0.61.09}} - October 21st 2008&lt;br /&gt;
* {{l|Releases/0.61.08|0.61.08}} - March 3rd 2008&lt;br /&gt;
* {{l|Releases/0.61.07|0.61.07}} - October 9th 2007&lt;br /&gt;
* {{l|Releases/0.61.07-rc1|0.61.07-rc1}} - October 6th 2007&lt;br /&gt;
* {{l|Releases/0.61.06|0.61.06}} - June 24th 2007&lt;br /&gt;
* {{l|Releases/0.61.05|0.61.05}} - February 27th 2006&lt;br /&gt;
* {{l|Releases/0.61.03|0.61.03}} - December 8th 2005&lt;br /&gt;
* {{l|Releases/0.61.02|0.61.02}} - November 26th 2005&lt;br /&gt;
* {{l|Releases/0.61.01|0.61.01}} - November 6th 2005 '''passed'''&lt;br /&gt;
* {{l|Releases/DeveloperPreview|Developer Preview}} - November 1, 2005 (first release with source code) '''passed'''&lt;br /&gt;
&lt;br /&gt;
The Splash Archive remains on the wiki:&lt;br /&gt;
* {{l|Releases/Splash_Archive|Splash Archive}}&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=10612</id>
		<title>Doc:Slideshow Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=10612"/>
				<updated>2009-09-12T05:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Add to tutorials category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Categories--&amp;gt;&lt;br /&gt;
{{l|Category:Tutorials}}&lt;br /&gt;
&lt;br /&gt;
In Synfig, there are many ways to create a slideshow from a series of images. Probably the simplest is using the {{l|ListImporter|List Importer}} to import a series of images. However, the method only works on raster images and is incapable of generating transitions. The technique described here is only slightly more complex, but it allows creating a presentation from a series of Synfig layers, regardless of type of size. The method can only produce cross-fade transitions; anything more complex would require a more advanced technique.&lt;br /&gt;
&lt;br /&gt;
==Technical Description==&lt;br /&gt;
&lt;br /&gt;
Synfig animates with a series of layers, each of which exists throughout the entire timeline. Hence, our goal is to make only one of the layers visible at any given time. Though there are many ways to achieve this goal, this tutorial will assure that only one layer is seen by using the {{l|Blend_Method_Parameter|Blend}} and {{l|Amount_Parameter|Amount}} parameters of each layer.&lt;br /&gt;
&lt;br /&gt;
All graphical layers in Synfig have these two essential properties. The {{l|Blend_Method_Parameter|Blend Mode}} defines how the image should be layered on everything below it, and the Amount dictates to what extent the blending is done. In the default blend mode, {{l|Blend_Method_Parameter#Composite|Composite}}, objects are simply placed on top of everything below them. In this case, the Amount value determines the overall transparency of the layer: at a value of 1.0, the layer is fully visible; at 0.0, it is entirely transparent. In-between values constitute partial transparency, which will form the transitions. These properties can be used to display a series of pictures. Each is its own layer and at any given point in time, one layer's amount is set to 1.0 while all others equal 0. However, there is a more efficient way of accomplishing the task. This method requires switching all images to the {{l|Blend_Method_Parameter#Straight|Straight}} blend mode.&lt;br /&gt;
&lt;br /&gt;
This blend mode has an advantage: all layers below the current one are hidden. Therefore it is no longer necessary for layers below the current one to have a an Amount of 0. Using the Amount for crossfade still works, but it now needs to be changed only once: all layers start with a value of 1, and then be made transparent from the highest to the lowest.&lt;br /&gt;
&lt;br /&gt;
The effect could be animated with two waypoints per layer. However, Synfig offers an even simpler method that does not require using the animation mode. Instead, linking functionality can be used. The data type for Amount is currently set to be a real number. Instead, let's replace that with a special function by converting the layer to {{l|Convert#Timed_Swap|Timed Swap}}.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Slideshow_amount4.png}}&lt;br /&gt;
&lt;br /&gt;
Now we examine the parameters of this new data type. The first is the initial value (1.0), the second is the final value (0.0), and the third is the time when the values will switch. If we want the image to display for two seconds, we can set the Swap Time to &amp;quot;2s&amp;quot;. (Note: this assumes we are starting at 0s). Then the amount will be 1.0 for three seconds (image visible) and 0 for the remainder of the timeline (image hidden). The last value will be the duration of the crossfade transition. Note that the transition takes away from the time for which the image will be displayed. For example, a value of &amp;quot;1s&amp;quot; means that the image will be fully opaque for one second, fade in one second, and then remain faded for the remainder of the animation.&lt;br /&gt;
&lt;br /&gt;
Applying successive times to layers from the top down will fade them one by one, creating the desired slideshow effect.&lt;br /&gt;
&lt;br /&gt;
==Step-by-Step Instructions==&lt;br /&gt;
Here are step-by-step instructions for applying this principle to an animation.&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
Open a Synfig document and import any images, canvases, etc. Images can be imported using &amp;gt;File&amp;gt;Import (The first &amp;quot;&amp;gt;&amp;quot; signifies the {{l|Canvas_Menu_Caret|Caret Menu}}). Note that importing ''links'' to the image using a ''relative'' path. Take care to maintain the relative positions of the files when moving them. If multiple layers represent a single image, encapsulate them into an {{l|Inline Canvas}}.&lt;br /&gt;
Then arrange the images in the order they will be displayed, first image on top.&lt;br /&gt;
&lt;br /&gt;
===Blend Method===&lt;br /&gt;
Select all layers in the layer panel. Then go to the parameters panel and set the Blend Method to Straight.&lt;br /&gt;
{{l|Image:Slideshow_blend1.png}}{{l|Image:Slideshow_blend2.png}}&lt;br /&gt;
&lt;br /&gt;
===Timed Swap===&lt;br /&gt;
Unlike Blend Mode, converting to {{l|Convert#Timed_Swap|Timed Swap}} must be done individually for each layer.&lt;br /&gt;
Set &amp;quot;Before&amp;quot; to 1.0 and &amp;quot;After&amp;quot; to 0.&lt;br /&gt;
Suppose you want the images to swap every 4 seconds, using 1 second transitions. Then set the &amp;quot;Duration&amp;quot; to &amp;quot;1s&amp;quot;. Afterwards, set Time for the first layer to 4+1=5. Then increase the time for each successive layer (5,10,15,20,...). The Swap Time is the point where the image fully disappears. Configure these values to fit your needs.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Slideshow_amount1.png}} {{l|Image:Slideshow_amount2.png}}&lt;br /&gt;
{{l|Image:Slideshow_amount3.png}} {{l|Image:Slideshow_amount4.png}}&lt;br /&gt;
&lt;br /&gt;
===Animation Length===&lt;br /&gt;
Now that times have been configured, your file must be configured to render the full animation length. Go to &amp;gt;Edit&amp;gt;Properties and switch to the &amp;quot;Time&amp;quot; tab. Set the end time to equal the last of your time values. You can add a few seconds if you want a blank/black screen at the end, after the images have faded.&lt;br /&gt;
&lt;br /&gt;
===Extra: Background===&lt;br /&gt;
You may have noticed that the Straight Blend Mode removes any backgrounds from the image. Here are two methods to add a background:&lt;br /&gt;
&lt;br /&gt;
a) Encapsulate all image layers. Now the Straight blend mode only works within the inline canvas. Once this is done, add any backgrounds below the canvas, and any foreground above the canvas.&lt;br /&gt;
&lt;br /&gt;
b) Add a background layer/canvas to the ''top'' of the layer list. Since it is above all other layers, the Straight layering mode doesn't affect it. However, it would normally shroud all the images. To make it appear below everything else, set the Blend Mode to {{l|Blend_Method_Parameter#Behind|Behind}}.&lt;br /&gt;
&lt;br /&gt;
==Endnotes==&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have now finished reading the slideshow tutorial. Please leave me (nikitakit) a comment about your thoughts concerning this page.&lt;br /&gt;
&lt;br /&gt;
GNU/Linux users may also be interested in [http://akhilman.googlepages.com/images2sif.sh AkhIL's imag2sif shell script]. It imports  images into Synfig and creates a rotate and translate layer for each.&lt;br /&gt;
&lt;br /&gt;
The explanation of the &amp;quot;Straight&amp;quot; blend mode in this tutorial lacks a screenshot. Feel free to add one.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Convert&amp;diff=8624</id>
		<title>Convert</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Convert&amp;diff=8624"/>
				<updated>2009-05-03T16:05:40Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Edit Bool; add &amp;quot;Power&amp;quot; /* Which Value Types can use which Convert Types? */&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;
=== And ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;AND&amp;quot; adds two sub-parameters:&lt;br /&gt;
* bool &amp;quot;Link1&amp;quot;&lt;br /&gt;
* bool &amp;quot;Link2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is true only if both Link1 and Link2 are true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Angle String ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#String|string]]-valued parameter to &amp;quot;Angle String&amp;quot; adds four sub-parameters:&lt;br /&gt;
* angle &amp;quot;Angle&amp;quot;&lt;br /&gt;
* integer &amp;quot;Width&amp;quot;&lt;br /&gt;
* integer &amp;quot;Precision&amp;quot;&lt;br /&gt;
* bool &amp;quot;Zero Padded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value a string containing the value of &amp;quot;Angle&amp;quot; (in degrees) formatted as a string with a minimum width &amp;quot;Width&amp;quot;, with &amp;quot;Precision&amp;quot; decimal places.  If &amp;quot;Zero Padded&amp;quot; is true, it will be left-padded with &amp;quot;0&amp;quot; characters.&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]], [[Convert#Real|real]] (since SVN r1862), or [[Convert#Vector|vector]] parameter to &amp;quot;BLine Tangent&amp;quot; adds six 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;
* angle &amp;quot;Offset&amp;quot; (since SVN r1863)&lt;br /&gt;
* real &amp;quot;Scale&amp;quot; (since SVN r1863)&lt;br /&gt;
* bool &amp;quot;Fixed Length&amp;quot; (since SVN r1863)&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, optionally rotated and scaled according to the &amp;quot;Offset&amp;quot;, &amp;quot;Scale&amp;quot;, and &amp;quot;Fixed Length&amp;quot; parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Offset&amp;quot; is an angle used to give the tangent an extra rotation before returning it.  If &amp;quot;Fixed Length&amp;quot; is true, the tangent is then scaled to have a length equal to &amp;quot;Scale&amp;quot;.  Otherwise the tangent is multiplied by &amp;quot;Scale&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If a vector was converted the result is the tangent itself.  If an angle was converted, the result is the angle of the tangent to the horizontal, and if a real was converted, the result is the length of the tangent.&lt;br /&gt;
&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;
* real &amp;quot;Scale&amp;quot; (since SVN r1872)&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, multiplied by the &amp;quot;Scale&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
=== Compare ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;OR&amp;quot; adds five sub-parameters:&lt;br /&gt;
* real &amp;quot;LHS&amp;quot;&lt;br /&gt;
* real &amp;quot;RHS&amp;quot;&lt;br /&gt;
* bool &amp;quot;Greater than&amp;quot;&lt;br /&gt;
* bool &amp;quot;Equal to&amp;quot;&lt;br /&gt;
* bool &amp;quot;Less than&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The valuenode compares LHS and RHS. The three boolean values determine which comparison returns true. For example, if LHS&amp;gt;RHS and &amp;quot;greater than&amp;quot; is checked, the valuenode will evaluate to &amp;quot;true&amp;quot;.&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;
=== Dot Product ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] or [[Convert#Angle|angle]] parameter to a &amp;quot;Dot Product&amp;quot; adds two sub-parameters:&lt;br /&gt;
* vector &amp;quot;LHS&amp;quot;&lt;br /&gt;
* vector &amp;quot;RHS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If the converted value is an angle, the return value is the angle between the two vectors:&lt;br /&gt;
&lt;br /&gt;
 return = acos((LHS · RHS) / (|LHS| * |RHS|))&lt;br /&gt;
&lt;br /&gt;
If the converted value is a real, the result value is the dot product of the two vectors:&lt;br /&gt;
&lt;br /&gt;
 return = LHS · RHS = |LHS| * |RHS| * cos(alpha)&lt;br /&gt;
&lt;br /&gt;
(where alpha is the angle between LHS and RHS).&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 Color ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Color|color]] parameter to &amp;quot;Gradient Color&amp;quot; adds two sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* gradient &amp;quot;Gradient&amp;quot;&lt;br /&gt;
* real &amp;quot;Index&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is a color taken from the gradient at the given index position.  Index 0 corresponds to the left of the gradient; index 1 corresponds to the right of the gradient.&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;
=== Int String ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#String|string]]-valued parameter to &amp;quot;Int String&amp;quot; adds three sub-parameters:&lt;br /&gt;
* integer &amp;quot;Int&amp;quot;&lt;br /&gt;
* integer &amp;quot;Width&amp;quot;&lt;br /&gt;
* bool &amp;quot;Zero Padded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value a string containing &amp;quot;Int&amp;quot; formatted as a string with a minimum width &amp;quot;Width&amp;quot;.  If &amp;quot;Zero Padded&amp;quot; is true, it will be left-padded with &amp;quot;0&amp;quot; characters.&lt;br /&gt;
&lt;br /&gt;
=== Joined List ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#String|string]] parameter to be 'Joined List' adds four sub-parameters:&lt;br /&gt;
* list &amp;quot;Strings&amp;quot;&lt;br /&gt;
* string &amp;quot;Before&amp;quot;&lt;br /&gt;
* string &amp;quot;Separator&amp;quot;&lt;br /&gt;
* string &amp;quot;After&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The result is a string containing the value of &amp;quot;Before&amp;quot;, followed by all the strings in the &amp;quot;Strings&amp;quot; list, with the value of &amp;quot;Separator&amp;quot; between each pair, followed by the value of &amp;quot;After&amp;quot;.&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;
=== Logarithm ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]]-valued parameter to &amp;quot;Logarithm&amp;quot; adds three sub-parameters:&lt;br /&gt;
&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;
&lt;br /&gt;
  Log(Link) (if Link &amp;gt;= Epsilon)&lt;br /&gt;
  -Infinite (if Link &amp;lt; Epsilon)&lt;br /&gt;
&lt;br /&gt;
The epsilon and infinite parameters are only needed to prevent logarithm of negative or zero numbers. For regular operation the resulting value is simply the natural logarithm of Link. In fact a logarithm of a negative number cannot be calculated in the space of Real numbers. This convert type returns -Infinite for simplicity.&lt;br /&gt;
&lt;br /&gt;
=== Not ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;NOT&amp;quot; adds one sub-parameter:&lt;br /&gt;
* bool &amp;quot;Link&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the opposite of Link.&lt;br /&gt;
&lt;br /&gt;
=== Or ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;OR&amp;quot; adds two sub-parameters:&lt;br /&gt;
* bool &amp;quot;Link1&amp;quot;&lt;br /&gt;
* bool &amp;quot;Link2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is true if either link1, link2, or both are true.&lt;br /&gt;
&lt;br /&gt;
=== Power ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]]-valued parameter to &amp;quot;Power&amp;quot; adds three sub-parameters:&lt;br /&gt;
* real &amp;quot;Base&amp;quot;&lt;br /&gt;
* real &amp;quot;Power&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 Base^Power if the operation is defined.&lt;br /&gt;
The undefined cases will also return a value (to avoid errors):&lt;br /&gt;
   0^0 = 1&lt;br /&gt;
   0^-x = +/- infinite&lt;br /&gt;
   If a negative base is raised to a noninteger power, the power is rounded (typecast) to an integer&lt;br /&gt;
&lt;br /&gt;
The epsilon and infinite parameters are only needed to prevent division by zero.&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;
&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;
* real &amp;quot;Loop Time&amp;quot; (since SVN r2315)&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;
* &amp;quot;Loop Time&amp;quot; (added in SVN r2315) makes the random value repeat after the given time.  The value ends up the same at the given time as at time=0 so it's possible to make random looping animations without a nasty jump when the time wraps back to zero.&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;
=== Real String ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#String|string]] parameter to &amp;quot;Real String&amp;quot; adds four sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* real &amp;quot;Real&amp;quot;&lt;br /&gt;
* int &amp;quot;Width&amp;quot;&lt;br /&gt;
* int &amp;quot;Precision&amp;quot;&lt;br /&gt;
* bool &amp;quot;Zero Padded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The result is a string formatted to contain the given value &amp;quot;Real&amp;quot;.  &amp;quot;Width&amp;quot; specifies the minimum field width, &amp;quot;Precision&amp;quot; specifies the number of decimal places and &amp;quot;Zero Padded&amp;quot; specifies whether to pad with zeros on the left hand side.&lt;br /&gt;
&lt;br /&gt;
For example, with Real=3.1415, Width=6, Precision=2, and ZeroPadded=true, we get:&lt;br /&gt;
  &amp;quot;003.14&amp;quot;&lt;br /&gt;
(6 characters long, 2 decimal places, and padded with zeros on the left).&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;
=== Time String ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#String|string]] parameter to &amp;quot;Time String&amp;quot; adds one sub-parameter called &amp;quot;Time&amp;quot;, of type time:&lt;br /&gt;
&lt;br /&gt;
* time &amp;quot;Time&amp;quot; &lt;br /&gt;
&lt;br /&gt;
The result is a string containing the given time.&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.&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;
=== Vector Angle ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#Angle|angle]] to &amp;quot;Vector Angle&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the angle between the vector and the X axis.&lt;br /&gt;
&lt;br /&gt;
=== Vector Length ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] to &amp;quot;Vector Length&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the length of the vector.&lt;br /&gt;
&lt;br /&gt;
=== Vector X ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] to &amp;quot;Vector X&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the X component of the vector.&lt;br /&gt;
&lt;br /&gt;
=== Vector Y ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] to &amp;quot;Vector Y&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the Y component of the vector.&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;
[[Image:angle_icon.png|32px]]&lt;br /&gt;
&lt;br /&gt;
* Angle parameters can be converted to [[Convert#Add|Add]], [[Convert#aTan2|aTan2]], [[Convert#BLine Tangent|BLine Tangent]], [[Convert#Dot Product|Dot Product]], [[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]], [[Convert#Vector Angle|Vector Angle]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== BLinePoint ===&lt;br /&gt;
[[Image:blinepoint_icon.png|32px]]&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;
[[Image:bool_icon.png|32px]]&lt;br /&gt;
&lt;br /&gt;
* Bool parameters can only be converted to the [[Convert#And|AND]], [[Convert#Greyed|Greyed]], [[Convert#Or|OR]], [[Convert#Not|NOT]], [[Convert#Compare|Compare]] [[Convert#Random|Random]],  [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]],and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Canvas ===&lt;br /&gt;
[[Image:canvas_pointer_icon.png|32px]]&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;
[[Image:color_icon.png|32px]]&lt;br /&gt;
* Color parameters can be converted to [[Convert#Add|Add]], [[Convert#Composite|Composite]], [[Convert#Gradient Color|Gradient Color]], [[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;
[[Image:gradient_icon.png|32px]]&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;
[[Image:Integer_icon.png|32px]]&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;
[[Image:list_icon.png|32px]]&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;
[[Image:real_icon.png|32px]]&lt;br /&gt;
* Real parameters can be converted to [[Convert#Add|Add]], [[Convert#BLine Width|BLine Width]], [[Convert#Cos|Cos]], [[Convert#Dot Product|Dot Product]], [[Convert#Exponential|Exponential]], [[Convert#Linear|Linear]], [[Convert#Logarithm|Logarithm]], [[Convert#Power|Power]], [[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]], [[Convert#Vector Length|Vector Length]], [[Convert#Vector X|Vector X]], [[Convert#Vector Y|Vector Y]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Segment ===&lt;br /&gt;
[[Image:segment_icon.png|32px]]&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;
[[Image:string_icon.png|32px]]&lt;br /&gt;
* String parameters can be converted to the [[Convert#Angle String|Angle String]], [[Convert#Int String|Int String]], [[Convert#Joined List|Joined List]], [[Convert#Real String|Real String]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Time String|Time String]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Time ===&lt;br /&gt;
[[Image:time_icon.png|32px]]&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;
[[Image:vector_icon.png|32px]]&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.09)''' || not yet released || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2034 || [[#Logarithm|Logarithm]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2010 || [[#Int String|Int String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2010 || [[#Angle String|Angle String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2007 || [[#Joined List|Joined List]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2003 || [[#Real String|Real String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2000 || [[#Time String|Time String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1891 || [[#Dot Product|Dot Product]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1885 || [[#Gradient Color|Gradient Color]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1882 || [[#Vector X|Vector X]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1882 || [[#Vector Y|Vector Y]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1881 || [[#Vector Length|Vector Length]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1880 || [[#Vector Angle|Vector Angle]]&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)''' || 1839 || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1694 || [[#BLine Width|BLine Width]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1690 || [[#Random|Random]] (for bools)&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>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Convert&amp;diff=8623</id>
		<title>Convert</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Convert&amp;diff=8623"/>
				<updated>2009-05-03T15:58:41Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Add boolean and power convertion types.&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;
=== And ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;AND&amp;quot; adds two sub-parameters:&lt;br /&gt;
* bool &amp;quot;Link1&amp;quot;&lt;br /&gt;
* bool &amp;quot;Link2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is true only if both Link1 and Link2 are true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Angle String ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#String|string]]-valued parameter to &amp;quot;Angle String&amp;quot; adds four sub-parameters:&lt;br /&gt;
* angle &amp;quot;Angle&amp;quot;&lt;br /&gt;
* integer &amp;quot;Width&amp;quot;&lt;br /&gt;
* integer &amp;quot;Precision&amp;quot;&lt;br /&gt;
* bool &amp;quot;Zero Padded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value a string containing the value of &amp;quot;Angle&amp;quot; (in degrees) formatted as a string with a minimum width &amp;quot;Width&amp;quot;, with &amp;quot;Precision&amp;quot; decimal places.  If &amp;quot;Zero Padded&amp;quot; is true, it will be left-padded with &amp;quot;0&amp;quot; characters.&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]], [[Convert#Real|real]] (since SVN r1862), or [[Convert#Vector|vector]] parameter to &amp;quot;BLine Tangent&amp;quot; adds six 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;
* angle &amp;quot;Offset&amp;quot; (since SVN r1863)&lt;br /&gt;
* real &amp;quot;Scale&amp;quot; (since SVN r1863)&lt;br /&gt;
* bool &amp;quot;Fixed Length&amp;quot; (since SVN r1863)&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, optionally rotated and scaled according to the &amp;quot;Offset&amp;quot;, &amp;quot;Scale&amp;quot;, and &amp;quot;Fixed Length&amp;quot; parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Offset&amp;quot; is an angle used to give the tangent an extra rotation before returning it.  If &amp;quot;Fixed Length&amp;quot; is true, the tangent is then scaled to have a length equal to &amp;quot;Scale&amp;quot;.  Otherwise the tangent is multiplied by &amp;quot;Scale&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If a vector was converted the result is the tangent itself.  If an angle was converted, the result is the angle of the tangent to the horizontal, and if a real was converted, the result is the length of the tangent.&lt;br /&gt;
&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;
* real &amp;quot;Scale&amp;quot; (since SVN r1872)&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, multiplied by the &amp;quot;Scale&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
=== Compare ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;OR&amp;quot; adds five sub-parameters:&lt;br /&gt;
* real &amp;quot;LHS&amp;quot;&lt;br /&gt;
* real &amp;quot;RHS&amp;quot;&lt;br /&gt;
* bool &amp;quot;Greater than&amp;quot;&lt;br /&gt;
* bool &amp;quot;Equal to&amp;quot;&lt;br /&gt;
* bool &amp;quot;Less than&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The valuenode compares LHS and RHS. The three boolean values determine which comparison returns true. For example, if LHS&amp;gt;RHS and &amp;quot;greater than&amp;quot; is checked, the valuenode will evaluate to &amp;quot;true&amp;quot;.&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;
=== Dot Product ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] or [[Convert#Angle|angle]] parameter to a &amp;quot;Dot Product&amp;quot; adds two sub-parameters:&lt;br /&gt;
* vector &amp;quot;LHS&amp;quot;&lt;br /&gt;
* vector &amp;quot;RHS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If the converted value is an angle, the return value is the angle between the two vectors:&lt;br /&gt;
&lt;br /&gt;
 return = acos((LHS · RHS) / (|LHS| * |RHS|))&lt;br /&gt;
&lt;br /&gt;
If the converted value is a real, the result value is the dot product of the two vectors:&lt;br /&gt;
&lt;br /&gt;
 return = LHS · RHS = |LHS| * |RHS| * cos(alpha)&lt;br /&gt;
&lt;br /&gt;
(where alpha is the angle between LHS and RHS).&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 Color ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Color|color]] parameter to &amp;quot;Gradient Color&amp;quot; adds two sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* gradient &amp;quot;Gradient&amp;quot;&lt;br /&gt;
* real &amp;quot;Index&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is a color taken from the gradient at the given index position.  Index 0 corresponds to the left of the gradient; index 1 corresponds to the right of the gradient.&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;
=== Int String ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#String|string]]-valued parameter to &amp;quot;Int String&amp;quot; adds three sub-parameters:&lt;br /&gt;
* integer &amp;quot;Int&amp;quot;&lt;br /&gt;
* integer &amp;quot;Width&amp;quot;&lt;br /&gt;
* bool &amp;quot;Zero Padded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value a string containing &amp;quot;Int&amp;quot; formatted as a string with a minimum width &amp;quot;Width&amp;quot;.  If &amp;quot;Zero Padded&amp;quot; is true, it will be left-padded with &amp;quot;0&amp;quot; characters.&lt;br /&gt;
&lt;br /&gt;
=== Joined List ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#String|string]] parameter to be 'Joined List' adds four sub-parameters:&lt;br /&gt;
* list &amp;quot;Strings&amp;quot;&lt;br /&gt;
* string &amp;quot;Before&amp;quot;&lt;br /&gt;
* string &amp;quot;Separator&amp;quot;&lt;br /&gt;
* string &amp;quot;After&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The result is a string containing the value of &amp;quot;Before&amp;quot;, followed by all the strings in the &amp;quot;Strings&amp;quot; list, with the value of &amp;quot;Separator&amp;quot; between each pair, followed by the value of &amp;quot;After&amp;quot;.&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;
=== Logarithm ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]]-valued parameter to &amp;quot;Logarithm&amp;quot; adds three sub-parameters:&lt;br /&gt;
&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;
&lt;br /&gt;
  Log(Link) (if Link &amp;gt;= Epsilon)&lt;br /&gt;
  -Infinite (if Link &amp;lt; Epsilon)&lt;br /&gt;
&lt;br /&gt;
The epsilon and infinite parameters are only needed to prevent logarithm of negative or zero numbers. For regular operation the resulting value is simply the natural logarithm of Link. In fact a logarithm of a negative number cannot be calculated in the space of Real numbers. This convert type returns -Infinite for simplicity.&lt;br /&gt;
&lt;br /&gt;
=== Not ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;NOT&amp;quot; adds one sub-parameter:&lt;br /&gt;
* bool &amp;quot;Link&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the opposite of Link.&lt;br /&gt;
&lt;br /&gt;
=== Or ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Bool|bool]] parameter to &amp;quot;OR&amp;quot; adds two sub-parameters:&lt;br /&gt;
* bool &amp;quot;Link1&amp;quot;&lt;br /&gt;
* bool &amp;quot;Link2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is true if either link1, link2, or both are true.&lt;br /&gt;
&lt;br /&gt;
=== Power ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]]-valued parameter to &amp;quot;Power&amp;quot; adds three sub-parameters:&lt;br /&gt;
* real &amp;quot;Base&amp;quot;&lt;br /&gt;
* real &amp;quot;Power&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 Base^Power if the operation is defined.&lt;br /&gt;
The undefined cases will also return a value (to avoid errors):&lt;br /&gt;
   0^0 = 1&lt;br /&gt;
   0^-x = +/- infinite&lt;br /&gt;
   If a negative base is raised to a noninteger power, the power is rounded (typecast) to an integer&lt;br /&gt;
&lt;br /&gt;
The epsilon and infinite parameters are only needed to prevent division by zero.&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;
&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;
* real &amp;quot;Loop Time&amp;quot; (since SVN r2315)&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;
* &amp;quot;Loop Time&amp;quot; (added in SVN r2315) makes the random value repeat after the given time.  The value ends up the same at the given time as at time=0 so it's possible to make random looping animations without a nasty jump when the time wraps back to zero.&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;
=== Real String ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#String|string]] parameter to &amp;quot;Real String&amp;quot; adds four sub-parameters:&lt;br /&gt;
&lt;br /&gt;
* real &amp;quot;Real&amp;quot;&lt;br /&gt;
* int &amp;quot;Width&amp;quot;&lt;br /&gt;
* int &amp;quot;Precision&amp;quot;&lt;br /&gt;
* bool &amp;quot;Zero Padded&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The result is a string formatted to contain the given value &amp;quot;Real&amp;quot;.  &amp;quot;Width&amp;quot; specifies the minimum field width, &amp;quot;Precision&amp;quot; specifies the number of decimal places and &amp;quot;Zero Padded&amp;quot; specifies whether to pad with zeros on the left hand side.&lt;br /&gt;
&lt;br /&gt;
For example, with Real=3.1415, Width=6, Precision=2, and ZeroPadded=true, we get:&lt;br /&gt;
  &amp;quot;003.14&amp;quot;&lt;br /&gt;
(6 characters long, 2 decimal places, and padded with zeros on the left).&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;
=== Time String ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#String|string]] parameter to &amp;quot;Time String&amp;quot; adds one sub-parameter called &amp;quot;Time&amp;quot;, of type time:&lt;br /&gt;
&lt;br /&gt;
* time &amp;quot;Time&amp;quot; &lt;br /&gt;
&lt;br /&gt;
The result is a string containing the given time.&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.&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;
=== Vector Angle ===&lt;br /&gt;
&lt;br /&gt;
Converting an [[Convert#Angle|angle]] to &amp;quot;Vector Angle&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the angle between the vector and the X axis.&lt;br /&gt;
&lt;br /&gt;
=== Vector Length ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] to &amp;quot;Vector Length&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the length of the vector.&lt;br /&gt;
&lt;br /&gt;
=== Vector X ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] to &amp;quot;Vector X&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the X component of the vector.&lt;br /&gt;
&lt;br /&gt;
=== Vector Y ===&lt;br /&gt;
&lt;br /&gt;
Converting a [[Convert#Real|real]] to &amp;quot;Vector Y&amp;quot; adds a vector sub-parameter:&lt;br /&gt;
* vector &amp;quot;Vector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The resulting value is the Y component of the vector.&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;
[[Image:angle_icon.png|32px]]&lt;br /&gt;
&lt;br /&gt;
* Angle parameters can be converted to [[Convert#Add|Add]], [[Convert#aTan2|aTan2]], [[Convert#BLine Tangent|BLine Tangent]], [[Convert#Dot Product|Dot Product]], [[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]], [[Convert#Vector Angle|Vector Angle]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== BLinePoint ===&lt;br /&gt;
[[Image:blinepoint_icon.png|32px]]&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;
[[Image:bool_icon.png|32px]]&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;
[[Image:canvas_pointer_icon.png|32px]]&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;
[[Image:color_icon.png|32px]]&lt;br /&gt;
* Color parameters can be converted to [[Convert#Add|Add]], [[Convert#Composite|Composite]], [[Convert#Gradient Color|Gradient Color]], [[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;
[[Image:gradient_icon.png|32px]]&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;
[[Image:Integer_icon.png|32px]]&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;
[[Image:list_icon.png|32px]]&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;
[[Image:real_icon.png|32px]]&lt;br /&gt;
* Real parameters can be converted to [[Convert#Add|Add]], [[Convert#BLine Width|BLine Width]], [[Convert#Cos|Cos]], [[Convert#Dot Product|Dot Product]], [[Convert#Exponential|Exponential]], [[Convert#Linear|Linear]], [[Convert#Logarithm|Logarithm]], [[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]], [[Convert#Vector Length|Vector Length]], [[Convert#Vector X|Vector X]], [[Convert#Vector Y|Vector Y]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Segment ===&lt;br /&gt;
[[Image:segment_icon.png|32px]]&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;
[[Image:string_icon.png|32px]]&lt;br /&gt;
* String parameters can be converted to the [[Convert#Angle String|Angle String]], [[Convert#Int String|Int String]], [[Convert#Joined List|Joined List]], [[Convert#Real String|Real String]], [[Convert#Switch|Switch]], [[Convert#Time Loop|Time Loop]], [[Convert#Time String|Time String]], and [[Convert#Reference|Reference]] types.&lt;br /&gt;
&lt;br /&gt;
=== Time ===&lt;br /&gt;
[[Image:time_icon.png|32px]]&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;
[[Image:vector_icon.png|32px]]&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.09)''' || not yet released || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2034 || [[#Logarithm|Logarithm]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2010 || [[#Int String|Int String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2010 || [[#Angle String|Angle String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2007 || [[#Joined List|Joined List]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2003 || [[#Real String|Real String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 2000 || [[#Time String|Time String]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1891 || [[#Dot Product|Dot Product]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1885 || [[#Gradient Color|Gradient Color]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1882 || [[#Vector X|Vector X]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1882 || [[#Vector Y|Vector Y]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1881 || [[#Vector Length|Vector Length]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1880 || [[#Vector Angle|Vector Angle]]&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)''' || 1839 || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1694 || [[#BLine Width|BLine Width]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || 1690 || [[#Random|Random]] (for bools)&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>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8572</id>
		<title>Doc:Slideshow Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8572"/>
				<updated>2009-03-13T22:58:19Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Synfig, there are many ways to create a slideshow from a series of images. Probably the simplest is using the [[ListImporter|List Importer]] to import a series of images. However, the method only works on raster images and is incapable of generating transitions. The technique described here is only slightly more complex, but it allows creating a presentation from a series of Synfig layers, regardless of type of size. The method can only produce cross-fade transitions; anything more complex would require a more advanced technique.&lt;br /&gt;
&lt;br /&gt;
==Technical Description==&lt;br /&gt;
&lt;br /&gt;
Synfig animates with a series of layers, each of which exists throughout the entire timeline. Hence, our goal is to make only one of the layers visible at any given time. Though there are many ways to achieve this goal, this tutorial will assure that only one layer is seen by using the [[Blend_Method_Parameter|Blend]] and [[Amount_Parameter|Amount]] parameters of each layer.&lt;br /&gt;
&lt;br /&gt;
All graphical layers in Synfig have these two essential properties. The [[Blend_Method_Parameter|Blend Mode]] defines how the image should be layered on everything below it, and the Amount dictates to what extent the blending is done. In the default blend mode, [[Blend_Method_Parameter#Composite|Composite]], objects are simply placed on top of everything below them. In this case, the Amount value determines the overall transparency of the layer: at a value of 1.0, the layer is fully visible; at 0.0, it is entirely transparent. In-between values constitute partial transparency, which will form the transitions. These properties can be used to display a series of pictures. Each is its own layer and at any given point in time, one layer's amount is set to 1.0 while all others equal 0. However, there is a more efficient way of accomplishing the task. This method requires switching all images to the [[Blend_Method_Parameter#Straight|Straight]] blend mode.&lt;br /&gt;
&lt;br /&gt;
This blend mode has an advantage: all layers below the current one are hidden. Therefore it is no longer necessary for layers below the current one to have a an Amount of 0. Using the Amount for crossfade still works, but it now needs to be changed only once: all layers start with a value of 1, and then be made transparent from the highest to the lowest.&lt;br /&gt;
&lt;br /&gt;
The effect could be animated with two waypoints per layer. However, Synfig offers an even simpler method that does not require using the animation mode. Instead, linking functionality can be used. The data type for Amount is currently set to be a real number. Instead, let's replace that with a special function by converting the layer to [[Convert#Timed_Swap|Timed Swap]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount4.png]]&lt;br /&gt;
&lt;br /&gt;
Now we examine the parameters of this new data type. The first is the initial value (1.0), the second is the final value (0.0), and the third is the time when the values will switch. If we want the image to display for two seconds, we can set the Swap Time to &amp;quot;2s&amp;quot;. (Note: this assumes we are starting at 0s). Then the amount will be 1.0 for three seconds (image visible) and 0 for the remainder of the timeline (image hidden). The last value will be the duration of the crossfade transition. Note that the transition takes away from the time for which the image will be displayed. For example, a value of &amp;quot;1s&amp;quot; means that the image will be fully opaque for one second, fade in one second, and then remain faded for the remainder of the animation.&lt;br /&gt;
&lt;br /&gt;
Applying successive times to layers from the top down will fade them one by one, creating the desired slideshow effect.&lt;br /&gt;
&lt;br /&gt;
==Step-by-Step Instructions==&lt;br /&gt;
Here are step-by-step instructions for applying this principle to an animation.&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
Open a Synfig document and import any images, canvases, etc. Images can be imported using &amp;gt;File&amp;gt;Import (The first &amp;quot;&amp;gt;&amp;quot; signifies the [[Canvas_Menu_Caret|Caret Menu]]). Note that importing ''links'' to the image using a ''relative'' path. Take care to maintain the relative positions of the files when moving them. If multiple layers represent a single image, encapsulate them into an [[Inline Canvas]].&lt;br /&gt;
Then arrange the images in the order they will be displayed, first image on top.&lt;br /&gt;
&lt;br /&gt;
===Blend Method===&lt;br /&gt;
Select all layers in the layer panel. Then go to the parameters panel and set the Blend Method to Straight.&lt;br /&gt;
[[Image:Slideshow_blend1.png]][[Image:Slideshow_blend2.png]]&lt;br /&gt;
&lt;br /&gt;
===Timed Swap===&lt;br /&gt;
Unlike Blend Mode, converting to [[Convert#Timed_Swap|Timed Swap]] must be done individually for each layer.&lt;br /&gt;
Set &amp;quot;Before&amp;quot; to 1.0 and &amp;quot;After&amp;quot; to 0.&lt;br /&gt;
Suppose you want the images to swap every 4 seconds, using 1 second transitions. Then set the &amp;quot;Duration&amp;quot; to &amp;quot;1s&amp;quot;. Afterwards, set Time for the first layer to 4+1=5. Then increase the time for each successive layer (5,10,15,20,...). The Swap Time is the point where the image fully disappears. Configure these values to fit your needs.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount1.png]] [[Image:Slideshow_amount2.png]]&lt;br /&gt;
[[Image:Slideshow_amount3.png]] [[Image:Slideshow_amount4.png]]&lt;br /&gt;
&lt;br /&gt;
===Animation Length===&lt;br /&gt;
Now that times have been configured, your file must be configured to render the full animation length. Go to &amp;gt;Edit&amp;gt;Properties and switch to the &amp;quot;Time&amp;quot; tab. Set the end time to equal the last of your time values. You can add a few seconds if you want a blank/black screen at the end, after the images have faded.&lt;br /&gt;
&lt;br /&gt;
===Extra: Background===&lt;br /&gt;
You may have noticed that the Straight Blend Mode removes any backgrounds from the image. Here are two methods to add a background:&lt;br /&gt;
&lt;br /&gt;
a) Encapsulate all image layers. Now the Straight blend mode only works within the inline canvas. Once this is done, add any backgrounds below the canvas, and any foreground above the canvas.&lt;br /&gt;
&lt;br /&gt;
b) Add a background layer/canvas to the ''top'' of the layer list. Since it is above all other layers, the Straight layering mode doesn't affect it. However, it would normally shroud all the images. To make it appear below everything else, set the Blend Mode to [[Blend_Method_Parameter#Behind|Behind]].&lt;br /&gt;
&lt;br /&gt;
==Endnotes==&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have now finished reading the slideshow tutorial. Please leave me (nikitakit) a comment about your thoughts concerning this page.&lt;br /&gt;
&lt;br /&gt;
GNU/Linux users may also be interested in [http://akhilman.googlepages.com/images2sif.sh AkhIL's imag2sif shell script]. It imports  images into Synfig and creates a rotate and translate layer for each.&lt;br /&gt;
&lt;br /&gt;
The explanation of the &amp;quot;Straight&amp;quot; blend mode in this tutorial lacks a screenshot. Feel free to add one.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Tutorials&amp;diff=8571</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Tutorials&amp;diff=8571"/>
				<updated>2009-03-13T22:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Categories--&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Permalink]]&lt;br /&gt;
&lt;br /&gt;
This is an index of all of the tutorials for Synfig Studio.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;80%&amp;quot;&lt;br /&gt;
|'''Tutorial Name'''||'''Description''' || '''Level'''&lt;br /&gt;
|-&lt;br /&gt;
| [[Getting Started]] [[http://synfig.org/files/voria/synfig_tutorial.pdf PDF]] || New to Synfig Studio? This tutorial will help you get the gist of things || Basic&lt;br /&gt;
|-&lt;br /&gt;
| [[Animation Basics]] || Introduction to making things move, the timeline, and the [[Keyframes Panel|Keyframes Panel]]. || Basic&lt;br /&gt;
|-&lt;br /&gt;
| [[Adding Layers]] || Introduction to the Layers palette, and basics of compositing. || Basic&lt;br /&gt;
|-&lt;br /&gt;
| [[Creating Shapes]] || Introduction to making shapes using the bline and normal tools. || Basic&lt;br /&gt;
|-&lt;br /&gt;
| [[How do I|How do I...?]] || Quick tutorials, and commonly-needed tasks. || Basic&lt;br /&gt;
|-&lt;br /&gt;
| [[Slideshow Tutorial]] || Make a slideshow out of a series of images or other Synfig layers. || Intermediate&lt;br /&gt;
|-&lt;br /&gt;
| [[Flower Animation]] || A beginner tutorial, showing animation with blines. It could be a good tutorial to follow, after the Animations Basics one. || Intermediate&lt;br /&gt;
|-&lt;br /&gt;
| [[Snowflake with the Duplicate Layer]] || A tutorial explaining how to use the Duplicate Layer to easily duplicate objects. || Intermediate&lt;br /&gt;
|-&lt;br /&gt;
| [[Shiny Effects]] #1 || A tutorial of making some shiny effects. || Intermediate&lt;br /&gt;
|-&lt;br /&gt;
| [[Building a magnifying glass]] [[http://www.musikboden.se/synfigfiles/tutorial_magnifying_glass.pdf PDF]] || A tutorial showing how to build a magnifying glass. || Intermediate&lt;br /&gt;
|-&lt;br /&gt;
| [[Rescale Animations]] || A tutorial that shows how to rescale a portion of animation in start - end and speed up/down (WIP). || Intermediate.&lt;br /&gt;
|-&lt;br /&gt;
| [[Cut-out_Animation]] || A tutorial that shows how to create cut-out style animations. || Intermediate.&lt;br /&gt;
|-&lt;br /&gt;
| [[Following a BLine]] || A tutorial showing how to make a layer follow a BLine rotating to face the direction it's moving in. || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Walk Cycle]] || Tutorial showing import of multiple still frames, and rotoscoping to generate a walk cycle animation || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Reuse Animations]] || Tutorial that explains how to reuse &amp;quot;poses&amp;quot; of portions of the scene without interfere on the rest of it. || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Switching Scenes]] || Tutorial that explains how to edit a collection of .sif files together and switch back and forth between them. || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Reuse Exported ValueNodes]] || Small tutorial to show how to reuse cool conversion collections on several animations || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Sewing BLines]] || A tutorial to show how to sew the edges of the BLines (Outlines, Regions and any BLine based) to each others || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Parabolic Shot]] || A tutorial to show how to make layers follow a mathematical equation || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Particles]] || A tutorial to show how to use the particles template released by [[User:Genete|Genete]] || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Brushes]] || A tutorial to show how to create brushes using the Duplicate Layer and the Link to Bline features|| Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [http://morevnaproject.org/2008/11/27/camera-widget/ Camera view] || How to arrange camera pan/zoom of canvas and manage ValueBase Nodes of imported canvases || Advanced&lt;br /&gt;
|-&lt;br /&gt;
| [[Requested Tutorials]] || Need a tutorial? Request it here. || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Keyboard Shortcuts]]&lt;br /&gt;
* [[Mouse Shortcuts]]&lt;br /&gt;
* [[Video Tutorials]]&lt;br /&gt;
* [[Quick Overview]]&lt;br /&gt;
&lt;br /&gt;
General animation tutorial links:&lt;br /&gt;
&lt;br /&gt;
* [http://www.keithlango.com/tutorials/old/popThru/popThru.html Keith Largo Tutes]&lt;br /&gt;
* [http://www.animationarchive.org/2006/05/meta-100000-animation-drawing-course.html The Animation Drawing Course at The Animation Archive] &lt;br /&gt;
*[http://www.garycmartin.com/mouth_shapes.html Lip Sync]&lt;br /&gt;
*[http://www.channel4.com/4talent/moveit/index.html MOVE IT! Animation Tutorial]&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Requested_Tutorials&amp;diff=8570</id>
		<title>Requested Tutorials</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Requested_Tutorials&amp;diff=8570"/>
				<updated>2009-03-13T22:50:50Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial is now available&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Categories--&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== Requested Tutorials ==&lt;br /&gt;
&lt;br /&gt;
* Explanation of the difference between waypoints and keyframes. (Meanwhile someone writes this requested tutorial you can have a look to [[Keyframe | keyframes]] and [[Waypoints|waypoints]] pages).&lt;br /&gt;
* Making a ball bounce- tutorial&lt;br /&gt;
* How to rotate objects.(done in Categorical Help&amp;gt; Synfig Studio Interface&amp;gt; The ToolBox&amp;gt; Rotate Tool)&lt;br /&gt;
* Make an object to follow a path given by a mathematical function [[Parabolic Shot|Parabolic Shot]]. This is applicable to [[Ball_Bounce|ball-bounce-tutorial (unfinished)]]. &lt;br /&gt;
* How to change the location of a shape's pivot point. Or a cut-out animation tutorial. (I think I worked it out, making the rotation by rotation layers. Kinda weird, but actually it is there.)&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8569</id>
		<title>Doc:Slideshow Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8569"/>
				<updated>2009-03-13T22:47:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Finish tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Synfig, there are many ways to create a slideshow from a series of images. Probably the simplest is using the [[ListImporter|List Importer]] to import a series of images. However, the method only works on raster images and is incapable of generating transitions. The technique described here is only slightly more complex, but it allows creating a presentation from a series of Synfig layers, regardless of type of size. The method can only produce cross-fade transitions; anything more complex would require a more advanced technique.&lt;br /&gt;
&lt;br /&gt;
==Technical Description==&lt;br /&gt;
&lt;br /&gt;
Synfig animates with a seried of layers, each of which exists throughout the entire timeline. Hence, our goal is to make only one of the layers visible at any given time. Though there are many ways to achieve this goal, this tutorial will assure that only one layer is seen by using the [[Blend_Method_Parameter|Blend]] and [[Amount_Parameter|Amount]] parameters of each layer.&lt;br /&gt;
&lt;br /&gt;
All graphical layers in Synfig have these two essential properties. The [[Blend_Method_Parameter|Blend Mode]] defines how the image should be layered on everything below it, and the Amount dictates to what extent the blending is done. In the default blend mode, [[Blend_Method_Parameter#Composite|Composite]], objects are simply placed on top of everything below them. In this case, the Amount value determines the overall transparency of the layer: at a value of 1.0, the layer is fully visible; at 0.0, it is entirely transparent. In-betwen values constitute partial transparency, which will form the transitions. These properties can be used to display a series of pictures. Each is its own layer and at any given point in time, one layer's amount is set to 1.0 while all others equal 0. However, there is a more efficient way of accomplishing the task. This method requires switching all images to the [[Blend_Method_Parameter#Straight|Straight]] blend mode.&lt;br /&gt;
&lt;br /&gt;
This blend mode has an advantage: all layers below the current one are hidden. Therefore it is no longer necessary for layers below the current one to have a an Amount of 0. Using the Amount for crossfade still works, but it now needs to be changed only once: all layers start with a value of 1, and then be made transparent from the highest to the lowest.&lt;br /&gt;
&lt;br /&gt;
The effect could be animated with two waypoints per layer. However, Synfig offers an even simpler method that does not require using the animation mode. Instead, linking functionality can be used. The data type for Amount is currently set to be a real number. Instead, let's replace that with a special function by converting the layer to [[Convert#Timed_Swap|Timed Swap]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount4.png]]&lt;br /&gt;
&lt;br /&gt;
Now we examine the parameters of this new data type. The first is the initial value (1.0), the second is the final value (0.0), and the third is the time when the values will switch. If we want the image to display for two seconds, we can set the Swap Time to &amp;quot;2s&amp;quot;. (Note: this assumes we are starting at 0s). Then the amount will be 1.0 for three seconds (image visible) and 0 for the remainer of the timeline (image hidden). The last value will be the duration of the crossfade transition. Note that the transition takes away from the time for which the image will be displayed. For example, a value of &amp;quot;1s&amp;quot; means that the image will be fully opaque for one second, fade in one second, and then remain faded for the remainder of the animation.&lt;br /&gt;
&lt;br /&gt;
Applying successive times to layers from the top down will fade them one by one, creating the desired slideshow effect.&lt;br /&gt;
&lt;br /&gt;
==Step-by-Step Instructions==&lt;br /&gt;
Here are step-by-step instructions for applying this principle to an animation.&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
Open a Synfig document and import any images, canvases, etc. Images can be imported using &amp;gt;File&amp;gt;Import (The first &amp;quot;&amp;gt;&amp;quot; signifies the [[Canvas_Menu_Caret|Caret Menu]]). Note that importing ''links'' to the image using a ''relative'' path. Take care to maintain the relative positions of the files when moving them. If multiple layers represent a single image, encapsulate them into an [[Inline Canvas]].&lt;br /&gt;
Then arrange the images in the order they will be displayed, first image on top.&lt;br /&gt;
&lt;br /&gt;
===Blend Method===&lt;br /&gt;
Select all layers in the layer panel. Then go to the parameters panel and set the Blend Method to Straight.&lt;br /&gt;
[[Image:Slideshow_blend1.png]][[Image:Slideshow_blend2.png]]&lt;br /&gt;
&lt;br /&gt;
===Timed Swap===&lt;br /&gt;
Unlike Blend Mode, converting to [[Convert#Timed_Swap|Timed Swap]] must be done individually for each layer.&lt;br /&gt;
Set &amp;quot;Before&amp;quot; to 1.0 and &amp;quot;After&amp;quot; to 0.&lt;br /&gt;
Suppose you want the images to swap every 4 seconds, using 1 second transitions. Then set the &amp;quot;Duration&amp;quot; to &amp;quot;1s&amp;quot;. Afterwards, set Time for the first layer to 4+1=5. Then increase the time for each successive layer (5,10,15,20,...). The Swap Time is the point where the image fully disappears. Configure these values to fit your needs.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount1.png]] [[Image:Slideshow_amount2.png]]&lt;br /&gt;
[[Image:Slideshow_amount3.png]] [[Image:Slideshow_amount4.png]]&lt;br /&gt;
&lt;br /&gt;
===Animation Length===&lt;br /&gt;
Now that times have been configured, your file must be configured to render the full animation length. Go to &amp;gt;Edit&amp;gt;Properties and switch to the &amp;quot;Time&amp;quot; tab. Set the end time to equal the last of your time values. You can add a few seconds if you want a blank/black screen at the end, after the images have faded.&lt;br /&gt;
&lt;br /&gt;
===Extra: Background===&lt;br /&gt;
You may have noticed that the Straight Blend Mode removes any backgrounds from the image. Here are two methods to add a background:&lt;br /&gt;
&lt;br /&gt;
a) Encapsulate all image layers. Now the Straight blend mode only works within the inline canvas. Once this is done, add any backgrounds below the canvas, and any foreground above the canvas.&lt;br /&gt;
&lt;br /&gt;
b) Add a background layer/canvas to the ''top'' of the layer list. Since it is above all other layers, the Straight layering mode doesn't affect it. However, it would normally shroud all the images. To make it appear below everything else, set the Blend Mode to [[Blend_Method_Parameter#Behind|Behind]].&lt;br /&gt;
&lt;br /&gt;
==Endnotes==&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have now finished reading the slideshow tutorial. Please leave me (nikitakit) a comment about your thoughts concerning this page.&lt;br /&gt;
&lt;br /&gt;
GNU/Linux users may also be interested in [http://akhilman.googlepages.com/images2sif.sh AkhIL's imag2sif shell script]. It imports  images into Synfig and creates a rotate and translate layer for each.&lt;br /&gt;
&lt;br /&gt;
The explanation of the &amp;quot;Straight&amp;quot; blend mode in this tutorial lacks a screenshot. Feel free to add one.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8568</id>
		<title>Doc:Slideshow Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8568"/>
				<updated>2009-03-13T22:37:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Text to match screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: this tutorial is a work in progress. If you have any questions, contact nikitakit.&lt;br /&gt;
&lt;br /&gt;
In Synfig, there are many ways to create a slideshow from a series of images. Probably the simplest is using the [[ListImporter|List Importer]] to import a series of images. However, the method only works on images [of the same size (?)] and is incapable of generating transitions. The technique described here is only slightly more complex, but it allows creating a presentation from a series of Synfig layers, regardless of type of size. The method can only produce cross-fade transitions; anything more complex would require a more advanced technique.&lt;br /&gt;
&lt;br /&gt;
==Technical Description==&lt;br /&gt;
&lt;br /&gt;
Synfig animates with a seried of layers, each of which exists throughout the entire timeline. Hence, our goal is to make only one of the layers visible at any given time. Though there are many ways to achieve this goal, this tutorial will assure that only one layer is seen by using the [[Blend_Method_Parameter|Blend]] and [[Amount_Parameter|Amount]] parameters of each layer.&lt;br /&gt;
&lt;br /&gt;
All graphical layers in Synfig have these two essential properties. The [[Blend_Method_Parameter|Blend Mode]] defines how the image should be layered on everything below it, and the Amount dictates to what extent the blending is done. In the default blend mode, [[Blend_Method_Parameter#Composite|Composite]], objects are simply placed on top of everything below them. In this case, the Amount value determines the overall transparency of the layer: at a value of 1.0, the layer is fully visible; at 0.0, it is entirely transparent. In-betwen values constitute partial transparency, which will form the transitions. These properties can be used to display a series of pictures. Each is its own layer and at any given point in time, one layer's amount is set to 1.0 while all others equal 0. However, there is a more efficient way of accomplishing the task. This method requires switching all images to the [[Blend_Method_Parameter#Straight|Straight]] blend mode.&lt;br /&gt;
&lt;br /&gt;
[Examine the picture that has not yet been added...]&lt;br /&gt;
&lt;br /&gt;
[As you can see,] this blend mode has an advantage: all layers below the current one are hidden. Therefore it is no longer necessary for layers below the current one to havea an Amount of 0. Using the Amount for crossfade still works, but it now needs to be changed only once: all layers start with a value of 1, and then be made transparent from the highest to the lowest.&lt;br /&gt;
&lt;br /&gt;
The effect could be animated with two waypoints per layer. However, Synfig offers an even simpler method that does not require using the animation mode. Instead, linking functionality can be used. The data type for Amount is currently set to be a real number. Instead, let's replace that with a special function by converting the layer to [[Convert#Timed_Swap|Timed Swap]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount4.png]]&lt;br /&gt;
&lt;br /&gt;
Now we examine the parameters of this new data type. The first is the initial value (1.0), the second is the final value (0.0), and the third is the time when the values will switch. If we want the image to display for two seconds, we can set the Swap Time to &amp;quot;2s&amp;quot;. (Note: this assumes we are starting at 0s). Then the amount will be 1.0 for three seconds (image visible) and 0 for the remainer of the timeline (image hidden). The last value will be the duration of the crossfade transition. Note that the transition takes away from the time for which the image will be displayed. For example, a value of &amp;quot;1s&amp;quot; means that the image will be fully opaque for one second, fade in one second, and then remain faded for the remainder of the animation.&lt;br /&gt;
&lt;br /&gt;
Applying successive times to layers from the top down will fade them one by one, creating the desired slideshow effect.&lt;br /&gt;
&lt;br /&gt;
==Step-by-Step Instructions==&lt;br /&gt;
Here are step-by-step instructions for applying this principle to an animation.&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
Open a Synfig document and import any images, canvases, etc. Images can be imported using &amp;gt;File&amp;gt;Import (The first &amp;quot;&amp;gt;&amp;quot; signifies the [[Canvas_Menu_Caret|Caret Menu]]). Note that importing ''links'' to the image using a ''relative'' path. Take care to maintain the relative positions of the files when moving them. If multiple layers represent a single image, encapsulate them into an [[Inline Canvas]].&lt;br /&gt;
Then arrange the images in the order they will be displayed, first image on top.&lt;br /&gt;
&lt;br /&gt;
===Blend Method===&lt;br /&gt;
Select all layers in the layer panel. Then go to the parameters panel and set the Blend Method to Straight.&lt;br /&gt;
[[Image:Slideshow_blend1.png]][[Image:Slideshow_blend2.png]]&lt;br /&gt;
&lt;br /&gt;
===Timed Swap===&lt;br /&gt;
Unlike Blend Mode, converting to [[Convert#Timed_Swap|Timed Swap]] must be done individually for each layer.&lt;br /&gt;
Set &amp;quot;Before&amp;quot; to 1.0 and &amp;quot;After&amp;quot; to 0.&lt;br /&gt;
Suppose you want the images to swap every 4 seconds, using 1 second transitions. Then set the &amp;quot;Duration&amp;quot; to &amp;quot;1s&amp;quot;. Afterwards, set Time for the first layer to 4+1=5. Then increase the time for each successive layer (5,10,15,20,...). The Swap Time is the point where the image fully disappears. Configure these values to fit your needs.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount1.png]] [[Image:Slideshow_amount2.png]]&lt;br /&gt;
[[Image:Slideshow_amount3.png]] [[Image:Slideshow_amount4.png]]&lt;br /&gt;
&lt;br /&gt;
===Animation Length===&lt;br /&gt;
Now that times have been configured, your file must be configured to render the full animation length. Go to &amp;gt;Edit&amp;gt;Properties and switch to the &amp;quot;Time&amp;quot; tab. Set the end time to equal the last of your time values. You can add a few seconds if you want a blank/black screen at the end, after the images have faded.&lt;br /&gt;
&lt;br /&gt;
===Extra: Background===&lt;br /&gt;
You may have noticed that the Straight Blend Mode removes any backgrounds from the image. Here are two methods to add a background:&lt;br /&gt;
&lt;br /&gt;
a) Encapsulate all image layers. Now the Straight blend mode only works within the inline canvas. Once this is done, add any backgrounds below the canvas, and any foreground above the canvas.&lt;br /&gt;
&lt;br /&gt;
b) Add a background layer/canvas to the ''top'' of the layer list. Since it is above all other layers, the Straight layering mode doesn't affect it. However, it would normally shroud all the images. To make it aappear below everything else, set the Blend Mode to [[Blend_Method_Parameter#Behind|Behind]].&lt;br /&gt;
&lt;br /&gt;
==Endnotes==&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have now finished reading the slideshow tutorial. Please leave me (nikitakit) a comment about your thoughts concerning this page.&lt;br /&gt;
&lt;br /&gt;
GNU/Linux users may also be interested in [http://akhilman.googlepages.com/images2sif.sh AkhIL's imag2sif shell script]. It imports  images into Synfig and creates a rotate and translate layer for each.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Slideshow_amount4.png&amp;diff=8567</id>
		<title>File:Slideshow amount4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Slideshow_amount4.png&amp;diff=8567"/>
				<updated>2009-03-13T22:36:37Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial: The &amp;quot;After&amp;quot; Parameter is set to 0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slideshow Tutorial: The &amp;quot;After&amp;quot; Parameter is set to 0&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Slideshow_amount3.png&amp;diff=8566</id>
		<title>File:Slideshow amount3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Slideshow_amount3.png&amp;diff=8566"/>
				<updated>2009-03-13T22:36:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial: &amp;quot;Amount&amp;quot; has now been converted to &amp;quot;Timed Swap&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slideshow Tutorial: &amp;quot;Amount&amp;quot; has now been converted to &amp;quot;Timed Swap&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Slideshow_amount2.png&amp;diff=8565</id>
		<title>File:Slideshow amount2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Slideshow_amount2.png&amp;diff=8565"/>
				<updated>2009-03-13T22:35:36Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial: Converting &amp;quot;Amount&amp;quot; to &amp;quot;Timed Swap&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slideshow Tutorial: Converting &amp;quot;Amount&amp;quot; to &amp;quot;Timed Swap&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Slideshow_amount1.png&amp;diff=8564</id>
		<title>File:Slideshow amount1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Slideshow_amount1.png&amp;diff=8564"/>
				<updated>2009-03-13T22:35:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial: The &amp;quot;Amount&amp;quot; Parameter is selected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slideshow Tutorial: The &amp;quot;Amount&amp;quot; Parameter is selected&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Slideshow_blend2.png&amp;diff=8563</id>
		<title>File:Slideshow blend2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Slideshow_blend2.png&amp;diff=8563"/>
				<updated>2009-03-13T22:34:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial:Changing the Blend Method to &amp;quot;Straight&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slideshow Tutorial:Changing the Blend Method to &amp;quot;Straight&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:Slideshow_blend1.png&amp;diff=8562</id>
		<title>File:Slideshow blend1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:Slideshow_blend1.png&amp;diff=8562"/>
				<updated>2009-03-13T22:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Slideshow Tutorial: The Blend Method is &amp;quot;Composite&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slideshow Tutorial: The Blend Method is &amp;quot;Composite&amp;quot;&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8561</id>
		<title>Doc:Slideshow Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8561"/>
				<updated>2009-03-13T22:32:57Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: this tutorial is a work in progress. If you have any questions, contact nikitakit.&lt;br /&gt;
&lt;br /&gt;
In Synfig, there are many ways to create a slideshow from a series of images. Probably the simplest is using the [[ListImporter|List Importer]] to import a series of images. However, the method only works on images [of the same size (?)] and is incapable of generating transitions. The technique described here is only slightly more complex, but it allows creating a presentation from a series of Synfig layers, regardless of type of size. The method can only produce cross-fade transitions; anything more complex would require a more advanced technique.&lt;br /&gt;
&lt;br /&gt;
==Technical Description==&lt;br /&gt;
&lt;br /&gt;
Synfig animates with a seried of layers, each of which exists throughout the entire timeline. Hence, our goal is to make only one of the layers visible at any given time. Though there are many ways to achieve this goal, this tutorial will assure that only one layer is seen by using the [[Blend_Method_Parameter|Blend]] and [[Amount_Parameter|Amount]] parameters of each layer.&lt;br /&gt;
&lt;br /&gt;
All graphical layers in Synfig have these two essential properties. The [[Blend_Method_Parameter|Blend Mode]] defines how the image should be layered on everything below it, and the Amount dictates to what extent the blending is done. In the default blend mode, [[Blend_Method_Parameter#Composite|Composite]], objects are simply placed on top of everything below them. In this case, the Amount value determines the overall transparency of the layer: at a value of 1.0, the layer is fully visible; at 0.0, it is entirely transparent. In-betwen values constitute partial transparency, which will form the transitions. These properties can be used to display a series of pictures. Each is its own layer and at any given point in time, one layer's amount is set to 1.0 while all others equal 0. However, there is a more efficient way of accomplishing the task. This method requires switching all images to the [[Blend_Method_Parameter#Straight|Straight]] blend mode.&lt;br /&gt;
&lt;br /&gt;
[Examine the picture that has not yet been added...]&lt;br /&gt;
&lt;br /&gt;
[As you can see,] this blend mode has an advantage: all layers below the current one are hidden. Therefore it is no longer necessary for layers below the current one to havea an Amount of 0. Using the Amount for crossfade still works, but it now needs to be changed only once: all layers start with a value of 1, and then be made transparent from the highest to the lowest.&lt;br /&gt;
&lt;br /&gt;
The effect could be animated with two waypoints per layer. However, Synfig offers an even simpler method that does not require using the animation mode. Instead, linking functionality can be used. The data type for Amount is currently set to be a real number. Instead, let's replace that with a special function by converting the layer to [[Convert#Timed_Swap|Timed Swap]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount3.png]]&lt;br /&gt;
&lt;br /&gt;
Now we examine the parameters of this new data type. The first is the initial value (1.0), the second is the final value (0.0), and the third is the time when the values will switch. If we want the image to display for three seconds, we can set the Swap Time to &amp;quot;3s&amp;quot;. (Note: this assumes we are starting at 0s). Then the amount will be 1.0 for three seconds (image visible) and 0 for the remainer of the timeline (image hidden). The last value will be the duration of the crossfade transition. Note that the transition takes away from the time for which the image will be displayed. For example, a value of &amp;quot;1s&amp;quot; means that the image will be fully opaque for two seconds, fade in one second, and then remain faded for the remainder of the animation.&lt;br /&gt;
&lt;br /&gt;
Applying successive times to layers from the top down will fade them one by one, creating the desired slideshow effect.&lt;br /&gt;
&lt;br /&gt;
==Step-by-Step Instructions==&lt;br /&gt;
Here are step-by-step instructions for applying this principle to an animation.&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
Open a Synfig document and import any images, canvases, etc. Images can be imported using &amp;gt;File&amp;gt;Import (The first &amp;quot;&amp;gt;&amp;quot; signifies the [[Canvas_Menu_Caret|Caret Menu]]). Note that importing ''links'' to the image using a ''relative'' path. Take care to maintain the relative positions of the files when moving them. If multiple layers represent a single image, encapsulate them into an [[Inline Canvas]].&lt;br /&gt;
Then arrange the images in the order they will be displayed, first image on top.&lt;br /&gt;
&lt;br /&gt;
===Blend Method===&lt;br /&gt;
Select all layers in the layer panel. Then go to the parameters panel and set the Blend Method to Straight.&lt;br /&gt;
[[Image:Slideshow_blend1.png]][[Image:Slideshow_blend2.png]]&lt;br /&gt;
&lt;br /&gt;
===Timed Swap===&lt;br /&gt;
Unlike Blend Mode, converting to [[Convert#Timed_Swap|Timed Swap]] must be done individually for each layer.&lt;br /&gt;
Set &amp;quot;Before&amp;quot; to 1.0 and &amp;quot;After&amp;quot; to 0.&lt;br /&gt;
Suppose you want the images to swap every 4 seconds, using 1 second transitions. Then set the &amp;quot;Duration&amp;quot; to &amp;quot;1s&amp;quot;. Afterwards, set Time for the first layer to 4+1=5. Then increase the time for each successive layer (5,10,15,20,...). The Swap Time is the point where the image fully disappears. Configure these values to fit your needs.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slideshow_amount1.png]] [[Image:Slideshow_amount2.png]]&lt;br /&gt;
[[Image:Slideshow_amount3.png]] [[Image:Slideshow_amount4.png]]&lt;br /&gt;
&lt;br /&gt;
===Animation Length===&lt;br /&gt;
Now that times have been configured, your file must be configured to render the full animation length. Go to &amp;gt;Edit&amp;gt;Properties and switch to the &amp;quot;Time&amp;quot; tab. Set the end time to equal the last of your time values. You can add a few seconds if you want a blank/black screen at the end, after the images have faded.&lt;br /&gt;
&lt;br /&gt;
===Extra: Background===&lt;br /&gt;
You may have noticed that the Straight Blend Mode removes any backgrounds from the image. Here are two methods to add a background:&lt;br /&gt;
&lt;br /&gt;
a) Encapsulate all image layers. Now the Straight blend mode only works within the inline canvas. Once this is done, add any backgrounds below the canvas, and any foreground above the canvas.&lt;br /&gt;
&lt;br /&gt;
b) Add a background layer/canvas to the ''top'' of the layer list. Since it is above all other layers, the Straight layering mode doesn't affect it. However, it would normally shroud all the images. To make it aappear below everything else, set the Blend Mode to [[Blend_Method_Parameter#Behind|Behind]].&lt;br /&gt;
&lt;br /&gt;
==Endnotes==&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have now finished reading the slideshow tutorial. Please leave me (nikitakit) a comment about your thoughts concerning this page.&lt;br /&gt;
&lt;br /&gt;
GNU/Linux users may also be interested in [http://akhilman.googlepages.com/images2sif.sh AkhIL's imag2sif shell script]. It imports  images into Synfig and creates a rotate and translate layer for each.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8560</id>
		<title>Doc:Slideshow Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8560"/>
				<updated>2009-03-12T22:06:44Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Formatting, Links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: this tutorial is a work in progress. If you have any questions, contact nikitakit.&lt;br /&gt;
&lt;br /&gt;
In Synfig, there are many ways to create a slideshow from a series of images. Probably the simplest is using the [[ListImporter|List Importer]] to import a series of images. However, the method only works on images [of the same size (?)] and is incapable of generating transitions. The technique described here is only slightly more complex, but it allows creating a presentation from a series of Synfig layers, regardless of type of size. The method can only produce cross-fade transitions; anything more complex would require a more advanced technique.&lt;br /&gt;
&lt;br /&gt;
==Technical Description==&lt;br /&gt;
&lt;br /&gt;
Synfig animates with a seried of layers, each of which exists throughout the entire timeline. Hence, our goal is to make only one of the layers visible at any given time. Though there are many ways to achieve this goal, this tutorial will assure that only one layer is seen by using the [[Blend_Method_Parameter|Blend]] and [[Amount_Parameter|Amount]] parameters of each layer.&lt;br /&gt;
&lt;br /&gt;
All graphical layers in Synfig have these two essential properties. The [[Blend_Method_Parameter|Blend Mode]] defines how the image should be layered on everything below it, and the Amount dictates to what extent the blending is done. In the default blend mode, [[Blend_Method_Parameter#Composite|Composite]], objects are simply placed on top of everything below them. In this case, the Amount value determines the overall transparency of the layer: at a value of 1.0, the layer is fully visible; at 0.0, it is entirely transparent. In-betwen values constitute partial transparency, which will form the transitions. These properties can be used to display a series of pictures. Each is its own layer and at any given point in time, one layer's amount is set to 1.0 while all others equal 0. However, there is a more efficient way of accomplishing the task. This method requires switching all images to the [[Blend_Method_Parameter#Straight|Straight]] blend mode.&lt;br /&gt;
&lt;br /&gt;
[Examine the picture that has not yet been added...]&lt;br /&gt;
&lt;br /&gt;
[As you can see,] this blend mode has an advantage: all layers below the current one are hidden. Therefore it is no longer necessary for layers below the current one to havea an Amount of 0. Using the Amount for crossfade still works, but it now needs to be changed only once: all layers start with a value of 1, and then be made transparent from the highest to the lowest.&lt;br /&gt;
&lt;br /&gt;
The effect could be animated with two waypoints per layer. However, Synfig offers an even simpler method that does not require using the animation mode. Instead, linking functionality can be used. The data type for Amount is currently set to be a real number. Instead, let's replace that with a special function by converting the layer to [[Convert#Timed_Swap|Timed Swap]].&lt;br /&gt;
&lt;br /&gt;
[Screenshot]&lt;br /&gt;
&lt;br /&gt;
Now we examine the parameters of this new data type. The first is the initial value (1.0), the second is the final value (0.0), and the third is the time when the values will switch. If we want the image to display for three seconds, we can set the Swap Time to &amp;quot;3s&amp;quot;. (Note: this assumes we are starting at 0s). Then the amount will be 1.0 for three seconds (image visible) and 0 for the remainer of the timeline (image hidden). The last value will be the duration of the crossfade transition. Note that the transition takes away from the time for which the image will be displayed. For example, a value of &amp;quot;1s&amp;quot; means that the image will be fully opaque for two seconds, fade in one second, and then remain faded for the remainder of the animation.&lt;br /&gt;
&lt;br /&gt;
Applying successive times to layers from the top down will fade them one by one, creating the desired slideshow effect.&lt;br /&gt;
&lt;br /&gt;
==Step-by-Step Instructions==&lt;br /&gt;
Here are step-by-step instructions for applying this principle to an animation.&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
Open a Synfig document and import any images, canvases, etc. Images can be imported using &amp;gt;File&amp;gt;Import (The first &amp;quot;&amp;gt;&amp;quot; signifies the [[Canvas_Menu_Caret|Caret Menu]]). Note that importing ''links'' to the image using a ''relative'' path. Take care to maintain the relative positions of the files when moving them. If multiple layers represent a single image, encapsulate them into an [[Inline Canvas]].&lt;br /&gt;
Then arrange the images in the order they will be displayed, first image on top.&lt;br /&gt;
&lt;br /&gt;
===Blend Method===&lt;br /&gt;
Select all layers in the layer panel. Then go to the parameters panel and set the Blend Method to Straight.&lt;br /&gt;
&lt;br /&gt;
===Timed Swap===&lt;br /&gt;
Unlike Blend Mode, converting to [[Convert#Timed_Swap|Timed Swap]] must be done individually for each layer.&lt;br /&gt;
Set &amp;quot;Before&amp;quot; to 1.0 and &amp;quot;After&amp;quot; to 0.&lt;br /&gt;
Suppose you want the images to swap every 4 seconds, using 1 second transitions. Then set the &amp;quot;Duration&amp;quot; to &amp;quot;1s&amp;quot;. Afterwards, set Time for the first layer to 4+1=5. Then increase the time for each successive layer (5,10,15,20,...). The Swap Time is the point where the image fully disappears. Configure these values to fit your needs.&lt;br /&gt;
&lt;br /&gt;
===Animation Length===&lt;br /&gt;
Now that times have been configured, your file must be configured to render the full animation length. Go to &amp;gt;Edit&amp;gt;Properties and switch to the &amp;quot;Time&amp;quot; tab. Set the end time to equal the last of your time values. You can add a few seconds if you want a blank/black screen at the end, after the images have faded.&lt;br /&gt;
&lt;br /&gt;
===Extra: Background===&lt;br /&gt;
You may have noticed that the Straight Blend Mode removes any backgrounds from the image. Here are two methods to add a background:&lt;br /&gt;
&lt;br /&gt;
a) Encapsulate all image layers. Now the Straight blend mode only works within the inline canvas. Once this is done, add any backgrounds below the canvas, and any foreground above the canvas.&lt;br /&gt;
&lt;br /&gt;
b) Add a background layer/canvas to the ''top'' of the layer list. Since it is above all other layers, the Straight layering mode doesn't affect it. However, it would normally shroud all the images. To make it aappear below everything else, set the Blend Mode to [[Blend_Method_Parameter#Behind|Behind]].&lt;br /&gt;
&lt;br /&gt;
==Endnotes==&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have now finished reading the slideshow tutorial. Please leave me (nikitakit) a comment about your thoughts concerning this page.&lt;br /&gt;
&lt;br /&gt;
GNU/Linux users may also be interested in [http://akhilman.googlepages.com/images2sif.sh AkhIL's imag2sif shell script]. It imports  images into Synfig and creates a rotate and translate layer for each.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8559</id>
		<title>Doc:Slideshow Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Slideshow_Tutorial&amp;diff=8559"/>
				<updated>2009-03-12T18:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Create page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NOTE: this tutorial is a work in progress. If you have any questions, contact nikitakit.&lt;br /&gt;
&lt;br /&gt;
In Synfig, there are many ways to create a slideshow from a series of images. Probably the simplest is using the [[ListImporter|List Importer]] to import a series of images. Hower, the method only works on images [of the same size (?)] and is incapable of generating transitions. The technique described here is only slightly more complex, but it allows creating a presentation from a series of Synfig layers, regardless of type of size. The method can only produce cross-fade transitions; anything more complex would require a more advanced technique.&lt;br /&gt;
&lt;br /&gt;
=Technical Description=&lt;br /&gt;
&lt;br /&gt;
Synfig animates with a seried of layers, each of which exists throughout the entire timeline. Hence, our goal is to make only one of the layers visible at any given time. Though there are many ways to achieve this goal, this tutorial will assure that only one layer is seen by using the Blend and Amount parameters of each layer.&lt;br /&gt;
&lt;br /&gt;
All graphical layers in Synfig have these two essential properties. The Blend Mode defines how the image should be layered on everything below it, and the Amount dictates to what extent the blending is done. In the default blend mode, Composite, objects are simply placed on top of everything below them. In this case, the Amount value determines the overall transparency of the layer: at a value of 1.0, the layer is fully visible; at 0.0, it is entirely transparent. In-betwen values constitute partial transparency, which will form the transitions. These properties can be used to display a series of pictures. Each is its own layer and at any given point in time, one layer's amount is set to 1.0 while all others equal 0. However, there is a more efficient way of accomplishing the task. This method requires switching all images to the Straight blend mode.&lt;br /&gt;
&lt;br /&gt;
[Examine the picture that has not yet been added...]&lt;br /&gt;
&lt;br /&gt;
[As you can see,] this blend mode has an advantage: all layers below the current one are hidden. Therefore it is no longer necessary for layers below the current one to havea an Amount of 0. Using the Amount for crossfade still works, but it now needs to be changed only once: all layers start with a value of 1, and then be made transparent from the highest to the lowest.&lt;br /&gt;
&lt;br /&gt;
The effect could be animated with two waypoints per layer. However, Synfig offers an even simpler method that does not require using the animation mode. Instead, linking functionality can be used. The data type for Amount is currently set to be a real number. Instead, let's replace that with a special function by converting the layer to &amp;quot;Timed Swap&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[Screenshot]&lt;br /&gt;
&lt;br /&gt;
Now we examine the parameters of this new data type. The first is the initial value (1.0), the second is the final value (0.0), and the third is the time when the values will switch. If we want the image to display for three seconds, we can set the Swap Time to &amp;quot;3s&amp;quot;. (Note: this assumes we are starting at 0s). Then the amount will be 1.0 for three seconds (image visible) and 0 for the remainer of the timeline (image hidden). The last value will be the duration of the crossfade transition. Note that the transition takes away from the time for which the image will be displayed. For example, a value of &amp;quot;1s&amp;quot; means that the image will be fully opaque for two seconds, fade in one second, and then remain faded for the remainder of the animation.&lt;br /&gt;
&lt;br /&gt;
Applying successive times to layers from the top down will fade them one by one, creating the desired slideshow effect.&lt;br /&gt;
&lt;br /&gt;
=Step-by-Step Instructions=&lt;br /&gt;
Here are step-by-step instructions for applying this principle to an animation.&lt;br /&gt;
&lt;br /&gt;
==Setting Up==&lt;br /&gt;
Open a Synfig document and import any images, canvases, etc. Images can be imported using (?) &amp;gt;File&amp;gt;Import. Note that importing _links_ to the image using a _relative_ path. Take care to maintain the relative positions of the files when moving them. If multiple layers represent a single image, encapsulate them into an Inline Canvas.&lt;br /&gt;
Then arrange the images in the order they will be displayed, first image on top.&lt;br /&gt;
&lt;br /&gt;
==Blend Method==&lt;br /&gt;
Select all layers in the layer panel. Then go to the parameters panel and set the Blend Method to Straight.&lt;br /&gt;
&lt;br /&gt;
==Timed Swap==&lt;br /&gt;
Unlike Blend Mode, converting to Timed Swap must be done individually for each layer.&lt;br /&gt;
Set &amp;quot;Before&amp;quot; to 1.0 and &amp;quot;After&amp;quot; to 0.&lt;br /&gt;
Suppose you want the images to swap every 4 seconds, using 1 second transitions. Then set the &amp;quot;Duration&amp;quot; to &amp;quot;1s&amp;quot;. Afterwards, set Time for the first layer to 4+1=5. Then increase the time for each successive layer (5,10,15,20,...). The Swap Time is the point where the image fully disappears. Configure these values to fit your needs.&lt;br /&gt;
&lt;br /&gt;
==Animation Length==&lt;br /&gt;
Now that times have been configured, your file must be configured to render the full animation length. Go to &amp;gt;Edit&amp;gt;Properties and switch to the &amp;quot;Time&amp;quot; tab. Set the end time to equal the last of your time values. You can add a few seconds if you want a blank/black screen at the end, after the images have faded.&lt;br /&gt;
&lt;br /&gt;
==Extra: Background==&lt;br /&gt;
You may have noticed that the Straight Blend Mode removes any backgrounds from the image. Here are two methods to add a background:&lt;br /&gt;
&lt;br /&gt;
a) Encapsulate all image layers. Now the Straight blend mode only works within the inline canvas. Once this is done, add any backgrounds below the canvas, and any foreground above the canvas.&lt;br /&gt;
&lt;br /&gt;
b) Add a background layer/canvas to the _top_ of the layer list. Since it is above all other layers, the Straight layering mode doesn't affect it. However, it would normally shroud all the images. To make it aappear below everything else, set the Blend Mode to &amp;quot;Behind&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Congratulations! You have now finished reading the slideshow tutorial. Please leave me (nikitakit) a comment about your thoughts concerning this page.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Preferences_Dialog&amp;diff=8481</id>
		<title>Preferences Dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Preferences_Dialog&amp;diff=8481"/>
				<updated>2009-02-18T23:07:39Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Grammar edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--Categories--&amp;gt;&lt;br /&gt;
[[Category:Dialogs]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Categories--&amp;gt;&lt;br /&gt;
[[Category:Dialogs]]&lt;br /&gt;
&lt;br /&gt;
== Propose of the Setup Dialog ==&lt;br /&gt;
&lt;br /&gt;
The Setup Dialog allows the user set certain properties and preferences that are globally adopted by the application and used by all the Documents opened or to be opened. The Setup Dialog is organized in Tabs allowing modify the properties or preferences by meaningful groups.&lt;br /&gt;
&lt;br /&gt;
== Gamma Tab ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Gamma.png]]&lt;br /&gt;
&lt;br /&gt;
The gamma tab controls how the color representation in Synfig Studio is managed while editing a Document. There is a gamma pattern diagram on the top to let the user visually know how the gamma modifications would look in the color space. &lt;br /&gt;
&lt;br /&gt;
In the middle there are three color sliders that control the gamma for each separate channel. Default values for those sliders are 2.2 for each color. Depending on the gamma adjustment you have in your monitor or output device, you may want to change those values to be more appropriate. &lt;br /&gt;
&lt;br /&gt;
Below those sliders there is a Black level selector. It is used to calibrate your output device to show the black color as black. Most of the time you'll need this value set to 0.0.&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous tab==&lt;br /&gt;
&lt;br /&gt;
[[Image:Misc.png]]&lt;br /&gt;
&lt;br /&gt;
This tab groups some miscellaneous global preferences for the application. All of them would affect new files opened or created after they have been changed.&lt;br /&gt;
&lt;br /&gt;
=== Time Format ===&lt;br /&gt;
&lt;br /&gt;
This selection menu allows to set the time format used in the application. It would affect how all time parameters and information you see in Synfig Studio are shown. Although internally all the time values are stored as seconds, you can see the time in other formats:&lt;br /&gt;
&lt;br /&gt;
* HH:MM:SS.FF. This is a fixed format that shows always the time in hours:minutes:seconds.frames with two significant digits minimum. Examples: 123:45:58.13, 00:00:04.23&lt;br /&gt;
*(HHh MMm SSs) FFf '''default'''. This is a flexible format that would use the needed space to show the time using the correct derived unit. Examples: 123h 45m 58s 13f, 4s 23f. Notice that the second time only use the needed derived units (seconds) not using minutes or hours like in the previous type.&lt;br /&gt;
*(HHhMMmSSs)FFf. This one works exactly like the previous one but in a more compact format (no spaces). Examples: 123h45m58s13f, 4s23f.&lt;br /&gt;
* HHh MMm SSs FFf. This is like the default one but in a fixed format like the first one. Examples: 123h 45m 58s 13f, 00h 00m 04s 23f.&lt;br /&gt;
* HHhMMmSSsFFf. I think you can imagine how does this one works. Examples: 123h45m58s13f, 00h00m04s23f.&lt;br /&gt;
* FFf. This one shows all the times in frames. (There is a bug here because it doesn't work properly) Examples: 10693405f, 119f, assuming that the frames per second are set to 24.&lt;br /&gt;
&lt;br /&gt;
=== Unit System ===&lt;br /&gt;
&lt;br /&gt;
This drop down list allows change the global preference to the unit system that the user would want to use in any opened or created documents. Although all the vector dimensions are stored internally in synfig as units there are unit conversions to other systems to make editing more friendly or appropriate to the values that the user has from the model. Available Unit Systems are:&lt;br /&gt;
&lt;br /&gt;
* points (pt)&lt;br /&gt;
* units (u)&lt;br /&gt;
* pixels (px)&lt;br /&gt;
* inches (in)&lt;br /&gt;
* metres (m)&lt;br /&gt;
* centimeters (cm)&lt;br /&gt;
* millimeters (mm)&lt;br /&gt;
&lt;br /&gt;
See the [[Unit System|Unit System]] in action to know the equivalence between those units.&lt;br /&gt;
&lt;br /&gt;
=== Recent Files ===&lt;br /&gt;
&lt;br /&gt;
This spin button entry box allows the user to define how many recent files are shown when the [[Toolbox|Toolbox]]&amp;gt;File&amp;gt;Recent Files menu option is selected. Maximum value is set to 50 and minimum to 1. Default is 25.&lt;br /&gt;
&lt;br /&gt;
=== Automatic Backup Interval ===&lt;br /&gt;
&lt;br /&gt;
Synfig studio may crash (an infrequent thing lately), or you may have lost power or killed the program for any reason. Synfig Studio does a security copy of the current working document and would ask to recover it the next time you run the program. It can be set to a minimum of 1 second and does not have a maximum. Set it to 0s to disable the automatic backup. Default value is 3m.&lt;br /&gt;
&lt;br /&gt;
===Browser command ===&lt;br /&gt;
&lt;br /&gt;
This entry box allows the user select the name of your preferred browser. Set there the name of the binary to execute when Synfig Studio need to invoke the external browser (for example when clicking on the help menu items). The default value for Unix like system is &amp;quot;xdg-open&amp;quot; and &amp;quot;open&amp;quot; for Windows and MacOs. &lt;br /&gt;
&lt;br /&gt;
===Visually Linear Color Selection ===&lt;br /&gt;
&lt;br /&gt;
This [http://en.wikipedia.org/wiki/RGB_color_model#Nonlinearity Wikipedia] article talks about how color output is non-linear, that if 0 is black and 100 is white, then 50 is only about 22 percent of the brightness of white, rather than 50% as you might expect.&lt;br /&gt;
&lt;br /&gt;
In Synfig Studio there is an option (on by default) to make sure that if you ask for 50, you get 50% of the brightness of white. &lt;br /&gt;
&lt;br /&gt;
If you turn this option off, everything will go back to its non-linear, yet strangely comfortable and familiar mode.&lt;br /&gt;
&lt;br /&gt;
=== Restrict Real Value Ducks to the Top Right Quadrant === &lt;br /&gt;
&lt;br /&gt;
This is a feature that makes the manipulation of the real value ducks easier in certain situations. Real value ducks are the ones that can manage any kind of real number (if it is implemented in the layer interface). For example Circle Radius is controlled by a Real Value Duck. Also the Outlines Width are controlled by this kind of ducks. If you have to set the real value exactly to 0.0 it becomes especially difficult to do with the normal behavior of the real value ducks. If you set this parameter on, the position of the duck is restricted to be in the top right quadrant of the 2D space. In this way you can set the real value to any number and also easily reach the value of 0.0 just dragging the duck to the left bottom part of your 2D space. &lt;br /&gt;
&lt;br /&gt;
== Document Tab ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Document.png]]&lt;br /&gt;
&lt;br /&gt;
This tab groups some Document global preferences for the application. All of them would affect new files opened or created after they have been changed.&lt;br /&gt;
&lt;br /&gt;
=== New Document filename prefix ===&lt;br /&gt;
&lt;br /&gt;
This option sets the prefix of the newly created Documents in Synfig Studio. A sequential number, starting with 1, will be added to it for each new file you create in a Synfig Studio session. This is particularly useful if you're working in a project with several files.&lt;br /&gt;
&lt;br /&gt;
=== New Document X and Y sizes === &lt;br /&gt;
&lt;br /&gt;
In those spin buttons entries you can set the preferred X and Y dimensions of the new created documents. Again this is useful if you're working with a certain resolution and want to keep all the file exactly the same without the tedious task of editing the particular dimensions of each new created file. Image Area (in units) are calculated accordingly to the correspondence between pixels and units (60 pixels = 1 unit). Default value are X=480 and Y=270 pixels. &lt;br /&gt;
&lt;br /&gt;
There is a Set of Predefined Resolutions to automatically set the X and Y dimensions to the standards of the digital industry. Select any of them and the X and Y sizes would change automatically. Default resolution is &amp;quot;480x270 Web 480x HD&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=ToolBox_File_Menu&amp;diff=8480</id>
		<title>ToolBox File Menu</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=ToolBox_File_Menu&amp;diff=8480"/>
				<updated>2009-02-18T22:53:47Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Toolbox File Menu has the following options:&lt;br /&gt;
&lt;br /&gt;
*'''New''' (CTRL+N): Create a new file. Its default name is ''Synfig Animation #'' where # starts from 1 and increases by 1 for each new file you create in a Synfigstudio session. It starts editing the &amp;quot;Root&amp;quot; canvas.&lt;br /&gt;
*'''Open''' (CTRL+O): Pops up a choose file dialog to select the sifz file you want to open.&lt;br /&gt;
*'''Open Recent''': It gives a dynamic menu list with the last 25 (maximum) recent opened (or created) files.&lt;br /&gt;
*'''Save As''': Pops up a save file dialog to save the current file with a given name.&lt;br /&gt;
*'''Close''' (CTRL+W): Close the current document in edition. It would ask for save it if the document is marked as &amp;quot;dirty&amp;quot;.&lt;br /&gt;
*'''Panels''': It gives a sub menu with the following entries:&lt;br /&gt;
**'''Vertical Dock: Canvases, History''': It opens a vertical dock window with the [[Canvas Browser Panel|Canvas Browser Panel]], the [[Canvas Drop Down List]] and the [[History Dialog]]&lt;br /&gt;
**'''Horizontal Dock: Layers, Children, Params''': It opens an horizontal dock window with the [Layers Panel]], the [[Children Panel]] and the [[Params Panel]]&lt;br /&gt;
**'''Reset Windows To Original Layout''': Reposition and the Windows and Panels to its default position.&lt;br /&gt;
**'''[[Tool Options Panel|Tool Options]]''': Opens this Panel&lt;br /&gt;
**'''[[History Panel|History]]''': Opens this Panel&lt;br /&gt;
**'''[[Canvas Browser Panel|Canvas Browser]]''': Opens this Panel&lt;br /&gt;
**'''[[Keyframes Panel|Keyframe]]''': Opens this Panel&lt;br /&gt;
**'''[[Layers Panel|Layers]]''': Opens this Panel&lt;br /&gt;
**'''[[Params Panel|Params]]''': Opens this Panel&lt;br /&gt;
**'''[[Canvas MetaData Panel|Canvas MetaData]]''': Opens this Panel&lt;br /&gt;
**'''[[Children Panel|Children]]''': Opens this Panel&lt;br /&gt;
**'''[[Info Panel|Info]]''': Opens this Panel&lt;br /&gt;
**'''[[Timetrack Panel|Timetrack]]''': Opens this Panel&lt;br /&gt;
**'''[[Curves Panel|Curves]]''': Opens this Panel&lt;br /&gt;
**'''[[Groups Panel|Groups]]''': Opens this Panel&lt;br /&gt;
**'''[[Palette Editor Panel|Palette Editor]]''': Opens this Panel&lt;br /&gt;
*'''Input Devices...''': It pops up an input device dialog window to modify your preferences with those devices. If there isn't any device connected it brings an information window.&lt;br /&gt;
*'''Setup...''': It pops up a [[Setup Dialog]] Window where the user can establish the preferences for the program, such as measure units, preferred external browser etc.&lt;br /&gt;
*'''Quit''' (CTRL+Q): It quits Synfigstudio. If there is any &amp;quot;dirty&amp;quot; file it ask for save.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Spline&amp;diff=8479</id>
		<title>Spline</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Spline&amp;diff=8479"/>
				<updated>2009-02-18T22:46:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: Stub page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blines are the most commonly used objects in any normal animation done with Synfig, and can be made using the [[BLine Tool]].&lt;br /&gt;
&lt;br /&gt;
Please see the [[BLine Tool]] page for more information.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Toolbox_File_Palette&amp;diff=8477</id>
		<title>Toolbox File Palette</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Toolbox_File_Palette&amp;diff=8477"/>
				<updated>2009-02-18T15:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nikitakit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Toolbox File Palette has the following buttons:&lt;br /&gt;
&lt;br /&gt;
*'''New...''': Create a new file. Its default name is ''Synfig Animation #'' where # starts from 1 and increases by 1 for each new file you create in a Synfigstudio session. It starts editing the &amp;quot;Root&amp;quot; canvas.&lt;br /&gt;
*'''Open...''' : Pops up a choose file dialog to select the sifz file you want to open.&lt;br /&gt;
*'''Save''': Saves the selected file. If it has not been saved previously it works like the Save As button.&lt;br /&gt;
*'''Save As...''': Pops up a save file dialog to save the current file with a given name.&lt;br /&gt;
*'''Save All''': Save all the files.&lt;br /&gt;
*'''Undo''': It makes the same than the corresponding menu entry from the [[Canvas Edit Menu]]. &lt;br /&gt;
*'''Redo''': It makes the same than the corresponding menu entry from the [[Canvas Edit Menu]].&lt;br /&gt;
*'''Setup...''': It pops up a [[Setup Dialog]] Window where the user can stablish the preferences for the program like measure units, preferred external browser etc.&lt;br /&gt;
*'''About''': It pops up the [[About Dialog]].&lt;br /&gt;
*'''Help''' : It opens the [[Documentation]] page in the default browser.&lt;/div&gt;</summary>
		<author><name>Nikitakit</name></author>	</entry>

	</feed>