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

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23311</id>
		<title>Doc:Overview/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23311"/>
				<updated>2019-01-02T11:46:06Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Přehled}}&lt;br /&gt;
{{Navigation|Category:Manual/cs|Doc:Getting Started}}&lt;br /&gt;
[[Category:Manual/cs]]&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
Pravděpodobně víte, že při animaci vzniká iluze pohybu tím, že se rychle po sobě zobrazuje série na sebe navazujících obrázků. Tradiční 2D animace se dělá tak, že se kreslí každý obrázek zvlášť. Toto je tzv. '''fázová animace''' (angl. &amp;quot;Stop motion&amp;quot;). Ale také se jí říká '''pookénková animace''' (angl.  &amp;quot;frame-by-frame animation&amp;quot;), protože jednotlivé obrázky (angl. &amp;quot;frames&amp;quot;) se nazývají okénka. Aby se pohyb zdál dostatečně plynulý, je třeba nakreslit hodně obrázků, což je hodně náročné jak na čas, tak lidské zdroje.&lt;br /&gt;
[[File:Traditional-animation.gif|x150px|frame|center|Tradiční fázová animace, převzato z : http://flipily.com|link=http://flipily.com]]&lt;br /&gt;
{{literal|Synfig Studio}} je [https://en.wikipedia.org/wiki/Free_software open-source] software pro vektorovou 2D animaci. Umožňuje tvorbu kvalitních animací s minimálními nároky na zdroje.&lt;br /&gt;
&lt;br /&gt;
Synfig Studio je navrženo tak, aby nebylo nutné kreslit každé okénko zvlášť, a k tomu využívá dvě techniky:&lt;br /&gt;
* Animaci s využitím morfingu&lt;br /&gt;
* Ploškovou animaci&lt;br /&gt;
&lt;br /&gt;
== Morfing ==&lt;br /&gt;
[[File:Rose4b.gif|thumb|100px|right|Animace růže pomoí morfingu, od Rore]] '''Morfing''' (angl. '''Morphing''') je operace při které se vytvoří mezi dvěma různými obrázky plynulý přechod, takže se jeden tvar plynule změní na jiný. A to jakým způsobem má transformace proběhnout je určeno pomocí kontrolních bodů. Synfig Studio pracuje s vektory, takže morfing dělá zcela automaticky. Pro vytvoření animace tudíž stačí přesunout klíčové body a zvolit vhodný časový interval. Stačí tedy nakreslit výchozí snímek, a přesunem bodů na klíčovém snímku vymezujícím časový interval určit co, odkud a jam se má na scéně přesunout. Synfig Studio pak pozice bodů pro ostatní snímky dopočítá.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plošková animace ==&lt;br /&gt;
[[Image:Cutoutsample.gif|thumb|100px|left|Plošková animace z tutoriálu pro Synfig]]&lt;br /&gt;
U '''ploškové animace''' (angl. '''cut-out animation''') je objekt rozdělen na menší části, na které se pak aplikují jednoduché operace jako např. posun, rotace, změna velikosti, aj. Synfig Studio umí z pozice objektů na klíčových snímcích dopočítat jejich pozice pro ostatní snímky. Ploškovou animaci tak lze udělat jak z bitmapových, tak vektorových obrázků.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Přechody a další funkcionality ==&lt;br /&gt;
V obou případech je úkolem vyplnit mezery mezi klíčovými snímky (keyframes) tak aby vznkla hladká a plynulá animace. Tento proces dopočítávání chybějících snímků se nazývá anglickým výrazem &amp;quot;tweening&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
I když Synfig Studio není primárně určeno ke tvorbě fázové animace, lze v jeho prostředí dělat i animace z ručně malovaných obrázků, pokud se snímek převede z bitmapového formátu na vektorový. Tento proces se nazývá trasování (&amp;quot;tracing&amp;quot;) a obvykle se dělá tak, že se nad bitmapovým obrázkem ručně nakreslí tvaru definované vektory. Při tom můžete využít řadu fascinujících efektů, takže Synfig Studio vám umožní udělat vskutku profesionální animace.&lt;br /&gt;
&amp;lt;!-- TODO: Illustration - bitmap image and same image traced in Synfig Studio --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ať už budete dělat fázovou animaci, nebo ne, Synfig Studio vám výrazně usnadní kontrolu nad často se střídajícími operacemi, jako kupř. když se má něco opakovat, změnit barva, textura co obrázek, upravit charakteristika okrajové linky, a nabízí řadu dalších věcí - animační trajektorie a vytvoření akcí. Opakované využití dat jejich prolinkováním. V tom je síla Synfig Studia, kterou lze využít i pro velké animační projekty.&lt;br /&gt;
&lt;br /&gt;
Také si můžete předem nadefinovat vztahy, jaké mají být mezi vzájemě se pohybujícími obrázky ty pak využívat jako funkce. To vám umožní dělat automatické animace, založené na těchto předem definovaných zákonitostech a což posouvá proces animae na zcela novou úroveň.&lt;br /&gt;
[[Image:Parabolic-shot.gif|frame|center|Animace parabolické dráhy střely z tutoriálu pro Synfig]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: Write a few lines here that Synfig can be used to produce simple animations too --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Všechny z uvedených funkcionalit Synfig Studia jsou podrobně popsány v kapitolách tohoto manuálu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: About this manual/Structure of this manual: The purpose of first chapter is to give you overview of the animation creation process using Synfig Studio. Without diving deep into details it will guide you through the basic concepts and offer few exercises that help you to understand how this software works. --&amp;gt;&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23310</id>
		<title>Doc:Overview/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23310"/>
				<updated>2019-01-02T11:44:33Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Přehled}}&lt;br /&gt;
{{Navigation|Category:Manual/cs|Doc:Getting Started}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
Pravděpodobně víte, že při animaci vzniká iluze pohybu tím, že se rychle po sobě zobrazuje série na sebe navazujících obrázků. Tradiční 2D animace se dělá tak, že se kreslí každý obrázek zvlášť. Toto je tzv. '''fázová animace''' (angl. &amp;quot;Stop motion&amp;quot;). Ale také se jí říká '''pookénková animace''' (angl.  &amp;quot;frame-by-frame animation&amp;quot;), protože jednotlivé obrázky (angl. &amp;quot;frames&amp;quot;) se nazývají okénka. Aby se pohyb zdál dostatečně plynulý, je třeba nakreslit hodně obrázků, což je hodně náročné jak na čas, tak lidské zdroje.&lt;br /&gt;
[[File:Traditional-animation.gif|x150px|frame|center|Tradiční fázová animace, převzato z : http://flipily.com|link=http://flipily.com]]&lt;br /&gt;
{{literal|Synfig Studio}} je [https://en.wikipedia.org/wiki/Free_software open-source] software pro vektorovou 2D animaci. Umožňuje tvorbu kvalitních animací s minimálními nároky na zdroje.&lt;br /&gt;
&lt;br /&gt;
Synfig Studio je navrženo tak, aby nebylo nutné kreslit každé okénko zvlášť, a k tomu využívá dvě techniky:&lt;br /&gt;
* Animaci s využitím morfingu&lt;br /&gt;
* Ploškovou animaci&lt;br /&gt;
&lt;br /&gt;
== Morfing ==&lt;br /&gt;
[[File:Rose4b.gif|thumb|100px|right|Animace růže pomoí morfingu, od Rore]] '''Morfing''' (angl. '''Morphing''') je operace při které se vytvoří mezi dvěma různými obrázky plynulý přechod, takže se jeden tvar plynule změní na jiný. A to jakým způsobem má transformace proběhnout je určeno pomocí kontrolních bodů. Synfig Studio pracuje s vektory, takže morfing dělá zcela automaticky. Pro vytvoření animace tudíž stačí přesunout klíčové body a zvolit vhodný časový interval. Stačí tedy nakreslit výchozí snímek, a přesunem bodů na klíčovém snímku vymezujícím časový interval určit co, odkud a jam se má na scéně přesunout. Synfig Studio pak pozice bodů pro ostatní snímky dopočítá.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plošková animace ==&lt;br /&gt;
[[Image:Cutoutsample.gif|thumb|100px|left|Plošková animace z tutoriálu pro Synfig]]&lt;br /&gt;
U '''ploškové animace''' (angl. '''cut-out animation''') je objekt rozdělen na menší části, na které se pak aplikují jednoduché operace jako např. posun, rotace, změna velikosti, aj. Synfig Studio umí z pozice objektů na klíčových snímcích dopočítat jejich pozice pro ostatní snímky. Ploškovou animaci tak lze udělat jak z bitmapových, tak vektorových obrázků.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Přechody a další funkcionality ==&lt;br /&gt;
V obou případech je úkolem vyplnit mezery mezi klíčovými snímky (keyframes) tak aby vznkla hladká a plynulá animace. Tento proces dopočítávání chybějících snímků se nazývá anglickým výrazem &amp;quot;tweening&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
I když Synfig Studio není primárně určeno ke tvorbě fázové animace, lze v jeho prostředí dělat i animace z ručně malovaných obrázků, pokud se snímek převede z bitmapového formátu na vektorový. Tento proces se nazývá trasování (&amp;quot;tracing&amp;quot;) a obvykle se dělá tak, že se nad bitmapovým obrázkem ručně nakreslí tvaru definované vektory. Při tom můžete využít řadu fascinujících efektů, takže Synfig Studio vám umožní udělat vskutku profesionální animace.&lt;br /&gt;
&amp;lt;!-- TODO: Illustration - bitmap image and same image traced in Synfig Studio --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ať už budete dělat fázovou animaci, nebo ne, Synfig Studio vám výrazně usnadní kontrolu nad často se střídajícími operacemi, jako kupř. když se má něco opakovat, změnit barva, textura co obrázek, upravit charakteristika okrajové linky, a nabízí řadu dalších věcí - animační trajektorie a vytvoření akcí. Opakované využití dat jejich prolinkováním. V tom je síla Synfig Studia, kterou lze využít i pro velké animační projekty.&lt;br /&gt;
&lt;br /&gt;
Také si můžete předem nadefinovat vztahy, jaké mají být mezi vzájemě se pohybujícími obrázky ty pak využívat jako funkce. To vám umožní dělat automatické animace, založené na těchto předem definovaných zákonitostech a což posouvá proces animae na zcela novou úroveň.&lt;br /&gt;
[[Image:Parabolic-shot.gif|frame|center|Animace parabolické dráhy střely z tutoriálu pro Synfig]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: Write a few lines here that Synfig can be used to produce simple animations too --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Všechny z uvedených funkcionalit Synfig Studia jsou podrobně popsány v kapitolách tohoto manuálu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: About this manual/Structure of this manual: The purpose of first chapter is to give you overview of the animation creation process using Synfig Studio. Without diving deep into details it will guide you through the basic concepts and offer few exercises that help you to understand how this software works. --&amp;gt;&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23309</id>
		<title>Doc:Overview/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23309"/>
				<updated>2019-01-02T11:41:40Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Přehled}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;br /&gt;
{{Category:Manual}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
Pravděpodobně víte, že při animaci vzniká iluze pohybu tím, že se rychle po sobě zobrazuje série na sebe navazujících obrázků. Tradiční 2D animace se dělá tak, že se kreslí každý obrázek zvlášť. Toto je tzv. '''fázová animace''' (angl. &amp;quot;Stop motion&amp;quot;). Ale také se jí říká '''pookénková animace''' (angl.  &amp;quot;frame-by-frame animation&amp;quot;), protože jednotlivé obrázky (angl. &amp;quot;frames&amp;quot;) se nazývají okénka. Aby se pohyb zdál dostatečně plynulý, je třeba nakreslit hodně obrázků, což je hodně náročné jak na čas, tak lidské zdroje.&lt;br /&gt;
[[File:Traditional-animation.gif|x150px|frame|center|Tradiční fázová animace, převzato z : http://flipily.com|link=http://flipily.com]]&lt;br /&gt;
{{literal|Synfig Studio}} je [https://en.wikipedia.org/wiki/Free_software open-source] software pro vektorovou 2D animaci. Umožňuje tvorbu kvalitních animací s minimálními nároky na zdroje.&lt;br /&gt;
&lt;br /&gt;
Synfig Studio je navrženo tak, aby nebylo nutné kreslit každé okénko zvlášť, a k tomu využívá dvě techniky:&lt;br /&gt;
* Animaci s využitím morfingu&lt;br /&gt;
* Ploškovou animaci&lt;br /&gt;
&lt;br /&gt;
== Morfing ==&lt;br /&gt;
[[File:Rose4b.gif|thumb|100px|right|Animace růže pomoí morfingu, od Rore]] '''Morfing''' (angl. '''Morphing''') je operace při které se vytvoří mezi dvěma různými obrázky plynulý přechod, takže se jeden tvar plynule změní na jiný. A to jakým způsobem má transformace proběhnout je určeno pomocí kontrolních bodů. Synfig Studio pracuje s vektory, takže morfing dělá zcela automaticky. Pro vytvoření animace tudíž stačí přesunout klíčové body a zvolit vhodný časový interval. Stačí tedy nakreslit výchozí snímek, a přesunem bodů na klíčovém snímku vymezujícím časový interval určit co, odkud a jam se má na scéně přesunout. Synfig Studio pak pozice bodů pro ostatní snímky dopočítá.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plošková animace ==&lt;br /&gt;
[[Image:Cutoutsample.gif|thumb|100px|left|Plošková animace z tutoriálu pro Synfig]]&lt;br /&gt;
U '''ploškové animace''' (angl. '''cut-out animation''') je objekt rozdělen na menší části, na které se pak aplikují jednoduché operace jako např. posun, rotace, změna velikosti, aj. Synfig Studio umí z pozice objektů na klíčových snímcích dopočítat jejich pozice pro ostatní snímky. Ploškovou animaci tak lze udělat jak z bitmapových, tak vektorových obrázků.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Přechody a další funkcionality ==&lt;br /&gt;
V obou případech je úkolem vyplnit mezery mezi klíčovými snímky (keyframes) tak aby vznkla hladká a plynulá animace. Tento proces dopočítávání chybějících snímků se nazývá anglickým výrazem &amp;quot;tweening&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
I když Synfig Studio není primárně určeno ke tvorbě fázové animace, lze v jeho prostředí dělat i animace z ručně malovaných obrázků, pokud se snímek převede z bitmapového formátu na vektorový. Tento proces se nazývá trasování (&amp;quot;tracing&amp;quot;) a obvykle se dělá tak, že se nad bitmapovým obrázkem ručně nakreslí tvaru definované vektory. Při tom můžete využít řadu fascinujících efektů, takže Synfig Studio vám umožní udělat vskutku profesionální animace.&lt;br /&gt;
&amp;lt;!-- TODO: Illustration - bitmap image and same image traced in Synfig Studio --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ať už budete dělat fázovou animaci, nebo ne, Synfig Studio vám výrazně usnadní kontrolu nad často se střídajícími operacemi, jako kupř. když se má něco opakovat, změnit barva, textura co obrázek, upravit charakteristika okrajové linky, a nabízí řadu dalších věcí - animační trajektorie a vytvoření akcí. Opakované využití dat jejich prolinkováním. V tom je síla Synfig Studia, kterou lze využít i pro velké animační projekty.&lt;br /&gt;
&lt;br /&gt;
Také si můžete předem nadefinovat vztahy, jaké mají být mezi vzájemě se pohybujícími obrázky ty pak využívat jako funkce. To vám umožní dělat automatické animace, založené na těchto předem definovaných zákonitostech a což posouvá proces animae na zcela novou úroveň.&lt;br /&gt;
[[Image:Parabolic-shot.gif|frame|center|Animace parabolické dráhy střely z tutoriálu pro Synfig]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: Write a few lines here that Synfig can be used to produce simple animations too --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Všechny z uvedených funkcionalit Synfig Studia jsou podrobně popsány v kapitolách tohoto manuálu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: About this manual/Structure of this manual: The purpose of first chapter is to give you overview of the animation creation process using Synfig Studio. Without diving deep into details it will guide you through the basic concepts and offer few exercises that help you to understand how this software works. --&amp;gt;&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23308</id>
		<title>Doc:Overview/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23308"/>
				<updated>2019-01-02T11:40:17Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Přehled}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Manual/cs]]&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
Pravděpodobně víte, že při animaci vzniká iluze pohybu tím, že se rychle po sobě zobrazuje série na sebe navazujících obrázků. Tradiční 2D animace se dělá tak, že se kreslí každý obrázek zvlášť. Toto je tzv. '''fázová animace''' (angl. &amp;quot;Stop motion&amp;quot;). Ale také se jí říká '''pookénková animace''' (angl.  &amp;quot;frame-by-frame animation&amp;quot;), protože jednotlivé obrázky (angl. &amp;quot;frames&amp;quot;) se nazývají okénka. Aby se pohyb zdál dostatečně plynulý, je třeba nakreslit hodně obrázků, což je hodně náročné jak na čas, tak lidské zdroje.&lt;br /&gt;
[[File:Traditional-animation.gif|x150px|frame|center|Tradiční fázová animace, převzato z : http://flipily.com|link=http://flipily.com]]&lt;br /&gt;
{{literal|Synfig Studio}} je [https://en.wikipedia.org/wiki/Free_software open-source] software pro vektorovou 2D animaci. Umožňuje tvorbu kvalitních animací s minimálními nároky na zdroje.&lt;br /&gt;
&lt;br /&gt;
Synfig Studio je navrženo tak, aby nebylo nutné kreslit každé okénko zvlášť, a k tomu využívá dvě techniky:&lt;br /&gt;
* Animaci s využitím morfingu&lt;br /&gt;
* Ploškovou animaci&lt;br /&gt;
&lt;br /&gt;
== Morfing ==&lt;br /&gt;
[[File:Rose4b.gif|thumb|100px|right|Animace růže pomoí morfingu, od Rore]] '''Morfing''' (angl. '''Morphing''') je operace při které se vytvoří mezi dvěma různými obrázky plynulý přechod, takže se jeden tvar plynule změní na jiný. A to jakým způsobem má transformace proběhnout je určeno pomocí kontrolních bodů. Synfig Studio pracuje s vektory, takže morfing dělá zcela automaticky. Pro vytvoření animace tudíž stačí přesunout klíčové body a zvolit vhodný časový interval. Stačí tedy nakreslit výchozí snímek, a přesunem bodů na klíčovém snímku vymezujícím časový interval určit co, odkud a jam se má na scéně přesunout. Synfig Studio pak pozice bodů pro ostatní snímky dopočítá.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plošková animace ==&lt;br /&gt;
[[Image:Cutoutsample.gif|thumb|100px|left|Plošková animace z tutoriálu pro Synfig]]&lt;br /&gt;
U '''ploškové animace''' (angl. '''cut-out animation''') je objekt rozdělen na menší části, na které se pak aplikují jednoduché operace jako např. posun, rotace, změna velikosti, aj. Synfig Studio umí z pozice objektů na klíčových snímcích dopočítat jejich pozice pro ostatní snímky. Ploškovou animaci tak lze udělat jak z bitmapových, tak vektorových obrázků.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Přechody a další funkcionality ==&lt;br /&gt;
V obou případech je úkolem vyplnit mezery mezi klíčovými snímky (keyframes) tak aby vznkla hladká a plynulá animace. Tento proces dopočítávání chybějících snímků se nazývá anglickým výrazem &amp;quot;tweening&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
I když Synfig Studio není primárně určeno ke tvorbě fázové animace, lze v jeho prostředí dělat i animace z ručně malovaných obrázků, pokud se snímek převede z bitmapového formátu na vektorový. Tento proces se nazývá trasování (&amp;quot;tracing&amp;quot;) a obvykle se dělá tak, že se nad bitmapovým obrázkem ručně nakreslí tvaru definované vektory. Při tom můžete využít řadu fascinujících efektů, takže Synfig Studio vám umožní udělat vskutku profesionální animace.&lt;br /&gt;
&amp;lt;!-- TODO: Illustration - bitmap image and same image traced in Synfig Studio --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ať už budete dělat fázovou animaci, nebo ne, Synfig Studio vám výrazně usnadní kontrolu nad často se střídajícími operacemi, jako kupř. když se má něco opakovat, změnit barva, textura co obrázek, upravit charakteristika okrajové linky, a nabízí řadu dalších věcí - animační trajektorie a vytvoření akcí. Opakované využití dat jejich prolinkováním. V tom je síla Synfig Studia, kterou lze využít i pro velké animační projekty.&lt;br /&gt;
&lt;br /&gt;
Také si můžete předem nadefinovat vztahy, jaké mají být mezi vzájemě se pohybujícími obrázky ty pak využívat jako funkce. To vám umožní dělat automatické animace, založené na těchto předem definovaných zákonitostech a což posouvá proces animae na zcela novou úroveň.&lt;br /&gt;
[[Image:Parabolic-shot.gif|frame|center|Animace parabolické dráhy střely z tutoriálu pro Synfig]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: Write a few lines here that Synfig can be used to produce simple animations too --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Všechny z uvedených funkcionalit Synfig Studia jsou podrobně popsány v kapitolách tohoto manuálu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: About this manual/Structure of this manual: The purpose of first chapter is to give you overview of the animation creation process using Synfig Studio. Without diving deep into details it will guide you through the basic concepts and offer few exercises that help you to understand how this software works. --&amp;gt;&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23307</id>
		<title>Doc:Overview/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Doc:Overview/cs&amp;diff=23307"/>
				<updated>2019-01-02T11:38:48Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Přehled}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
Pravděpodobně víte, že při animaci vzniká iluze pohybu tím, že se rychle po sobě zobrazuje série na sebe navazujících obrázků. Tradiční 2D animace se dělá tak, že se kreslí každý obrázek zvlášť. Toto je tzv. '''fázová animace''' (angl. &amp;quot;Stop motion&amp;quot;). Ale také se jí říká '''pookénková animace''' (angl.  &amp;quot;frame-by-frame animation&amp;quot;), protože jednotlivé obrázky (angl. &amp;quot;frames&amp;quot;) se nazývají okénka. Aby se pohyb zdál dostatečně plynulý, je třeba nakreslit hodně obrázků, což je hodně náročné jak na čas, tak lidské zdroje.&lt;br /&gt;
[[File:Traditional-animation.gif|x150px|frame|center|Tradiční fázová animace, převzato z : http://flipily.com|link=http://flipily.com]]&lt;br /&gt;
{{literal|Synfig Studio}} je [https://en.wikipedia.org/wiki/Free_software open-source] software pro vektorovou 2D animaci. Umožňuje tvorbu kvalitních animací s minimálními nároky na zdroje.&lt;br /&gt;
&lt;br /&gt;
Synfig Studio je navrženo tak, aby nebylo nutné kreslit každé okénko zvlášť, a k tomu využívá dvě techniky:&lt;br /&gt;
* Animaci s využitím morfingu&lt;br /&gt;
* Ploškovou animaci&lt;br /&gt;
&lt;br /&gt;
== Morfing ==&lt;br /&gt;
[[File:Rose4b.gif|thumb|100px|right|Animace růže pomoí morfingu, od Rore]] '''Morfing''' (angl. '''Morphing''') je operace při které se vytvoří mezi dvěma různými obrázky plynulý přechod, takže se jeden tvar plynule změní na jiný. A to jakým způsobem má transformace proběhnout je určeno pomocí kontrolních bodů. Synfig Studio pracuje s vektory, takže morfing dělá zcela automaticky. Pro vytvoření animace tudíž stačí přesunout klíčové body a zvolit vhodný časový interval. Stačí tedy nakreslit výchozí snímek, a přesunem bodů na klíčovém snímku vymezujícím časový interval určit co, odkud a jam se má na scéně přesunout. Synfig Studio pak pozice bodů pro ostatní snímky dopočítá.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plošková animace ==&lt;br /&gt;
[[Image:Cutoutsample.gif|thumb|100px|left|Plošková animace z tutoriálu pro Synfig]]&lt;br /&gt;
U '''ploškové animace''' (angl. '''cut-out animation''') je objekt rozdělen na menší části, na které se pak aplikují jednoduché operace jako např. posun, rotace, změna velikosti, aj. Synfig Studio umí z pozice objektů na klíčových snímcích dopočítat jejich pozice pro ostatní snímky. Ploškovou animaci tak lze udělat jak z bitmapových, tak vektorových obrázků.&lt;br /&gt;
&amp;lt;br style=&amp;quot;    clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Přechody a další funkcionality ==&lt;br /&gt;
V obou případech je úkolem vyplnit mezery mezi klíčovými snímky (keyframes) tak aby vznkla hladká a plynulá animace. Tento proces dopočítávání chybějících snímků se nazývá anglickým výrazem &amp;quot;tweening&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
I když Synfig Studio není primárně určeno ke tvorbě fázové animace, lze v jeho prostředí dělat i animace z ručně malovaných obrázků, pokud se snímek převede z bitmapového formátu na vektorový. Tento proces se nazývá trasování (&amp;quot;tracing&amp;quot;) a obvykle se dělá tak, že se nad bitmapovým obrázkem ručně nakreslí tvaru definované vektory. Při tom můžete využít řadu fascinujících efektů, takže Synfig Studio vám umožní udělat vskutku profesionální animace.&lt;br /&gt;
&amp;lt;!-- TODO: Illustration - bitmap image and same image traced in Synfig Studio --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ať už budete dělat fázovou animaci, nebo ne, Synfig Studio vám výrazně usnadní kontrolu nad často se střídajícími operacemi, jako kupř. když se má něco opakovat, změnit barva, textura co obrázek, upravit charakteristika okrajové linky, a nabízí řadu dalších věcí - animační trajektorie a vytvoření akcí. Opakované využití dat jejich prolinkováním. V tom je síla Synfig Studia, kterou lze využít i pro velké animační projekty.&lt;br /&gt;
&lt;br /&gt;
Také si můžete předem nadefinovat vztahy, jaké mají být mezi vzájemě se pohybujícími obrázky ty pak využívat jako funkce. To vám umožní dělat automatické animace, založené na těchto předem definovaných zákonitostech a což posouvá proces animae na zcela novou úroveň.&lt;br /&gt;
[[Image:Parabolic-shot.gif|frame|center|Animace parabolické dráhy střely z tutoriálu pro Synfig]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: Write a few lines here that Synfig can be used to produce simple animations too --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Všechny z uvedených funkcionalit Synfig Studia jsou podrobně popsány v kapitolách tohoto manuálu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: About this manual/Structure of this manual: The purpose of first chapter is to give you overview of the animation creation process using Synfig Studio. Without diving deep into details it will guide you through the basic concepts and offer few exercises that help you to understand how this software works. --&amp;gt;&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Getting Started}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Spherize_Layer&amp;diff=23125</id>
		<title>Spherize Layer</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Spherize_Layer&amp;diff=23125"/>
				<updated>2017-03-16T22:52:28Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Spherize Layer}}&lt;br /&gt;
{{Category|Layers}}&lt;br /&gt;
{{Category|Distortions}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{l|Image:Layer_distortion_spherize_icon.png|64px}}&lt;br /&gt;
&lt;br /&gt;
== About Spherize Layers==&lt;br /&gt;
&lt;br /&gt;
FIXMM!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Parameters of Spherize Layers==&lt;br /&gt;
&lt;br /&gt;
The parameters of the spherize layers are:&lt;br /&gt;
&lt;br /&gt;
{|{{Parameters}}&lt;br /&gt;
&lt;br /&gt;
|-style=&amp;quot;background:#&amp;quot;&lt;br /&gt;
||{{l|Image:Type_vector_icon.png|16px}} {{l|Position Parameter}}&lt;br /&gt;
||0.000000u,0.000000u&lt;br /&gt;
||vector&lt;br /&gt;
&lt;br /&gt;
|-style=&amp;quot;background:#eeeeee&amp;quot;&lt;br /&gt;
||{{l|Image:Type_real_icon.png|16px}} {{l|Radius Parameter}}&lt;br /&gt;
||1.000000u&lt;br /&gt;
||real&lt;br /&gt;
&lt;br /&gt;
|-style=&amp;quot;background:#&amp;quot;&lt;br /&gt;
||{{l|Image:Type_real_icon.png|16px}} {{l|Amount Parameter}}&lt;br /&gt;
||1.000000u&lt;br /&gt;
||real&lt;br /&gt;
&lt;br /&gt;
|-style=&amp;quot;background:#eeeeee&amp;quot;&lt;br /&gt;
||{{l|Image:Type_bool_icon.png|16px}} {{l|Clip Parameter}}&lt;br /&gt;
|| {{Bool|}}&lt;br /&gt;
||bool&lt;br /&gt;
&lt;br /&gt;
|-style=&amp;quot;background:#&amp;quot;&lt;br /&gt;
||{{l|Image:type_integer_icon.png|16px}} {{l|Distort Type Parameter}}&lt;br /&gt;
||Spherize&lt;br /&gt;
||integer&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=History.fr&amp;diff=23124</id>
		<title>History.fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=History.fr&amp;diff=23124"/>
				<updated>2017-03-16T22:46:28Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Redirected page to History/fr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[History/fr]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Developer_Documentation/cs&amp;diff=23123</id>
		<title>Developer Documentation/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Developer_Documentation/cs&amp;diff=23123"/>
				<updated>2017-03-16T17:27:10Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Created page with &amp;quot;&amp;lt;!-- Page info --&amp;gt; {{Title|Dokumentace pro vývojáře}} {{TOCright}} &amp;lt;!-- end Page info --&amp;gt;  Dokumentace pro vývojáře je primárně určena pro:  * aktuální vývojáře...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Dokumentace pro vývojáře}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&amp;lt;!-- end Page info --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dokumentace pro vývojáře je primárně určena pro:&lt;br /&gt;
&lt;br /&gt;
* aktuální vývojáře aplikačního kódu&lt;br /&gt;
* případné budoucí vývojáře&lt;br /&gt;
* ty co mají další nápady, a chtějí odhalit případné chyby a nedostatky&lt;br /&gt;
&lt;br /&gt;
= Hlavní stránky =&lt;br /&gt;
&lt;br /&gt;
* {{l|Dev:Build Instructions|Instrukce pro sestavení}}&lt;br /&gt;
* {{l|Dev:Building Documentation|Dokumentace procesu sestavení}}&lt;br /&gt;
* {{l|Dev:Source code|Zdrojové kódy}} jak je získat a jakým způsobem se zapojit do vývoje&lt;br /&gt;
* {{l|Dev:Action System|Akce a jejich systém}} : popis a dokumentace akcí s nimiž systém pracuje – ideální místo, kde začít s pronikáním do kódu Synfigu.&lt;br /&gt;
* Nastavení vývojového IDE {{l|Dev:IDE_Linux|v Linuxu}} | {{l|Dev:IDE_Windows| ve Windows}}&lt;br /&gt;
* {{l|Dev:Roadmap|Plán dalšího vývoje}}&lt;br /&gt;
* {{l|Dev:Contribute to Code|Jak přispět ke zkvalitnění kódu}}&lt;br /&gt;
* {{l|Dev:Translation|Jak překládat GUI}}&lt;br /&gt;
* {{l|Dev:Wish list}}&lt;br /&gt;
* {{l|Dev:Coding_Conventions|Konvence pro psaní kódu}}&lt;br /&gt;
* {{l|Dev:UI/UX Redesign|Úpravy UI dle UX}} – aneb jak využívat zkušeností uživatelů (UX) při úpravách rozhraní aplikace (UI)&lt;br /&gt;
* {{l|Dev:ETL_replacement|Nahrazení ETL}} za knihovny z Boost C++ (které jsou postupně integrovány do standardního C++)&lt;br /&gt;
&lt;br /&gt;
= Co patří k Synfigu =&lt;br /&gt;
Synfig tvoří tři hlavní součásti: etl, synfig-core and synfig-studio.&lt;br /&gt;
* '''[http://download.tuxfamily.org/synfig/api/ETL/annotated.html ETL]''' je sada knihoven, která rozšiřuje možnosti standardních knihoven. Jednou z nejdůležitějších funkcionalit, kterou poskytuje, jsou sdílené třídy, které tvoří základ pro tvorbu objektů u dalších částí aplikace. Využití &amp;quot;handles&amp;quot; u sdílených objektů místo c++ ukazatelů umožňuje automatický úklid paměti na základě počítání referencí.&lt;br /&gt;
* '''[http://download.tuxfamily.org/synfig/api/synfig-core/annotated.html Synfig-core]''' tvoří jádro aplikace/renderovací aplikace (&amp;quot;synfig&amp;quot;) obsluhovaná z příkazové řádky (cli) zpracovává do výsledného zobrazení datovou strukturu dokumentu, který mu předává aplikace: body (valuenodes), vrstvy (layers) a plošky (canvases).&lt;br /&gt;
* '''[http://download.tuxfamily.org/synfig/api/synfig-studio/annotated.html Synfig Studio]''' (&amp;quot;synfig-studio&amp;quot;) je grafické rozhraní aplikace (GUI).&lt;br /&gt;
* Viz též: {{l|Dev:How Synfig Works}}&lt;br /&gt;
&lt;br /&gt;
= Externí knihovny =&lt;br /&gt;
== Synfig využívá několika externích knihoven ==&lt;br /&gt;
* [https://developer.gnome.org/gtkmm-tutorial/2.24/ Gtkmm 2], je postupně nahrazováno [https://developer.gnome.org/gtk3/ Gtkmm 3] ( viz [https://developer.gnome.org/gtk3/3.4/gtk-migrating-2-to-3.html GTK migrace z verze 2 na 3])&lt;br /&gt;
* [https://developer.gnome.org/gtkmm/2.24/namespaceGdk_1_1Cairo.html Cairo] (grafická knihovna, která umí při renderování obrazu využívat hardwarovou akceleraci grafické karty, pokud je k dispozici)&lt;br /&gt;
* [http://freetype.org/ Freetype2] – knihovna pro renderování vrstvy {{l|Text Layer}} u softwarově renderovaného obrazu&lt;br /&gt;
* [http://libxmlplusplus.sourceforge.net/ libxmlplusplus] (k parsování projektových souborů)&lt;br /&gt;
* [http://www.boost.org/doc/libs/1_54_0/doc/html/program_options.html Boost Program Options] (synfig cli)&lt;br /&gt;
* [http://www.mltframework.org/ MLT Framework - Media Loving Toolkit] (využívá {{l|Sound Layer}})&lt;br /&gt;
* [http://www.libpng.org/pub/png/libpng.html libpng] (načítá a zapisuje soubory {{Literal|.png}} formátu)&lt;br /&gt;
&lt;br /&gt;
== Také může využívat tyto knihovny, pokud jsou k dispozici ==&lt;br /&gt;
* [http://www.imagemagick.org/Magick++/ Magick++] – API aplikace ImageMagick umí využívat synfig-core prostřednictvím modulu mod_magickpp&lt;br /&gt;
* libavcodec – využívá synfig-core prostřednictvím modulu mod_libavcodec&lt;br /&gt;
* libmng – využívá synfig-core prostřednictvím modulu mod_mng&lt;br /&gt;
…pro další informace vizte stránku {{l|Dev:Build Instructions}}.&lt;br /&gt;
&lt;br /&gt;
= Postup při psaní kódu =&lt;br /&gt;
* {{l|Dev:Adding a Layer}}&lt;br /&gt;
* Přidání Panelu, {{l|Dev:Adding a Panel - Part I|Část I}} a {{l|Dev:Adding a Panel - Part II|Část II}}. '''Poznámka:''' Vezměte v potaz, že tento tutoriál už je hodně &amp;quot;out of date&amp;quot;. Takže adresář &amp;quot;gtkmm&amp;quot; byl přejmenován na &amp;quot;gui&amp;quot; a panelu se nyní říká dok. Také byly přesunuty některé soubory do podadresářů (viz např. obsah podadresáře &amp;quot;gui/docks&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Další odkazy =&lt;br /&gt;
* [http://download.tuxfamily.org/synfig/api/index.html Dokumentace pro ETL, Synfig a pro API SynfigStudia]&lt;br /&gt;
* [http://synfig.org/wiki/index.php?title=Special:PrefixIndex&amp;amp;from=&amp;amp;namespace=102  Seznam všech stránek ve jmenném prostoru Dev]&lt;br /&gt;
* {{l|Dev:Translation|Informace k překladům}}&lt;br /&gt;
* {{l|Dev:Release|Procedury pro vydání další verze}}&lt;br /&gt;
* {{l|Dev:GoogleSoC|Google Summer of Code}}&lt;br /&gt;
* [http://sourceforge.net/p/synfig/mailman/synfig-devl/ Mailová konference vývojářů Synfigu]&lt;br /&gt;
* [https://github.com/synfig/synfig/issues Systém hlášení chyb pro Synfig]&lt;br /&gt;
* [http://www.synfig.org/forums/viewtopic.php?f=2&amp;amp;t=6097 Genete free stuff…]&lt;br /&gt;
* {{l|Dev:C%2B%2B11_Migration|Migrace na C++11}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=23122</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=23122"/>
				<updated>2017-03-16T16:10:37Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Developer Documentation}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&amp;lt;!-- end Page info --&amp;gt;&lt;br /&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;
= Main pages =&lt;br /&gt;
&lt;br /&gt;
* {{l|Dev:Build Instructions}}&lt;br /&gt;
* {{l|Dev:Building Documentation}}&lt;br /&gt;
* {{l|Dev:Source code}} description and workflow&lt;br /&gt;
* {{l|Dev:Action System}} : structure of the action system, good entry-point into Synfig.&lt;br /&gt;
* IDE Setup {{l|Dev:IDE_Linux|under Linux}} | {{l|Dev:IDE_Windows| under Windows}}&lt;br /&gt;
* {{l|Dev:Roadmap}}&lt;br /&gt;
* {{l|Dev:Contribute to Code}}&lt;br /&gt;
* {{l|Dev:Translation}}&lt;br /&gt;
* {{l|Dev:Wish list}}&lt;br /&gt;
* {{l|Dev:Coding_Conventions}}&lt;br /&gt;
* {{l|Dev:UI/UX Redesign}}&lt;br /&gt;
* {{l|Dev:ETL_replacement}}&lt;br /&gt;
&lt;br /&gt;
=Synfig components=&lt;br /&gt;
Synfig is divided into three main components: etl, synfig-core and synfig-studio.&lt;br /&gt;
* '''[http://download.tuxfamily.org/synfig/api/ETL/annotated.html 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;
* '''[http://download.tuxfamily.org/synfig/api/synfig-core/annotated.html Synfig-core]''' is the core/command-line (cli) renderer (&amp;quot;synfig&amp;quot;) contains the document data structure for the application: valuenodes, layers, and canvases.&lt;br /&gt;
* '''[http://download.tuxfamily.org/synfig/api/synfig-studio/annotated.html Synfig Studio]''' (&amp;quot;synfig-studio&amp;quot;) provides the gui for the application.&lt;br /&gt;
* See also: {{l|Dev:How Synfig Works}}&lt;br /&gt;
&lt;br /&gt;
= External libs =&lt;br /&gt;
== Synfig use several external libs==&lt;br /&gt;
* [https://developer.gnome.org/gtkmm-tutorial/2.24/ Gtkmm 2], some work on branchs has been started to reach [https://developer.gnome.org/gtk3/ Gtkmm 3] ([https://developer.gnome.org/gtk3/3.4/gtk-migrating-2-to-3.html Migrating 2to3])&lt;br /&gt;
* [https://developer.gnome.org/gtkmm/2.24/namespaceGdk_1_1Cairo.html Cairo] (Cairo render mode)&lt;br /&gt;
* [http://freetype.org/ Freetype2] library (Text layer rendering in software render mode)&lt;br /&gt;
* [http://libxmlplusplus.sourceforge.net/ libxmlplusplus] (to parse the project files)&lt;br /&gt;
* [http://www.boost.org/doc/libs/1_54_0/doc/html/program_options.html Boost Program Options] (synfig cli)&lt;br /&gt;
* [http://www.mltframework.org/ MLT Framework - Media Loving Toolkit] (Sound Layer)&lt;br /&gt;
* [http://www.libpng.org/pub/png/libpng.html libpng] (load and write .png files)&lt;br /&gt;
&lt;br /&gt;
==Optionally you will also need==&lt;br /&gt;
* [http://www.imagemagick.org/Magick++/ Magick++] the ImageMagick API (to build mod_magickpp, the magick++ module from synfig-core)&lt;br /&gt;
* libavcodec (to build mod_libavcodec, from synfig-core)&lt;br /&gt;
* libmng  (to build mod_mng, from synfig-core)&lt;br /&gt;
... check the {{l|Dev:Build Instructions}} page for more detailed informations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Complete coding tutorials=&lt;br /&gt;
* {{l|Dev: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 II|Part II}}. '''Note: these are highly out of date''' please note that the directory &amp;quot;gtkmm&amp;quot; has been renamed to &amp;quot;gui&amp;quot;, Panel is now know has Dock. Also, some files were moved into subfolders (take a look inside the &amp;quot;gui/docks&amp;quot; folder for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Other links=&lt;br /&gt;
* [http://download.tuxfamily.org/synfig/api/index.html ETL, Synfig, SynfigStudio Api documentation]&lt;br /&gt;
* [http://synfig.org/wiki/index.php?title=Special:PrefixIndex&amp;amp;from=&amp;amp;namespace=102  All Dev namespace pages]&lt;br /&gt;
* {{l|Dev:Translation|Translate the application}}&lt;br /&gt;
* {{l|Dev:Release|Release procedure}}&lt;br /&gt;
* {{l|Dev:GoogleSoC|Google Summer of Code}}&lt;br /&gt;
* [http://sourceforge.net/p/synfig/mailman/synfig-devl/  Synfig Developer Mailing List]&lt;br /&gt;
* [https://github.com/synfig/synfig/issues Synfig Issue Tracker]&lt;br /&gt;
* [http://www.synfig.org/forums/viewtopic.php?f=2&amp;amp;t=6097 Genete free stuff...]&lt;br /&gt;
* {{l|Dev:C%2B%2B11_Migration|C++11 Migration}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=23121</id>
		<title>Dev:Adding a Panel - Part II</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=23121"/>
				<updated>2017-03-16T16:10:12Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Adding a Panel - Part II}}&lt;br /&gt;
{{Category|Code}}&lt;br /&gt;
&lt;br /&gt;
   '''These are highly out of date''' please note that the directory &amp;quot;gtkmm&amp;quot; has been renamed to &amp;quot;gui&amp;quot;, &lt;br /&gt;
   Panel is now know has Dock. Also, some files were moved into subfolders, take a look &lt;br /&gt;
   inside the &amp;quot;gui/docks&amp;quot; folder is a good start to understand how Docks and Dockable Class work.&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
This example will show how to add widgets to the boring panel that was made in {{l|Dev:Adding a Panel - Part I|Part I}}.&lt;br /&gt;
&lt;br /&gt;
Defined in &amp;lt;gtkmm dir&amp;gt;dockable.h file, The only widgets defined are the &amp;quot;toolbar&amp;quot; and &amp;quot;toolbarbutton&amp;quot; so I will show these first. Then use some of the other widgets in the &amp;quot;canvasarea&amp;quot; and show how the toolbutton(s) can work together with the widgets in the &amp;quot;canvasarea&amp;quot; to modify, change or create items or parameters in Synfig Studio.  &lt;br /&gt;
&lt;br /&gt;
===ADDING A TOOL BAR BUTTON===&lt;br /&gt;
To use a toolbar button in your panel add this section of code to the class and function. &lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.h====&lt;br /&gt;
====   CLASS: class Dock_BoringEdit : public Dockable====&lt;br /&gt;
 &lt;br /&gt;
 void on_add_pressed();&lt;br /&gt;
&lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.cpp====&lt;br /&gt;
====FUNCTION: dock_BoringEdit::Dock_BoringEdit()====&lt;br /&gt;
The button icon can be changed to any of the stock id icons. Here we have it set to &amp;quot;gtk-add&amp;quot;.&lt;br /&gt;
The link shows the GTK name, just use &amp;quot;gtk-about&amp;quot;, &amp;quot;gtk-bold&amp;quot;, &amp;quot;gtk-apply&amp;quot; in that fashion etc..&lt;br /&gt;
 http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/namespaceGtk_1_1Stock.html#bf965c1d305e2880ac77f830477bb282&lt;br /&gt;
&lt;br /&gt;
This function can be added as many times as you want. The widget will create a drop down box if widget(s) are larger than GUI allows.&lt;br /&gt;
&lt;br /&gt;
 add_button(&lt;br /&gt;
 		Gtk::StockID(&amp;quot;gtk-add&amp;quot;),&lt;br /&gt;
 		_(&amp;quot;ADD&amp;quot;)&lt;br /&gt;
 	)-&amp;gt;signal_clicked().connect(&lt;br /&gt;
 		sigc::mem_fun(&lt;br /&gt;
 			*this,&lt;br /&gt;
 			&amp;amp;Dock_BoringEdit::on_add_pressed&lt;br /&gt;
 		)&lt;br /&gt;
 	);&lt;br /&gt;
 &lt;br /&gt;
Then add this stub function &amp;quot;on_add_pressed&amp;quot; which will do noting except be a place holder for the signal of button(s).&lt;br /&gt;
&lt;br /&gt;
 void Dock_BoringEdit::on_add_pressed()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==NOT FINISHED YET..==&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=23120</id>
		<title>Dev:Adding a Panel - Part II</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_II&amp;diff=23120"/>
				<updated>2017-03-16T16:09:52Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title:Adding a Panel - Part II}}&lt;br /&gt;
{{Category|Code}}&lt;br /&gt;
&lt;br /&gt;
   '''These are highly out of date''' please note that the directory &amp;quot;gtkmm&amp;quot; has been renamed to &amp;quot;gui&amp;quot;, &lt;br /&gt;
   Panel is now know has Dock. Also, some files were moved into subfolders, take a look &lt;br /&gt;
   inside the &amp;quot;gui/docks&amp;quot; folder is a good start to understand how Docks and Dockable Class work.&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
This example will show how to add widgets to the boring panel that was made in {{l|Dev:Adding a Panel - Part I|Part I}}.&lt;br /&gt;
&lt;br /&gt;
Defined in &amp;lt;gtkmm dir&amp;gt;dockable.h file, The only widgets defined are the &amp;quot;toolbar&amp;quot; and &amp;quot;toolbarbutton&amp;quot; so I will show these first. Then use some of the other widgets in the &amp;quot;canvasarea&amp;quot; and show how the toolbutton(s) can work together with the widgets in the &amp;quot;canvasarea&amp;quot; to modify, change or create items or parameters in Synfig Studio.  &lt;br /&gt;
&lt;br /&gt;
===ADDING A TOOL BAR BUTTON===&lt;br /&gt;
To use a toolbar button in your panel add this section of code to the class and function. &lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.h====&lt;br /&gt;
====   CLASS: class Dock_BoringEdit : public Dockable====&lt;br /&gt;
 &lt;br /&gt;
 void on_add_pressed();&lt;br /&gt;
&lt;br /&gt;
====    FILE: &amp;lt;mod dir&amp;gt;boringedit.cpp====&lt;br /&gt;
====FUNCTION: dock_BoringEdit::Dock_BoringEdit()====&lt;br /&gt;
The button icon can be changed to any of the stock id icons. Here we have it set to &amp;quot;gtk-add&amp;quot;.&lt;br /&gt;
The link shows the GTK name, just use &amp;quot;gtk-about&amp;quot;, &amp;quot;gtk-bold&amp;quot;, &amp;quot;gtk-apply&amp;quot; in that fashion etc..&lt;br /&gt;
 http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/namespaceGtk_1_1Stock.html#bf965c1d305e2880ac77f830477bb282&lt;br /&gt;
&lt;br /&gt;
This function can be added as many times as you want. The widget will create a drop down box if widget(s) are larger than GUI allows.&lt;br /&gt;
&lt;br /&gt;
 add_button(&lt;br /&gt;
 		Gtk::StockID(&amp;quot;gtk-add&amp;quot;),&lt;br /&gt;
 		_(&amp;quot;ADD&amp;quot;)&lt;br /&gt;
 	)-&amp;gt;signal_clicked().connect(&lt;br /&gt;
 		sigc::mem_fun(&lt;br /&gt;
 			*this,&lt;br /&gt;
 			&amp;amp;Dock_BoringEdit::on_add_pressed&lt;br /&gt;
 		)&lt;br /&gt;
 	);&lt;br /&gt;
 &lt;br /&gt;
Then add this stub function &amp;quot;on_add_pressed&amp;quot; which will do noting except be a place holder for the signal of button(s).&lt;br /&gt;
&lt;br /&gt;
 void Dock_BoringEdit::on_add_pressed()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==NOT FINISHED YET..==&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=23119</id>
		<title>Dev:Adding a Panel - Part I</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Panel_-_Part_I&amp;diff=23119"/>
				<updated>2017-03-16T16:09:07Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Adding a Panel - Part I}}&lt;br /&gt;
{{Category|Code}}&lt;br /&gt;
&lt;br /&gt;
   '''These are highly out of date''' please note that the directory &amp;quot;gtkmm&amp;quot; has been renamed to &amp;quot;gui&amp;quot;, &lt;br /&gt;
   Panel is now know has Dock. Also, some files were moved into subfolders, take a look &lt;br /&gt;
   inside the &amp;quot;gui/docks&amp;quot; folder is a good start to understand how Docks and Dockable Class work.&lt;br /&gt;
&lt;br /&gt;
Here's an example of how to build a module and add a basic panel option to the file menu in Synfig Studio.  For this example I will make a empty panel option and have subsequent parts adding to it.&lt;br /&gt;
&lt;br /&gt;
Section 1, &amp;quot;The Code&amp;quot; will present the entire source, uninterrupted &lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create four new files (two header (.h) files. One for the module and one for the dock, and two implementations (.cpp) files. Also one for the module and one for the dock), and edit one existing files (outside of the newly created module directory app.cpp, and the Makefile.am), all in the synfigstudio/src/gtkmm/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_MOD_BORING_H&lt;br /&gt;
 #define __SYNFIG_MOD_BORING_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;ETL/handle&amp;gt;&lt;br /&gt;
 #include &amp;quot;../module.h&amp;quot;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 class Dock_BoringEdit;&lt;br /&gt;
 class ModBoring : public Module&lt;br /&gt;
 {&lt;br /&gt;
 	friend class Dock_BoringEdit;&lt;br /&gt;
 	Dock_BoringEdit*	dock_boring_edit;&lt;br /&gt;
 &lt;br /&gt;
 protected:&lt;br /&gt;
 	virtual bool start_vfunc();&lt;br /&gt;
 	virtual bool stop_vfunc();&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
        virtual ~ModBoring() { stop(); }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/mod_boring.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file mod_boring.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;mod_boring.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::start_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
 	dock_boring_edit=new Dock_BoringEdit();&lt;br /&gt;
 	App::get_dock_manager()-&amp;gt;register_dockable(*dock_boring_edit);&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
 bool&lt;br /&gt;
 studio::ModBoring::stop_vfunc()&lt;br /&gt;
 {&lt;br /&gt;
        App::get_dock_manager()-&amp;gt;unregister_dockable(*dock_boring_edit);&lt;br /&gt;
 	delete dock_boring_edit;&lt;br /&gt;
 	return true;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.h ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.h&lt;br /&gt;
 **	\brief Template Header&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 #ifndef __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 #define __SYNFIG_STUDIO_DOCK_BORING_EDIT_H&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/adjustment.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/dialog.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/time.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../dockable.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/actiongroup.h&amp;gt;&lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 namespace synfigapp {&lt;br /&gt;
 class CanvasInterface;&lt;br /&gt;
 };&lt;br /&gt;
 namespace studio {&lt;br /&gt;
 &lt;br /&gt;
 class Dock_BoringEdit : public Dockable&lt;br /&gt;
 { 	&lt;br /&gt;
 	Glib::RefPtr&amp;lt;Gtk::ActionGroup&amp;gt; action_group;&lt;br /&gt;
 	Gtk::Table table;&lt;br /&gt;
 	sigc::signal&amp;lt;void&amp;gt; signal_changed_;&lt;br /&gt;
 public:&lt;br /&gt;
        Dock_BoringEdit();&lt;br /&gt;
        ~Dock_BoringEdit();&lt;br /&gt;
 }; // END of Dock_BoringEdit&lt;br /&gt;
 }; // END of namespace studio&lt;br /&gt;
 /* === E N D =============================================================== */&lt;br /&gt;
 #endif&lt;br /&gt;
   &lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/mod_boring/dock_boring.cpp ===&lt;br /&gt;
 &lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*!	\file dock_boringedit.cpp&lt;br /&gt;
 **	\brief Template File&lt;br /&gt;
 **&lt;br /&gt;
 **     Takes two lists of ducks coords and matches one to another blines ducks coords&lt;br /&gt;
 **     creating a shapeshift not a tween of the two blines instead of working with one&lt;br /&gt;
 **     bline.&lt;br /&gt;
 **&lt;br /&gt;
 **	$Id$&lt;br /&gt;
 **&lt;br /&gt;
 **	\legal&lt;br /&gt;
 **	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley&lt;br /&gt;
 **	Copyright (c) 2007 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is free software; you can redistribute it and/or&lt;br /&gt;
 **	modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **	published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **	the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **	This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **	but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **	General Public License for more details.&lt;br /&gt;
 **	\endlegal&lt;br /&gt;
 */&lt;br /&gt;
 /* ========================================================================= */&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #	include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #	include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 #include &amp;quot;dock_boringedit.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/frame.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/table.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;gtkmm/label.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/general.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/canvasinterface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/value_desc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfigapp/main.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;../app.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../general.h&amp;quot;&lt;br /&gt;
 #endif&lt;br /&gt;
 /* === U S I N G =========================================================== */&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace etl;&lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 using namespace studio;&lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 Dock_BoringEdit::Dock_BoringEdit():&lt;br /&gt;
 	Dockable(&amp;quot;boring_edit&amp;quot;,_(&amp;quot;Boring&amp;quot;), Gtk::StockID(&amp;quot;gtk-execute&amp;quot;)),&lt;br /&gt;
 	table(2,2,false)&lt;br /&gt;
 {&lt;br /&gt;
 Glib::ustring ui_info =&lt;br /&gt;
        &amp;quot;&amp;lt;ui&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;	&amp;lt;toolbar action='toolbar-boring'&amp;gt;&amp;quot;	&lt;br /&gt;
        &amp;quot;	&amp;lt;/toolbar&amp;gt;&amp;quot;&lt;br /&gt;
        &amp;quot;&amp;lt;/ui&amp;gt;&amp;quot;	;&lt;br /&gt;
        App::ui_manager()-&amp;gt;add_ui_from_string(ui_info);&lt;br /&gt;
 set_toolbar(*dynamic_cast&amp;lt;Gtk::Toolbar*&amp;gt;(App::ui_manager()-&amp;gt;get_widget(&amp;quot;/toolbar-boring&amp;quot;)));&lt;br /&gt;
        add(table);&lt;br /&gt;
        table.set_homogeneous(true);&lt;br /&gt;
        show_all_children();&lt;br /&gt;
 }&lt;br /&gt;
 Dock_BoringEdit::~Dock_BoringEdit()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
=== &amp;lt;gtkmm dir/app.cpp ===&lt;br /&gt;
Now we edit &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;mod_boring/mod_boring.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We add this with the others in the G L O B A L section lines:&lt;br /&gt;
&lt;br /&gt;
 etl::handle&amp;lt; studio::ModBoring &amp;gt; mod_boring_;&lt;br /&gt;
&lt;br /&gt;
(edited by Mesco64)&lt;br /&gt;
I just couldn't see the new entry under the Panels menu. In order to make it work I had to add these couple of lines to &amp;lt;gtkmm dir&amp;gt;mod_boring/app.cpp (line 1272 aprox.):&lt;br /&gt;
&lt;br /&gt;
        studio_init_cb.task(_(&amp;quot;Init ModBoring...&amp;quot;));&lt;br /&gt;
        module_list_.push_back(new ModBoring()); module_list_.back()-&amp;gt;start();&lt;br /&gt;
&lt;br /&gt;
After this change not only the newly created panel is available under Panels menu, but this way you'll find it already open on startup (the second line creates an instance of the panel)&lt;br /&gt;
Moreover, Synfig remembers about open panels and where they're placed... very nice&lt;br /&gt;
(end addition)&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;gtkmm dir&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit &amp;lt;gtkmm dir&amp;gt;Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
This will be added above the PALETTE_HH section.&lt;br /&gt;
&lt;br /&gt;
 BORING_HH = \&lt;br /&gt;
 	mod_boring/dock_boringedit.h  mod_boring/mod_boring.h&lt;br /&gt;
 BORING_CC = \&lt;br /&gt;
 	 mod_boring/dock_boringedit.cpp mod_boring/mod_boring.cpp&lt;br /&gt;
&lt;br /&gt;
This will be added to the list of items in the &amp;quot;synfigstudio_SOURCES =&amp;quot; line.&lt;br /&gt;
 $(BORING_CC) $(BORING_HH)&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
Note: This directory structures is based on the *NIX environment. &lt;br /&gt;
&lt;br /&gt;
First you will need to follow the http://www.synfig.org/Build_Instructions.&lt;br /&gt;
Then you will need to create a directory in synfigstudio/src/gtkmm/ called mod_boring.&lt;br /&gt;
Next you will copy the above four files into that directory.&lt;br /&gt;
After That you will need to modify the two files app.cpp and Makefile.am as stated above.&lt;br /&gt;
You will have to run &amp;quot;autoreconf --install --force&amp;quot; and &amp;quot;./configure&amp;quot; once again to sync the makefiles up  with your changes. This is only done if you modify the Makefile.am&lt;br /&gt;
 &lt;br /&gt;
== The Location ==&lt;br /&gt;
&lt;br /&gt;
{{l|Image:adding_a_panel_I_1.jpg|300px}}&lt;br /&gt;
&lt;br /&gt;
After you install the newly compiled Synfigstudio, run the binary. From the main Synfigstudio interface choose the &amp;quot;File&amp;quot; option and select &amp;quot;panels&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:adding_a_panel_I_2.jpg|150px}}&lt;br /&gt;
&lt;br /&gt;
From here your new panel should be located in this list of items. Select it. An empty tab window, based on the default synfigstudio layout should show up with the default exec icon. The only thing you can do at this time is drag and drop it into another one of the panels. To try this choose one or more and drag it onto the boring panel. They should become one. This gives you a basic dock widget to work with.&lt;br /&gt;
&lt;br /&gt;
{{l|Image:adding_a_panel_I_3.jpg|150px}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Widgets ==&lt;br /&gt;
&lt;br /&gt;
This will be described in the next part of adding a panel.&lt;br /&gt;
&lt;br /&gt;
 {{l|Dev:Adding a Panel - Part II | Adding a Panel Part II}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Layer&amp;diff=23118</id>
		<title>Dev:Adding a Layer</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Adding_a_Layer&amp;diff=23118"/>
				<updated>2017-03-16T16:07:05Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Adding a Layer}}&lt;br /&gt;
{{Category|Code}}&lt;br /&gt;
Here's an example of how to add a simple layer to an existing module.  For this example I picked something very easy: a layer which removes all colour from the layers beneath it.  I will call this creation &amp;quot;Desaturate&amp;quot;, and add it to the mod_filter module.&lt;br /&gt;
&lt;br /&gt;
Section 1, [[Dev:Adding_a_Layer#The Code|&amp;quot;The Code&amp;quot;]] will present the entire source, uninterrupted, and section 2, [[Dev:Adding_a_Layer#The Description|&amp;quot;The Description&amp;quot;]] will break it up into small chunks and discuss it.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
We need to create two new files (one header (.h) file, and one implementation (.cpp) file), and edit two existing files (the module's main.cpp, and the Makefile.am), all in the synfig-core/src/modules/mod_filter/ folder:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;module&amp;gt;/desaturate.h ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*! \file desaturate.h&lt;br /&gt;
 **  \brief Header file for implementation of the &amp;quot;Desaturate&amp;quot; layer&lt;br /&gt;
 **&lt;br /&gt;
 **  \legal&lt;br /&gt;
 **  Copyright (c) 2008 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **  This package is free software; you can redistribute it and/or&lt;br /&gt;
 **  modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **  published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **  the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **  This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **  General Public License for more details.&lt;br /&gt;
 **  \endlegal&lt;br /&gt;
 ** ========================================================================= */&lt;br /&gt;
 &lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 &lt;br /&gt;
 #ifndef __SYNFIG_DESATURATE_H&lt;br /&gt;
 #define __SYNFIG_DESATURATE_H&lt;br /&gt;
 &lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;synfig/layer.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 &lt;br /&gt;
 class Desaturate : public synfig::Layer&lt;br /&gt;
 {&lt;br /&gt;
     SYNFIG_LAYER_MODULE_EXT&lt;br /&gt;
 public:&lt;br /&gt;
     virtual synfig::ValueBase get_param(const synfig::String&amp;amp;)const;&lt;br /&gt;
     virtual Vocab get_param_vocab()const;&lt;br /&gt;
     virtual synfig::Color get_color(synfig::Context, const synfig::Point&amp;amp;)const;&lt;br /&gt;
     virtual bool accelerated_render(synfig::Context,synfig::Surface*,int,&lt;br /&gt;
                                     const synfig::RendDesc &amp;amp;, synfig::ProgressCallback *)const;&lt;br /&gt;
 }; // END of class Desaturate&lt;br /&gt;
 &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;module&amp;gt;/desaturate.cpp ===&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*! \file desaturate.cpp&lt;br /&gt;
 **  \brief Implementation of the &amp;quot;Desaturate&amp;quot; layer&lt;br /&gt;
 **&lt;br /&gt;
 **  \legal&lt;br /&gt;
 **  Copyright (c) 2008 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **  This package is free software; you can redistribute it and/or&lt;br /&gt;
 **  modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **  published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **  the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **  This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **  General Public License for more details.&lt;br /&gt;
 **  \endlegal&lt;br /&gt;
 ** ========================================================================= */&lt;br /&gt;
 &lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 &lt;br /&gt;
 #ifdef USING_PCH&lt;br /&gt;
 #   include &amp;quot;pch.h&amp;quot;&lt;br /&gt;
 #else&lt;br /&gt;
 #ifdef HAVE_CONFIG_H&lt;br /&gt;
 #   include &amp;lt;config.h&amp;gt;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;desaturate.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;synfig/context.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/paramdesc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/renddesc.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/surface.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;synfig/value.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 using namespace synfig;&lt;br /&gt;
 &lt;br /&gt;
 /* === G L O B A L S ======================================================= */&lt;br /&gt;
 &lt;br /&gt;
 SYNFIG_LAYER_INIT(Desaturate);&lt;br /&gt;
 SYNFIG_LAYER_SET_NAME(Desaturate,&amp;quot;desaturate&amp;quot;);&lt;br /&gt;
 SYNFIG_LAYER_SET_LOCAL_NAME(Desaturate,N_(&amp;quot;Desaturate&amp;quot;));&lt;br /&gt;
 SYNFIG_LAYER_SET_CATEGORY(Desaturate,N_(&amp;quot;Filters&amp;quot;));&lt;br /&gt;
 SYNFIG_LAYER_SET_VERSION(Desaturate,&amp;quot;0.1&amp;quot;);&lt;br /&gt;
 SYNFIG_LAYER_SET_CVS_ID(Desaturate,&amp;quot;$Id$&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 /* === M E T H O D S ======================================================= */&lt;br /&gt;
 &lt;br /&gt;
 ValueBase&lt;br /&gt;
 Desaturate::get_param(const String &amp;amp;param)const&lt;br /&gt;
 {&lt;br /&gt;
     EXPORT_NAME();&lt;br /&gt;
     EXPORT_VERSION();&lt;br /&gt;
 &lt;br /&gt;
     return ValueBase();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 Layer::Vocab&lt;br /&gt;
 Desaturate::get_param_vocab()const&lt;br /&gt;
 {&lt;br /&gt;
     return Layer::Vocab();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 Color&lt;br /&gt;
 Desaturate::get_color(Context context, const Point &amp;amp;getpos)const&lt;br /&gt;
 {&lt;br /&gt;
     Color tmp(context.get_color(getpos));&lt;br /&gt;
     return tmp.set_s(0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 bool&lt;br /&gt;
 Desaturate::accelerated_render(Context              context,&lt;br /&gt;
                                Surface*             surface,&lt;br /&gt;
                                int                  quality,&lt;br /&gt;
                                const RendDesc&amp;amp;      renddesc,&lt;br /&gt;
                                ProgressCallback*    cb&lt;br /&gt;
                               )const&lt;br /&gt;
 {&lt;br /&gt;
     SuperCallback supercb(cb,0,9500,10000);&lt;br /&gt;
 &lt;br /&gt;
     // render the context onto the given surface&lt;br /&gt;
     if(!context.accelerated_render(surface,quality,renddesc,&amp;amp;supercb))&lt;br /&gt;
         return false;&lt;br /&gt;
 &lt;br /&gt;
     // set the saturation of each pixel to zero&lt;br /&gt;
     int x,y;&lt;br /&gt;
     Surface::pen pen(surface-&amp;gt;begin());&lt;br /&gt;
     for(y=0;y&amp;lt;renddesc.get_h();y++,pen.inc_y(),pen.dec_x(x))&lt;br /&gt;
         for(x=0;x&amp;lt;renddesc.get_w();x++,pen.inc_x())&lt;br /&gt;
         {&lt;br /&gt;
             Color tmp(pen.get_value());&lt;br /&gt;
             pen.put_value(tmp.set_s(0));&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
     // mark our progress as finished&lt;br /&gt;
     if(cb &amp;amp;&amp;amp; !cb-&amp;gt;amount_complete(10000,10000)) return false;&lt;br /&gt;
     return true;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;module&amp;gt;/Makefile.am ===&lt;br /&gt;
&lt;br /&gt;
Then I need to edit modules/mod_filter/Makefile.am and add these two files to the list of source files (maintain alphabetical order please):&lt;br /&gt;
&lt;br /&gt;
 libmod_filter_la_SOURCES = blur.cpp blur.h colorcorrect.cpp colorcorrect.h desaturate.cpp desaturate.h halftone2.cpp halftone2.h lumakey.cpp lumakey.h radialblur.cpp radialblur.h main.cpp halftone.cpp halftone.h halftone3.cpp halftone3.h&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;module&amp;gt;/main.cpp ===&lt;br /&gt;
&lt;br /&gt;
And finally we edit modules/mod_filter/main.cpp.  Add this with the other #include lines:&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;desaturate.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and add this with the other LAYER(...) lines:&lt;br /&gt;
&lt;br /&gt;
 LAYER(Desaturate)&lt;br /&gt;
&lt;br /&gt;
then rebuild (including the autoreconf, ./configure, etc., to get the new files added to the Makefile) and we're done.&lt;br /&gt;
&lt;br /&gt;
== The Description ==&lt;br /&gt;
&lt;br /&gt;
I'll break the header up into sections, describing each part:&lt;br /&gt;
&lt;br /&gt;
=== The initial comment ===&lt;br /&gt;
&lt;br /&gt;
This contains basic documentation and legal stuff.  Just copy, paste, and edit from another file.&lt;br /&gt;
&lt;br /&gt;
 /* === S Y N F I G ========================================================= */&lt;br /&gt;
 /*! \file desaturate.h&lt;br /&gt;
 **  \brief Header file for implementation of the &amp;quot;Desaturate&amp;quot; layer&lt;br /&gt;
 **&lt;br /&gt;
 **  \legal&lt;br /&gt;
 **  Copyright (c) 2008 Chris Moore&lt;br /&gt;
 **&lt;br /&gt;
 **  This package is free software; you can redistribute it and/or&lt;br /&gt;
 **  modify it under the terms of the GNU General Public License as&lt;br /&gt;
 **  published by the Free Software Foundation; either version 2 of&lt;br /&gt;
 **  the License, or (at your option) any later version.&lt;br /&gt;
 **&lt;br /&gt;
 **  This package is distributed in the hope that it will be useful,&lt;br /&gt;
 **  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
 **  General Public License for more details.&lt;br /&gt;
 **  \endlegal&lt;br /&gt;
 ** ========================================================================= */&lt;br /&gt;
 &lt;br /&gt;
 /* === S T A R T =========================================================== */&lt;br /&gt;
 &lt;br /&gt;
=== Protection against Multiple Inclusion ===&lt;br /&gt;
&lt;br /&gt;
This #ifndef is a standard way to make sure the header is only compiled once, even if it happens to be included multiple times.  Use a unique symbol, based on the file name.&lt;br /&gt;
&lt;br /&gt;
 #ifndef __SYNFIG_DESATURATE_H&lt;br /&gt;
 #define __SYNFIG_DESATURATE_H&lt;br /&gt;
&lt;br /&gt;
=== Headers ===&lt;br /&gt;
&lt;br /&gt;
Include files which are needed.  We're not doing anything much, so all we need to include is layer.h, which defines the Layer class that all layers inherit from.&lt;br /&gt;
&lt;br /&gt;
 /* === H E A D E R S ======================================================= */&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;synfig/layer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Class ===&lt;br /&gt;
&lt;br /&gt;
Define the class which implements our layer.  We inherit from the Layer class.  For this simple example we only define four methods.  The rest will be inherited from the Layer class.&lt;br /&gt;
 &lt;br /&gt;
 /* === C L A S S E S &amp;amp; S T R U C T S ======================================= */&lt;br /&gt;
 &lt;br /&gt;
 class Desaturate : public synfig::Layer&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
=== SYNFIG_LAYER_MODULE_EXT ===&lt;br /&gt;
&lt;br /&gt;
This is standard.  Just use it for every layer.  It declares members to hold the layer's name, version, category, etc., and also declares a method to create() the layer.  See synfig-core/src/synfig/layer.h for its definition.&lt;br /&gt;
&lt;br /&gt;
     SYNFIG_LAYER_MODULE_EXT&lt;br /&gt;
&lt;br /&gt;
=== The Methods ===&lt;br /&gt;
&lt;br /&gt;
Then we declare the four methods we're going to implement.&lt;br /&gt;
&lt;br /&gt;
==== get_param ====&lt;br /&gt;
First &amp;quot;get_param()&amp;quot;.  Since our layer isn't going to have any parameters, all it needs to do is make the layer's name and &lt;br /&gt;
version available.&lt;br /&gt;
&lt;br /&gt;
 public:&lt;br /&gt;
     virtual synfig::ValueBase get_param(const synfig::String&amp;amp;)const;&lt;br /&gt;
&lt;br /&gt;
==== get_param_vocab ====&lt;br /&gt;
&lt;br /&gt;
This one returns a list of the layer's parameters.  We have no parameters, so we return an empty list.&lt;br /&gt;
&lt;br /&gt;
     virtual Vocab get_param_vocab()const;&lt;br /&gt;
&lt;br /&gt;
==== get_color ====&lt;br /&gt;
&lt;br /&gt;
This one is used to find the color of a single given pixel.  It's used by the &amp;quot;Info&amp;quot; panel to display the R,G,B values as you mouse over the canvas.  It's also used if our layer has any transformation layers over the top of it.  The absence of a working implementation of this method in the &amp;quot;Text&amp;quot; layer is why distorting text currently causes render artifacts.&lt;br /&gt;
&lt;br /&gt;
     virtual synfig::Color get_color(synfig::Context, const synfig::Point&amp;amp;)const;&lt;br /&gt;
&lt;br /&gt;
==== accelerated_render ====&lt;br /&gt;
&lt;br /&gt;
This one is used to render a large rectangular piece of our layer in one go.  It typically calls the accelerated_render() method for the layers under our layer (the 'context') and then modifies the results of that call in some way:&lt;br /&gt;
&lt;br /&gt;
     virtual bool accelerated_render(synfig::Context,synfig::Surface*,int,&lt;br /&gt;
                                     const synfig::RendDesc &amp;amp;, synfig::ProgressCallback *)const;&lt;br /&gt;
 }; // END of class Desaturate&lt;br /&gt;
 &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
I won't reproduce the whole of the .cpp file here and go through it.  The only two methods which are really interesting here are get_color() and accelerated_render():&lt;br /&gt;
&lt;br /&gt;
Note the &amp;quot;G L O B A L S&amp;quot; section of the code defines the layer's name (lower case, used in .sif files), its &amp;quot;local&amp;quot; name (this is the string which is translated, and is capitalized), which category the layer belongs in (this determines where it appears in the 'new layer' menu), the layer's version (0.1 for new layers), etc.&lt;br /&gt;
&lt;br /&gt;
=== get_color() ===&lt;br /&gt;
&lt;br /&gt;
Given the context, and a point, get_color() should return the color of the pixel at the given point.  The context has a get_color() method, so we use that to look up the color of the pixel before our layer has had a chance to affect it, and store that in 'tmp'.  Then we set its saturation to zero using [http://synfig.org/api/synfig/classsynfig_1_1Color.html#b62c2069fc43baa97fba17b33ff4d32d color.set_s()] and return it.  That's all:&lt;br /&gt;
&lt;br /&gt;
 Color&lt;br /&gt;
 Desaturate::get_color(Context context, const Point &amp;amp;getpos)const&lt;br /&gt;
 {&lt;br /&gt;
     Color tmp(context.get_color(getpos));&lt;br /&gt;
     return tmp.set_s(0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== accelerated_render() ===&lt;br /&gt;
&lt;br /&gt;
We accept five arguments:&lt;br /&gt;
&lt;br /&gt;
The context (ie. the layers under us):&lt;br /&gt;
&lt;br /&gt;
 bool&lt;br /&gt;
 Desaturate::accelerated_render(Context              context,&lt;br /&gt;
&lt;br /&gt;
The surface we are supposed to write our results onto:&lt;br /&gt;
&lt;br /&gt;
                                Surface*             surface,&lt;br /&gt;
&lt;br /&gt;
The quality at which we are to render:&lt;br /&gt;
&lt;br /&gt;
                                int                  quality,&lt;br /&gt;
&lt;br /&gt;
A description of the area to render - width, height, top left corner, resolution, etc, etc:&lt;br /&gt;
&lt;br /&gt;
                                const RendDesc&amp;amp;      renddesc,&lt;br /&gt;
&lt;br /&gt;
An object which is used to monitor our progress.  It's used for calculating the expected remaining time while rendering:&lt;br /&gt;
&lt;br /&gt;
                                ProgressCallback*    cb&lt;br /&gt;
                               )const&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
I didn't get around to looking at the way the 'cb' ProgressCallback is used.  But this code is in pretty much all layers:&lt;br /&gt;
&lt;br /&gt;
     SuperCallback supercb(cb,0,9500,10000);&lt;br /&gt;
&lt;br /&gt;
We call accelerated_render() on the context, to render the layers under us.  We just pass on the arguments we received for surface, quality and renddesc, along with the new callback we just made.  If that render fails, then we fail too:&lt;br /&gt;
 &lt;br /&gt;
     // render the context onto the given surface&lt;br /&gt;
     if(!context.accelerated_render(surface,quality,renddesc,&amp;amp;supercb))&lt;br /&gt;
         return false;&lt;br /&gt;
&lt;br /&gt;
Now we do the real work of this layer.  We define integers to do the looping, and a 'pen' which we can walk over the rectangle we're working on:&lt;br /&gt;
&lt;br /&gt;
     // set the saturation of each pixel to zero&lt;br /&gt;
     int x,y;&lt;br /&gt;
     Surface::pen pen(surface-&amp;gt;begin());&lt;br /&gt;
&lt;br /&gt;
We loop through every pixel on every row of the rectangle we're working on.  The 'renddesc' gives us the width and height of the rectangle.  The pen has methods inc_x(), dec_x(), inc_y(), dec_y() which move it a given amount:&lt;br /&gt;
&lt;br /&gt;
     for(y=0;y&amp;lt;renddesc.get_h();y++,pen.inc_y(),pen.dec_x(x))&lt;br /&gt;
         for(x=0;x&amp;lt;renddesc.get_w();x++,pen.inc_x())&lt;br /&gt;
&lt;br /&gt;
At each pixel, we get the color as rendered from the context, set its saturation to zero, and write it back to the same surface:&lt;br /&gt;
&lt;br /&gt;
         {&lt;br /&gt;
             Color tmp(pen.get_value());&lt;br /&gt;
             pen.put_value(tmp.set_s(0));&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
And that's about it.&lt;br /&gt;
 &lt;br /&gt;
     // mark our progress as finished&lt;br /&gt;
     if(cb &amp;amp;&amp;amp; !cb-&amp;gt;amount_complete(10000,10000)) return false;&lt;br /&gt;
     return true;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Adding Parameters ==&lt;br /&gt;
&lt;br /&gt;
Suppose now we want to add a parameter to the layer.  Let's add a Real valued parameter called &amp;quot;scale&amp;quot;.  It will let the user set a value to scale the saturation by.  It will default to zero, meaning to scale the saturation down to zero.  When adding parameters, it's a good idea to set the default value to its effective previous value, so that old .sif files will continue to be rendered the same as before.&lt;br /&gt;
&lt;br /&gt;
To add this parameter, we need to do the following:&lt;br /&gt;
&lt;br /&gt;
=== desaturate.h ===&lt;br /&gt;
&lt;br /&gt;
In the desaturate.h header file, include real.h (the parameter is Real valued, so we need the typedef for Real):&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;synfig/real.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a private member to the class, type Real:&lt;br /&gt;
&lt;br /&gt;
 private:&lt;br /&gt;
     synfig::Real scale;&lt;br /&gt;
&lt;br /&gt;
Declare a default constructor.  This is where we will set the default value of the new parameter:&lt;br /&gt;
&lt;br /&gt;
     Desaturate();&lt;br /&gt;
&lt;br /&gt;
Declare set_param().  This will allow our layer to accept new values for the parameter:&lt;br /&gt;
&lt;br /&gt;
     virtual bool set_param(const synfig::String&amp;amp;, const synfig::ValueBase&amp;amp;);&lt;br /&gt;
&lt;br /&gt;
=== desaturate.cpp ===&lt;br /&gt;
&lt;br /&gt;
In the implementation file, we need to:&lt;br /&gt;
&lt;br /&gt;
write a simple default constructor, which initializes the value of 'scale' to zero:&lt;br /&gt;
&lt;br /&gt;
 Desaturate::Desaturate():&lt;br /&gt;
     scale(0)&lt;br /&gt;
 {}&lt;br /&gt;
&lt;br /&gt;
Add a line to supply the value of 'scale' in get_param():&lt;br /&gt;
&lt;br /&gt;
 ValueBase&lt;br /&gt;
 Desaturate::get_param(const String &amp;amp;param)const&lt;br /&gt;
 {&lt;br /&gt;
     EXPORT_NAME();&lt;br /&gt;
     EXPORT_VERSION();&lt;br /&gt;
 &lt;br /&gt;
     EXPORT(scale);&lt;br /&gt;
 &lt;br /&gt;
     return ValueBase();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Add new method set_param():&lt;br /&gt;
&lt;br /&gt;
 bool&lt;br /&gt;
 Desaturate::set_param(const String &amp;amp;param, const ValueBase &amp;amp;value)&lt;br /&gt;
 {&lt;br /&gt;
      IMPORT(scale);&lt;br /&gt;
 &lt;br /&gt;
      return false;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Replace the definition of get_param_vocab():&lt;br /&gt;
&lt;br /&gt;
 Layer::Vocab&lt;br /&gt;
 Desaturate::get_param_vocab()const&lt;br /&gt;
 {&lt;br /&gt;
     Layer::Vocab ret;&lt;br /&gt;
 &lt;br /&gt;
     ret.push_back(ParamDesc(&amp;quot;scale&amp;quot;)&lt;br /&gt;
        .set_local_name(_(&amp;quot;Scale&amp;quot;))&lt;br /&gt;
        .set_description(_(&amp;quot;Factor to scale the saturation by&amp;quot;))&lt;br /&gt;
     );&lt;br /&gt;
 &lt;br /&gt;
     return ret;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
And change the two places where the saturation is set.  In get_color():&lt;br /&gt;
&lt;br /&gt;
     return tmp.set_s(scale * tmp.get_s());&lt;br /&gt;
&lt;br /&gt;
And in accelerated_render():&lt;br /&gt;
&lt;br /&gt;
             pen.put_value(tmp.set_s(scale * tmp.get_s()));&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

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

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:ETL_replacement&amp;diff=23116</id>
		<title>Dev:ETL replacement</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:ETL_replacement&amp;diff=23116"/>
				<updated>2017-03-16T16:04:22Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|ETL replacement}}&lt;br /&gt;
At least the majority of the functionality implemented in the ETL is already implemented in the boost libraries, which have a very high quality, are broadly used, peer-reviewed and well tested. This effort is to replace the ETL with boost libraries, achieving simplified code with a more robust base.&lt;br /&gt;
&lt;br /&gt;
The replacement will be done in the following order:&lt;br /&gt;
# command-line interface (ONGOING)&lt;br /&gt;
# synfig modules&lt;br /&gt;
# synfig library&lt;br /&gt;
# synfig studio library&lt;br /&gt;
# synfig studio&lt;br /&gt;
Along the way I can most probably simplify/improve some stuff and make synfig's code cleaner.&lt;br /&gt;
&lt;br /&gt;
Follow the progress in [https://github.com/eldruin/synfig/tree/eldruin_etl_replacement this branch]&lt;br /&gt;
&lt;br /&gt;
[http://www.synfig.org/issues/thebuggenie/synfig/issues/723 Bug tracker issue]&lt;br /&gt;
&lt;br /&gt;
Here is a list of functions of the ETL and their replacement:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ETL&lt;br /&gt;
! Boost equivalent&lt;br /&gt;
|-&lt;br /&gt;
| etl::filename_extension&lt;br /&gt;
| boost::filesystem::path::extension()&lt;br /&gt;
|-&lt;br /&gt;
| etl::filename_sans_extension&lt;br /&gt;
| boost::filesystem::path: combination of parent_path(), stem() and extension()&lt;br /&gt;
|-&lt;br /&gt;
| etl::basename&lt;br /&gt;
| boost::filesystem::path: combination of stem() and extension()&lt;br /&gt;
|-&lt;br /&gt;
| etl::dirname&lt;br /&gt;
| boost::filesystem::path::parent_path()&lt;br /&gt;
|-&lt;br /&gt;
| etl::clock&lt;br /&gt;
| boost::chrono::system_clock or high_resolution_clock&lt;br /&gt;
|-&lt;br /&gt;
| etl::strprintf&lt;br /&gt;
| boost::format()&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:UI/UX_Redesign&amp;diff=23115</id>
		<title>Dev:UI/UX Redesign</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:UI/UX_Redesign&amp;diff=23115"/>
				<updated>2017-03-16T16:03:28Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|UI/UX Redesign}}&lt;br /&gt;
[[File:Synfig_Studio_UI_n_UX.png]]&lt;br /&gt;
&lt;br /&gt;
== Bran New Synfig Studio ==&lt;br /&gt;
It is very important that the UI of Synfig Studio should be user friendly.So,that it provided rich user experience to it's users.&lt;br /&gt;
User experience has been referred to as the overall experience the end user has with the company,it's products and services and how they feel about using the system.User experience(UX)not only emphasizes on important,effective and meaningful aspects of human computer interaction and ownership of product but also involves a persons point of view on the aspects such as efficiency of the system and ease of use.UX is subjective to change as it is based on individuals thoughts and feelings about the interface he is interacting with and the overall system.&lt;br /&gt;
&lt;br /&gt;
Resource:&lt;br /&gt;
*[http://www.techved.com/uae/ux/defined-firm The concept of UX explained by Techved]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Coding_Conventions&amp;diff=23114</id>
		<title>Dev:Coding Conventions</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Coding_Conventions&amp;diff=23114"/>
				<updated>2017-03-16T16:02:49Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Coding Convetions}}&lt;br /&gt;
==Introduction==&lt;br /&gt;
Here are described the rules or conventions to make the Synfig code better from the point of view of style. The goal is to improve readability and make easier the understanding of the code in any editor and for new potential coders.&lt;br /&gt;
&lt;br /&gt;
The coding rules established by [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml this link] are good references to follow in case of doubt.&lt;br /&gt;
&lt;br /&gt;
Those rulers are not absolutely mandatory but the Synfig Team reserves the right of reject patches that doesn't follow some minimums. &lt;br /&gt;
&lt;br /&gt;
== Templates == &lt;br /&gt;
In each section (etl, synfig-core, synfig-studio) there is a template file. Use it to create a new file. We use .cpp for implementation and .h for header files.&lt;br /&gt;
We usually keep the copyrights of Robert and Adrian when the new file is one version of a similar existing one and should add the copyright of the contributor.&lt;br /&gt;
&lt;br /&gt;
== Names ==&lt;br /&gt;
&lt;br /&gt;
* File names: Filenames should be all lowercase and can include underscores (_). Some further rules may be defined for specific file types (icons, helper files, etc.).&lt;br /&gt;
* Type names: Type names start with a capital letter and have a capital letter for each new word, with no underscores.&lt;br /&gt;
* Variable names: Variable names are all lowercase, with underscores between words. Class member variables have trailing underscores.&lt;br /&gt;
* Function names: --define me--&lt;br /&gt;
* Enumerators names: Use capital letters and always use a prefix to identify them all.&lt;br /&gt;
&lt;br /&gt;
== Comments and Documentation ==&lt;br /&gt;
&lt;br /&gt;
* You can use either the // or the /* */ syntax; however, // is much more common. Be consistent with how you comment and what style you use where. &lt;br /&gt;
* Please try to document in this order: header file (.h) top description, class descriptions, member descriptions, procedures description. If something else is needed to document, then do it in the implementation file (.cpp)&lt;br /&gt;
* When possible document ''before'' the line involved. Documenting in the same line is not recommended.&lt;br /&gt;
&lt;br /&gt;
== Formatting == &lt;br /&gt;
&lt;br /&gt;
* Use tabs or spaces on the indentation but once selected keep it consistent in all the document. Use only spaces on alignment.&lt;br /&gt;
* Try to avoid longer lines than 80 characters. If needed break the line using back slash character (\)&lt;br /&gt;
* Function implementation: &lt;br /&gt;
** Place the returned value in the previous line. &lt;br /&gt;
** Place the two curly brackets in the first column and the implementation one indentation right.&lt;br /&gt;
* Conditionals, loops, and any thing that needs two curly brackets: Place the curly brackets in the same column and the inside code one indentation right.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Wish_list/cs&amp;diff=23113</id>
		<title>Dev:Wish list/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Wish_list/cs&amp;diff=23113"/>
				<updated>2017-03-16T16:01:53Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Created page with &amp;quot;{{Title|Seznam přání uživatelů}} Všechny položky byly přesunuty do systému pro hlášení chyb - http://www.synfig.org/issues/thebuggenie/synfig&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Seznam přání uživatelů}}&lt;br /&gt;
Všechny položky byly přesunuty do systému pro hlášení chyb - http://www.synfig.org/issues/thebuggenie/synfig&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=23112</id>
		<title>Dev:Wish list</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Wish_list&amp;diff=23112"/>
				<updated>2017-03-16T15:57:50Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Wish list}}&lt;br /&gt;
All items are transfered to the bugtracker - http://www.synfig.org/issues/thebuggenie/synfig&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Roadmap&amp;diff=23111</id>
		<title>Dev:Roadmap</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Roadmap&amp;diff=23111"/>
				<updated>2017-03-16T15:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Roadmap}}&lt;br /&gt;
== New rendering engine (opengl based) ==&lt;br /&gt;
&lt;br /&gt;
[[File:Roadmap-NewEngine.png]]&lt;br /&gt;
&lt;br /&gt;
== The list of features to be polished for 1.0 ==&lt;br /&gt;
* Single-WIndow and Gtk3 UI&lt;br /&gt;
* Group transformations widget&lt;br /&gt;
* Bones / Cutout tools&lt;br /&gt;
* Bone distortion&lt;br /&gt;
* Sound layer&lt;br /&gt;
&lt;br /&gt;
=== Current Status of polishing ===&lt;br /&gt;
* {{L|Dev:Roadmap/Bones|Bones}} (''18/26 done'')&lt;br /&gt;
* {{L|Dev:Roadmap/Frame-by-frame animation (bitmap)|Frame-by-frame animation (bitmap)}} (''10/26 done'')&lt;br /&gt;
* {{L|Dev:Roadmap/UI|UI improvement}} (''4/7 done'')&lt;br /&gt;
* {{L|Dev:Roadmap/Speed|Rendering speed optimization}} (''3/11 done'')&lt;br /&gt;
* {{L|Dev:Roadmap/SFG Format|SFG Format}} &lt;br /&gt;
* {{L|Dev:Roadmap/Sound|Sound support}} (''6/10 done'')&lt;br /&gt;
* Video import&lt;br /&gt;
* Vector drawing tools&lt;br /&gt;
* Scripting (python) (''minimal support ready : scripts can be called from an entry menu'')&lt;br /&gt;
* SWF export&lt;br /&gt;
&lt;br /&gt;
Take also a look to our [http://www.synfig.org/issues/thebuggenie/synfig/roadmap issue tracker roadmap]&lt;br /&gt;
&lt;br /&gt;
Nota : The following list of features will NOT be subject for polishing for 1.0, but will be available as &amp;quot;experimental features&amp;quot;:&lt;br /&gt;
* SFG container&lt;br /&gt;
* MyPaint integration&lt;br /&gt;
* Frame-by-frame animation tools&lt;br /&gt;
(we will focus on them after 1.0 release)&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=23110</id>
		<title>Dev:Action System</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Action_System&amp;diff=23110"/>
				<updated>2017-03-16T15:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Action System}}&lt;br /&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 spline (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 handle (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;
===get_param(const synfig::String&amp;amp; name, Action::Param &amp;amp;param)===&lt;br /&gt;
&lt;br /&gt;
Typical implementation:&lt;br /&gt;
* Set the value of the parameter from the action point of vue&lt;br /&gt;
&lt;br /&gt;
The action is used in action like renameValueNode / renameLayer ... all case when a previous value was present.&lt;br /&gt;
To use get_param you will need Action::set_value_provided() property during the parameter description in {{l|Dev:Action_System#get_param_vocab()|get_param_vocab()}} implemenation.&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>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Source_code&amp;diff=23109</id>
		<title>Dev:Source code</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Source_code&amp;diff=23109"/>
				<updated>2017-03-16T15:55:04Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Source code}}&lt;br /&gt;
{{Category|Code}}&lt;br /&gt;
{{Category|Permalink}}&lt;br /&gt;
&lt;br /&gt;
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide a way to get the code: &lt;br /&gt;
&lt;br /&gt;
*Using git (one repository)&lt;br /&gt;
&lt;br /&gt;
Once you grab the code, you will need to follow the {{l|Dev:Build Instructions|build instructions}}.&lt;br /&gt;
&lt;br /&gt;
Commit notifications to master branch are &amp;lt;strike&amp;gt;sent to [http://cia.vc/stats/project/synfig CIA] and&amp;lt;/strike&amp;gt; shown up in the {{l|Contact|IRC channel}}.&lt;br /&gt;
&lt;br /&gt;
== GIT repository at Github==&lt;br /&gt;
&lt;br /&gt;
Anonymous access: &lt;br /&gt;
&lt;br /&gt;
  git clone git://github.com/synfig/synfig.git &lt;br /&gt;
People with commit access should use this command instead:&lt;br /&gt;
&lt;br /&gt;
  git clone git@github.com:synfig/synfig.git&lt;br /&gt;
&lt;br /&gt;
Or this one if you prefer https protocol:&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/synfig/synfig.git&lt;br /&gt;
&lt;br /&gt;
You can also check out the [https://github.com/synfig/synfig web interface] to that repository.&lt;br /&gt;
&lt;br /&gt;
Check out [https://help.github.com Github help page] for further references.&lt;br /&gt;
&lt;br /&gt;
=Proposed git workflow=&lt;br /&gt;
&lt;br /&gt;
* Consider the '''master''' branch the stable one. &lt;br /&gt;
* Each coder should have a '''username_master''' branch where all the small changes are done. &lt;br /&gt;
* Once the '''username_master''' branch is considered stable it can be rebased/merged to '''master'''.&lt;br /&gt;
* Work on new non-trivial features/fixes on '''username_feature''' branches.&lt;br /&gt;
* Once the '''username_feature''' branch is considered stable it can be rebased/merged to '''master'''.&lt;br /&gt;
* Obviously commit trivial fixes straight to the '''master'''.&lt;br /&gt;
* If it is possible, rebase &amp;amp; rework branches to keep history more sane, linear and atomic.&lt;br /&gt;
* Releases are tagged according to following criteria:&lt;br /&gt;
** If the release consist on a few trivial set of features or bug fixes then increase the third numeration level: 0.64.0 -&amp;gt; 0.64.1&lt;br /&gt;
** If the release consist on a set of important features and/or includes non backward compatible file format, then increase the second level numeration: 0.64.1 -&amp;gt; 0.65.0&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
While you are browsing the code, you may wish to refer to these links:&lt;br /&gt;
&lt;br /&gt;
* [http://www.synfig.org/issues/thebuggenie/synfig Bug tracker]&lt;br /&gt;
* [http://sourceforge.net/p/synfig/mailman/synfig-devl/ Synfig Dev mailing list]&lt;br /&gt;
==Code overview==&lt;br /&gt;
* [http://download.tuxfamily.org/synfig/api/index.html API documentation]&lt;br /&gt;
* {{l|Dev:Source Outline|source code outline}}&lt;br /&gt;
* {{l|Dev:Source Glossary|source code glossary}}&lt;br /&gt;
* {{l|Dev:Layers|Mapping between layer types, classes and .cpp files}}&lt;br /&gt;
* {{l|Dev:class_ValueNode|ValueNode types}}&lt;br /&gt;
* {{l|Dev:BlendMethods|Blend Method enumeration values}}&lt;br /&gt;
==Others==&lt;br /&gt;
* {{l|Dev:ETL_make_check|ETL make check failures}}&lt;br /&gt;
* {{l|Interesting Readings}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Proposed set of git repositories (this section is outdated):&lt;br /&gt;
&lt;br /&gt;
* admin.git - gitosis admin settings - holds groups, repos and users&lt;br /&gt;
* code/* - direct conversions from SVN&lt;br /&gt;
** code/ETL.git - ETL&lt;br /&gt;
** code/synfig.git - synfig&lt;br /&gt;
** code/synfigstudio.git - synfigstudio&lt;br /&gt;
* pkg/* - bits for various packaging systems&lt;br /&gt;
** pkg/windows.git - Windows packaging (needs separating from the code repos)&lt;br /&gt;
** pkg/macos.git - MacOS packaging (needs separating from the code repos)&lt;br /&gt;
** pkg/jhbuild.git - JHBuild moduleset (needs writing)&lt;br /&gt;
** pkg/autopackage.git - Autopackage bits (needs writing)&lt;br /&gt;
* web/* - various bits used to maintain the website&lt;br /&gt;
** web/skin.git - skin for the website&lt;br /&gt;
** web/content.git - content for the website (pending switch to ikiwiki)&lt;br /&gt;
* misc/* - various stuff needed&lt;br /&gt;
** misc/svn2git.git - the scripts used to convert the SVN repo to git&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Dev:Building_Documentation&amp;diff=23108</id>
		<title>Dev:Building Documentation</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Dev:Building_Documentation&amp;diff=23108"/>
				<updated>2017-03-16T15:53:43Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Building Documentation}}&lt;br /&gt;
== Purpose ==&lt;br /&gt;
The purpose of this web page is to gather information about the current build system in order to migrate cmake setup.&lt;br /&gt;
&lt;br /&gt;
DISCLAIMER: THIS IS NOT A HOW DO YOU BUILD ON X PLATFORM.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Template:1&amp;diff=23107</id>
		<title>Template:1</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Template:1&amp;diff=23107"/>
				<updated>2017-03-16T15:51:30Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Redirected page to Dev:Building Documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Dev:Building Documentation]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Category:File_Menu/ro&amp;diff=23106</id>
		<title>Category:File Menu/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Category:File_Menu/ro&amp;diff=23106"/>
				<updated>2017-03-16T14:08:18Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Created page with &amp;quot;{{Title|File}} {{Category|Main Menu}} {{CategoryContents|File Menu}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|File}}&lt;br /&gt;
{{Category|Main Menu}}&lt;br /&gt;
{{CategoryContents|File Menu}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Category:File_Menu_(Toolbox)/fr&amp;diff=23105</id>
		<title>Category:File Menu (Toolbox)/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Category:File_Menu_(Toolbox)/fr&amp;diff=23105"/>
				<updated>2017-03-16T14:07:41Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Redirected page to Category:File Menu/fr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:File Menu/fr]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Category:File_Menu/fr&amp;diff=23104</id>
		<title>Category:File Menu/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Category:File_Menu/fr&amp;diff=23104"/>
				<updated>2017-03-16T14:07:08Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Fichier}}&lt;br /&gt;
{{Category|Main Menu}}&lt;br /&gt;
&lt;br /&gt;
Boite à outils&lt;br /&gt;
&lt;br /&gt;
{{CategoryContents|File Menu}}&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Category:File_Menu_(Toolbox)&amp;diff=23103</id>
		<title>Category:File Menu (Toolbox)</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Category:File_Menu_(Toolbox)&amp;diff=23103"/>
				<updated>2017-03-16T14:04:33Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Redirected page to Category:File Menu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:File Menu]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Panels&amp;diff=23102</id>
		<title>Command:Panels</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Panels&amp;diff=23102"/>
				<updated>2017-03-16T14:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Panels}}&lt;br /&gt;
{{Category|Window Menu}}&lt;br /&gt;
&lt;br /&gt;
This submenu allows you to display and hide {{L|Category:Panels|Synfig panels}}. Among the complete list of panels there are few additional commands available here:&lt;br /&gt;
*'''Vertical Dock: Canvases, History''' - opens a vertical dock window with the {{l|Canvas Browser Panel|Canvas Browser Panel}}, the {{l|Canvas Drop Down List}} and the {{l|History Panel}}&lt;br /&gt;
*'''Horizontal Dock: Layers, Children, Parameters''' - opens an horizontal dock window with the {{l|Layers Panel}}, the {{l|Children Panel}} and the {{l|Parameters Panel}}&lt;br /&gt;
* '''Reset Windows to Original Layout'''&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Panels/ro&amp;diff=23101</id>
		<title>Command:Panels/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Panels/ro&amp;diff=23101"/>
				<updated>2017-03-16T14:03:22Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Panels}}&lt;br /&gt;
{{Category|Window Menu}}&lt;br /&gt;
&lt;br /&gt;
Acest submeniu permite afisarea sau ascunderea {{L|Category:Panels|casetelor Synfig}}. In lista completa a casetelor, exista si cateva comenzi aditionale aici:&lt;br /&gt;
*'''Vertical Dock: Canvases, History''' - deschide o fereastra verticala care contine casetele {{l|Canvas Browser Panel|Canvas Browser Panel}}, the {{l|Canvas Drop Down List}} si {{l|History Dialog}}&lt;br /&gt;
*'''Horizontal Dock: Layers, Children, Params''' - deschide o fereastra orizontala care contine casetele {{l|Layers Panel}}, the {{l|Children Panel}} si {{l|Params Panel}}&lt;br /&gt;
* '''Reset Windows to Original Layout''' - readuce casetele in sablonul implicit al aplicatiei&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Category:File_Menu_(Toolbox)/ro&amp;diff=23100</id>
		<title>Category:File Menu (Toolbox)/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Category:File_Menu_(Toolbox)/ro&amp;diff=23100"/>
				<updated>2017-03-16T14:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Redirected page to Category:File Menu/ro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:File Menu/ro]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:New/cs&amp;diff=23099</id>
		<title>Command:New/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:New/cs&amp;diff=23099"/>
				<updated>2017-03-16T13:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Nový (New)}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
{{Category|Canvas Window}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|n}}: Otevře náhledové okno pro nový projekt. Jeho výchozí jméno je {{Literal|Synfig Animation #}} kde '''#''' zastupuje číslo od '''1''' výše. Pro každý další nový soubor v rámci otevřeného sezení Synfig Studia je toto číslo navýšeno o '''+ 1'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tím, že se otevře nová {{l|Canvas}} začíná proces editace projektu.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:New/ro&amp;diff=23098</id>
		<title>Command:New/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:New/ro&amp;diff=23098"/>
				<updated>2017-03-16T13:54:55Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|New}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
{{Category|Canvas Window}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|n}}: Creeaza un fisier nou. Numele implicit al fisierului este Synfig Animation #, unde # incepe de la 1 si este incrementat cu 1 pentru fiecare fisier nou creat cu o sesiune Synfig studio. Deschide un nou spatiu de lucru - &amp;quot;Root&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:New/fr&amp;diff=23097</id>
		<title>Command:New/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:New/fr&amp;diff=23097"/>
				<updated>2017-03-16T13:54:38Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Nouveau}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
{{Category|Canvas Window}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|n}}: Créé un nouveau fichier. Par défaut, son nom est Synfig Animation # ou # commence à 1 et augmente de 1 pour chaque nouveau fichier que vous créez lors d'une session de Synfig Studio. Cela commence en éditant le canevas &amp;quot;Racine&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Open/cs&amp;diff=23096</id>
		<title>Command:Open/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Open/cs&amp;diff=23096"/>
				<updated>2017-03-16T13:53:39Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Otevřít (Open) }}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
{{Category|Canvas Window}}&lt;br /&gt;
{{Shortcut|Control|o}}: Otevře dialogové okno pro výběr souboru {{l|FAQ#What_is_Synfig_Studio_native_file_format.3F|sifz}} s již uloženým projektem, který budete chtít otevřít.&lt;br /&gt;
&lt;br /&gt;
V levém dolním rohu dialogového okna je tlačítko {{Shortcut|Otevřít historii}}. Pokud bude vybraný soubor typu {{Literal|.sfg}} a kliknete na ně, tak se vám zobrazí historie revizí tohoto projektu.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Open/ro&amp;diff=23095</id>
		<title>Command:Open/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Open/ro&amp;diff=23095"/>
				<updated>2017-03-16T13:52:12Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Open}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
{{Category|Canvas Window}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|o}}: Deschide o fereastra de dialog din care puteti alege fisierul {{l|FAQ#What_is_Synfig_Studio_native_file_format.3F|sifz}} pe care doriti sa il deschideti.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Open/fr&amp;diff=23094</id>
		<title>Command:Open/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Open/fr&amp;diff=23094"/>
				<updated>2017-03-16T13:51:31Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Ouvrir}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
{{Category|Canvas Window}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|o}}: Affiche une boite de dialogue de sélection de fichier afin de choisir le fichier {{l|FAQ#What_is_Synfig_Studio_native_file_format.3F|sifz}} que vous voulez ouvrir.&lt;br /&gt;
&lt;br /&gt;
Le bouton {{Shortcut|Ouvrir l'historique}} propose, pour un fichier de type {{literal|.sfg}}, l'historique de révision du projet.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Restore_Defaults/ro&amp;diff=23093</id>
		<title>Command:Restore Defaults/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Restore_Defaults/ro&amp;diff=23093"/>
				<updated>2017-03-16T13:50:25Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Restore Defaults}}&lt;br /&gt;
{{Category|Preferences}}&lt;br /&gt;
&lt;br /&gt;
'''(NO SHORTCUT)''':Aceasta comanda va readuce setarile pentru preferinta la valorile implicite, permitand utilizatorului sa aiba o colectie sigura de setari si preferinte. Mai jos sunt preferintele implicite si valorile acestora:&lt;br /&gt;
* Unit System: Points&lt;br /&gt;
* Visual Linear Color Selection: True&lt;br /&gt;
* Restrict Real value ducks to Top Right Quadrant: True&lt;br /&gt;
* Scale New Imported Images to fit Canvas: False&lt;br /&gt;
* Use Single Thread: True (Windows only)&lt;br /&gt;
* New Document Filename Prefix: Synfig Animation # (where # is 1, 2, and so on)&lt;br /&gt;
* New Document X size: 480&lt;br /&gt;
* New Document Y size: 270&lt;br /&gt;
* New Document FPS: 24&lt;br /&gt;
* Predefined Default FPS: 24&lt;br /&gt;
* Predefied Default SIze: 480x270&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Restore_Defaults/ro&amp;diff=23091</id>
		<title>Command:Restore Defaults/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Restore_Defaults/ro&amp;diff=23091"/>
				<updated>2017-03-16T13:49:32Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Want moved page Command:Reset to Default Setup Values/ro to Command:Restore Defaults/ro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Reset to Default Setup Values}}&lt;br /&gt;
{{Category|Dialogs}}&lt;br /&gt;
{{Category|File Menu (Toolbox)}}&lt;br /&gt;
&lt;br /&gt;
'''(NO SHORTCUT)''':Aceasta comanda va readuce setarile pentru preferinta la valorile implicite, permitand utilizatorului sa aiba o colectie sigura de setari si preferinte. Mai jos sunt preferintele implicite si valorile acestora:&lt;br /&gt;
* Unit System: Points&lt;br /&gt;
* Visual Linear Color Selection: True&lt;br /&gt;
* Restrict Real value ducks to Top Right Quadrant: True&lt;br /&gt;
* Scale New Imported Images to fit Canvas: False&lt;br /&gt;
* Use Single Thread: True (Windows only)&lt;br /&gt;
* New Document Filename Prefix: Synfig Animation # (where # is 1, 2, and so on)&lt;br /&gt;
* New Document X size: 480&lt;br /&gt;
* New Document Y size: 270&lt;br /&gt;
* New Document FPS: 24&lt;br /&gt;
* Predefined Default FPS: 24&lt;br /&gt;
* Predefied Default SIze: 480x270&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Reset_to_Default_Setup_Values/ro&amp;diff=23092</id>
		<title>Command:Reset to Default Setup Values/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Reset_to_Default_Setup_Values/ro&amp;diff=23092"/>
				<updated>2017-03-16T13:49:32Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Want moved page Command:Reset to Default Setup Values/ro to Command:Restore Defaults/ro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Command:Restore Defaults/ro]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Input_Devices/fr&amp;diff=23090</id>
		<title>Input Devices/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Input_Devices/fr&amp;diff=23090"/>
				<updated>2017-03-16T13:44:32Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Dialogue Périphériques d'entrée}}&lt;br /&gt;
{{Category|Dialogs}}&lt;br /&gt;
{{Category|Edit Menu}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce menu ouvre une boite de dialogue de paramétrage de périphérique afin de permettre à l'utilisateur de choisir des valeurs personnalisées. Il est recommandé d'avoir un seul périphérique Activé et de désactiver les autres. Choississez le mode Écran pour le périphérique actif. &lt;br /&gt;
Généralement il n'y a pas besoin de modifier autre chose. &lt;br /&gt;
&lt;br /&gt;
N'oubliez pas d'enregistrer les paramètres avant de fermer. &lt;br /&gt;
&lt;br /&gt;
Chaque outil peut avoir ses propres paramètres pour chaque périphérique. Donc si vous combinez le pointeur principal -Core pointer- (qui est toujours disponible) et un stylet vous devrez enregistrer un ensemble de préférences (couleur de contour et de remplissage, taille de brosse, outil sélectionné, etc...) pour chaque périphérique.&lt;br /&gt;
&lt;br /&gt;
[[File:InputDevices.png]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Input_Devices/ro&amp;diff=23089</id>
		<title>Input Devices/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Input_Devices/ro&amp;diff=23089"/>
				<updated>2017-03-16T13:42:24Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Input Devices Dialog}}&lt;br /&gt;
{{Category|Dialogs}}&lt;br /&gt;
{{Category|Edit Menu)}}&lt;br /&gt;
&lt;br /&gt;
Atunci cand este vizibil, acest meniu deschide fereastra de dialog Device Settings (Setari pentru Dispozitive de desenare - ex. tableta) si permite utilizatorului sa seteze valorile dorite. Se recomanda ca sa fie activ doar un dispozitiv, restul fiind dezactivate. Se seteaza modul dispozitivului activ la &amp;quot;Screen&amp;quot;. In mod normal nu sunt necesare alte setari. Inainte de inchiderea ferestrei cu setari, se salveaza modificarile.&lt;br /&gt;
&lt;br /&gt;
Fiecare instrument are valori proprii pentru fiecare dispozitiv, astfel incat atunci cand se combina lucrul cu Core pointer (valabil mereu) si cu stylus, se pot salva un set de preferinte (de obicei umplere culoare si linii de contur, marime pensula, instrument de selectie etc. pentru fiecare dispozitiv.&lt;br /&gt;
&lt;br /&gt;
[[File:InputDevices.png]]&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Close&amp;diff=23088</id>
		<title>Command:Close</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Close&amp;diff=23088"/>
				<updated>2017-03-16T13:37:04Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Close}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|w}}: Closes the current document in edition. If it is &amp;quot;dirty&amp;quot; (modifications not saved to file) it would ask for save the file.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Close/cs&amp;diff=23087</id>
		<title>Command:Close/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Close/cs&amp;diff=23087"/>
				<updated>2017-03-16T13:36:42Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Zavřít (Close)}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|w}}: Zavře aktuálně editovaný dokument. Nejprve ale zkontroluje, zda-li neobsahuje neuložené změny. Pokud ano, tak se objeví dialog s dotazem, jestli se mají zahodit, nebo uložit. Po uložení projektu do souboru jeho náhledové okno zavře.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Close/ro&amp;diff=23086</id>
		<title>Command:Close/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Close/ro&amp;diff=23086"/>
				<updated>2017-03-16T13:36:12Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Close}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|w}}: Inchide documentul curent (cel in care lucrati). Daca ultimele modificari nu au fost inca salvate, apare o fereastra de dialog care cere salvarea documentului.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Close/fr&amp;diff=23085</id>
		<title>Command:Close/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Close/fr&amp;diff=23085"/>
				<updated>2017-03-16T13:35:57Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Fermer}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
{{Shortcut|Control|w}}: Ferme le document en cours d'édition. Si celui-ci est &amp;quot;sale&amp;quot; (il contient des modifications non enregistrées) il vous sera demandé si vous voulez l'enregistrer.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Close/ro&amp;diff=23084</id>
		<title>Command:Close/ro</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Close/ro&amp;diff=23084"/>
				<updated>2017-03-16T13:35:12Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Close}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
'''(CTRL+W)''': Inchide documentul curent (cel in care lucrati). Daca ultimele modificari nu au fost inca salvate, apare o fereastra de dialog care cere salvarea documentului.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Open_Recent/cs&amp;diff=23083</id>
		<title>Command:Open Recent/cs</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Open_Recent/cs&amp;diff=23083"/>
				<updated>2017-03-16T13:28:18Z</updated>
		
		<summary type="html">&lt;p&gt;Want: Created page with &amp;quot;{{Title|Otevřít nedávný (Open Recent)}} {{Category|File Menu}}  {{Literal|Otevřít nedávný}} (Open Recent) rozbalí dynamicky generované submenu s přehledem poslední...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Otevřít nedávný (Open Recent)}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
{{Literal|Otevřít nedávný}} (Open Recent) rozbalí dynamicky generované submenu s přehledem posledních 25 (maximum) projektů na kterých se v poslední době pracovalo.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Open_Recent&amp;diff=23082</id>
		<title>Command:Open Recent</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Open_Recent&amp;diff=23082"/>
				<updated>2017-03-16T13:24:27Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Open Recent}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
'''Open Recent:''' It gives a dynamic menu list with the last 25 (maximum) recent opened (or created) files.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	<entry>
		<id>https://www.wiki.synfig.org/index.php?title=Command:Open_Recent/fr&amp;diff=23081</id>
		<title>Command:Open Recent/fr</title>
		<link rel="alternate" type="text/html" href="https://www.wiki.synfig.org/index.php?title=Command:Open_Recent/fr&amp;diff=23081"/>
				<updated>2017-03-16T13:24:06Z</updated>
		
		<summary type="html">&lt;p&gt;Want: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Title|Récemment ouverts}}&lt;br /&gt;
{{Category|File Menu}}&lt;br /&gt;
&lt;br /&gt;
'''Récemment ouverts:''' Cela ouvre un menu dynamique qui liste les derniers 25 (maximum) fichiers ouverts ou créés récemment.&lt;/div&gt;</summary>
		<author><name>Want</name></author>	</entry>

	</feed>