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

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Adding_Layers&amp;diff=23317</id>
		<title>Doc:Adding Layers</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Adding_Layers&amp;diff=23317"/>
				<updated>2019-02-06T22:12:54Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Combining layers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Adding Layers}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Creating_Shapes}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials Basic]]&lt;br /&gt;
[[Category:Updated]]&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
In the {{l|Doc:Animation_Basics|previous tutorial}}, you made your first simple animation by changing the attributes of {{l|Primitive Layer|primitive}} objects, such as: position, color, and size. These simple types, however, are seldom sufficient to create advanced characters and objects. To do so, Synfig uses {{l|Layer|layers}}. They are similar to layers used in other drawing applications in that they are used to separate different elements of an image.&lt;br /&gt;
&lt;br /&gt;
However, Synfig's layers have following important specific:&lt;br /&gt;
# Every object or {{l|Primitive Layer|element}} gets its own layer.&lt;br /&gt;
# You can organize layers into hierarchical groups.&lt;br /&gt;
# You can use upper layers to change the behavior (or look) of underlying layers. Those are called {{l|Filter Layer|filter layers}} or effect layers.&lt;br /&gt;
&lt;br /&gt;
As you will see, layers are an extremely important aspect of Synfig, much more so than most graphics programs. Understanding the concept of layers is an important part in understanding how Synfig works.&lt;br /&gt;
&lt;br /&gt;
== Combining layers ==&lt;br /&gt;
&lt;br /&gt;
So let's look at a simple example of how we can combine two layers to create a gradient effect on a rectangle.&lt;br /&gt;
&lt;br /&gt;
Create a new file with any duration. There's no need to bother with a timeline at this point. Next, create a simple rectangle with the {{l|Rectangle Tool}}. &lt;br /&gt;
&lt;br /&gt;
[[Image:Adding-layers-tutorial-1 0.63.06.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
Pick the {{l|Gradient Tool|Gradient Tool}} from the {{l|Category:Toolbox|Toolbox}} ({{l|Blend Method Parameter#Composite|Composite}} Blend Method), press the left mouse button on the canvas, drag to change the gradient direction and release the button when you are done. You should note that another layer was added in the {{l|Layers Panel}} called '''Gradient'''. This is nothing special. &lt;br /&gt;
&lt;br /&gt;
[[Image:Adding Layer-tutorial-2 0.63.06.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
{{Note|Note|If you see no gradient but just a plain color, that means that you probably just clicked on the canvas without dragging your mouse. To fix that pick the {{l|Transform Tool|Transform Tool}}, click into the canvas to activate the gradient's handles. You need to grab the one you see and move it a bit until a gradient appears.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Note|If you see a spiral gradient, go to the [[Tool_Options_Panel]] and change Layer Type to linear by clicking on the far left icon.}}&lt;br /&gt;
&lt;br /&gt;
You now have a gradient, but it is not what you wanted: it spreads across the whole canvas. The goal was to have a gradient in the rectangle. So, let's fix this now.&lt;br /&gt;
&lt;br /&gt;
In the {{l|Layers Panel}}, select both the gradient and the rectangle layer. Then, right-click and select {{Literal|Group Layer}} from the menu. The view of your Layers Panel should change now, showing a small box called {{l|Group Layer|Group}} with a &amp;amp;#x25b6; in front. By clicking on the &amp;amp;#x25b6; you can expand the group layer to see its contents, your previous two layers: the gradient and the rectangle.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding Layer-tutorial-3 0.63.06.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
You can treat this layer like any other layer &amp;amp;mdash; move it around, duplicate it, copy and paste it.  If you want to change the name of it to something more descriptive, just select the layer in the layer tab and click on its label. Then you just edit it in place. You can do this for ANY layer, and are strongly encouraged to do so.&lt;br /&gt;
&lt;br /&gt;
== Using locality ==&lt;br /&gt;
However, there is still a problem: the gradient still covers the whole canvas although we wanted it to be restricted on the rectangle. To do so, activate the gradient layer in the Layers Panel. Now go to the {{l|Parameters Panel}} (by default it resides in the bottom window), and search for the attribute called {{l|Blend_Method_Parameter|Blend Method}}. Double-click the entry and select {{l|Blend_Method_Parameter#Onto|Onto}} from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding Layer-tutorial-4 0.63.06.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
The gradient should now be restricted to the rectangle. Congratulations! You just made your first effect by interacting layers with Synfig.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding Layer-tutorial-5 0.63.06.png|frame|center|The gradient is restricted to the rectangle. You will found more informations about the various {{literal|Blend Method}} in the {{l|Blend_Method_Parameter}} documentation.]]&lt;br /&gt;
&lt;br /&gt;
If only for the additional organization, grouping layers dramatically improves the ease of use of Synfig Studio. But lots of programs can do this. The concept of ''scope'' as just demonstrated sets Synfig apart from other programs with layer hierarchies. The key point is that a layer, inside it's own group, will '''only''' modify the data contained by all the layers and groups '''below''' it. In other words, if you were to throw a {{l|Blur Layer}} on top of the layers inside the {{l|Group Layer|group layer}} we created, it would just blur them &amp;amp;mdash; anything under the group layer would not be blurred! Let's try it.&lt;br /&gt;
&lt;br /&gt;
== Using layers to modify other layers==&lt;br /&gt;
Make sure you have the group layer selected and create two red {{l|Circle Tool|circles}}. They will appear on top of the group layer. Select the group layer and use the {{Literal|Raise Layer}} button in the Layers Panel to place it on top of the circles.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding-Layer-tutorial-6-raise-layer-0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Now our group layer (with rectangle and gradient) is in front of those two circles.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding-Layer-tutorial-7-0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Expand the group layer to show its contents, and select the top layer inside of it (should be the gradient layer). This is where we want to insert the new layer. Create another circle filled with a black color. The black circle layer will be created over the gradient layer inside the group layer.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding-Layer-tutorial-8-0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Now, right click on the black circle layer in the layers panel and a popup menu will appear. The first item in that popup is {{Literal|New Layer}}. Inside of the {{Literal|New Layer}} menu, you'll see several categories of layers you could create, but what we want is a blur, so go to the blurs category and select the {{Literal|Blur}} layer (so that would be {{c|New Layer|Blurs|Blur}}).&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding-Layer-tutorial-11-0.63.06.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
It blurred! Has the blend method for newly created blur is {{Literal|Straight}} (if the default blend method in the Toolbox is set to {{Literal|By Layer Default}}) it blurred all around the outside edge of the contents of the group layer. You can change the {{l|New Layer Defaults#Default Blend Method|default blend method}} for new layers from the {{l|New Layer Defaults}} section of the Toolbox. &lt;br /&gt;
&lt;br /&gt;
{{Note|Note|In the Synfig version before {{Literal|0.62.02}} , the blend method for newly created blur layers was defaulted to {{Literal|Composite}}, that cause the outside edge of the contents of the group layer is still sharp. What we want is a blend method of {{Literal|Straight}}. Just select the blur layer, and change the Blend Method to {{Literal|Straight}} in the Parameters Panel.&lt;br /&gt;
[[Image:Adding-Layer-tutorial-10-composite-blur-0.63.06.png|center|frame]]}}&lt;br /&gt;
&lt;br /&gt;
Ok, now we have all of the contents of the group layer blurred, but everything under it is sharp! This is because the effect of the Blur Layer over the underlying layers is limited to the scope of the group layer because the blur layer is inside it. &lt;br /&gt;
  You can download the [[File:Doc Adding Layers.sif|sif]] used for this example&lt;br /&gt;
&lt;br /&gt;
== Digging further... ==&lt;br /&gt;
&lt;br /&gt;
If you care to look into Synfig's main menu under {{c|Layer|New Layer}} you will note quite a lot of different possibilities for making layers. Several of them sound rather unusual, like {{c|Transform|Rotate}} for example. You can use this to add new attributes to your objects. And just like other, basic attributes in the {{L|Doc:Animation Basics|previous animation tutorial}}, you can change them to be different on certain {{L|Keyframe|keyframes}}. Synfig will take care of interpolating the steps in between.&lt;br /&gt;
&lt;br /&gt;
For example, you could create a {{L|Doc:Creating Shapes|shape}} and add a {{L|Rotate Layer}} over it. Combine this with the lesson learned in the {{L|Doc:Animation Basics|last tutorial}} and you will obtain a rotating effect. This technique is used for the creation of {{L|Doc:Cut-out Animation}}.&lt;br /&gt;
&lt;br /&gt;
Let's continue digging further on {{l|Doc:Creating Shapes|shapes creation}}.&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Creating_Shapes}}&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23316</id>
		<title>Dev:Adding a Render progress bar</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23316"/>
				<updated>2019-01-07T23:10:51Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* synfig-studio/src/gui/docks/dock_info.cpp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Now let's implement a Render Progress Bar!&amp;lt;br /&amp;gt;&lt;br /&gt;
It has been requested several time:&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/383 Indication needed that rendering is in progress. #383]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/626 Feature request: Give feedback when rendering is happening and complete #626]&amp;lt;br /&amp;gt;&lt;br /&gt;
also in [https://github.com/synfig/synfig/issues/464 Default render parameter are bad #464]&lt;br /&gt;
&lt;br /&gt;
== Things to take into account ==&lt;br /&gt;
* Where to place the Progress Bar?&amp;lt;br /&amp;gt;&lt;br /&gt;
* How does really a render work?&amp;lt;br /&amp;gt;&lt;br /&gt;
* Where to do calls and implementation?&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to place the Progress Bar? ===&lt;br /&gt;
I chose to implement it in the Dock_Info panel.&amp;lt;br /&amp;gt;&lt;br /&gt;
After all, this is a kind of information!&lt;br /&gt;
&lt;br /&gt;
=== How does really a render work? ===&lt;br /&gt;
'''App''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/app.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/app.cpp .cpp]) is the root of everything and used to store globals.&amp;lt;br /&amp;gt;&lt;br /&gt;
But we start in fact from '''CanvasView''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/canvasview.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/canvasview.cpp .cpp]) which contains the call to display the '''RenderSettings''' Dialog ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/render.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/render.cpp .cpp]).&amp;lt;br /&amp;gt;&lt;br /&gt;
Then we press on render button which leads to execute an '''AsyncRenderer''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/asyncrenderer.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/asyncrenderer.cpp .cpp]) (or 2, sequentially, if we have a second pass for Alpha extraction).&amp;lt;br /&amp;gt;&lt;br /&gt;
'''AsyncRenderer''' can have 4 types of targets, ''AsyncTarget_Cairo'', AsyncTarget_Cairo_Tile, ''AsyncTarget_Scanline'', AsyncTarget_Tile.&amp;lt;br /&amp;gt;&lt;br /&gt;
Only ''AsyncTarget_Cairo'' and ''AsyncTarget_Scanline'' have a ''frame_ready()'' function that we will use to implement our call to update to the Render ProgressBar.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that we can have 2 passes, this has to be considered when displaying the percents of accomplished render.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The render itself is done writing the data to the target, then the selected codec is fed through a pipe (for example ffmpeg).&lt;br /&gt;
&lt;br /&gt;
=== Where to do calls and implementation? ===&lt;br /&gt;
In different files, as it is a &amp;quot;multi-level&amp;quot; task.&amp;lt;br /&amp;gt;&lt;br /&gt;
The details are described in each file touched in the next section.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.h ===&lt;br /&gt;
* Declare the components and members&amp;lt;br /&amp;gt;&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;lt;gtkmm/progressbar.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In private section:&lt;br /&gt;
 Gtk::ProgressBar render_progress;&lt;br /&gt;
 &lt;br /&gt;
 //! Number of passes request - 1 or 2 (if alpha)&lt;br /&gt;
 int              n_passes_requested;&lt;br /&gt;
 //! Number of passes pending - 2,1,0&lt;br /&gt;
 int              n_passes_pending;&lt;br /&gt;
&lt;br /&gt;
In public section:&lt;br /&gt;
 //! Current render progress - 0.0 to 1.0&lt;br /&gt;
 //  depends on n_passes_requested and current_pass&lt;br /&gt;
 void set_render_progress   (float value);&lt;br /&gt;
 void set_n_passes_requested(int   value);&lt;br /&gt;
 void set_n_passes_pending  (int   value);&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.cpp ===&lt;br /&gt;
* Here we will implement the UI and members&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;quot;app.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/progressbar.h&amp;gt;&lt;br /&gt;
''It will permit to access our App::dock_info_ as a static from anywhere in the application''&lt;br /&gt;
&lt;br /&gt;
In Dock_Info(), at the end:&lt;br /&gt;
''just before table-&amp;gt;show_all();''&lt;br /&gt;
 //Render Progress Bar&lt;br /&gt;
 table-&amp;gt;attach(*manage(new Gtk::Label(_(&amp;quot;Render Progress: &amp;quot;))),0,1,5,6,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK|Gtk::FILL);&lt;br /&gt;
 table-&amp;gt;attach(render_progress,                                0,5,6,7,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK|Gtk::FILL);&lt;br /&gt;
&lt;br /&gt;
 render_progress.set_show_text(true);&lt;br /&gt;
 render_progress.set_text(strprintf(&amp;quot;%.1f%%&amp;quot;, 0.0));&lt;br /&gt;
 render_progress.set_fraction(0.0);&lt;br /&gt;
 //Another spacer&lt;br /&gt;
 table-&amp;gt;attach(*manage(new Gtk::Label),0,5,7,8);&lt;br /&gt;
&lt;br /&gt;
''and after add(*table);''&lt;br /&gt;
&lt;br /&gt;
 //Render progress&lt;br /&gt;
 set_n_passes_requested(1); //Default&lt;br /&gt;
 set_n_passes_pending  (0); //Default&lt;br /&gt;
 set_render_progress (0.0); //Default, 0.0%&lt;br /&gt;
&lt;br /&gt;
Then at the end of the file, we add these 3 functions:&lt;br /&gt;
&lt;br /&gt;
 void studio::Dock_Info::set_n_passes_requested(int value)&lt;br /&gt;
 {&lt;br /&gt;
     n_passes_requested = value;&lt;br /&gt;
 }&lt;br /&gt;
  	&lt;br /&gt;
 void studio::Dock_Info::set_n_passes_pending(int value)&lt;br /&gt;
 {&lt;br /&gt;
     n_passes_pending = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void studio::Dock_Info::set_render_progress(float value)&lt;br /&gt;
 {&lt;br /&gt;
  float coeff        = (1.000 / (float)n_passes_requested);  //% of fraction for 1 pass if more than 1 pass&lt;br /&gt;
  float already_done = coeff * (float)(n_passes_requested - n_passes_pending -1); &lt;br /&gt;
  float r = ( coeff * value ) + already_done;&lt;br /&gt;
 &lt;br /&gt;
  render_progress.set_text( strprintf( &amp;quot;%.1f%%&amp;quot;, r*100 ));&lt;br /&gt;
  render_progress.set_fraction(r);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The 2 first ones are obvious, the last one does the calculation for the display of the current percents of the WHOLE TASK.&amp;lt;br /&amp;gt;&lt;br /&gt;
If we have only 1 pass, value will be reflected directly.&amp;lt;br /&amp;gt;&lt;br /&gt;
In case of 2 (or more, who knows what will be implemented later!), each pass will still continue to send its progress as if it was the only one in the world; we will do the adjustments here.&amp;lt;br /&amp;gt;&lt;br /&gt;
100% of pass 1 while be displayed as 50%.&amp;lt;br /&amp;gt;&lt;br /&gt;
100% of pass 2 while be displayed as 100%.&amp;lt;br /&amp;gt;&lt;br /&gt;
If we had 3 passes, it would be 33.3%, 66.6% and 100.0%&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/app.h ===&lt;br /&gt;
* Lets add our ''static dock_info_''. A ''studio::dock_info'' is already defined in the .cpp but we need to access it as ''App::dock_info_''!&lt;br /&gt;
Inside the static declarations:&lt;br /&gt;
 &lt;br /&gt;
 static Dock_Info* dock_info_; //For Render ProgressBar&lt;br /&gt;
=== synfig-studio/src/gui/docks/app.cpp ===&lt;br /&gt;
* Let's declare the static&lt;br /&gt;
Inside the declare of statics&lt;br /&gt;
 Dock_Info* App::dock_info_            = 0;&lt;br /&gt;
&lt;br /&gt;
At the end of the constructor App()&lt;br /&gt;
 App::dock_info_ = dock_info;&lt;br /&gt;
''It looks like some kind of alias!''&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/render.cpp ===&lt;br /&gt;
* Here the things start to become serious&lt;br /&gt;
In the #include section:&lt;br /&gt;
 #include &amp;quot;docks/dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;docks/dock_info.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In RenderSettings::on_render_pressed&amp;lt;br /&amp;gt;&lt;br /&gt;
''Just before submit_next_render_pass();''&lt;br /&gt;
 App::dock_info_-&amp;gt;set_n_passes_requested(render_passes.size());&lt;br /&gt;
 App::dock_info_-&amp;gt;set_n_passes_pending(render_passes.size());&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(0.0);&lt;br /&gt;
 App::dock_manager-&amp;gt;find_dockable(&amp;quot;info&amp;quot;).present(); //Bring Dock_Info to front&lt;br /&gt;
''We initialized our ProgressBar with its default parameters to display 0.0%''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Note that the Dock_Info will be brought to front to show the progression... It's its goal!''&lt;br /&gt;
&lt;br /&gt;
In RenderSettings::submit_next_render_pass()&lt;br /&gt;
''Just after render_passes.pop_back();''&lt;br /&gt;
 App::dock_info_-&amp;gt;set_n_passes_pending(render_passes.size()); //! Decrease until 0&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(0.0); //For this pass&lt;br /&gt;
''We reinitialized the parameters for this specific pass!''&lt;br /&gt;
&lt;br /&gt;
'''Doing tests I noticed that with extract alpha option on, we have 2 passes and therefore the render done sound was played 2 times!&amp;lt;br /&amp;gt;&lt;br /&gt;
Let's correct this bad behaviour'''&lt;br /&gt;
In RenderSettings::on_finished(), around submit_next_render_pass();&lt;br /&gt;
 bool really_finished = (render_passes.size() == 0); //Must be checked BEFORE submit_next_render_pass();&lt;br /&gt;
	&lt;br /&gt;
submit_next_render_pass();&lt;br /&gt;
&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
 if (really_finished) { //Because of multi-pass render&lt;br /&gt;
     if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
     App::dock_info_-&amp;gt;set_render_progress(1.0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
''This way, it will play only once the full render has occured!''&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/asyncrender.cpp ===&lt;br /&gt;
* Now the deepest part&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;lt;docks/dock_info.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the beginning of AsyncRenderer::start()&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(0.0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ''void frame_ready()'' '''of both''' ''AsyncTarget_Cairo'' and ''AsyncTarget_Scanline''&amp;lt;br /&amp;gt;&lt;br /&gt;
''After ready_next=true;''&lt;br /&gt;
 int n_total_frames_to_render = warm_target-&amp;gt;desc.get_frame_end()        //120&lt;br /&gt;
                              - warm_target-&amp;gt;desc.get_frame_start()      //0&lt;br /&gt;
                              + 1;                                       //-&amp;gt;121&lt;br /&gt;
 int current_rendered_frames_count = warm_target-&amp;gt;curr_frame_&lt;br /&gt;
                                   - warm_target-&amp;gt;desc.get_frame_start();&lt;br /&gt;
 float r = (float) current_rendered_frames_count &lt;br /&gt;
         / (float) n_total_frames_to_render;&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(r);&lt;br /&gt;
&lt;br /&gt;
Here the current progress is calculated according the starting, ending and current frame, in a range of 0.0 to 1.0&amp;lt;br /&amp;gt;&lt;br /&gt;
The pass (or target) thinks it is the only one in the world but it is compensated in the display :)&lt;br /&gt;
&lt;br /&gt;
Hoping this will help you to come and join the effort in development of Synfig :)&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23315</id>
		<title>Dev:Adding a Render progress bar</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23315"/>
				<updated>2019-01-03T21:53:11Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Now let's implement a Render Progress Bar!&amp;lt;br /&amp;gt;&lt;br /&gt;
It has been requested several time:&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/383 Indication needed that rendering is in progress. #383]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/626 Feature request: Give feedback when rendering is happening and complete #626]&amp;lt;br /&amp;gt;&lt;br /&gt;
also in [https://github.com/synfig/synfig/issues/464 Default render parameter are bad #464]&lt;br /&gt;
&lt;br /&gt;
== Things to take into account ==&lt;br /&gt;
* Where to place the Progress Bar?&amp;lt;br /&amp;gt;&lt;br /&gt;
* How does really a render work?&amp;lt;br /&amp;gt;&lt;br /&gt;
* Where to do calls and implementation?&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to place the Progress Bar? ===&lt;br /&gt;
I chose to implement it in the Dock_Info panel.&amp;lt;br /&amp;gt;&lt;br /&gt;
After all, this is a kind of information!&lt;br /&gt;
&lt;br /&gt;
=== How does really a render work? ===&lt;br /&gt;
'''App''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/app.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/app.cpp .cpp]) is the root of everything and used to store globals.&amp;lt;br /&amp;gt;&lt;br /&gt;
But we start in fact from '''CanvasView''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/canvasview.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/canvasview.cpp .cpp]) which contains the call to display the '''RenderSettings''' Dialog ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/render.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/render.cpp .cpp]).&amp;lt;br /&amp;gt;&lt;br /&gt;
Then we press on render button which leads to execute an '''AsyncRenderer''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/asyncrenderer.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/asyncrenderer.cpp .cpp]) (or 2, sequentially, if we have a second pass for Alpha extraction).&amp;lt;br /&amp;gt;&lt;br /&gt;
'''AsyncRenderer''' can have 4 types of targets, ''AsyncTarget_Cairo'', AsyncTarget_Cairo_Tile, ''AsyncTarget_Scanline'', AsyncTarget_Tile.&amp;lt;br /&amp;gt;&lt;br /&gt;
Only ''AsyncTarget_Cairo'' and ''AsyncTarget_Scanline'' have a ''frame_ready()'' function that we will use to implement our call to update to the Render ProgressBar.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that we can have 2 passes, this has to be considered when displaying the percents of accomplished render.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The render itself is done writing the data to the target, then the selected codec is fed through a pipe (for example ffmpeg).&lt;br /&gt;
&lt;br /&gt;
=== Where to do calls and implementation? ===&lt;br /&gt;
In different files, as it is a &amp;quot;multi-level&amp;quot; task.&amp;lt;br /&amp;gt;&lt;br /&gt;
The details are described in each file touched in the next section.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.h ===&lt;br /&gt;
* Declare the components and members&amp;lt;br /&amp;gt;&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;lt;gtkmm/progressbar.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In private section:&lt;br /&gt;
 Gtk::ProgressBar render_progress;&lt;br /&gt;
 &lt;br /&gt;
 //! Number of passes request - 1 or 2 (if alpha)&lt;br /&gt;
 int              n_passes_requested;&lt;br /&gt;
 //! Number of passes pending - 2,1,0&lt;br /&gt;
 int              n_passes_pending;&lt;br /&gt;
&lt;br /&gt;
In public section:&lt;br /&gt;
 //! Current render progress - 0.0 to 1.0&lt;br /&gt;
 //  depends on n_passes_requested and current_pass&lt;br /&gt;
 void set_render_progress   (float value);&lt;br /&gt;
 void set_n_passes_requested(int   value);&lt;br /&gt;
 void set_n_passes_pending  (int   value);&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.cpp ===&lt;br /&gt;
* Here we will implement the UI and members&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;quot;app.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/progressbar.h&amp;gt;&lt;br /&gt;
''It will permit to access our App::dock_info_ as a static from anywhere in the application''&lt;br /&gt;
&lt;br /&gt;
In Dock_Info(), at the end:&lt;br /&gt;
''just before table-&amp;gt;show_all();''&lt;br /&gt;
 //Render Progress Bar&lt;br /&gt;
 table-&amp;gt;attach(*manage(new Gtk::Label(_(&amp;quot;Render Progress: &amp;quot;))),0,1,5,6,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK|Gtk::FILL);&lt;br /&gt;
 table-&amp;gt;attach(render_progress,                                0,5,6,7,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK|Gtk::FILL);&lt;br /&gt;
&lt;br /&gt;
 render_progress.set_show_text(true);&lt;br /&gt;
 render_progress.set_text(strprintf(&amp;quot;%.1f%%&amp;quot;, 0.0));&lt;br /&gt;
 render_progress.set_fraction(0.0);&lt;br /&gt;
 //Another spacer&lt;br /&gt;
 table-&amp;gt;attach(*manage(new Gtk::Label),0,5,7,8);&lt;br /&gt;
&lt;br /&gt;
''and after add(*table);''&lt;br /&gt;
&lt;br /&gt;
 //Render progress&lt;br /&gt;
 set_n_passes_requested(1); //Default&lt;br /&gt;
 set_n_passes_pending  (1); //Default&lt;br /&gt;
 set_render_progress (0.0); //Default, 0.0%&lt;br /&gt;
&lt;br /&gt;
Then at the end of the file, we add these 3 functions:&lt;br /&gt;
&lt;br /&gt;
 void studio::Dock_Info::set_n_passes_requested(int value)&lt;br /&gt;
 {&lt;br /&gt;
     n_passes_requested = value;&lt;br /&gt;
 }&lt;br /&gt;
  	&lt;br /&gt;
 void studio::Dock_Info::set_n_passes_pending(int value)&lt;br /&gt;
 {&lt;br /&gt;
     n_passes_pending = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void studio::Dock_Info::set_render_progress(float value)&lt;br /&gt;
 {&lt;br /&gt;
  float coeff        = (1.000 / (float)n_passes_requested);  //% of fraction for 1 pass if more than 1 pass&lt;br /&gt;
  float already_done = coeff * (float)(n_passes_requested - n_passes_pending -1); &lt;br /&gt;
  float r = ( coeff * value ) + already_done;&lt;br /&gt;
 &lt;br /&gt;
  render_progress.set_text( strprintf( &amp;quot;%.1f%%&amp;quot;, r*100 ));&lt;br /&gt;
  render_progress.set_fraction(r);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The 2 first ones are obvious, the last one does the calculation for the display of the current percents of the WHOLE TASK.&amp;lt;br /&amp;gt;&lt;br /&gt;
If we have only 1 pass, value will be reflected directly.&amp;lt;br /&amp;gt;&lt;br /&gt;
In case of 2 (or more, who knows what will be implemented later!), each pass will still continue to send its progress as if it was the only one in the world; we will do the adjustments here.&amp;lt;br /&amp;gt;&lt;br /&gt;
100% of pass 1 while be displayed as 50%.&amp;lt;br /&amp;gt;&lt;br /&gt;
100% of pass 2 while be displayed as 100%.&amp;lt;br /&amp;gt;&lt;br /&gt;
If we had 3 passes, it would be 33.3%, 66.6% and 100.0%&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/app.h ===&lt;br /&gt;
* Lets add our ''static dock_info_''. A ''studio::dock_info'' is already defined in the .cpp but we need to access it as ''App::dock_info_''!&lt;br /&gt;
Inside the static declarations:&lt;br /&gt;
 &lt;br /&gt;
 static Dock_Info* dock_info_; //For Render ProgressBar&lt;br /&gt;
=== synfig-studio/src/gui/docks/app.cpp ===&lt;br /&gt;
* Let's declare the static&lt;br /&gt;
Inside the declare of statics&lt;br /&gt;
 Dock_Info* App::dock_info_            = 0;&lt;br /&gt;
&lt;br /&gt;
At the end of the constructor App()&lt;br /&gt;
 App::dock_info_ = dock_info;&lt;br /&gt;
''It looks like some kind of alias!''&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/render.cpp ===&lt;br /&gt;
* Here the things start to become serious&lt;br /&gt;
In the #include section:&lt;br /&gt;
 #include &amp;quot;docks/dockmanager.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;docks/dock_info.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In RenderSettings::on_render_pressed&amp;lt;br /&amp;gt;&lt;br /&gt;
''Just before submit_next_render_pass();''&lt;br /&gt;
 App::dock_info_-&amp;gt;set_n_passes_requested(render_passes.size());&lt;br /&gt;
 App::dock_info_-&amp;gt;set_n_passes_pending(render_passes.size());&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(0.0);&lt;br /&gt;
 App::dock_manager-&amp;gt;find_dockable(&amp;quot;info&amp;quot;).present(); //Bring Dock_Info to front&lt;br /&gt;
''We initialized our ProgressBar with its default parameters to display 0.0%''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Note that the Dock_Info will be brought to front to show the progression... It's its goal!''&lt;br /&gt;
&lt;br /&gt;
In RenderSettings::submit_next_render_pass()&lt;br /&gt;
''Just after render_passes.pop_back();''&lt;br /&gt;
 App::dock_info_-&amp;gt;set_n_passes_pending(render_passes.size()); //! Decrease until 0&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(0.0); //For this pass&lt;br /&gt;
''We reinitialized the parameters for this specific pass!''&lt;br /&gt;
&lt;br /&gt;
'''Doing tests I noticed that with extract alpha option on, we have 2 passes and therefore the render done sound was played 2 times!&amp;lt;br /&amp;gt;&lt;br /&gt;
Let's correct this bad behaviour'''&lt;br /&gt;
In RenderSettings::on_finished(), around submit_next_render_pass();&lt;br /&gt;
 bool really_finished = (render_passes.size() == 0); //Must be checked BEFORE submit_next_render_pass();&lt;br /&gt;
	&lt;br /&gt;
submit_next_render_pass();&lt;br /&gt;
&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
 if (really_finished) { //Because of multi-pass render&lt;br /&gt;
     if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
     App::dock_info_-&amp;gt;set_render_progress(1.0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
''This way, it will play only once the full render has occured!''&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/asyncrender.cpp ===&lt;br /&gt;
* Now the deepest part&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;lt;docks/dock_info.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the beginning of AsyncRenderer::start()&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(0.0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ''void frame_ready()'' '''of both''' ''AsyncTarget_Cairo'' and ''AsyncTarget_Scanline''&amp;lt;br /&amp;gt;&lt;br /&gt;
''After ready_next=true;''&lt;br /&gt;
 int n_total_frames_to_render = warm_target-&amp;gt;desc.get_frame_end()        //120&lt;br /&gt;
                              - warm_target-&amp;gt;desc.get_frame_start()      //0&lt;br /&gt;
                              + 1;                                       //-&amp;gt;121&lt;br /&gt;
 int current_rendered_frames_count = warm_target-&amp;gt;curr_frame_&lt;br /&gt;
                                   - warm_target-&amp;gt;desc.get_frame_start();&lt;br /&gt;
 float r = (float) current_rendered_frames_count &lt;br /&gt;
         / (float) n_total_frames_to_render;&lt;br /&gt;
 App::dock_info_-&amp;gt;set_render_progress(r);&lt;br /&gt;
&lt;br /&gt;
Here the current progress is calculated according the starting, ending and current frame, in a range of 0.0 to 1.0&amp;lt;br /&amp;gt;&lt;br /&gt;
The pass (or target) thinks it is the only one in the world but it is compensated in the display :)&lt;br /&gt;
&lt;br /&gt;
Hoping this will help you to come and join the effort in development of Synfig :)&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23314</id>
		<title>Dev:Adding a Render progress bar</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23314"/>
				<updated>2019-01-03T20:52:13Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: 2nd part&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Now let's implement a Render Progress Bar!&amp;lt;br /&amp;gt;&lt;br /&gt;
It has been requested several time:&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/383| Indication needed that rendering is in progress. #383]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/626| Feature request: Give feedback when rendering is happening and complete #626]&amp;lt;br /&amp;gt;&lt;br /&gt;
also in [https://github.com/synfig/synfig/issues/464| Default render parameter are bad #464]&lt;br /&gt;
&lt;br /&gt;
== Things to take into account ==&lt;br /&gt;
* Where to place the Progress Bar?&amp;lt;br /&amp;gt;&lt;br /&gt;
* How does really a render work?&amp;lt;br /&amp;gt;&lt;br /&gt;
* Where to do calls and implementation?&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to place the Progress Bar? ===&lt;br /&gt;
I chose to implement it in the Dock_Info panel.&amp;lt;br /&amp;gt;&lt;br /&gt;
After all, this is a kind of information!&lt;br /&gt;
&lt;br /&gt;
=== How does really a render work? ===&lt;br /&gt;
'''App''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/app.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/app.cpp .cpp]) is the root of everything and used to store globals.&amp;lt;br /&amp;gt;&lt;br /&gt;
But we start in fact from '''CanvasView''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/canvasview.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/canvasview.cpp .cpp]) which contains the call to display the '''RenderSettings''' Dialog ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/render.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/render.cpp .cpp]).&amp;lt;br /&amp;gt;&lt;br /&gt;
Then we press on render button which leads to execute an '''AsyncRender''' ([https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/asyncrenderer.h .h][https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/asyncrenderer.cpp .cpp]) (or 2, sequentially, if we have a second pass for Alpha extraction).&amp;lt;br /&amp;gt;&lt;br /&gt;
'''AsyncRenderer''' can have 4 types of targets, ''AsyncTarget_Cairo'', AsyncTarget_Cairo_Tile, ''AsyncTarget_Scanline'', AsyncTarget_Tile.&amp;lt;br /&amp;gt;&lt;br /&gt;
Only ''AsyncTarget_Cairo'' and ''AsyncTarget_Scanline'' have a ''frame_ready()'' function that we will use to implement our call to update to the Render ProgressBar.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that we can have 2 passes, this has to be considered when displaying the percents of accomplished render.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.h ===&lt;br /&gt;
* Declare the components and members&amp;lt;br /&amp;gt;&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;lt;gtkmm/progressbar.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In private section:&lt;br /&gt;
 Gtk::ProgressBar render_progress;&lt;br /&gt;
 &lt;br /&gt;
 //! Number of passes request - 1 or 2 (if alpha)&lt;br /&gt;
 int              n_passes_requested;&lt;br /&gt;
 //! Number of passes pending - 2,1,0&lt;br /&gt;
 int              n_passes_pending;&lt;br /&gt;
&lt;br /&gt;
In public section:&lt;br /&gt;
 //! Current render progress - 0.0 to 1.0&lt;br /&gt;
 //  depends on n_passes_requested and current_pass&lt;br /&gt;
 void set_render_progress   (float value);&lt;br /&gt;
 void set_n_passes_requested(int   value);&lt;br /&gt;
 void set_n_passes_pending  (int   value);&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.cpp ===&lt;br /&gt;
* Here we will implement the UI and members&lt;br /&gt;
In #include section:&lt;br /&gt;
 #include &amp;quot;app.h&amp;quot;&lt;br /&gt;
 #include &amp;lt;gtkmm/progressbar.h&amp;gt;&lt;br /&gt;
''It will permit to access our App::dock_info_ as a static from anywhere in the application''&lt;br /&gt;
&lt;br /&gt;
In Dock_Info(), at the end:&lt;br /&gt;
 //Render Progress Bar&lt;br /&gt;
 table-&amp;gt;attach(*manage(new Gtk::Label(_(&amp;quot;Render Progress: &amp;quot;))),0,1,5,6,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK|Gtk::FILL);&lt;br /&gt;
 table-&amp;gt;attach(render_progress,                                0,5,6,7,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK|Gtk::FILL);&lt;br /&gt;
&lt;br /&gt;
 render_progress.set_show_text(true);&lt;br /&gt;
 render_progress.set_text(strprintf(&amp;quot;%.1f%%&amp;quot;, 0.0));&lt;br /&gt;
 render_progress.set_fraction(0.0);&lt;br /&gt;
 //Another spacer&lt;br /&gt;
 table-&amp;gt;attach(*manage(new Gtk::Label),0,5,7,8);&lt;br /&gt;
&lt;br /&gt;
''just before table-&amp;gt;show_all();''&lt;br /&gt;
&lt;br /&gt;
''and after add(*table);''&lt;br /&gt;
&lt;br /&gt;
 //Render progress&lt;br /&gt;
 set_n_passes_requested(1); //Default&lt;br /&gt;
 set_n_passes_pending  (1); //Default&lt;br /&gt;
 set_render_progress (0.0); //Default, 0.0%&lt;br /&gt;
&lt;br /&gt;
Then at the end of the file, we add these 3 functions:&lt;br /&gt;
&lt;br /&gt;
 void studio::Dock_Info::set_n_passes_requested(int value)&lt;br /&gt;
 {&lt;br /&gt;
     n_passes_requested = value;&lt;br /&gt;
 }&lt;br /&gt;
  	&lt;br /&gt;
 void studio::Dock_Info::set_n_passes_pending(int value)&lt;br /&gt;
 {&lt;br /&gt;
     n_passes_pending = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void studio::Dock_Info::set_render_progress(float value)&lt;br /&gt;
 {&lt;br /&gt;
  float coeff        = (1.000 / (float)n_passes_requested);  //% of fraction for 1 pass if more than 1 pass&lt;br /&gt;
  float already_done = coeff * (float)(n_passes_requested - n_passes_pending -1); &lt;br /&gt;
  float r = ( coeff * value ) + already_done;&lt;br /&gt;
 &lt;br /&gt;
  render_progress.set_text( strprintf( &amp;quot;%.1f%%&amp;quot;, r*100 ));&lt;br /&gt;
  render_progress.set_fraction(r);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The 2 first ones are obvious, the last one does the calculation for the display of the current percents of the WHOLE TASK.&amp;lt;br /&amp;gt;&lt;br /&gt;
If we have only 1 pass, value will be reflected directly.&amp;lt;br /&amp;gt;&lt;br /&gt;
In case of 2 (or more, who knows what will be implemented later!), each pass will still continue to send its progress as if it was the only one in the world; we will do the adjustments here.&amp;lt;br /&amp;gt;&lt;br /&gt;
100% of pass 1 while be displayed as 50%.&amp;lt;br /&amp;gt;&lt;br /&gt;
100% of pass 2 while be displayed as 100%.&amp;lt;br /&amp;gt;&lt;br /&gt;
If we had 3 passes, it would be 33.3%, 66.6% and 100.0%&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23313</id>
		<title>Dev:Adding a Render progress bar</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Render_progress_bar&amp;diff=23313"/>
				<updated>2019-01-03T18:40:43Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Create + 1st part&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Now let's implement a Render Progress Bar!&amp;lt;br /&amp;gt;&lt;br /&gt;
It has been requested several time:&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/383| Indication needed that rendering is in progress. #383]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://github.com/synfig/synfig/issues/626| Feature request: Give feedback when rendering is happening and complete #626]&amp;lt;br /&amp;gt;&lt;br /&gt;
also in [https://github.com/synfig/synfig/issues/464| Default render parameter are bad #464]&lt;br /&gt;
&lt;br /&gt;
== Things to take into account ==&lt;br /&gt;
* Where to place the Progress Bar?&amp;lt;br /&amp;gt;&lt;br /&gt;
* How does really a render work?&amp;lt;br /&amp;gt;&lt;br /&gt;
* Where to do calls and implementation?&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where to place the Progress Bar? ===&lt;br /&gt;
I chose to implement it in the Dock_Info panel.&amp;lt;br /&amp;gt;&lt;br /&gt;
After all, this is a kind of information!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.h ===&lt;br /&gt;
* Declare the components and members&amp;lt;br /&amp;gt;&lt;br /&gt;
In #include section&lt;br /&gt;
 #include &amp;lt;gtkmm/progressbar.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In private section&lt;br /&gt;
 Gtk::ProgressBar render_progress;&lt;br /&gt;
 &lt;br /&gt;
 //! Number of passes request - 1 or 2 (if alpha)&lt;br /&gt;
 int              n_passes_requested;&lt;br /&gt;
 //! Number of passes pending - 2,1,0&lt;br /&gt;
 int              n_passes_pending;&lt;br /&gt;
&lt;br /&gt;
In public section&lt;br /&gt;
 //! Current render progress - 0.0 to 1.0&lt;br /&gt;
 //  depends on n_passes_requested and current_pass&lt;br /&gt;
 void set_render_progress   (float value);&lt;br /&gt;
 void set_n_passes_requested(int   value);&lt;br /&gt;
 void set_n_passes_pending  (int   value);&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/docks/dock_info.cpp ===&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=23312</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=23312"/>
				<updated>2019-01-03T18:14:04Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Complete coding tutorials */&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;
* {{l|Dev:Adding a Sound notification}}&lt;br /&gt;
* {{l|Dev:Adding a Render progress bar}}&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>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23303</id>
		<title>Dev:Adding a Sound notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23303"/>
				<updated>2018-12-18T23:54:19Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* synfig-studio/src/gui/app.cpp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;After the implementation of [https://github.com/synfig/synfig/issues/648| #648 - GUI: Play a sound when rendering is done], it could be useful to keep a track of the way to implement a new sound notification in SynfigStudio&lt;br /&gt;
&lt;br /&gt;
This tutorial will be divided in 2 parts:&lt;br /&gt;
* Adding the sound notification&lt;br /&gt;
* Adding an option to Preferences dialog&lt;br /&gt;
&lt;br /&gt;
== Adding the sound notification ==&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/sounds/ ===&lt;br /&gt;
* Add your sample in this directory in your source tree&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add a notice about the license of your sample in ''readme.txt'' (the asset should have a permissive license)&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add your sound sample to the list in ''Makefile.am''&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.h ===&lt;br /&gt;
* Declare the sound (Mix_Chunk*) as a static member.&lt;br /&gt;
 //The sound effects that will be used&lt;br /&gt;
 static Mix_Chunk* gRenderDone;&lt;br /&gt;
&lt;br /&gt;
''You could add a bool declared as a static member for an option to play the sound (to be defined in Preferences dialog).''&lt;br /&gt;
 static bool use_render_done_sound;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
* Initialize the sound (Mix_Chunk*) to NULL.&amp;lt;br /&amp;gt;&lt;br /&gt;
You could find the gRenderDone and add it after. &lt;br /&gt;
 Mix_Chunk* App::gRenderDone = NULL;&lt;br /&gt;
&lt;br /&gt;
''As well you may initialize the bool for allow to play the sound; this will be connected later in the Preferences dialog''&lt;br /&gt;
 bool App::use_render_done_sound = true;&lt;br /&gt;
* Locate this part (at the end of the constructor App::App )&lt;br /&gt;
 path_to_sounds += ETL_DIRECTORY_SEPARATOR;&lt;br /&gt;
and load your sound as follow (the volume is set at 50% if success)&lt;br /&gt;
 //Load sound effects&lt;br /&gt;
 App::gRenderDone = Mix_LoadWAV( (path_to_sounds + &amp;quot;renderdone.wav&amp;quot;).c_str() );&lt;br /&gt;
 if ( App::gRenderDone == NULL ) {&lt;br /&gt;
     synfig::error( _(&amp;quot;SDL_mixer could not load gRenderDone : %s\n&amp;quot;), Mix_GetError() );&lt;br /&gt;
 }  else {&lt;br /&gt;
     Mix_VolumeChunk(App::gRenderDone, MIX_MAX_VOLUME/2);&lt;br /&gt;
 }&lt;br /&gt;
* Finally, free the sound in the destructor App::~App(and NULL the pointer)&lt;br /&gt;
 //&amp;lt;!- ----- SDL2 - Sound effects -----&lt;br /&gt;
 //Free the sound effects&lt;br /&gt;
 Mix_FreeChunk( App::gRenderDone );&lt;br /&gt;
 App::gRenderDone = NULL;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/&amp;lt;yourSource&amp;gt;.cpp ===&lt;br /&gt;
* You should add&lt;br /&gt;
 #include &amp;lt;SDL2/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL2/SDL_mixer.h&amp;gt;&lt;br /&gt;
* Add your sound effect play where it should be (end of an event for example)&amp;lt;br /&amp;gt;&lt;br /&gt;
You have 2 possibilities after this&amp;lt;br /&amp;gt;&lt;br /&gt;
1) Play directly without control in the preferences&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
'''or'''&amp;lt;br /&amp;gt;&lt;br /&gt;
2) ''Play according the preferences''&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
== Adding an option to Preferences dialog ==&lt;br /&gt;
In the first part we added ''use_render_done_sound'' to prepare a preference option.&amp;lt;br /&amp;gt;&lt;br /&gt;
It will be a toggle ''toggle_play_sound_on_render_done'' in Preferences/Render tab&lt;br /&gt;
=== synfig-studio/src/gui/dialogs/dialog_setup.h ===&lt;br /&gt;
* In class Dialog_Setup&amp;lt;br /&amp;gt;&lt;br /&gt;
add the declaration of the &amp;quot;changed&amp;quot; handler&lt;br /&gt;
 void on_play_sound_on_render_done_changed();&lt;br /&gt;
and the corresponding Switch control&lt;br /&gt;
 Gtk::Switch toggle_play_sound_on_render_done;&lt;br /&gt;
=== synfig-studio/src/gui/dialogs/dialog_setup.cpp ===&lt;br /&gt;
* Find in which page and which position you will add your option (named ''toggle_play_sound_on_render_done'', here in ''Dialog_Setup::create_render_page(PageInfo pi)'')&lt;br /&gt;
 // Render - Render Done sound&lt;br /&gt;
 attach_label(pi.grid, _(&amp;quot;Chime on render done&amp;quot;), ++row);&lt;br /&gt;
 pi.grid-&amp;gt;attach(toggle_play_sound_on_render_done, 1, row, 1, 1);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_halign(Gtk::ALIGN_START);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_hexpand(false);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_tooltip_text(_(&amp;quot;A chime is played when render has finished.&amp;quot;));&lt;br /&gt;
 toggle_play_sound_on_render_done.property_active()&lt;br /&gt;
                                 .signal_changed()&lt;br /&gt;
                                 .connect(sigc::mem_fun(*this, &amp;amp;Dialog_Setup::on_play_sound_on_render_done_changed));&lt;br /&gt;
* In ''Dialog_Setup::on_apply_pressed()''&lt;br /&gt;
 // Set the use of a render done sound&lt;br /&gt;
 App::use_render_done_sound = toggle_play_sound_on_render_done.get_active();&lt;br /&gt;
* Create the handler&lt;br /&gt;
 void&lt;br /&gt;
 Dialog_Setup::on_play_sound_on_render_done_changed()&lt;br /&gt;
 {&lt;br /&gt;
     App::use_render_done_sound = toggle_play_sound_on_render_done.get_active();&lt;br /&gt;
 }&lt;br /&gt;
* In ''Dialog_Setup::refresh()''&lt;br /&gt;
 // Refresh the status of the render done sound flag&lt;br /&gt;
 toggle_play_sound_on_render_done.set_active(App::use_render_done_sound);&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
* In ''class Preferences'',&lt;br /&gt;
among the saving parts&lt;br /&gt;
 if(key==&amp;quot;use_render_done_sound&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
     value=strprintf(&amp;quot;%i&amp;quot;,(int)App::use_render_done_sound);&lt;br /&gt;
     return true;&lt;br /&gt;
 }&lt;br /&gt;
and among the loading parts&lt;br /&gt;
 if(key==&amp;quot;use_render_done_sound&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
      int i(atoi(value.c_str()));&lt;br /&gt;
      App::use_render_done_sound=i;&lt;br /&gt;
      return true;&lt;br /&gt;
 }&lt;br /&gt;
* In the ret.push_back part, add&lt;br /&gt;
 ret.push_back(&amp;quot;use_render_done_sound&amp;quot;);&lt;br /&gt;
* In ''restore_default_settings()'', add a default value&lt;br /&gt;
 synfigapp::Main::settings().set_value(&amp;quot;use_render_done_sound&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dont forget some parts have been done in the first section&amp;lt;br /&amp;gt;&lt;br /&gt;
Hoping it will be sufficient to understand the whole system :)&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23302</id>
		<title>Dev:Adding a Sound notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23302"/>
				<updated>2018-12-16T20:25:25Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;After the implementation of [https://github.com/synfig/synfig/issues/648| #648 - GUI: Play a sound when rendering is done], it could be useful to keep a track of the way to implement a new sound notification in SynfigStudio&lt;br /&gt;
&lt;br /&gt;
This tutorial will be divided in 2 parts:&lt;br /&gt;
* Adding the sound notification&lt;br /&gt;
* Adding an option to Preferences dialog&lt;br /&gt;
&lt;br /&gt;
== Adding the sound notification ==&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/sounds/ ===&lt;br /&gt;
* Add your sample in this directory in your source tree&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add a notice about the license of your sample in ''readme.txt'' (the asset should have a permissive license)&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add your sound sample to the list in ''Makefile.am''&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.h ===&lt;br /&gt;
* Declare the sound (Mix_Chunk*) as a static member.&lt;br /&gt;
 //The sound effects that will be used&lt;br /&gt;
 static Mix_Chunk* gRenderDone;&lt;br /&gt;
&lt;br /&gt;
''You could add a bool declared as a static member for an option to play the sound (to be defined in Preferences dialog).''&lt;br /&gt;
 static bool use_render_done_sound;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
* Initialize the sound (Mix_Chunk*) to NULL.&amp;lt;br /&amp;gt;&lt;br /&gt;
You could find the gRenderDone and add it after. &lt;br /&gt;
 Mix_Chunk* App::gRenderDone = NULL;&lt;br /&gt;
&lt;br /&gt;
''As well you may initialize the bool for allow to play the sound; this will be connected later in the Preferences dialog''&lt;br /&gt;
 bool App::use_render_done_sound = true;&lt;br /&gt;
* Locate this part (at the end of the constructor App::App )&lt;br /&gt;
 path_to_sounds += ETL_DIRECTORY_SEPARATOR;&lt;br /&gt;
and load your sound as follow (the volume is set at 50% if success)&lt;br /&gt;
 //Load sound effects&lt;br /&gt;
 App::gRenderDone = Mix_LoadWAV( (path_to_sounds + &amp;quot;renderdone.wav&amp;quot;).c_str() );&lt;br /&gt;
 if ( App::gRenderDone == NULL ) {&lt;br /&gt;
     synfig::error( _(&amp;quot;SDL_mixer could not load gRenderDone : %s\n&amp;quot;), Mix_GetError() );&lt;br /&gt;
 }  else {&lt;br /&gt;
     Mix_VolumeChunk(App::gRenderDone, MIX_MAX_VOLUME/2);&lt;br /&gt;
 }&lt;br /&gt;
* Finally, free the sound in the destructor App::~App(and NULL the pointer)&lt;br /&gt;
 //&amp;lt;!- ----- SDL2 - Sound effects -----&lt;br /&gt;
 //Free the sound effects&lt;br /&gt;
 Mix_FreeChunk( App::gRenderDone );&lt;br /&gt;
 App::gRenderDone = NULL;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/&amp;lt;yourSource&amp;gt;.cpp ===&lt;br /&gt;
* You should add&lt;br /&gt;
 #include &amp;lt;SDL2/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL2/SDL_mixer.h&amp;gt;&lt;br /&gt;
* Add your sound effect play where it should be (end of an event for example)&amp;lt;br /&amp;gt;&lt;br /&gt;
You have 2 possibilities after this&amp;lt;br /&amp;gt;&lt;br /&gt;
1) Play directly without control in the preferences&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
'''or'''&amp;lt;br /&amp;gt;&lt;br /&gt;
2) ''Play according the preferences''&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
== Adding an option to Preferences dialog ==&lt;br /&gt;
In the first part we added ''use_render_done_sound'' to prepare a preference option.&amp;lt;br /&amp;gt;&lt;br /&gt;
It will be a toggle ''toggle_play_sound_on_render_done'' in Preferences/Render tab&lt;br /&gt;
=== synfig-studio/src/gui/dialogs/dialog_setup.h ===&lt;br /&gt;
* In class Dialog_Setup&amp;lt;br /&amp;gt;&lt;br /&gt;
add the declaration of the &amp;quot;changed&amp;quot; handler&lt;br /&gt;
 void on_play_sound_on_render_done_changed();&lt;br /&gt;
and the corresponding Switch control&lt;br /&gt;
 Gtk::Switch toggle_play_sound_on_render_done;&lt;br /&gt;
=== synfig-studio/src/gui/dialogs/dialog_setup.cpp ===&lt;br /&gt;
* Find in which page and which position you will add your option (named ''toggle_play_sound_on_render_done'', here in ''Dialog_Setup::create_render_page(PageInfo pi)'')&lt;br /&gt;
 // Render - Render Done sound&lt;br /&gt;
 attach_label(pi.grid, _(&amp;quot;Chime on render done&amp;quot;), ++row);&lt;br /&gt;
 pi.grid-&amp;gt;attach(toggle_play_sound_on_render_done, 1, row, 1, 1);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_halign(Gtk::ALIGN_START);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_hexpand(false);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_tooltip_text(_(&amp;quot;A chime is played when render has finished.&amp;quot;));&lt;br /&gt;
 toggle_play_sound_on_render_done.property_active()&lt;br /&gt;
                                 .signal_changed()&lt;br /&gt;
                                 .connect(sigc::mem_fun(*this, &amp;amp;Dialog_Setup::on_play_sound_on_render_done_changed));&lt;br /&gt;
* In ''Dialog_Setup::on_apply_pressed()''&lt;br /&gt;
 // Set the use of a render done sound&lt;br /&gt;
 App::use_render_done_sound = toggle_play_sound_on_render_done.get_active();&lt;br /&gt;
* Create the handler&lt;br /&gt;
 void&lt;br /&gt;
 Dialog_Setup::on_play_sound_on_render_done_changed()&lt;br /&gt;
 {&lt;br /&gt;
     App::use_render_done_sound = toggle_play_sound_on_render_done.get_active();&lt;br /&gt;
 }&lt;br /&gt;
* In ''Dialog_Setup::refresh()''&lt;br /&gt;
 // Refresh the status of the render done sound flag&lt;br /&gt;
 toggle_play_sound_on_render_done.set_active(App::use_render_done_sound);&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
* In ''class Preferences : public synfigapp::Settings'',&lt;br /&gt;
among the saving parts&lt;br /&gt;
 if(key==&amp;quot;use_render_done_sound&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
     value=strprintf(&amp;quot;%i&amp;quot;,(int)App::use_render_done_sound);&lt;br /&gt;
     return true;&lt;br /&gt;
 }&lt;br /&gt;
and among the loading parts&lt;br /&gt;
 if(key==&amp;quot;use_render_done_sound&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
      int i(atoi(value.c_str()));&lt;br /&gt;
      App::use_render_done_sound=i;&lt;br /&gt;
      return true;&lt;br /&gt;
 }&lt;br /&gt;
* In the ret.push_back part, add&lt;br /&gt;
 ret.push_back(&amp;quot;use_render_done_sound&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Dont forget some parts have been done in the first section&lt;br /&gt;
Hoping it will be sufficient to understand the whole system :)&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23301</id>
		<title>Dev:Adding a Sound notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23301"/>
				<updated>2018-12-16T20:23:23Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: 2nd part&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;After the implementation of [https://github.com/synfig/synfig/issues/648| #648 - GUI: Play a sound when rendering is done], it could be useful to keep a track of the way to implement a new sound notification in SynfigStudio&lt;br /&gt;
&lt;br /&gt;
This tutorial will be divided in 2 parts:&lt;br /&gt;
* Adding the sound notification&lt;br /&gt;
* Adding an option to Preferences dialog&lt;br /&gt;
&lt;br /&gt;
== Adding the sound notification ==&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/sounds/ ===&lt;br /&gt;
* Add your sample in this directory in your source tree&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add a notice about the license of your sample in ''readme.txt'' (the asset should have a permissive license)&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add your sound sample to the list in ''Makefile.am''&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.h ===&lt;br /&gt;
* Declare the sound (Mix_Chunk*) as a static member.&lt;br /&gt;
 //The sound effects that will be used&lt;br /&gt;
 static Mix_Chunk* gRenderDone;&lt;br /&gt;
&lt;br /&gt;
[[You could add a bool declared as a static member for an option to play the sound (to be defined in Preferences dialog).]]&lt;br /&gt;
 static bool use_render_done_sound;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
* Initialize the sound (Mix_Chunk*) to NULL.&amp;lt;br /&amp;gt;&lt;br /&gt;
You could find the gRenderDone and add it after. &lt;br /&gt;
 Mix_Chunk* App::gRenderDone = NULL;&lt;br /&gt;
&lt;br /&gt;
[[As well you may initialize the bool for allow to play the sound; this will be connected later in the Preferences dialog]]&lt;br /&gt;
 bool App::use_render_done_sound = true;&lt;br /&gt;
* Locate this part (at the end of the constructor App::App )&lt;br /&gt;
 path_to_sounds += ETL_DIRECTORY_SEPARATOR;&lt;br /&gt;
and load your sound as follow (the volume is set at 50% if success)&lt;br /&gt;
 //Load sound effects&lt;br /&gt;
 App::gRenderDone = Mix_LoadWAV( (path_to_sounds + &amp;quot;renderdone.wav&amp;quot;).c_str() );&lt;br /&gt;
 if ( App::gRenderDone == NULL ) {&lt;br /&gt;
     synfig::error( _(&amp;quot;SDL_mixer could not load gRenderDone : %s\n&amp;quot;), Mix_GetError() );&lt;br /&gt;
 }  else {&lt;br /&gt;
     Mix_VolumeChunk(App::gRenderDone, MIX_MAX_VOLUME/2);&lt;br /&gt;
 }&lt;br /&gt;
* Finally, free the sound in the destructor App::~App(and NULL the pointer)&lt;br /&gt;
 //&amp;lt;!- ----- SDL2 - Sound effects -----&lt;br /&gt;
 //Free the sound effects&lt;br /&gt;
 Mix_FreeChunk( App::gRenderDone );&lt;br /&gt;
 App::gRenderDone = NULL;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/&amp;lt;yourSource&amp;gt;.cpp ===&lt;br /&gt;
* You should add&lt;br /&gt;
 #include &amp;lt;SDL2/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL2/SDL_mixer.h&amp;gt;&lt;br /&gt;
* Add your sound effect play where it should be (end of an event for example)&amp;lt;br /&amp;gt;&lt;br /&gt;
You have 2 possibilities after this&amp;lt;br /&amp;gt;&lt;br /&gt;
1) Play directly without control in the preferences&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
'''or'''&amp;lt;br /&amp;gt;&lt;br /&gt;
2) [[Play according the preferences]]&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
== Adding an option to Preferences dialog ==&lt;br /&gt;
In the first part we added ''use_render_done_sound'' to prepare a preference option.&amp;lt;br /&amp;gt;&lt;br /&gt;
It will be a toggle ''toggle_play_sound_on_render_done'' in Preferences/Render tab&lt;br /&gt;
=== synfig-studio/src/gui/dialogs/dialog_setup.h ===&lt;br /&gt;
* In class Dialog_Setup&amp;lt;br /&amp;gt;&lt;br /&gt;
add the declaration of the &amp;quot;changed&amp;quot; handler&lt;br /&gt;
 void on_play_sound_on_render_done_changed();&lt;br /&gt;
and the corresponding Switch control&lt;br /&gt;
 Gtk::Switch toggle_play_sound_on_render_done;&lt;br /&gt;
=== synfig-studio/src/gui/dialogs/dialog_setup.cpp ===&lt;br /&gt;
* Find in which page and which position you will add your option (named ''toggle_play_sound_on_render_done'', here in ''Dialog_Setup::create_render_page(PageInfo pi)'')&lt;br /&gt;
 // Render - Render Done sound&lt;br /&gt;
 attach_label(pi.grid, _(&amp;quot;Chime on render done&amp;quot;), ++row);&lt;br /&gt;
 pi.grid-&amp;gt;attach(toggle_play_sound_on_render_done, 1, row, 1, 1);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_halign(Gtk::ALIGN_START);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_hexpand(false);&lt;br /&gt;
 toggle_play_sound_on_render_done.set_tooltip_text(_(&amp;quot;A chime is played when render has finished.&amp;quot;));&lt;br /&gt;
 toggle_play_sound_on_render_done.property_active()&lt;br /&gt;
                                 .signal_changed()&lt;br /&gt;
                                 .connect(sigc::mem_fun(*this, &amp;amp;Dialog_Setup::on_play_sound_on_render_done_changed));&lt;br /&gt;
* In ''Dialog_Setup::on_apply_pressed()''&lt;br /&gt;
 // Set the use of a render done sound&lt;br /&gt;
 App::use_render_done_sound = toggle_play_sound_on_render_done.get_active();&lt;br /&gt;
* Create the handler&lt;br /&gt;
 void&lt;br /&gt;
 Dialog_Setup::on_play_sound_on_render_done_changed()&lt;br /&gt;
 {&lt;br /&gt;
     App::use_render_done_sound = toggle_play_sound_on_render_done.get_active();&lt;br /&gt;
 }&lt;br /&gt;
* In ''Dialog_Setup::refresh()''&lt;br /&gt;
 // Refresh the status of the render done sound flag&lt;br /&gt;
 toggle_play_sound_on_render_done.set_active(App::use_render_done_sound);&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
* In ''class Preferences : public synfigapp::Settings'',&lt;br /&gt;
among the saving parts&lt;br /&gt;
 if(key==&amp;quot;use_render_done_sound&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
     value=strprintf(&amp;quot;%i&amp;quot;,(int)App::use_render_done_sound);&lt;br /&gt;
     return true;&lt;br /&gt;
 }&lt;br /&gt;
and among the loading parts&lt;br /&gt;
 if(key==&amp;quot;use_render_done_sound&amp;quot;)&lt;br /&gt;
 {&lt;br /&gt;
      int i(atoi(value.c_str()));&lt;br /&gt;
      App::use_render_done_sound=i;&lt;br /&gt;
      return true;&lt;br /&gt;
 }&lt;br /&gt;
* In the ret.push_back part, add&lt;br /&gt;
 ret.push_back(&amp;quot;use_render_done_sound&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Dont forget some parts have been done in the first section&lt;br /&gt;
Hoping it will be sufficient to understand the whole system :)&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23300</id>
		<title>Dev:Adding a Sound notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23300"/>
				<updated>2018-12-16T19:40:55Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: 1st Part&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;After the implementation of [https://github.com/synfig/synfig/issues/648| #648 - GUI: Play a sound when rendering is done], it could be useful to keep a track of the way to implement a new sound notification in SynfigStudio&lt;br /&gt;
&lt;br /&gt;
This tutorial will be divided in 2 parts:&lt;br /&gt;
* Adding the sound notification&lt;br /&gt;
* Adding an option to Preferences dialog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding the sound notification ==&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/sounds/ ===&lt;br /&gt;
* Add your sample in this directory in your source tree&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add a notice about the license of your sample in readme.txt (the asset should have a permissive license)&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add your sound sample to the list in Makefile.am&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.h ===&lt;br /&gt;
* Declare the sound (Mix_Chunk*) as a static member.&lt;br /&gt;
 //The sound effects that will be used&lt;br /&gt;
 static Mix_Chunk* gRenderDone;&lt;br /&gt;
&lt;br /&gt;
You could add a bool declared as a static member for an option to play the sound (to be defined in Preferences dialog).&lt;br /&gt;
 bool       App::use_render_done_sound = true;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
* Initialize the sound (Mix_Chunk*) to NULL.&amp;lt;br /&amp;gt;&lt;br /&gt;
You could find the gRenderDone and add it after. &lt;br /&gt;
 Mix_Chunk* App::gRenderDone           = NULL;&lt;br /&gt;
&lt;br /&gt;
As well you may add a bool for allow to play the sound; this will be connected later in the Preferences dialog&lt;br /&gt;
 bool       App::use_render_done_sound = true;&lt;br /&gt;
&lt;br /&gt;
* Locate this part (at the end of the constructor App::App )&lt;br /&gt;
 path_to_sounds += ETL_DIRECTORY_SEPARATOR;&lt;br /&gt;
&lt;br /&gt;
and load your sound as follow (the volume is set at 50% if success)&lt;br /&gt;
 //Load sound effects&lt;br /&gt;
 App::gRenderDone = Mix_LoadWAV( (path_to_sounds + &amp;quot;renderdone.wav&amp;quot;).c_str() );&lt;br /&gt;
 if ( App::gRenderDone == NULL ) {&lt;br /&gt;
     synfig::error( _(&amp;quot;SDL_mixer could not load gRenderDone : %s\n&amp;quot;), Mix_GetError() );&lt;br /&gt;
 }  else {&lt;br /&gt;
     Mix_VolumeChunk(App::gRenderDone, MIX_MAX_VOLUME/2);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Finally, free the sound in the destructor App::~App(and NULL the pointer)&lt;br /&gt;
 //&amp;lt;!- ----- SDL2 - Sound effects -----&lt;br /&gt;
 //Free the sound effects&lt;br /&gt;
 Mix_FreeChunk( App::gRenderDone );&lt;br /&gt;
 App::gRenderDone = NULL;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/&amp;lt;yourSource&amp;gt;.cpp ===&lt;br /&gt;
* You should add&lt;br /&gt;
 #include &amp;lt;SDL2/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL2/SDL_mixer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add your sound effect play where it should be (end of an event for example)&amp;lt;br /&amp;gt;&lt;br /&gt;
You have 2 possibilities after this&amp;lt;br /&amp;gt;&lt;br /&gt;
1) Play directly without control in the preferences&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;br /&gt;
'''or'''&amp;lt;br /&amp;gt;&lt;br /&gt;
2) Play according the preferences&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23299</id>
		<title>Dev:Adding a Sound notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Adding_a_Sound_notification&amp;diff=23299"/>
				<updated>2018-12-16T13:59:55Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== WIP ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.h ===&lt;br /&gt;
Declare the sound (Mix_Chunk*) as a static member.&lt;br /&gt;
&lt;br /&gt;
  //The sound effects that will be used&lt;br /&gt;
  static Mix_Chunk* gRenderDone;&lt;br /&gt;
&lt;br /&gt;
You could add a bool declare as a static member for an option to play.&lt;br /&gt;
 bool       App::use_render_done_sound = true;&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/app.cpp ===&lt;br /&gt;
Initialize the sound (Mix_Chunk*) to NULL.&lt;br /&gt;
You could find the gRenderDone and add it after. &lt;br /&gt;
&lt;br /&gt;
 Mix_Chunk* App::gRenderDone           = NULL;&lt;br /&gt;
&lt;br /&gt;
As well you may add a bool for &lt;br /&gt;
 bool       App::use_render_done_sound = true;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio/src/gui/&amp;lt;yourSource&amp;gt;.cpp ===&lt;br /&gt;
You should add&lt;br /&gt;
 #include &amp;lt;SDL2/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL2/SDL_mixer.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add your sound effect play where it should be (end of an event for example)&lt;br /&gt;
 //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat)&lt;br /&gt;
 Mix_PlayChannel( -1, App::gRenderDone, 0 );&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=23298</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=23298"/>
				<updated>2018-12-16T13:42:41Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Complete coding tutorials */&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;
* {{l|Dev:Adding a Sound notification}}&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>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Reuse_Animations/fr&amp;diff=23288</id>
		<title>Doc:Reuse Animations/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Reuse_Animations/fr&amp;diff=23288"/>
				<updated>2018-10-31T13:17:51Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* A sample */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Réutiliser les Animations}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Advanced}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
L'un des buts de tout animateur (spécialement pour les plus paresseux comme moi) est d'avoir l'opportunité de réutiliser des parties d'animation. Cela permet de sauver beacoup de temps si vous pouvez insérer certaines portions d'animations déjà enregistrées à une autre position dans la temps.&lt;br /&gt;
&lt;br /&gt;
C'est tout spécialement utile pour faire parler les personnage car vous avez à animer la bouche du personnage selon des positions répétées dépendant des phonèmes qu'ils représentent durant le discours.&lt;br /&gt;
&lt;br /&gt;
Cela peut être fait très simplement en utilisant une combinaison de {l|Keyframe|keyframes}} et de canevas exportés.&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
&lt;br /&gt;
Notre but est d'enregistrer des animations et de les réustiliser plus tard. Cela peut être fait en utilisant des keyframes. Si vous créez quelques keyframes au début de votre animation, vous pouvez réutiliser ces  &amp;quot;poses&amp;quot; plus loin dans le temps en dupliquant simplement les keyframes à une autre position dans le temps. Pour cela, faites simplement ce qui suit:&lt;br /&gt;
&lt;br /&gt;
# Créez une Keyframe à une trame donnée (toutes vos keyframes devraient être créées proches les unes des autres pour utiliser une petite portion du temps. Nous voulons seulement enregistrer une &amp;quot;pose&amp;quot; et non une transition)&lt;br /&gt;
# Modifiez vos objets comme vous le désirez (par exemple faites fermer un oeil en déplaçant uniquement les points de la paupière).&lt;br /&gt;
# Donnez un nom à la keyframe en cliquant sur la cellule Description correspondante. &lt;br /&gt;
# Répétez les étapes précédentes le nombre de fois nécessaire pour faire une nouvelle &amp;quot;pose&amp;quot;. Disons que vous avez créé une keyframe à la trame n°2 (oeil ouvert) et n°4 (oeil fermé)&lt;br /&gt;
# Une fois terminé allez à une autre trame avec le {{l|Time Cursor|curseur de temps}}, sélectionnez la keyframe que vous voulez ajouter et pressez le bouton &amp;quot;Duplicate keyframe&amp;quot;. Vous obtiendrez une copie de la keyframe sélectionnée à la position courante du {{l|Time Cursor|curseur de temps}}.&lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 1 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Il y a un problème avec cette technique. Vous faites des copies de toutes les poses de l'animation que vous avez stockées dans les premières keyframes du temps (trame 2 et 4 dans ce cas) et donc vous avez fait des copies de tous les autres objets existant dans la scène (dans cet exemple, le globe occulaire).&lt;br /&gt;
&lt;br /&gt;
Si vous avez déjà une animation enregistrée du globe occulaire et que vous superposez un ensemble de keyframes &amp;quot;clignement&amp;quot; (ouvert et fermé)au milieu, alors l'animation du globe occulaire sera cassée par l'insertion des copies des keyframes de mouvements de la paupière.&lt;br /&gt;
&lt;br /&gt;
== Export du paramètre Canvas ==&lt;br /&gt;
&lt;br /&gt;
A chaque fois que vous groupez les calques, vous obtenez un {{l|Group Layer}} qui empêche la composition des calques contenus au dessus des calques en dehors de lui.&lt;br /&gt;
&lt;br /&gt;
Un des paramètres du Group Layer est le {{l|Canvas|Canvas}}. Le canevas est comme un espace de travail qui représente tous les calques groupés. &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 2 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Pour éviter le problème décrit dans la section précédente (les keyframes affectent tous les objets dans la scène) vous pouvez faire ce qui suit:&lt;br /&gt;
&lt;br /&gt;
#Avant de créer les poses de la keyframe de la paupière, groupez tous les calques qui forment les paupières.&lt;br /&gt;
#Sélectionnez le calque Groupe et sélectionnez le paramètre Canvas dans le dialogue Paramètres. &lt;br /&gt;
#Cliquez-droit sur le paramètre Canvas, exportez-le, et donnez-lui un nom (dans cet exemple ce sera &amp;quot;eyelids&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 3 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Allez au {{l|Canvas Browser Panel}} et sélectionnez le canevas tout juste exporté. &lt;br /&gt;
&lt;br /&gt;
Double-cliquez dessus et une nouvelle fenêtre de zone de travail va s'ouvrir avec uniquement les calques qui ont été groupés à l'étape 1 - le canvas &amp;quot;eyelids&amp;quot; dans cet exemple. &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 4 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Créez toutes les keyframes que vous devez stocker pour vos &amp;quot;poses&amp;quot;. Une fois fait, allez à la bonne trame et insérez une copie de la pose. Cela va produire une keyframe dans le canevas &amp;quot;eyelids&amp;quot;, mais ne va produire aucune keyframe sur les autres calques (par exemple le globe occulaire). Cela permet d'animer indépendamment une portion du modèle séparée du reste. Assurez_vous que le canevas exporté est aussi long que l'animation.&lt;br /&gt;
&lt;br /&gt;
Maintenant une fois que vous avez stocké les clignements de l'oeil (ouvert et fermé) à la position désirée vous pouvez aller à la fenêtre principale (fermez simplement la zone de travail du canevas &amp;quot;eyelids&amp;quot;). Vous verrez alors que toutes les modifications ont été transmises à l'animation principale mais mais elles n'ont créée aucune keyframe dans la zone de travail principale. Même les calques qui se trouvent à l'intérieur du calque groupe &amp;quot;eyelids&amp;quot; n'ont aucune keyframes (vous pouvez voir une indication de la présence de keyframes dans le canevas exporté - lignes verticales dashée - mais aucune keyframe n'est affichées dans le dialogue keyframes). Dans tous les cas, vous pouvez voir les waypoints créés par les keyframes et les ajuster, mais pas les keyframes elles-mêmes. Pour modifier les keyframes vous devriez éditer le canevas exporté à nouveau dans sa propre zone de travail.  Si vous modifiez les calques groupés depuis la zone de travail principale, les waypoints seront créés en fonction des keyframes de la zone de travail principale, pas de la zone de travail exportée, ainsi vous obtiendrez différents effets selon que zone de travail que vous utilisez pour modifierls les calques groupés.&lt;br /&gt;
&lt;br /&gt;
Maintenant, une fois que vous avez créé votre animation des paupières vous pouvez aller au globe occulaire et le modifier selon votre goût, en insérant keyframes ou waypoints sans avoir à vous inquiéter d'interférer avec l'animation des paupière. Vous pouvez aussi animer le globe occulaire avant et faire l'animation des paupières plus tard. Ils n'interféreront pas entre eux.&lt;br /&gt;
&lt;br /&gt;
Ce serait une grande amélioration si vous pouvier connecter les curseurs de temps de la zone de travail principale et la zone de travail du canevas exporté pour afficher les deux fenêtres au même temps courant. Ceci permettrait de donner un retour sur où insérer les keyframes des &amp;quot;poses&amp;quot; de votre animation locale.&lt;br /&gt;
&lt;br /&gt;
== Un exemple == &lt;br /&gt;
&lt;br /&gt;
Vous trouverez ici un exemple d'animation d'un oeil qui cligne (les positions fermées et ouvertes sont des copies des keyframes &amp;quot;Open&amp;quot; et &amp;quot;Closed&amp;quot;, tout en ayant le globe occulaire qui bouge indépendamment dans sa propre animation.&lt;br /&gt;
&lt;br /&gt;
Les poses &amp;quot;Open&amp;quot; et &amp;quot;Closed&amp;quot; sont stockées aux trames 0 et 2. L'animation est définie pour commencer à la trame 6.&lt;br /&gt;
&lt;br /&gt;
[[File:Eyeblink.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Media:Eyeblink.sifz|Sample file]]&lt;br /&gt;
&lt;br /&gt;
Tous les commentaires sont les bienvenus.&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Reuse_Animations/fr&amp;diff=23287</id>
		<title>Doc:Reuse Animations/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Reuse_Animations/fr&amp;diff=23287"/>
				<updated>2018-10-31T13:12:29Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Exporting the Canvas Parameter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Réutiliser les Animations}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Advanced}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
L'un des buts de tout animateur (spécialement pour les plus paresseux comme moi) est d'avoir l'opportunité de réutiliser des parties d'animation. Cela permet de sauver beacoup de temps si vous pouvez insérer certaines portions d'animations déjà enregistrées à une autre position dans la temps.&lt;br /&gt;
&lt;br /&gt;
C'est tout spécialement utile pour faire parler les personnage car vous avez à animer la bouche du personnage selon des positions répétées dépendant des phonèmes qu'ils représentent durant le discours.&lt;br /&gt;
&lt;br /&gt;
Cela peut être fait très simplement en utilisant une combinaison de {l|Keyframe|keyframes}} et de canevas exportés.&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
&lt;br /&gt;
Notre but est d'enregistrer des animations et de les réustiliser plus tard. Cela peut être fait en utilisant des keyframes. Si vous créez quelques keyframes au début de votre animation, vous pouvez réutiliser ces  &amp;quot;poses&amp;quot; plus loin dans le temps en dupliquant simplement les keyframes à une autre position dans le temps. Pour cela, faites simplement ce qui suit:&lt;br /&gt;
&lt;br /&gt;
# Créez une Keyframe à une trame donnée (toutes vos keyframes devraient être créées proches les unes des autres pour utiliser une petite portion du temps. Nous voulons seulement enregistrer une &amp;quot;pose&amp;quot; et non une transition)&lt;br /&gt;
# Modifiez vos objets comme vous le désirez (par exemple faites fermer un oeil en déplaçant uniquement les points de la paupière).&lt;br /&gt;
# Donnez un nom à la keyframe en cliquant sur la cellule Description correspondante. &lt;br /&gt;
# Répétez les étapes précédentes le nombre de fois nécessaire pour faire une nouvelle &amp;quot;pose&amp;quot;. Disons que vous avez créé une keyframe à la trame n°2 (oeil ouvert) et n°4 (oeil fermé)&lt;br /&gt;
# Une fois terminé allez à une autre trame avec le {{l|Time Cursor|curseur de temps}}, sélectionnez la keyframe que vous voulez ajouter et pressez le bouton &amp;quot;Duplicate keyframe&amp;quot;. Vous obtiendrez une copie de la keyframe sélectionnée à la position courante du {{l|Time Cursor|curseur de temps}}.&lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 1 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Il y a un problème avec cette technique. Vous faites des copies de toutes les poses de l'animation que vous avez stockées dans les premières keyframes du temps (trame 2 et 4 dans ce cas) et donc vous avez fait des copies de tous les autres objets existant dans la scène (dans cet exemple, le globe occulaire).&lt;br /&gt;
&lt;br /&gt;
Si vous avez déjà une animation enregistrée du globe occulaire et que vous superposez un ensemble de keyframes &amp;quot;clignement&amp;quot; (ouvert et fermé)au milieu, alors l'animation du globe occulaire sera cassée par l'insertion des copies des keyframes de mouvements de la paupière.&lt;br /&gt;
&lt;br /&gt;
== Export du paramètre Canvas ==&lt;br /&gt;
&lt;br /&gt;
A chaque fois que vous groupez les calques, vous obtenez un {{l|Group Layer}} qui empêche la composition des calques contenus au dessus des calques en dehors de lui.&lt;br /&gt;
&lt;br /&gt;
Un des paramètres du Group Layer est le {{l|Canvas|Canvas}}. Le canevas est comme un espace de travail qui représente tous les calques groupés. &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 2 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Pour éviter le problème décrit dans la section précédente (les keyframes affectent tous les objets dans la scène) vous pouvez faire ce qui suit:&lt;br /&gt;
&lt;br /&gt;
#Avant de créer les poses de la keyframe de la paupière, groupez tous les calques qui forment les paupières.&lt;br /&gt;
#Sélectionnez le calque Groupe et sélectionnez le paramètre Canvas dans le dialogue Paramètres. &lt;br /&gt;
#Cliquez-droit sur le paramètre Canvas, exportez-le, et donnez-lui un nom (dans cet exemple ce sera &amp;quot;eyelids&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 3 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Allez au {{l|Canvas Browser Panel}} et sélectionnez le canevas tout juste exporté. &lt;br /&gt;
&lt;br /&gt;
Double-cliquez dessus et une nouvelle fenêtre de zone de travail va s'ouvrir avec uniquement les calques qui ont été groupés à l'étape 1 - le canvas &amp;quot;eyelids&amp;quot; dans cet exemple. &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 4 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Créez toutes les keyframes que vous devez stocker pour vos &amp;quot;poses&amp;quot;. Une fois fait, allez à la bonne trame et insérez une copie de la pose. Cela va produire une keyframe dans le canevas &amp;quot;eyelids&amp;quot;, mais ne va produire aucune keyframe sur les autres calques (par exemple le globe occulaire). Cela permet d'animer indépendamment une portion du modèle séparée du reste. Assurez_vous que le canevas exporté est aussi long que l'animation.&lt;br /&gt;
&lt;br /&gt;
Maintenant une fois que vous avez stocké les clignements de l'oeil (ouvert et fermé) à la position désirée vous pouvez aller à la fenêtre principale (fermez simplement la zone de travail du canevas &amp;quot;eyelids&amp;quot;). Vous verrez alors que toutes les modifications ont été transmises à l'animation principale mais mais elles n'ont créée aucune keyframe dans la zone de travail principale. Même les calques qui se trouvent à l'intérieur du calque groupe &amp;quot;eyelids&amp;quot; n'ont aucune keyframes (vous pouvez voir une indication de la présence de keyframes dans le canevas exporté - lignes verticales dashée - mais aucune keyframe n'est affichées dans le dialogue keyframes). Dans tous les cas, vous pouvez voir les waypoints créés par les keyframes et les ajuster, mais pas les keyframes elles-mêmes. Pour modifier les keyframes vous devriez éditer le canevas exporté à nouveau dans sa propre zone de travail.  Si vous modifiez les calques groupés depuis la zone de travail principale, les waypoints seront créés en fonction des keyframes de la zone de travail principale, pas de la zone de travail exportée, ainsi vous obtiendrez différents effets selon que zone de travail que vous utilisez pour modifierls les calques groupés.&lt;br /&gt;
&lt;br /&gt;
Maintenant, une fois que vous avez créé votre animation des paupières vous pouvez aller au globe occulaire et le modifier selon votre goût, en insérant keyframes ou waypoints sans avoir à vous inquiéter d'interférer avec l'animation des paupière. Vous pouvez aussi animer le globe occulaire avant et faire l'animation des paupières plus tard. Ils n'interféreront pas entre eux.&lt;br /&gt;
&lt;br /&gt;
Ce serait une grande amélioration si vous pouvier connecter les curseurs de temps de la zone de travail principale et la zone de travail du canevas exporté pour afficher les deux fenêtres au même temps courant. Ceci permettrait de donner un retour sur où insérer les keyframes des &amp;quot;poses&amp;quot; de votre animation locale.&lt;br /&gt;
&lt;br /&gt;
== A sample == &lt;br /&gt;
&lt;br /&gt;
Here you can find a sample animation of a blinking eye (the closed and open positions are copies of the keyframes &amp;quot;Open&amp;quot; and &amp;quot;Closed&amp;quot;, while the eyeball moves independently in its own animation.&lt;br /&gt;
&lt;br /&gt;
I have stored the poses &amp;quot;Open&amp;quot; and &amp;quot;Closed&amp;quot; at frames 0 and 2. The animation is defined to start at frame 6.&lt;br /&gt;
&lt;br /&gt;
[[File:Eyeblink.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Media:Eyeblink.sifz|Sample file]]&lt;br /&gt;
&lt;br /&gt;
All comments are welcome.&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Reuse_Animations/fr&amp;diff=23286</id>
		<title>Doc:Reuse Animations/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Reuse_Animations/fr&amp;diff=23286"/>
				<updated>2018-10-31T11:43:37Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Create + 1st part&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Réutiliser les Animations}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Advanced}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
L'un des buts de tout animateur (spécialement pour les plus paresseux comme moi) est d'avoir l'opportunité de réutiliser des parties d'animation. Cela permet de sauver beacoup de temps si vous pouvez insérer certaines portions d'animations déjà enregistrées à une autre position dans la temps.&lt;br /&gt;
&lt;br /&gt;
C'est tout spécialement utile pour faire parler les personnage car vous avez à animer la bouche du personnage selon des positions répétées dépendant des phonèmes qu'ils représentent durant le discours.&lt;br /&gt;
&lt;br /&gt;
Cela peut être fait très simplement en utilisant une combinaison de {l|Keyframe|keyframes}} et de canevas exportés.&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
&lt;br /&gt;
Notre but est d'enregistrer des animations et de les réustiliser plus tard. Cela peut être fait en utilisant des keyframes. Si vous créez quelques keyframes au début de votre animation, vous pouvez réutiliser ces  &amp;quot;poses&amp;quot; plus loin dans le temps en dupliquant simplement les keyframes à une autre position dans le temps. Pour cela, faites simplement ce qui suit:&lt;br /&gt;
&lt;br /&gt;
# Créez une Keyframe à une trame donnée (toutes vos keyframes devraient être créées proches les unes des autres pour utiliser une petite portion du temps. Nous voulons seulement enregistrer une &amp;quot;pose&amp;quot; et non une transition)&lt;br /&gt;
# Modifiez vos objets comme vous le désirez (par exemple faites fermer un oeil en déplaçant uniquement les points de la paupière).&lt;br /&gt;
# Donnez un nom à la keyframe en cliquant sur la cellule Description correspondante. &lt;br /&gt;
# Répétez les étapes précédentes le nombre de fois nécessaire pour faire une nouvelle &amp;quot;pose&amp;quot;. Disons que vous avez créé une keyframe à la trame n°2 (oeil ouvert) et n°4 (oeil fermé)&lt;br /&gt;
# Une fois terminé allez à une autre trame avec le {{l|Time Cursor|curseur de temps}}, sélectionnez la keyframe que vous voulez ajouter et pressez le bouton &amp;quot;Duplicate keyframe&amp;quot;. Vous obtiendrez une copie de la keyframe sélectionnée à la position courante du {{l|Time Cursor|curseur de temps}}.&lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 1 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Il y a un problème avec cette technique. Vous faites des copies de toutes les poses de l'animation que vous avez stockées dans les premières keyframes du temps (trame 2 et 4 dans ce cas) et donc vous avez fait des copies de tous les autres objets existant dans la scène (dans cet exemple, le globe occulaire).&lt;br /&gt;
&lt;br /&gt;
Si vous avez déjà une animation enregistrée du globe occulaire et que vous superposez un ensemble de keyframes &amp;quot;clignement&amp;quot; (ouvert et fermé)au milieu, alors l'animation du globe occulaire sera cassée par l'insertion des copies des keyframes de mouvements de la paupière.&lt;br /&gt;
&lt;br /&gt;
== Exporting the Canvas Parameter ==&lt;br /&gt;
&lt;br /&gt;
Every time you group the layers, you obtain a {{l|Group Layer}} that prevents the composition of the contained layers over layers outside of it.&lt;br /&gt;
&lt;br /&gt;
One of the parameters of the Group Layer is the {{l|Canvas|Canvas}}. The canvas is like a workspace that represents all the grouped layers. &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 2 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
To avoid the problem described in the previous section (the keyframes affecting all the objects in the scene) you can do following:&lt;br /&gt;
&lt;br /&gt;
#Before creating the keyframe poses of the eyelids, group all the layers that form the eyelids.&lt;br /&gt;
#Select the Group layer and select the Canvas parameter in the Parameter Dialog. &lt;br /&gt;
#Right click the Canvas parameter, export it, and give it a name (in the sample this will be &amp;quot;eyelids&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 3 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Go to the {{l|Canvas Browser Panel}} and select the just exported canvas. &lt;br /&gt;
&lt;br /&gt;
Double click it and a new workarea window will open with just the layers that were grouped at the step 1 - the &amp;quot;eyelids&amp;quot; canvas in the sample. &lt;br /&gt;
&lt;br /&gt;
[[File:Reuse Animations 4 0.63.06.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create all the keyframes you need to store your &amp;quot;poses&amp;quot;. Once done go to the proper frame and insert a copy of the pose keyframe. It will produce a keyframe in the &amp;quot;eyelids&amp;quot; canvas, but will not produce any keyframe on the other layers (for example the eyeball). This allows to independently animate of a portion of the model separated from the rest. Be sure that the exported canvas is as long as the animation.&lt;br /&gt;
&lt;br /&gt;
Now once you have stored the eye blinks (open and closed) at the desired position you can go to the main window (just close the &amp;quot;eyelids&amp;quot; canvas work area). You'll see that all the  modifications have been transmitted to the main animation but they haven't created any keyframes in the main work area. Even the layers that are inside the &amp;quot;eyelids&amp;quot; Group layer don't have any keyframes (you can see an indication that there are keyframes in the exported canvas - dashed vertical lines - but no keyframe is displayed in the keyframe dialog). Anyway, you can see the waypoints created by the keyframes and tweak them, but not the keyframes themselves. To modify the keyframes you should edit the exported canvas again in its own work area.  If you modify the grouped layers from the main work area, waypoints will be created according to the main work area keyframes, not the exported canvas work area, so you will get different effects depending upon which work area you use to modify the grouped layers.&lt;br /&gt;
&lt;br /&gt;
Now, once you have created your animation of the eyelids you can go to the eyeball and modify it to your taste, inserting keyframes or waypoints with no worries about interfering with the eyelid animation. Also you can animate the eyeball before and make the animation of the eyelids later. They won't interfere with each other.&lt;br /&gt;
&lt;br /&gt;
It would be a great improvement if you could connect the time cursors of the main work area and the exported canvas work area to show both windows at the same current time. This would give feedback on where to insert the 'pose' keyframes in your local animation.&lt;br /&gt;
&lt;br /&gt;
== A sample == &lt;br /&gt;
&lt;br /&gt;
Here you can find a sample animation of a blinking eye (the closed and open positions are copies of the keyframes &amp;quot;Open&amp;quot; and &amp;quot;Closed&amp;quot;, while the eyeball moves independently in its own animation.&lt;br /&gt;
&lt;br /&gt;
I have stored the poses &amp;quot;Open&amp;quot; and &amp;quot;Closed&amp;quot; at frames 0 and 2. The animation is defined to start at frame 6.&lt;br /&gt;
&lt;br /&gt;
[[File:Eyeblink.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Media:Eyeblink.sifz|Sample file]]&lt;br /&gt;
&lt;br /&gt;
All comments are welcome.&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23274</id>
		<title>Doc:Flower Animation/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23274"/>
				<updated>2018-02-18T01:46:31Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Animation de la tige */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Animer des formes}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Intermediate}}&lt;br /&gt;
{{Category|Updated}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
         &lt;br /&gt;
          Cette page à besoin d'être traduite, soyez patient et/ou participez!&lt;br /&gt;
&lt;br /&gt;
=== Éléments de base ===&lt;br /&gt;
&lt;br /&gt;
Dans le {{l|Doc:Creating_Shapes|tutorial précédent}}, vous avez appris à créer des formes avec l'{{l|Spline Tool}}, dans ce tutoriel, nous allons apprendre comment créer une animation simple consistant à faire grandir une fleur en utilisant les {{l|Doc:Creating Shapes|Splines}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 0.png|right|frame]]  Ouvrez ''Synfig Studio''&amp;amp;mdash; une nouvelle animation se crée. Si ''Synfig Studio'' est déjà ouvert, faites {{c|Fichier|Nouveau}} dans la boite à outil.&lt;br /&gt;
&lt;br /&gt;
Premièrement, nous avons besoin de créer un dégradé comme arrière-plan. Cliquez sur les couleurs de contour et de remplissage dans la {{l|Toolbox}} pour sélectionner les couleurs que votre dégradé prendra. Vous pouvez également éditer directement le dégradé en cliquant sur la ligne Dégradé par défaut dans la boite à outils.&lt;br /&gt;
&lt;br /&gt;
Sélectionnez l'{{l|Gradient Tool}} et déplacer votre curseur verticalement le long du canevas pour le remplir avec un dégradé.&lt;br /&gt;
&lt;br /&gt;
Ensuite, sélectionnez l'{{l|Spline Tool}} et dans le panneau d'option des outils, vérifiez que uniquement {{Literal|Créer une Région}} est sélectionné. Dans la boite à outils, mettez la couleur de remplissage sur vert. Dessinez une sorte de triangle avec l'Outil Spline. Pour fermer la forme après avoir dessiné les trois vertex, cliquez droit sur le premier vertex et choisissez {{Literal|Boucler}}.&lt;br /&gt;
&lt;br /&gt;
Maintenant que le chemin de la forme est fermé, vous pouvez générer réellement la forme en sélectionnant un autre outil ou en cliquant sur le bouton avec l'icône engrenages dans le bas du {{l|Tool Options Panel}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 1 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Cela seras la base de la tige. Vous pouvez modifier les poignées de tangentes (les points rouges) un petit peu pour rendre le triangle plus rond. Avec l'{{l|Transform tool}}, cliquez-droit sur chacun des vertex et sélectionner {{Literal|Séparer les tangentes}}, ainsi les poignées de tangentes de chaque vertex peuvent être déplacé indépendamment.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 2 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== Animation de la tige ==&lt;br /&gt;
&lt;br /&gt;
Depuis le Menu Canvas, sélectionnez l'icone du {{l|Caret|menu chevron}} dans le coin supérieur gauche, à l'endroit ou les règles se croise, et sélectionnez {{c|Canevas|Propriétés}}. Allez sur l'onglet {{Literal|Temps}}, réglez {{Literal|Heure de fin}} à {{Literal|6s}} et cliquez sur le bouton {{Literal|Validez}}.&lt;br /&gt;
&lt;br /&gt;
Cliquez au début de l'Axe de temps ({{Literal|0f}}), puis, dans le {{l|Keyframes Panel}} (celui qui a une clé pour icône), si la liste est vide, cliquez sur le bouton dont l'icône est un &amp;quot;+&amp;quot; (ajouter un nouvelle image clé).&lt;br /&gt;
Les {{l|Keyframe|Images clés}} nous permettent ''fixer'' la scène; c'est à dire, sur une Image Clé, toutes les propriétés de tous les éléments de la scène sont enregistrés.&lt;br /&gt;
De nouveau cliquez sur l'Axe de temps à {{Literal|4s 12f}} (ie 4.5s à 24 images par seconde - fps).&lt;br /&gt;
Cliquez sur le bonhomme vert en bas à droite de la fenêtre Canevas (l'icône peut être différente suivant le thème de votre système) pour basculez dans le {{l|Animate Editing Mode}} (le bonhomme devient rouge).&lt;br /&gt;
&lt;br /&gt;
Avec l'{{l|Outil Transformation}}, sélectionnez le germe vert et déplacez le vertex supérieur vers le hautpour faire une tige. &lt;br /&gt;
Vous pouvez jouer avec les poignées du vertex pour tordre la forme légèrement si vous le voulez.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 3 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Pendant que vous en êtes à {{Literal|4s 12f}}, faites unclic-droit sur la bordure de la tige, refermez le haut et choisissez {{Literal|Insert Item (smart)}}. Faites de même de l'autre côté de la tige. Faites un clic-droit sur ces nouveaux points et choisissez {{Literal|Split Tangents}}. Puis essayez de faire une forme qui ressemble à celle de cette image pour créer le bouton de la fleur.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas4.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Maintenant si vous cliquez sur {{Literal|2s}} (par exemple), vous verrez que la forme du bouton est presque visible, meêm si le bourgeon est relativement petit et même si les poignées du bouton sont invisibles. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas5.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Disons que nous voulions que le bouton n'apparaisse qu'à 3s 12f, et soit à sa taille finale à 4s 12f. &lt;br /&gt;
&lt;br /&gt;
Cliquez sur {{Literal|3s 12f}} sur la Ligne de Temps. Maintenant jetez un oeil aux panneaux {{Literal|Paramètres}} et {{Literal|Ligne de Temps}} en bas. Vous verrez que chacun des paramètres dans le panneau Paramètres correspond à une ligne dans le panneau Ligne de Temps. Le dernier paramètre est la liste des vertices. Cliquez sur la petite flèche à gauche pour déplier la liste. Vous devriez voir quelque chose comme ceci:&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 6 TimeTrackParameterPanel 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Chaque gros point vert (ou {{l|waypoints|waypoint}}) correspond à une valeur enregistrée (ici les positions des vertices qui ont été enregistrées à 0f avec la keyframe, et à 4s quand nous avons bougé quelques vertices ou poignées de vertices). Les deux vertices que nous avons ajoutés pour former le bouton sont marqués à {{Literal|DYN}} (dynamic). Faites un clic-droit dessus dans la liste des paramètres et sélectionnez &amp;quot;Mark Activepoint as Off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Le panneau devrait ressembler désormais à ceci, la partie grise étant la partie où les vertices du bouton n'ont pas d'effet sur la tige. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 7 WaypointsActivepointsOff.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Par exemple si vous cliquez sur {{Literal|2s}} ou même {{Literal|3s}} maintenant, la forme du bouton n'est pas visible. Il commence à apparaître seulement un peu après 3s 12f. &lt;br /&gt;
&lt;br /&gt;
Cependant, la forme de la tige peut ne pas paraître bonne durant sa croissance entre 0 et 4s. Assurez vous que vous êtes toujours en Mode Animation et ajustez la forme à différents moements dans le temps afin d'obtenir quelque chose que vous aimez. &lt;br /&gt;
&lt;br /&gt;
L'animation de la tige est maintenant terminée mais il manque toujours les pétales. &lt;br /&gt;
Vous pouvez voir une prévisualisation de votre animation: allez à {{c|File|Preview}}, validez, attendez que la prévisualisation ait été générée et regardez. &lt;br /&gt;
&lt;br /&gt;
{{Note|Note|Les prévisualisations sont souvent très pixelisées et floues mais le rendu final sera impeccable. On peut obtenir des qualités de prévisualisation de meilleure qualité en utilisant des valeurs supérieures pour 'Zoom' et 'Frames per second' dans la boîte de dialogue.}}&lt;br /&gt;
&lt;br /&gt;
== Ajouter des pétales ==&lt;br /&gt;
&lt;br /&gt;
Maintenant quitter le {{Literal|Mode Animation}} en cliquant sur le cercle rouge en bas à droite du Canevas.&lt;br /&gt;
&lt;br /&gt;
Changez la couleur de remplissage en rose, et créez un pétale avec l'outil Spline. Vous remarquerez que la {{l|duck|poignée}} verte qui permet un mouvement facile de la forme est au centre du canevas. Sélectionnez tous les vertices du pétale avec {{Shortcut|Ctrl|a}} et déplacez-les pès de la poignée verte (avec l'outil Transformation), comme indiqué.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-8.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Puis tirez la poignée vers très près du sommet du bouton de fleur. Pressez {{Shortcut|Ctrl|a}} à nouveau pour sélectionner tous les vertices du pétale et ajustez-le un peu avec l'outil Rotation. Aussi, dans le {{l|Panneau Calques}} sélectionnez le calque du pétale et placez-le '''en-dessous''' du calque de la tige.&lt;br /&gt;
Cliquez sur le pétale pour le sélectionner, puis ctrl-clic sur la tige. Les deux objets devraient être sélectionnés. &lt;br /&gt;
Maintenant cliquez sur le vertex au sommet de la tige et ctrl-clic sur la poignée verte du pétale (les deux devraient apparaître en couleur plus claire, du fait qu'elles sont sélectionnées). Puis clic-droit sur le vertex du haut de la tige, et sélectionnez {{Literal|Lier}}. Le pétale bougera un peu car la poignée verte est raccordée au vertex de la tige.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-9.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Maintenant qu'il y a un lien entre le pétale et le haut de la tige, quand le haut de la tige bouge, le pétale suivra le mouvement. (Et si la poignée verte du pétal bouge, le sommet de la tige bougera mais nous ne voulons pas faire ça ici.)&lt;br /&gt;
&lt;br /&gt;
Dans le Panneau Calques, sélectionnez le calque Pétale nouvellement créé et dupliquez-le (avec le troisième bouton, sur le bas du Panneau Calques). Sur le Canevas, pressez {{Shortcut|Ctrl|A}} pour sélectionner tous les vertices et du pétale dupliqué, et déplacez-les un peu afin que les pétales ne soient plus recouverts. (Ne déplacez pas la poignée verte, juste les oranges). Répétez le processus plusieurs fois pour obtenir quelque chose qui ressemble à ceci.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-10.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Notez que les pétales dupliqués soient également liés à la tige.&lt;br /&gt;
Si vous retournez à la première keyframe, vous verrez que les pétales sont visibles.&lt;br /&gt;
Nous ne voulons pas ça. Nous voulons que les pétales apparaissent et fleurissent presque à la fin de leur croissance.&lt;br /&gt;
&lt;br /&gt;
== Cacher les pétales ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- This part is maybe the most clumsy one. I guess there may be an easier way to manage this step, and if I find it, I'll update the tutorial ;) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disons que nous voulions que les pétales apparaissent un peu après 4 secondes dans l'animation et qu'elle soit à sa taille finale à 5 secondes, au lieu d'être visible et à sa taille finale tout le temps.&lt;br /&gt;
&lt;br /&gt;
Basculez en {{Literal|Mode Animation}} à nouveau en cliquant sur le cercle vert en bas à droite du Canevas. Mais si nous allons à {{Literal|4s}} et les modifions, alors ils changent également à {{Literal|5s}}. Puisque la forme/position des pétales n'est pas fixée à ce moment du temps par un quelconque waypoints ou keyframes. Cela signifie que nous avons besoin d'une keyframe à {{Literal|5s}}. Sur la Ligne de Temps, cliquez pour placer le curseur à 5 secondes. Dans le {{l|Panneau des Keyframes}}, cliquez sur &amp;quot;+&amp;quot; pour ajouter une nouvelle keyframe.&lt;br /&gt;
&lt;br /&gt;
Maintenant cliquez sur {{literal|4s}}, et dans le Panneau Calques sélectionnez tous les calques des pétales (avech ctrl+clic), puis pressez {{Shortcut|Ctrl|A}} pour sélectionner tous les vertices des pétales. Réduisez leur échelle avec l'{{l|Outil Echelle}}, et déplacez-les de telle sorte qu'ils soient cachés par la tige comme montré.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-11.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
DE 4s à 5s, les pétales vont maintenant apparaître et fleurir. Mais remarquez que nous avons une keyframe à 0s qui nous rappelle aussi la forme des pétales. Cela pose problème &amp;amp;mdash; les pétales sont toujours visibles depuis la première keyframe jusqu'à la keyframe des 4s.&lt;br /&gt;
Nous pourrions soit réduire les pétales etajuster leur taille durant chaque trame entre 0s et 4s, ou nous pourrions les rendre invisibles durant cet intervalle.&lt;br /&gt;
&lt;br /&gt;
Choisissons cette seconde solution. Pour rendre les choses plus faciles, nous allons {{l|encapsulate|grouper}} les calques pétales dans un {{l|Paste Canvas|Inline Canvas}}. Avec tous les calques pétales sélectionnés, cliquez-droitsur les calquesdans le Panneau des Calques et sélectionnez {{Literal|Grouper}}. Vous pouvez renommer les calques pour rendre le schoses plus compréhensibles.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 12 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Sélectionnez le Canevas &amp;quot;Pétales&amp;quot; et sautes à la première keyframe. Dans l'onglet Param, définissez la valeur {{Literal|Quantité}} à {{Literal|0}}. Les pétales sont désormais invisibles pour cette keyframe.&lt;br /&gt;
Notez que deux waypoints sont ajoutés devant le paramètre {{Literal|Quantité}}, un à 0s et l'autre à 5s. Tirez le waypoint de 5s à 4s afin que l'opacité des pétales soit à 1 à 4s. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 13 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Il reste cependant un problème: de 0s à 4s, l'opacité des pétales augmente lentement, rendant visible les pétales quand ils ne le devraient pas. Afin de résoudre ceci, nous allons changer la méthode d'interpolation de la Quantité. Clquez-droit sur le waypoint Quantité à 0f, et sélectionnez {{Literal|Editer}}. Un nouveau dialogue va apparaître dans lequel vous pouver choisr l'interpolation In et Out. Définissez l'Interpolation Out à {{Literal|Constante}}.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 14 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
{{Note|Tip|Vous pouvez aussi changerl'interpolation Out du waypoint Out en cliquant-droit dessus et en sélectionnant {{c|Out|Constante}}.}}&lt;br /&gt;
Cela signifie que ''après'' ce waypoint, la valeur Quantité restera constante jusqu'à ce qu'un autre waypoint soit rencontré. Donc depuis 0f à 4s la valeur Quantité sera égale à 0, et à 4s elle sera soudainement changée à 1, et rendra les pétales visibles, comme attendu. Alternativement nous pourrions avoir obtenu le même effet en définissant l'Interpolation In du waypoint à 4s à {{Literal|Constante}}.&lt;br /&gt;
&lt;br /&gt;
Notez comment (la moitié du) waypoint change d'un cercle vert (signifiant une animation douce du paramètre de Qantité) à une étape rouge (signifiant que le paramètre Quantité est soudainement changé).&lt;br /&gt;
&lt;br /&gt;
On y est.&lt;br /&gt;
La tige grandit durant 4.5 secondes et restera fixe durant les dernières 1.5 secondes.&lt;br /&gt;
Les pétales sont cachés jusqu'à 4 secondes, puis grandissent rapidement entre 4 et 5 secondes, et restent fixes durant la dernière seconde également.&lt;br /&gt;
&lt;br /&gt;
Clqiez sur {{c|File|Rendu}} pour effectuer le rendu de l'Animation. Sélectionnez le format désiré, et assurez-vous que l'option {{Literal|Utiliser la trame en cours}} soit décochée (sinon une seule trame sera rendue).&lt;br /&gt;
&lt;br /&gt;
  Vous pouvez télécharger le projet [[File:FlowerTutorial.sifz|FlowerTutorial]] utilisé pour les captures d'écran.&lt;br /&gt;
&lt;br /&gt;
== La suite ==&lt;br /&gt;
&lt;br /&gt;
Synfig Studio inclus un {{l|Skeleton_Layer|système d'animation par Ossature}}. Dans le {{l|Doc:Basic_Bone_Tutorial|tutoriel suivant}} vous allez apprendre à réaliser une ossature basique.&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23273</id>
		<title>Doc:Flower Animation/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23273"/>
				<updated>2018-02-18T01:44:20Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Hiding the petals */  Traduction du paragraphe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Animer des formes}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Intermediate}}&lt;br /&gt;
{{Category|Updated}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
         &lt;br /&gt;
          Cette page à besoin d'être traduite, soyez patient et/ou participez!&lt;br /&gt;
&lt;br /&gt;
=== Éléments de base ===&lt;br /&gt;
&lt;br /&gt;
Dans le {{l|Doc:Creating_Shapes|tutorial précédent}}, vous avez appris à créer des formes avec l'{{l|Spline Tool}}, dans ce tutoriel, nous allons apprendre comment créer une animation simple consistant à faire grandir une fleur en utilisant les {{l|Doc:Creating Shapes|Splines}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 0.png|right|frame]]  Ouvrez ''Synfig Studio''&amp;amp;mdash; une nouvelle animation se crée. Si ''Synfig Studio'' est déjà ouvert, faites {{c|Fichier|Nouveau}} dans la boite à outil.&lt;br /&gt;
&lt;br /&gt;
Premièrement, nous avons besoin de créer un dégradé comme arrière-plan. Cliquez sur les couleurs de contour et de remplissage dans la {{l|Toolbox}} pour sélectionner les couleurs que votre dégradé prendra. Vous pouvez également éditer directement le dégradé en cliquant sur la ligne Dégradé par défaut dans la boite à outils.&lt;br /&gt;
&lt;br /&gt;
Sélectionnez l'{{l|Gradient Tool}} et déplacer votre curseur verticalement le long du canevas pour le remplir avec un dégradé.&lt;br /&gt;
&lt;br /&gt;
Ensuite, sélectionnez l'{{l|Spline Tool}} et dans le panneau d'option des outils, vérifiez que uniquement {{Literal|Créer une Région}} est sélectionné. Dans la boite à outils, mettez la couleur de remplissage sur vert. Dessinez une sorte de triangle avec l'Outil Spline. Pour fermer la forme après avoir dessiné les trois vertex, cliquez droit sur le premier vertex et choisissez {{Literal|Boucler}}.&lt;br /&gt;
&lt;br /&gt;
Maintenant que le chemin de la forme est fermé, vous pouvez générer réellement la forme en sélectionnant un autre outil ou en cliquant sur le bouton avec l'icône engrenages dans le bas du {{l|Tool Options Panel}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 1 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Cela seras la base de la tige. Vous pouvez modifier les poignées de tangentes (les points rouges) un petit peu pour rendre le triangle plus rond. Avec l'{{l|Transform tool}}, cliquez-droit sur chacun des vertex et sélectionner {{Literal|Séparer les tangentes}}, ainsi les poignées de tangentes de chaque vertex peuvent être déplacé indépendamment.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 2 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== Animation de la tige ==&lt;br /&gt;
&lt;br /&gt;
Depuis le Menu Canvas, sélectionnez l'icone du {{l|Caret|menu chevron}} dans le coin supérieur gauche, à l'endroit ou les règles se croise, et sélectionnez {{c|Canevas|Propriétés}}. Allez sur l'onglet {{Literal|Temps}}, réglez {{Literal|Heure de fin}} à {{Literal|6s}} et cliquez sur le bouton {{Literal|Validez}}.&lt;br /&gt;
&lt;br /&gt;
Cliquez au début de l'Axe de temps ({{Literal|0f}}), puis, dans le {{l|Keyframes Panel}} (celui qui a une clé pour icône), si la liste est vide, cliquez sur le bouton dont l'icône est un &amp;quot;+&amp;quot; (ajouter un nouvelle image clé).&lt;br /&gt;
Les {{l|Keyframe|Images clés}} nous permettent ''fixer'' la scène; c'est à dire, sur une Image Clé, toutes les propriétés de tous les éléments de la scène sont enregistrés.&lt;br /&gt;
De nouveau cliquez sur l'Axe de temps à {{Literal|4s 12f}} (ie 4.5s à 24 images par seconde - fps).&lt;br /&gt;
Cliquez sur le bonhomme vert en bas à droite de la fenêtre Canevas (l'icône peut être différente suivant le thème de votre système) pour basculez dans le {{l|Animate Editing Mode}} (le bonhomme devient rouge).&lt;br /&gt;
&lt;br /&gt;
Avec l'{{l|Outil Transformation}}, sélectionnez le germe vert et déplacez le vertex supérieur vers le hautpour faire une tige. &lt;br /&gt;
Vous pouvez jouer avec les poignées du vertex pour tordre la forme légèrement si vous le voulez.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 3 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Pendant que vous en êtes à {{Literal|4s 12f}}, faites unclic-droit sur la bordure de la tige, refermez le haut et choisissez {{Literal|Insert Item (smart)}}. Faites de même de l'autre côté de la tige. Faites un clic-droit sur ces nouveaux points et choisissez {{Literal|Split Tangents}}. Puis essayez de faire une forme qui ressemble à celle de cette image pour créer le bouton de la fleur.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas4.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Maintenant si vous cliquez sur {{Literal|2s}} (for example), you'll see that the shape of the bud is slightly visible, even if the sprout is rather small, and even if the bud ducks are invisible. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas5.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Disons que nous voulions que le bouton n'apparaisse qu'à 3s 12f, et soit à sa taille finale à 4s 12f. &lt;br /&gt;
&lt;br /&gt;
Cliquez sur {{Literal|3s 12f}} sur la Ligne de Temps. Maintenant jetez un oeil aux panneaux {{Literal|Paramètres}} et {{Literal|Ligne de Temps}} en bas. Vous verrez que chacun des paramètres dans le panneau Paramètres correspond à une ligne dans le panneau Ligne de Temps. Le dernier paramètre est la liste des vertices. Cliquez sur la petite flèche à gauche pour déplier la liste. Vous devriez voir quelque chose comme ceci:&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 6 TimeTrackParameterPanel 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Chaque gros point vert (ou {{l|waypoints|waypoint}}) correspond à une valeur enregistrée (ici les positions des vertices qui ont été enregistrées à 0f avec la keyframe, et à 4s quand nous avons bougé quelques vertices ou poignées de vertices). Les deux vertices que nous avons ajoutés pour former le bouton sont marqués à {{Literal|DYN}} (dynamic). Faites un clic-droit dessus dans la liste des paramètres et sélectionnez &amp;quot;Mark Activepoint as Off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Le panneau devrait ressembler désormais à ceci, la partie grise étant la partie où les vertices du bouton n'ont pas d'effet sur la tige. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 7 WaypointsActivepointsOff.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Par exemple si vous cliquez sur {{Literal|2s}} ou même {{Literal|3s}} maintenant, la forme du bouton n'est pas visible. Il commence à apparaître seulement un peu après 3s 12f. &lt;br /&gt;
&lt;br /&gt;
Cependant, la forme de la tige peut ne pas paraître bonne durant sa croissance entre 0 et 4s. Assurez vous que vous êtes toujours en Mode Animation et ajustez la forme à différents moements dans le temps afin d'obtenir quelque chose que vous aimez. &lt;br /&gt;
&lt;br /&gt;
L'animation de la tige est maintenant terminée mais il manque toujours les pétales. &lt;br /&gt;
Vous pouvez voir une prévisualisation de votre animation: allez à {{c|File|Preview}}, validez, attendez que la prévisualisation ait été générée et regardez. &lt;br /&gt;
&lt;br /&gt;
{{Note|Note|Les prévisualisations sont souvent très pixelisées et floues mais le rendu final sera impeccable. On peut obtenir des qualités de prévisualisation de meilleure qualité en utilisant des valeurs supérieures pour 'Zoom' et 'Frames per second' dans la boîte de dialogue.}}&lt;br /&gt;
&lt;br /&gt;
== Ajouter des pétales ==&lt;br /&gt;
&lt;br /&gt;
Maintenant quitter le {{Literal|Mode Animation}} en cliquant sur le cercle rouge en bas à droite du Canevas.&lt;br /&gt;
&lt;br /&gt;
Changez la couleur de remplissage en rose, et créez un pétale avec l'outil Spline. Vous remarquerez que la {{l|duck|poignée}} verte qui permet un mouvement facile de la forme est au centre du canevas. Sélectionnez tous les vertices du pétale avec {{Shortcut|Ctrl|a}} et déplacez-les pès de la poignée verte (avec l'outil Transformation), comme indiqué.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-8.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Puis tirez la poignée vers très près du sommet du bouton de fleur. Pressez {{Shortcut|Ctrl|a}} à nouveau pour sélectionner tous les vertices du pétale et ajustez-le un peu avec l'outil Rotation. Aussi, dans le {{l|Panneau Calques}} sélectionnez le calque du pétale et placez-le '''en-dessous''' du calque de la tige.&lt;br /&gt;
Cliquez sur le pétale pour le sélectionner, puis ctrl-clic sur la tige. Les deux objets devraient être sélectionnés. &lt;br /&gt;
Maintenant cliquez sur le vertex au sommet de la tige et ctrl-clic sur la poignée verte du pétale (les deux devraient apparaître en couleur plus claire, du fait qu'elles sont sélectionnées). Puis clic-droit sur le vertex du haut de la tige, et sélectionnez {{Literal|Lier}}. Le pétale bougera un peu car la poignée verte est raccordée au vertex de la tige.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-9.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Maintenant qu'il y a un lien entre le pétale et le haut de la tige, quand le haut de la tige bouge, le pétale suivra le mouvement. (Et si la poignée verte du pétal bouge, le sommet de la tige bougera mais nous ne voulons pas faire ça ici.)&lt;br /&gt;
&lt;br /&gt;
Dans le Panneau Calques, sélectionnez le calque Pétale nouvellement créé et dupliquez-le (avec le troisième bouton, sur le bas du Panneau Calques). Sur le Canevas, pressez {{Shortcut|Ctrl|A}} pour sélectionner tous les vertices et du pétale dupliqué, et déplacez-les un peu afin que les pétales ne soient plus recouverts. (Ne déplacez pas la poignée verte, juste les oranges). Répétez le processus plusieurs fois pour obtenir quelque chose qui ressemble à ceci.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-10.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Notez que les pétales dupliqués soient également liés à la tige.&lt;br /&gt;
Si vous retournez à la première keyframe, vous verrez que les pétales sont visibles.&lt;br /&gt;
Nous ne voulons pas ça. Nous voulons que les pétales apparaissent et fleurissent presque à la fin de leur croissance.&lt;br /&gt;
&lt;br /&gt;
== Cacher les pétales ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- This part is maybe the most clumsy one. I guess there may be an easier way to manage this step, and if I find it, I'll update the tutorial ;) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disons que nous voulions que les pétales apparaissent un peu après 4 secondes dans l'animation et qu'elle soit à sa taille finale à 5 secondes, au lieu d'être visible et à sa taille finale tout le temps.&lt;br /&gt;
&lt;br /&gt;
Basculez en {{Literal|Mode Animation}} à nouveau en cliquant sur le cercle vert en bas à droite du Canevas. Mais si nous allons à {{Literal|4s}} et les modifions, alors ils changent également à {{Literal|5s}}. Puisque la forme/position des pétales n'est pas fixée à ce moment du temps par un quelconque waypoints ou keyframes. Cela signifie que nous avons besoin d'une keyframe à {{Literal|5s}}. Sur la Ligne de Temps, cliquez pour placer le curseur à 5 secondes. Dans le {{l|Panneau des Keyframes}}, cliquez sur &amp;quot;+&amp;quot; pour ajouter une nouvelle keyframe.&lt;br /&gt;
&lt;br /&gt;
Maintenant cliquez sur {{literal|4s}}, et dans le Panneau Calques sélectionnez tous les calques des pétales (avech ctrl+clic), puis pressez {{Shortcut|Ctrl|A}} pour sélectionner tous les vertices des pétales. Réduisez leur échelle avec l'{{l|Outil Echelle}}, et déplacez-les de telle sorte qu'ils soient cachés par la tige comme montré.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-11.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
DE 4s à 5s, les pétales vont maintenant apparaître et fleurir. Mais remarquez que nous avons une keyframe à 0s qui nous rappelle aussi la forme des pétales. Cela pose problème &amp;amp;mdash; les pétales sont toujours visibles depuis la première keyframe jusqu'à la keyframe des 4s.&lt;br /&gt;
Nous pourrions soit réduire les pétales etajuster leur taille durant chaque trame entre 0s et 4s, ou nous pourrions les rendre invisibles durant cet intervalle.&lt;br /&gt;
&lt;br /&gt;
Choisissons cette seconde solution. Pour rendre les choses plus faciles, nous allons {{l|encapsulate|grouper}} les calques pétales dans un {{l|Paste Canvas|Inline Canvas}}. Avec tous les calques pétales sélectionnés, cliquez-droitsur les calquesdans le Panneau des Calques et sélectionnez {{Literal|Grouper}}. Vous pouvez renommer les calques pour rendre le schoses plus compréhensibles.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 12 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Sélectionnez le Canevas &amp;quot;Pétales&amp;quot; et sautes à la première keyframe. Dans l'onglet Param, définissez la valeur {{Literal|Quantité}} à {{Literal|0}}. Les pétales sont désormais invisibles pour cette keyframe.&lt;br /&gt;
Notez que deux waypoints sont ajoutés devant le paramètre {{Literal|Quantité}}, un à 0s et l'autre à 5s. Tirez le waypoint de 5s à 4s afin que l'opacité des pétales soit à 1 à 4s. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 13 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Il reste cependant un problème: de 0s à 4s, l'opacité des pétales augmente lentement, rendant visible les pétales quand ils ne le devraient pas. Afin de résoudre ceci, nous allons changer la méthode d'interpolation de la Quantité. Clquez-droit sur le waypoint Quantité à 0f, et sélectionnez {{Literal|Editer}}. Un nouveau dialogue va apparaître dans lequel vous pouver choisr l'interpolation In et Out. Définissez l'Interpolation Out à {{Literal|Constante}}.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 14 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
{{Note|Tip|Vous pouvez aussi changerl'interpolation Out du waypoint Out en cliquant-droit dessus et en sélectionnant {{c|Out|Constante}}.}}&lt;br /&gt;
Cela signifie que ''après'' ce waypoint, la valeur Quantité restera constante jusqu'à ce qu'un autre waypoint soit rencontré. Donc depuis 0f à 4s la valeur Quantité sera égale à 0, et à 4s elle sera soudainement changée à 1, et rendra les pétales visibles, comme attendu. Alternativement nous pourrions avoir obtenu le même effet en définissant l'Interpolation In du waypoint à 4s à {{Literal|Constante}}.&lt;br /&gt;
&lt;br /&gt;
Notez comment (la moitié du) waypoint change d'un cercle vert (signifiant une animation douce du paramètre de Qantité) à une étape rouge (signifiant que le paramètre Quantité est soudainement changé).&lt;br /&gt;
&lt;br /&gt;
On y est.&lt;br /&gt;
La tige grandit durant 4.5 secondes et restera fixe durant les dernières 1.5 secondes.&lt;br /&gt;
Les pétales sont cachés jusqu'à 4 secondes, puis grandissent rapidement entre 4 et 5 secondes, et restent fixes durant la dernière seconde également.&lt;br /&gt;
&lt;br /&gt;
Clqiez sur {{c|File|Rendu}} pour effectuer le rendu de l'Animation. Sélectionnez le format désiré, et assurez-vous que l'option {{Literal|Utiliser la trame en cours}} soit décochée (sinon une seule trame sera rendue).&lt;br /&gt;
&lt;br /&gt;
  Vous pouvez télécharger le projet [[File:FlowerTutorial.sifz|FlowerTutorial]] utilisé pour les captures d'écran.&lt;br /&gt;
&lt;br /&gt;
== La suite ==&lt;br /&gt;
&lt;br /&gt;
Synfig Studio inclus un {{l|Skeleton_Layer|système d'animation par Ossature}}. Dans le {{l|Doc:Basic_Bone_Tutorial|tutoriel suivant}} vous allez apprendre à réaliser une ossature basique.&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23272</id>
		<title>Doc:Flower Animation/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23272"/>
				<updated>2018-02-18T01:10:20Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Adding the petals */ Traduction du paragraphe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Animer des formes}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Intermediate}}&lt;br /&gt;
{{Category|Updated}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
         &lt;br /&gt;
          Cette page à besoin d'être traduite, soyez patient et/ou participez!&lt;br /&gt;
&lt;br /&gt;
=== Éléments de base ===&lt;br /&gt;
&lt;br /&gt;
Dans le {{l|Doc:Creating_Shapes|tutorial précédent}}, vous avez appris à créer des formes avec l'{{l|Spline Tool}}, dans ce tutoriel, nous allons apprendre comment créer une animation simple consistant à faire grandir une fleur en utilisant les {{l|Doc:Creating Shapes|Splines}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 0.png|right|frame]]  Ouvrez ''Synfig Studio''&amp;amp;mdash; une nouvelle animation se crée. Si ''Synfig Studio'' est déjà ouvert, faites {{c|Fichier|Nouveau}} dans la boite à outil.&lt;br /&gt;
&lt;br /&gt;
Premièrement, nous avons besoin de créer un dégradé comme arrière-plan. Cliquez sur les couleurs de contour et de remplissage dans la {{l|Toolbox}} pour sélectionner les couleurs que votre dégradé prendra. Vous pouvez également éditer directement le dégradé en cliquant sur la ligne Dégradé par défaut dans la boite à outils.&lt;br /&gt;
&lt;br /&gt;
Sélectionnez l'{{l|Gradient Tool}} et déplacer votre curseur verticalement le long du canevas pour le remplir avec un dégradé.&lt;br /&gt;
&lt;br /&gt;
Ensuite, sélectionnez l'{{l|Spline Tool}} et dans le panneau d'option des outils, vérifiez que uniquement {{Literal|Créer une Région}} est sélectionné. Dans la boite à outils, mettez la couleur de remplissage sur vert. Dessinez une sorte de triangle avec l'Outil Spline. Pour fermer la forme après avoir dessiné les trois vertex, cliquez droit sur le premier vertex et choisissez {{Literal|Boucler}}.&lt;br /&gt;
&lt;br /&gt;
Maintenant que le chemin de la forme est fermé, vous pouvez générer réellement la forme en sélectionnant un autre outil ou en cliquant sur le bouton avec l'icône engrenages dans le bas du {{l|Tool Options Panel}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 1 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Cela seras la base de la tige. Vous pouvez modifier les poignées de tangentes (les points rouges) un petit peu pour rendre le triangle plus rond. Avec l'{{l|Transform tool}}, cliquez-droit sur chacun des vertex et sélectionner {{Literal|Séparer les tangentes}}, ainsi les poignées de tangentes de chaque vertex peuvent être déplacé indépendamment.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 2 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== Animation de la tige ==&lt;br /&gt;
&lt;br /&gt;
Depuis le Menu Canvas, sélectionnez l'icone du {{l|Caret|menu chevron}} dans le coin supérieur gauche, à l'endroit ou les règles se croise, et sélectionnez {{c|Canevas|Propriétés}}. Allez sur l'onglet {{Literal|Temps}}, réglez {{Literal|Heure de fin}} à {{Literal|6s}} et cliquez sur le bouton {{Literal|Validez}}.&lt;br /&gt;
&lt;br /&gt;
Cliquez au début de l'Axe de temps ({{Literal|0f}}), puis, dans le {{l|Keyframes Panel}} (celui qui a une clé pour icône), si la liste est vide, cliquez sur le bouton dont l'icône est un &amp;quot;+&amp;quot; (ajouter un nouvelle image clé).&lt;br /&gt;
Les {{l|Keyframe|Images clés}} nous permettent ''fixer'' la scène; c'est à dire, sur une Image Clé, toutes les propriétés de tous les éléments de la scène sont enregistrés.&lt;br /&gt;
De nouveau cliquez sur l'Axe de temps à {{Literal|4s 12f}} (ie 4.5s à 24 images par seconde - fps).&lt;br /&gt;
Cliquez sur le bonhomme vert en bas à droite de la fenêtre Canevas (l'icône peut être différente suivant le thème de votre système) pour basculez dans le {{l|Animate Editing Mode}} (le bonhomme devient rouge).&lt;br /&gt;
&lt;br /&gt;
Avec l'{{l|Outil Transformation}}, sélectionnez le germe vert et déplacez le vertex supérieur vers le hautpour faire une tige. &lt;br /&gt;
Vous pouvez jouer avec les poignées du vertex pour tordre la forme légèrement si vous le voulez.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 3 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Pendant que vous en êtes à {{Literal|4s 12f}}, faites unclic-droit sur la bordure de la tige, refermez le haut et choisissez {{Literal|Insert Item (smart)}}. Faites de même de l'autre côté de la tige. Faites un clic-droit sur ces nouveaux points et choisissez {{Literal|Split Tangents}}. Puis essayez de faire une forme qui ressemble à celle de cette image pour créer le bouton de la fleur.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas4.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Maintenant si vous cliquez sur {{Literal|2s}} (for example), you'll see that the shape of the bud is slightly visible, even if the sprout is rather small, and even if the bud ducks are invisible. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas5.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Disons que nous voulions que le bouton n'apparaisse qu'à 3s 12f, et soit à sa taille finale à 4s 12f. &lt;br /&gt;
&lt;br /&gt;
Cliquez sur {{Literal|3s 12f}} sur la Ligne de Temps. Maintenant jetez un oeil aux panneaux {{Literal|Paramètres}} et {{Literal|Ligne de Temps}} en bas. Vous verrez que chacun des paramètres dans le panneau Paramètres correspond à une ligne dans le panneau Ligne de Temps. Le dernier paramètre est la liste des vertices. Cliquez sur la petite flèche à gauche pour déplier la liste. Vous devriez voir quelque chose comme ceci:&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 6 TimeTrackParameterPanel 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Chaque gros point vert (ou {{l|waypoints|waypoint}}) correspond à une valeur enregistrée (ici les positions des vertices qui ont été enregistrées à 0f avec la keyframe, et à 4s quand nous avons bougé quelques vertices ou poignées de vertices). Les deux vertices que nous avons ajoutés pour former le bouton sont marqués à {{Literal|DYN}} (dynamic). Faites un clic-droit dessus dans la liste des paramètres et sélectionnez &amp;quot;Mark Activepoint as Off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Le panneau devrait ressembler désormais à ceci, la partie grise étant la partie où les vertices du bouton n'ont pas d'effet sur la tige. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 7 WaypointsActivepointsOff.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Par exemple si vous cliquez sur {{Literal|2s}} ou même {{Literal|3s}} maintenant, la forme du bouton n'est pas visible. Il commence à apparaître seulement un peu après 3s 12f. &lt;br /&gt;
&lt;br /&gt;
Cependant, la forme de la tige peut ne pas paraître bonne durant sa croissance entre 0 et 4s. Assurez vous que vous êtes toujours en Mode Animation et ajustez la forme à différents moements dans le temps afin d'obtenir quelque chose que vous aimez. &lt;br /&gt;
&lt;br /&gt;
L'animation de la tige est maintenant terminée mais il manque toujours les pétales. &lt;br /&gt;
Vous pouvez voir une prévisualisation de votre animation: allez à {{c|File|Preview}}, validez, attendez que la prévisualisation ait été générée et regardez. &lt;br /&gt;
&lt;br /&gt;
{{Note|Note|Les prévisualisations sont souvent très pixelisées et floues mais le rendu final sera impeccable. On peut obtenir des qualités de prévisualisation de meilleure qualité en utilisant des valeurs supérieures pour 'Zoom' et 'Frames per second' dans la boîte de dialogue.}}&lt;br /&gt;
&lt;br /&gt;
== Ajouter des pétales ==&lt;br /&gt;
&lt;br /&gt;
Maintenant quitter le {{Literal|Mode Animation}} en cliquant sur le cercle rouge en bas à droite du Canevas.&lt;br /&gt;
&lt;br /&gt;
Changez la couleur de remplissage en rose, et créez un pétale avec l'outil Spline. Vous remarquerez que la {{l|duck|poignée}} verte qui permet un mouvement facile de la forme est au centre du canevas. Sélectionnez tous les vertices du pétale avec {{Shortcut|Ctrl|a}} et déplacez-les pès de la poignée verte (avec l'outil Transformation), comme indiqué.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-8.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Puis tirez la poignée vers très près du sommet du bouton de fleur. Pressez {{Shortcut|Ctrl|a}} à nouveau pour sélectionner tous les vertices du pétale et ajustez-le un peu avec l'outil Rotation. Aussi, dans le {{l|Panneau Calques}} sélectionnez le calque du pétale et placez-le '''en-dessous''' du calque de la tige.&lt;br /&gt;
Cliquez sur le pétale pour le sélectionner, puis ctrl-clic sur la tige. Les deux objets devraient être sélectionnés. &lt;br /&gt;
Maintenant cliquez sur le vertex au sommet de la tige et ctrl-clic sur la poignée verte du pétale (les deux devraient apparaître en couleur plus claire, du fait qu'elles sont sélectionnées). Puis clic-droit sur le vertex du haut de la tige, et sélectionnez {{Literal|Lier}}. Le pétale bougera un peu car la poignée verte est raccordée au vertex de la tige.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-9.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Maintenant qu'il y a un lien entre le pétale et le haut de la tige, quand le haut de la tige bouge, le pétale suivra le mouvement. (Et si la poignée verte du pétal bouge, le sommet de la tige bougera mais nous ne voulons pas faire ça ici.)&lt;br /&gt;
&lt;br /&gt;
Dans le Panneau Calques, sélectionnez le calque Pétale nouvellement créé et dupliquez-le (avec le troisième bouton, sur le bas du Panneau Calques). Sur le Canevas, pressez {{Shortcut|Ctrl|A}} pour sélectionner tous les vertices et du pétale dupliqué, et déplacez-les un peu afin que les pétales ne soient plus recouverts. (Ne déplacez pas la poignée verte, juste les oranges). Répétez le processus plusieurs fois pour obtenir quelque chose qui ressemble à ceci.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-10.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Notez que les pétales dupliqués soient également liés à la tige.&lt;br /&gt;
Si vous retournez à la première keyframe, vous verrez que les pétales sont visibles.&lt;br /&gt;
Nous ne voulons pas ça. Nous voulons que les pétales apparaissent et fleurissent presque à la fin de leur croissance.&lt;br /&gt;
&lt;br /&gt;
== Hiding the petals ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- This part is maybe the most clumsy one. I guess there may be an easier way to manage this step, and if I find it, I'll update the tutorial ;) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's say we want the petals to appear a little after 4 seconds in the animation, and be full size at 5 seconds, instead of being visible and full size all the time.&lt;br /&gt;
&lt;br /&gt;
Switch to {{Literal|Animate Editing Mode}} again by clicking on the green circle at the bottom right of the canvas. But if we will go to {{Literal|4s}} and modify them, then they also change at {{Literal|5s}}. Because the shape/position of the petals is not fixated at this moment of time by any waypoints or keyframes. That means that we need a keyframe at {{Literal|5s}}. On the timetrack, click to place the cursor at 5 seconds. On the {{l|Keyframes Panel}}, click on &amp;quot;+&amp;quot; to add a new keyframe.&lt;br /&gt;
&lt;br /&gt;
Now click on {{literal|4s}}, and on the Layers Panel, select all the petals layers (with ctrl+click), then press {{Shortcut|Ctrl|A}} to select all the petals vertices. Scale them down with the {{l|Scale Tool}}, and move them, so they are hidden by the stem, as shown.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-11.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
From 4s to 5s, the petals will now appear and bloom. But notice that we have a keyframe at 0s which also remembers petals shape. That makes the problem &amp;amp;mdash; the petals are still visible from the first keyframe to the 4s keyframe.&lt;br /&gt;
We could either make the petals tiny and hidden tweaking their size on every frame from 0s to 4s, or we could make them invisible on this interval.&lt;br /&gt;
&lt;br /&gt;
Let's choose the second solution. To make things easier, we are going to {{l|encapsulate|encapsulate}} the petal layers into an {{l|Paste Canvas|Inline Canvas}}. With all the petal layers selected, right-click on them on the Layers Panel and select {{Literal|Encapsulate}}. You can rename the layers to &lt;br /&gt;
make things more understandable.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 12 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Select the &amp;quot;Petals&amp;quot; inline canvas and jump to the first keyframe. In the Param tabs, set the {{Literal|Amount}} value to {{Literal|0}}. The petals are now invisible on that keyframe.&lt;br /&gt;
Note that two waypoints were added in front of the {{Literal|Amount}} parameter, one at 0s and the other at 5s. Drag the 5s waypoint to 4s, so that the opacity of the petals will be 1 at 4s. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 13 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
There is still one problem left: from 0s to 4s, the opacity of the petals slowly increases, making the petals visible when they shouldn't. To solve this, we will change the Amount interpolation method. Right click on the Amount waypoint at 0f, and select {{Literal|Edit}}. A new dialog will appear, in which you can choose the In and Out interpolation. Set the Out Interpolation to {{Literal|Constant}}.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 14 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
{{Note|Tip|You can also change waypoint Out interpolation by right-clicking on it and selecting {{c|Out|Constant}}.}}&lt;br /&gt;
This means that ''after'' that waypoint, the Amount value will remain constant, until another waypoint is encountered. So from 0f to 4s the Amount value will be equal to 0, and at 4s it will suddenly changed to 1, and make the petals visible, as expected.  Alternatively, we could have achieved the same effect by setting the In Interpolation of the waypoint at 4s to {{Literal|Constant}}.&lt;br /&gt;
&lt;br /&gt;
Notice how (half of) the waypoint changes from a green circle (meaning smooth animation of the amount parameter) to a red step (meaning that the amount parameter is suddenly stepped).&lt;br /&gt;
&lt;br /&gt;
Now you're done.&lt;br /&gt;
The stem grows for 4.5 seconds and then stays still the last 1.5 seconds.&lt;br /&gt;
The petals are hidden until 4 seconds, and then grow quickly between 4 and 5 seconds, and stay still the last 1 second too.&lt;br /&gt;
&lt;br /&gt;
Click on {{c|File|Render}} to render your animation. Select any format you want, and ensure that {{Literal|Use current frame}} option is unchecked (otherwise, one frame only will be rendered).&lt;br /&gt;
&lt;br /&gt;
  You can download the project [[File:FlowerTutorial.sifz|FlowerTutorial]] used for the screenshots.&lt;br /&gt;
&lt;br /&gt;
== La suite ==&lt;br /&gt;
&lt;br /&gt;
Synfig Studio inclus un {{l|Skeleton_Layer|système d'animation par Ossature}}. Dans le {{l|Doc:Basic_Bone_Tutorial|tutoriel suivant}} vous allez apprendre à réaliser une ossature basique.&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23271</id>
		<title>Doc:Flower Animation/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Flower_Animation/fr&amp;diff=23271"/>
				<updated>2018-02-18T00:27:24Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Animation de la tige */  Traduction de la fin du paragraphe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Animer des formes}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;br /&gt;
{{Category|Tutorials}}&lt;br /&gt;
{{Category|Tutorials Intermediate}}&lt;br /&gt;
{{Category|Updated}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
         &lt;br /&gt;
          Cette page à besoin d'être traduite, soyez patient et/ou participez!&lt;br /&gt;
&lt;br /&gt;
=== Éléments de base ===&lt;br /&gt;
&lt;br /&gt;
Dans le {{l|Doc:Creating_Shapes|tutorial précédent}}, vous avez appris à créer des formes avec l'{{l|Spline Tool}}, dans ce tutoriel, nous allons apprendre comment créer une animation simple consistant à faire grandir une fleur en utilisant les {{l|Doc:Creating Shapes|Splines}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 0.png|right|frame]]  Ouvrez ''Synfig Studio''&amp;amp;mdash; une nouvelle animation se crée. Si ''Synfig Studio'' est déjà ouvert, faites {{c|Fichier|Nouveau}} dans la boite à outil.&lt;br /&gt;
&lt;br /&gt;
Premièrement, nous avons besoin de créer un dégradé comme arrière-plan. Cliquez sur les couleurs de contour et de remplissage dans la {{l|Toolbox}} pour sélectionner les couleurs que votre dégradé prendra. Vous pouvez également éditer directement le dégradé en cliquant sur la ligne Dégradé par défaut dans la boite à outils.&lt;br /&gt;
&lt;br /&gt;
Sélectionnez l'{{l|Gradient Tool}} et déplacer votre curseur verticalement le long du canevas pour le remplir avec un dégradé.&lt;br /&gt;
&lt;br /&gt;
Ensuite, sélectionnez l'{{l|Spline Tool}} et dans le panneau d'option des outils, vérifiez que uniquement {{Literal|Créer une Région}} est sélectionné. Dans la boite à outils, mettez la couleur de remplissage sur vert. Dessinez une sorte de triangle avec l'Outil Spline. Pour fermer la forme après avoir dessiné les trois vertex, cliquez droit sur le premier vertex et choisissez {{Literal|Boucler}}.&lt;br /&gt;
&lt;br /&gt;
Maintenant que le chemin de la forme est fermé, vous pouvez générer réellement la forme en sélectionnant un autre outil ou en cliquant sur le bouton avec l'icône engrenages dans le bas du {{l|Tool Options Panel}}.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 1 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Cela seras la base de la tige. Vous pouvez modifier les poignées de tangentes (les points rouges) un petit peu pour rendre le triangle plus rond. Avec l'{{l|Transform tool}}, cliquez-droit sur chacun des vertex et sélectionner {{Literal|Séparer les tangentes}}, ainsi les poignées de tangentes de chaque vertex peuvent être déplacé indépendamment.&lt;br /&gt;
&lt;br /&gt;
[[File:FlowerTutorial 2 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== Animation de la tige ==&lt;br /&gt;
&lt;br /&gt;
Depuis le Menu Canvas, sélectionnez l'icone du {{l|Caret|menu chevron}} dans le coin supérieur gauche, à l'endroit ou les règles se croise, et sélectionnez {{c|Canevas|Propriétés}}. Allez sur l'onglet {{Literal|Temps}}, réglez {{Literal|Heure de fin}} à {{Literal|6s}} et cliquez sur le bouton {{Literal|Validez}}.&lt;br /&gt;
&lt;br /&gt;
Cliquez au début de l'Axe de temps ({{Literal|0f}}), puis, dans le {{l|Keyframes Panel}} (celui qui a une clé pour icône), si la liste est vide, cliquez sur le bouton dont l'icône est un &amp;quot;+&amp;quot; (ajouter un nouvelle image clé).&lt;br /&gt;
Les {{l|Keyframe|Images clés}} nous permettent ''fixer'' la scène; c'est à dire, sur une Image Clé, toutes les propriétés de tous les éléments de la scène sont enregistrés.&lt;br /&gt;
De nouveau cliquez sur l'Axe de temps à {{Literal|4s 12f}} (ie 4.5s à 24 images par seconde - fps).&lt;br /&gt;
Cliquez sur le bonhomme vert en bas à droite de la fenêtre Canevas (l'icône peut être différente suivant le thème de votre système) pour basculez dans le {{l|Animate Editing Mode}} (le bonhomme devient rouge).&lt;br /&gt;
&lt;br /&gt;
Avec l'{{l|Outil Transformation}}, sélectionnez le germe vert et déplacez le vertex supérieur vers le hautpour faire une tige. &lt;br /&gt;
Vous pouvez jouer avec les poignées du vertex pour tordre la forme légèrement si vous le voulez.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 3 Canvas 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Pendant que vous en êtes à {{Literal|4s 12f}}, faites unclic-droit sur la bordure de la tige, refermez le haut et choisissez {{Literal|Insert Item (smart)}}. Faites de même de l'autre côté de la tige. Faites un clic-droit sur ces nouveaux points et choisissez {{Literal|Split Tangents}}. Puis essayez de faire une forme qui ressemble à celle de cette image pour créer le bouton de la fleur.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas4.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Maintenant si vous cliquez sur {{Literal|2s}} (for example), you'll see that the shape of the bud is slightly visible, even if the sprout is rather small, and even if the bud ducks are invisible. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorialCanvas5.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Disons que nous voulions que le bouton n'apparaisse qu'à 3s 12f, et soit à sa taille finale à 4s 12f. &lt;br /&gt;
&lt;br /&gt;
Cliquez sur {{Literal|3s 12f}} sur la Ligne de Temps. Maintenant jetez un oeil aux panneaux {{Literal|Paramètres}} et {{Literal|Ligne de Temps}} en bas. Vous verrez que chacun des paramètres dans le panneau Paramètres correspond à une ligne dans le panneau Ligne de Temps. Le dernier paramètre est la liste des vertices. Cliquez sur la petite flèche à gauche pour déplier la liste. Vous devriez voir quelque chose comme ceci:&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 6 TimeTrackParameterPanel 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Chaque gros point vert (ou {{l|waypoints|waypoint}}) correspond à une valeur enregistrée (ici les positions des vertices qui ont été enregistrées à 0f avec la keyframe, et à 4s quand nous avons bougé quelques vertices ou poignées de vertices). Les deux vertices que nous avons ajoutés pour former le bouton sont marqués à {{Literal|DYN}} (dynamic). Faites un clic-droit dessus dans la liste des paramètres et sélectionnez &amp;quot;Mark Activepoint as Off&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Le panneau devrait ressembler désormais à ceci, la partie grise étant la partie où les vertices du bouton n'ont pas d'effet sur la tige. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 7 WaypointsActivepointsOff.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Par exemple si vous cliquez sur {{Literal|2s}} ou même {{Literal|3s}} maintenant, la forme du bouton n'est pas visible. Il commence à apparaître seulement un peu après 3s 12f. &lt;br /&gt;
&lt;br /&gt;
Cependant, la forme de la tige peut ne pas paraître bonne durant sa croissance entre 0 et 4s. Assurez vous que vous êtes toujours en Mode Animation et ajustez la forme à différents moements dans le temps afin d'obtenir quelque chose que vous aimez. &lt;br /&gt;
&lt;br /&gt;
L'animation de la tige est maintenant terminée mais il manque toujours les pétales. &lt;br /&gt;
Vous pouvez voir une prévisualisation de votre animation: allez à {{c|File|Preview}}, validez, attendez que la prévisualisation ait été générée et regardez. &lt;br /&gt;
&lt;br /&gt;
{{Note|Note|Les prévisualisations sont souvent très pixelisées et floues mais le rendu final sera impeccable. On peut obtenir des qualités de prévisualisation de meilleure qualité en utilisant des valeurs supérieures pour 'Zoom' et 'Frames per second' dans la boîte de dialogue.}}&lt;br /&gt;
&lt;br /&gt;
== Adding the petals ==&lt;br /&gt;
&lt;br /&gt;
Now leave the {{Literal|Animate Editing Mode}} by clicking on the red circle at the right bottom of the canvas.&lt;br /&gt;
&lt;br /&gt;
Change the fill color to pink, and create a petal with the BLine Tool. You'll notice that the green {{l|duck|duck}} that allows easy movement of a shape is at the center of the canvas. Select all the vertices of the petal with {{Shortcut|Ctrl|a}} and move them close to the green duck (with the Transform Tool), as shown.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-8.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Then drag the green duck very close to the top of the bud. Hit {{Shortcut|Ctrl|a}} again to select all vertices of the petal and tweak it a bit with Rotate Tool. Also, in the {{l|Layers Panel}} select the petal layer and put it '''under''' the stem layer.&lt;br /&gt;
Click on the petal to select it, then ctrl-click on the stem. Both objects should be selected. &lt;br /&gt;
&lt;br /&gt;
Now click on the vertex at the top of the stem and ctrl-click on the green duck of the petal (both should appear in a lighter color, as they are selected). Then right-click on the stem top vertex, and select {{Literal|Link}}. The petal will move a bit as the green duck is snapped on the stem vertex.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-9.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Now that there's a link between the petal and the top of the stem, when the top of the stem moves, the petal will follow the move. (And if the green duck of the petal moves, the top of the stem will move, but we don't want to do that here.)&lt;br /&gt;
&lt;br /&gt;
On the Layers Panel, select the newly created Petal layer and duplicate it (with the third button, on the bottom of the Layers Panel). On the canvas, press {{Shortcut|Ctrl|A}} to select all the vertices of the duplicated petal, and move them a little, so the petals are no longer overlaid. (Don't move the green duck, just the orange ones). Repeat the process several time, to get something looking like this image.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-10.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Note that the duplicated petals are also linked to the stem.&lt;br /&gt;
If you go back to the first keyframe, you'll see that the petals are visible.&lt;br /&gt;
We don't want that. We want the petals to appear and bloom almost at the end of the growth.&lt;br /&gt;
&lt;br /&gt;
== Hiding the petals ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- This part is maybe the most clumsy one. I guess there may be an easier way to manage this step, and if I find it, I'll update the tutorial ;) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's say we want the petals to appear a little after 4 seconds in the animation, and be full size at 5 seconds, instead of being visible and full size all the time.&lt;br /&gt;
&lt;br /&gt;
Switch to {{Literal|Animate Editing Mode}} again by clicking on the green circle at the bottom right of the canvas. But if we will go to {{Literal|4s}} and modify them, then they also change at {{Literal|5s}}. Because the shape/position of the petals is not fixated at this moment of time by any waypoints or keyframes. That means that we need a keyframe at {{Literal|5s}}. On the timetrack, click to place the cursor at 5 seconds. On the {{l|Keyframes Panel}}, click on &amp;quot;+&amp;quot; to add a new keyframe.&lt;br /&gt;
&lt;br /&gt;
Now click on {{literal|4s}}, and on the Layers Panel, select all the petals layers (with ctrl+click), then press {{Shortcut|Ctrl|A}} to select all the petals vertices. Scale them down with the {{l|Scale Tool}}, and move them, so they are hidden by the stem, as shown.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial-11.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
From 4s to 5s, the petals will now appear and bloom. But notice that we have a keyframe at 0s which also remembers petals shape. That makes the problem &amp;amp;mdash; the petals are still visible from the first keyframe to the 4s keyframe.&lt;br /&gt;
We could either make the petals tiny and hidden tweaking their size on every frame from 0s to 4s, or we could make them invisible on this interval.&lt;br /&gt;
&lt;br /&gt;
Let's choose the second solution. To make things easier, we are going to {{l|encapsulate|encapsulate}} the petal layers into an {{l|Paste Canvas|Inline Canvas}}. With all the petal layers selected, right-click on them on the Layers Panel and select {{Literal|Encapsulate}}. You can rename the layers to &lt;br /&gt;
make things more understandable.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 12 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
Select the &amp;quot;Petals&amp;quot; inline canvas and jump to the first keyframe. In the Param tabs, set the {{Literal|Amount}} value to {{Literal|0}}. The petals are now invisible on that keyframe.&lt;br /&gt;
Note that two waypoints were added in front of the {{Literal|Amount}} parameter, one at 0s and the other at 5s. Drag the 5s waypoint to 4s, so that the opacity of the petals will be 1 at 4s. &lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 13 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
There is still one problem left: from 0s to 4s, the opacity of the petals slowly increases, making the petals visible when they shouldn't. To solve this, we will change the Amount interpolation method. Right click on the Amount waypoint at 0f, and select {{Literal|Edit}}. A new dialog will appear, in which you can choose the In and Out interpolation. Set the Out Interpolation to {{Literal|Constant}}.&lt;br /&gt;
&lt;br /&gt;
[[Image:FlowerTutorial 14 0.63.06.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
{{Note|Tip|You can also change waypoint Out interpolation by right-clicking on it and selecting {{c|Out|Constant}}.}}&lt;br /&gt;
This means that ''after'' that waypoint, the Amount value will remain constant, until another waypoint is encountered. So from 0f to 4s the Amount value will be equal to 0, and at 4s it will suddenly changed to 1, and make the petals visible, as expected.  Alternatively, we could have achieved the same effect by setting the In Interpolation of the waypoint at 4s to {{Literal|Constant}}.&lt;br /&gt;
&lt;br /&gt;
Notice how (half of) the waypoint changes from a green circle (meaning smooth animation of the amount parameter) to a red step (meaning that the amount parameter is suddenly stepped).&lt;br /&gt;
&lt;br /&gt;
Now you're done.&lt;br /&gt;
The stem grows for 4.5 seconds and then stays still the last 1.5 seconds.&lt;br /&gt;
The petals are hidden until 4 seconds, and then grow quickly between 4 and 5 seconds, and stay still the last 1 second too.&lt;br /&gt;
&lt;br /&gt;
Click on {{c|File|Render}} to render your animation. Select any format you want, and ensure that {{Literal|Use current frame}} option is unchecked (otherwise, one frame only will be rendered).&lt;br /&gt;
&lt;br /&gt;
  You can download the project [[File:FlowerTutorial.sifz|FlowerTutorial]] used for the screenshots.&lt;br /&gt;
&lt;br /&gt;
== La suite ==&lt;br /&gt;
&lt;br /&gt;
Synfig Studio inclus un {{l|Skeleton_Layer|système d'animation par Ossature}}. Dans le {{l|Doc:Basic_Bone_Tutorial|tutoriel suivant}} vous allez apprendre à réaliser une ossature basique.&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Basic_Bone_Tutorial}}&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=22143</id>
		<title>Dev:IDE Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=22143"/>
				<updated>2016-08-10T18:38:51Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ?=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you already {{l|Dev:Source_code|cloned the code}} from git}}&lt;br /&gt;
 {{Note|OpenGL support currently broken|'''OpenGL support is currently broken''' and the compilation of ''synfig-core will crash'' unless you compile it with '''--without-opengl'''. See [[http://www.synfig.org/forums/viewtopic.php?p=32060#p32053 this forums post]] for more details. (you can also modify synfig-core's configure.ac in the section --with-opengl which is active by default)}}&lt;br /&gt;
&lt;br /&gt;
== Anjuta from gnu/linux ==&lt;br /&gt;
(Tested with Anjuta 3.14.0)&lt;br /&gt;
&lt;br /&gt;
[http://anjuta.org/ What Anjuta is?]&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|anjuta}} from synaptic or whatever ... (from xubuntu 14.10 you must install Anjuta 3.14 from this [https://launchpad.net/~inizan-yannick/+archive/ubuntu/development ppa] for example : see [https://bugzilla.gnome.org/show_bug.cgi?id=728295#c17 here] why)&lt;br /&gt;
&lt;br /&gt;
when anjuta installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Anjuta ===&lt;br /&gt;
&lt;br /&gt;
* Open Anjuta, in {{Literal|Action}} choose {{Literal|Import a project}} and choose your code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
* Select a project name and Import &lt;br /&gt;
* At the project backend choice, select {{Literal|Autotools}} and go for it (if you kept the default project name, replace the existing project with the new one)&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
&lt;br /&gt;
Repeat for each synfig project&lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Anjuta.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Execute&amp;gt;|&amp;lt;Program Paramter&amp;gt;|Program}} : select synfig-studio binary {{Literal|/home/user/synfig/bin}} (i also setup the working directory)&lt;br /&gt;
* Now you need to clean the project and build it again (but this time from anjuta) &lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Clean}}&lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Build}}&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Extra note ===&lt;br /&gt;
&lt;br /&gt;
As Anjuta projects are saved in git examined folders, you could have sort of behavior when you ''git your code'' ... personally i have made a little script to backup/restore my own project to keep the folder safe of undesired change (.gitignore is also git surveyed !)&lt;br /&gt;
&lt;br /&gt;
== Eclipse from gnu/linux ==&lt;br /&gt;
(Tested with Eclipse 3.8.1)&lt;br /&gt;
&lt;br /&gt;
[http://eclipse.org/ What Eclipse is?]&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|eclipse}} &amp;amp; {{Literal|eclispe-cdt}} packages from synaptic or whatever ...&lt;br /&gt;
&lt;br /&gt;
when eclipse installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Eclipse ===&lt;br /&gt;
&lt;br /&gt;
Open Eclipse, choose your desired place for the workspace (i recommend not in ./synfig folder if you want to commit, better just above)&lt;br /&gt;
&lt;br /&gt;
For each synfig component (etl / core / studio ...)&lt;br /&gt;
&lt;br /&gt;
# Eclipse / Menu / Makefile project with existing code&lt;br /&gt;
# Choose your project name (etl / core / studio ...)&lt;br /&gt;
# Select code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
# Select your toolchain  ... and click Finish ... and Wait a little ... &lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Eclipse.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In {{Literal|C/C++ Build}} Uncheck {{Literal|Use default build command}} and put a {{Literal|make -j2 install}} (-jXX at your connivance ...)&lt;br /&gt;
* In {{Literal|Run/Debug Setting}} click &amp;quot;New&amp;quot; or &amp;quot;Edit...&amp;quot; , in C/C++ Application , browse and select the synfig-studio binary from {{Literal|/home/user/synfig/bin}}&lt;br /&gt;
&lt;br /&gt;
Stop on Startup, what the heck ?&lt;br /&gt;
* ''Make sure you are in the c++ perspective, then go to menu Run -&amp;gt; Debug Configurations. Make sure your application is chosen in the left pane, press the Debugger tab, and uncheck Stop on startup at: checkbox.'' [http://stackoverflow.com/questions/4278532/how-to-stop-gdb-from-executing-break-main-by-default-in-eclipse How to stop GDB from executing “break main” by default in Eclipse?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Have a functional environment ===&lt;br /&gt;
&lt;br /&gt;
Add Includes paths to Code Analysis&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In C/C++ General / Paths and Symbols / Includes , add all the paths you need (ETL / Synfig-core / Cairo / Gtkmm ....)&lt;br /&gt;
&lt;br /&gt;
== Netbeans from gnu/linux ==&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))]&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in /home/''yourUsername''/sources/synfig.single in the screenshots&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't forget to replace it with your own userName!&lt;br /&gt;
&lt;br /&gt;
=== Install Netbeans ===&lt;br /&gt;
&lt;br /&gt;
Be aware you need to have a JDK devel package installed on your machine to be able to install Netbeans&amp;lt;br /&amp;gt;&lt;br /&gt;
On Fedora, I had to install it with the following command&lt;br /&gt;
{{Literal|yum install -y java-1.8.0-openjdk-devel}} (or {{Literal|dnf install -y java-1.8.0-openjdk-devel}} on latest version)&lt;br /&gt;
&lt;br /&gt;
Install {{Literal|Netbeans}} from synaptic or from the [https://netbeans.org/downloads/ original download page], if not done already ...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
OR&lt;br /&gt;
*Another possibility (like on the video) is to set DEBUG=1 (and a space) before the script name in the console&amp;lt;br /&amp;gt;&lt;br /&gt;
in the console enter:{{Literal| /home/yourUsername/sources/synfig.single/autobuild/synfigstudio-linux-build.sh}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
when Netbeans installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_1.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||/home/yourUsername/sources/synfig.single&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Default(GNU (GNU))&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_2.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_3.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|/home/yourUsername/synfig/bin/synfigstudio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_4.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_5.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_6.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|/home/yourUsername/sources}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Default(GNU (GNU))}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_7.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''You are now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=22133</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=22133"/>
				<updated>2016-07-20T17:39:10Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Add a note about OpenGL support currently broken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
 {{Note|OpenGL support currently broken|'''OpenGL support is currently broken''' and the compilation of ''synfig-core will crash'' unless you compile it with '''--without-opengl'''. See [[http://www.synfig.org/forums/viewtopic.php?p=32060#p32053 this forums post]] for more details. (you can also modify synfig-core's configure.ac in the section --with-open which is active by default)}}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website https://git-for-windows.github.io/ and click on the big download button. If you don't see it, go and see an ophthalmologist :P&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
You can also paste in the Git Bash window with ''alt-space, modify, paste''&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&amp;lt;br /&amp;gt;&lt;br /&gt;
''With Git 2.5.0 I had an error with &amp;quot;mkdir C:\synfig-build&amp;quot; so I changed it to &amp;quot;mkdir /c/synfig-build&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /c/synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download and install Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Download Cygwin setup binary (http://www.cygwin.com/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Save it into ''C:\synfig-build\cygwin-dist\'' directory.&lt;br /&gt;
&lt;br /&gt;
Run Cygwin setup (with administrator rights) and install with the default parameters.&amp;lt;br /&amp;gt;&lt;br /&gt;
It should be intalled in ''C:\cygwin''.&lt;br /&gt;
&lt;br /&gt;
=== Download and install NSIS ===&lt;br /&gt;
&lt;br /&gt;
Download and install NSIS '''''&amp;gt;=3.0''''' (http://nsis.sourceforge.net/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't use ''2.46'', it will fail!&amp;lt;br /&amp;gt;&lt;br /&gt;
Install it full into ''C:\synfig-build\NSIS\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== You plan to build 64-bit version? You need 7zip ===&lt;br /&gt;
For the 64-bit build only!&lt;br /&gt;
Download and install 7zip (''http://downloads.sourceforge.net/sevenzip/7z920-x64.msi'').&amp;lt;br /&amp;gt;&lt;br /&gt;
Install into ''C:\synfig-build\7zip\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== First build ! ===&lt;br /&gt;
Be aware that it was downloading components and compiling during more than 2 hours for me.&amp;lt;br /&amp;gt;&lt;br /&gt;
It depends on you bandwith, the speed of your computer and hard disk type!&amp;lt;br /&amp;gt;&lt;br /&gt;
But it should be only for this first build if you follow it carefully :)&amp;lt;br /&amp;gt;&lt;br /&gt;
Sometimes it will looks stalled but you can check in your Task Manager if there are some sh/bash executable running.&amp;lt;br /&amp;gt;&lt;br /&gt;
So let it run !&lt;br /&gt;
&lt;br /&gt;
Open Cygwin console (with administrator privileges) and run the build script:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can go and take a coffee (or a cocoa, depending on your age ;) )&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation bundle will be written to ''C:\synfig-build\''&lt;br /&gt;
&lt;br /&gt;
== Netbeans from Windows ==&lt;br /&gt;
&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))] and adapted for Windows/Cygwin.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in C:\synfig-build\synfig\ as expected.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare your Build Tools ===&lt;br /&gt;
&lt;br /&gt;
You have to use a specific Build Tool Collection in your project.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go in the menu ''Tools'' / ''Options'' / ''C/C++'' / ''Build Tools''&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''Add'' (down-left).&amp;lt;br /&amp;gt;&lt;br /&gt;
Enter ''C:\cygwin\bin'' as '''Base Directory''', ''GNU 4.x Cygwin'' as '''Tool Collection Family''', and ''Cygwin_4.x'' as '''Tool Collection Name'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-AddNewTool.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, you should have the resulting information in the form:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-Build-Tools-Options.png]]&lt;br /&gt;
&lt;br /&gt;
Press Ok.&amp;lt;br /&amp;gt;&lt;br /&gt;
Now we are ready to setup the projects!&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans (if not done yet)&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:NB-Win-01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||c:\synfig-build\synfig&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Cygwin 4.x (GNU 4.x Cygwin)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|c:/synfig-build/synfig/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|c:/synfig-build/synfig/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|c:/synfig-build/dist/bin/synfigstudio.exe}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|c:\synfig-build}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Cygwin_4.x (GNU 4.x Cygwin)}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''You are now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=22132</id>
		<title>Dev:IDE Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=22132"/>
				<updated>2016-07-20T17:37:56Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Add note about OpenGL support broken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ?=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you already {{l|Dev:Source_code|cloned the code}} from git}}&lt;br /&gt;
 {{Note|OpenGL support currently broken|'''OpenGL support is currently broken''' and the compilation of ''synfig-core will crash'' unless you compile it with '''--without-opengl'''. See [[http://www.synfig.org/forums/viewtopic.php?p=32060#p32053 this forums post]] for more details. (you can also modify synfig-core's configure.ac in the section --with-open which is active by default)}}&lt;br /&gt;
&lt;br /&gt;
== Anjuta from gnu/linux ==&lt;br /&gt;
(Tested with Anjuta 3.14.0)&lt;br /&gt;
&lt;br /&gt;
[http://anjuta.org/ What Anjuta is?]&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|anjuta}} from synaptic or whatever ... (from xubuntu 14.10 you must install Anjuta 3.14 from this [https://launchpad.net/~inizan-yannick/+archive/ubuntu/development ppa] for example : see [https://bugzilla.gnome.org/show_bug.cgi?id=728295#c17 here] why)&lt;br /&gt;
&lt;br /&gt;
when anjuta installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Anjuta ===&lt;br /&gt;
&lt;br /&gt;
* Open Anjuta, in {{Literal|Action}} choose {{Literal|Import a project}} and choose your code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
* Select a project name and Import &lt;br /&gt;
* At the project backend choice, select {{Literal|Autotools}} and go for it (if you kept the default project name, replace the existing project with the new one)&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
&lt;br /&gt;
Repeat for each synfig project&lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Anjuta.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Execute&amp;gt;|&amp;lt;Program Paramter&amp;gt;|Program}} : select synfig-studio binary {{Literal|/home/user/synfig/bin}} (i also setup the working directory)&lt;br /&gt;
* Now you need to clean the project and build it again (but this time from anjuta) &lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Clean}}&lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Build}}&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Extra note ===&lt;br /&gt;
&lt;br /&gt;
As Anjuta projects are saved in git examined folders, you could have sort of behavior when you ''git your code'' ... personally i have made a little script to backup/restore my own project to keep the folder safe of undesired change (.gitignore is also git surveyed !)&lt;br /&gt;
&lt;br /&gt;
== Eclipse from gnu/linux ==&lt;br /&gt;
(Tested with Eclipse 3.8.1)&lt;br /&gt;
&lt;br /&gt;
[http://eclipse.org/ What Eclipse is?]&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|eclipse}} &amp;amp; {{Literal|eclispe-cdt}} packages from synaptic or whatever ...&lt;br /&gt;
&lt;br /&gt;
when eclipse installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Eclipse ===&lt;br /&gt;
&lt;br /&gt;
Open Eclipse, choose your desired place for the workspace (i recommend not in ./synfig folder if you want to commit, better just above)&lt;br /&gt;
&lt;br /&gt;
For each synfig component (etl / core / studio ...)&lt;br /&gt;
&lt;br /&gt;
# Eclipse / Menu / Makefile project with existing code&lt;br /&gt;
# Choose your project name (etl / core / studio ...)&lt;br /&gt;
# Select code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
# Select your toolchain  ... and click Finish ... and Wait a little ... &lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Eclipse.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In {{Literal|C/C++ Build}} Uncheck {{Literal|Use default build command}} and put a {{Literal|make -j2 install}} (-jXX at your connivance ...)&lt;br /&gt;
* In {{Literal|Run/Debug Setting}} click &amp;quot;New&amp;quot; or &amp;quot;Edit...&amp;quot; , in C/C++ Application , browse and select the synfig-studio binary from {{Literal|/home/user/synfig/bin}}&lt;br /&gt;
&lt;br /&gt;
Stop on Startup, what the heck ?&lt;br /&gt;
* ''Make sure you are in the c++ perspective, then go to menu Run -&amp;gt; Debug Configurations. Make sure your application is chosen in the left pane, press the Debugger tab, and uncheck Stop on startup at: checkbox.'' [http://stackoverflow.com/questions/4278532/how-to-stop-gdb-from-executing-break-main-by-default-in-eclipse How to stop GDB from executing “break main” by default in Eclipse?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Have a functional environment ===&lt;br /&gt;
&lt;br /&gt;
Add Includes paths to Code Analysis&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In C/C++ General / Paths and Symbols / Includes , add all the paths you need (ETL / Synfig-core / Cairo / Gtkmm ....)&lt;br /&gt;
&lt;br /&gt;
== Netbeans from gnu/linux ==&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))]&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in /home/''yourUsername''/sources/synfig.single in the screenshots&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't forget to replace it with your own userName!&lt;br /&gt;
&lt;br /&gt;
=== Install Netbeans ===&lt;br /&gt;
&lt;br /&gt;
Be aware you need to have a JDK devel package installed on your machine to be able to install Netbeans&amp;lt;br /&amp;gt;&lt;br /&gt;
On Fedora, I had to install it with the following command&lt;br /&gt;
{{Literal|yum install -y java-1.8.0-openjdk-devel}} (or {{Literal|dnf install -y java-1.8.0-openjdk-devel}} on latest version)&lt;br /&gt;
&lt;br /&gt;
Install {{Literal|Netbeans}} from synaptic or from the [https://netbeans.org/downloads/ original download page], if not done already ...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
OR&lt;br /&gt;
*Another possibility (like on the video) is to set DEBUG=1 (and a space) before the script name in the console&amp;lt;br /&amp;gt;&lt;br /&gt;
in the console enter:{{Literal| /home/yourUsername/sources/synfig.single/autobuild/synfigstudio-linux-build.sh}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
when Netbeans installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_1.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||/home/yourUsername/sources/synfig.single&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Default(GNU (GNU))&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_2.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_3.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|/home/yourUsername/synfig/bin/synfigstudio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_4.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_5.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_6.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|/home/yourUsername/sources}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Default(GNU (GNU))}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_7.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''You are now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:Build_Instructions&amp;diff=22074</id>
		<title>Dev:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:Build_Instructions&amp;diff=22074"/>
				<updated>2016-07-07T10:18:07Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Add notice for Fedora 24 (root password required)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Build Instructions}}&lt;br /&gt;
{{Category|Manual}}&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some information may be outdated, please have a look in the forums at the [http://www.synfig.org/forums/viewforum.php?f=13 build thread] to get fresh data...&lt;br /&gt;
&lt;br /&gt;
== Scripts provided with the source code ==&lt;br /&gt;
&lt;br /&gt;
Within the source code we provide two automatic package scripts. They are used to generate the library independent packages for Linux or Mac OSX. Since the scripts ship all the needed libraries in a single package the size of the packages are higher compared to the typical deb or rpm package. That's not the case for dmg package for OSX because in general they bundle all needed libraries in the dmg image.&lt;br /&gt;
&lt;br /&gt;
You can find those scripts under the ''autobuild'' folder from the source code. There are usage instruction inside each script allowing resuming builds (reusing the current downloaded libraries) and specific options to just compile and build the binaries without package them.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;u&amp;gt;for Fedora 24 (at least), you must define a password for root user&amp;lt;/u&amp;gt; in order to run ''synfigstudio-linux-build.sh'', otherwise su authentication failure will occur.&lt;br /&gt;
If needed add it with ''sudo su -'' then ''passwd''&lt;br /&gt;
&lt;br /&gt;
===Staged boost library===&lt;br /&gt;
To use the autobuild scripts with a staged boost library, you will need to define environment variables:&lt;br /&gt;
  $ export BOOST_ROOT=/my/boost/path&lt;br /&gt;
  $ export CPLUS_INCLUDE_PATH=&amp;quot;$CPLUS_INCLUDE_PATH:$BOOST_ROOT/include&amp;quot;&lt;br /&gt;
  $ export LD_LIBRARY_PATH=&amp;quot;$LD_LIBRARY_PATH:$BOOST_ROOT/lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Debug build===&lt;br /&gt;
Consider, that you can run in the following way to enable debug:&lt;br /&gt;
  $ DEBUG=1 ./synfigstudio-linux-build.sh&lt;br /&gt;
&lt;br /&gt;
In this case you can combine debug with other modes:&lt;br /&gt;
  $ DEBUG=1 ./synfigstudio-linux-build.sh quick # just invokes &amp;quot;make install&amp;quot; for every component&lt;br /&gt;
  $ DEBUG=1 ./synfigstudio-linux-build.sh synfig # builds synfig-core only&lt;br /&gt;
  $ DEBUG=1 ./synfigstudio-linux-build.sh synfigstudio # builds synfig-studio only&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* If you are using the released versions instead of GIT, none of the libtoolize or autoreconf steps are necessary. For released versions, &amp;quot;./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install&amp;quot; should be enough.&lt;br /&gt;
&lt;br /&gt;
* If you are using packages for synfig's dependencies, you want the '''development packages''' not the main packages. Check below for your distribution's packages.&lt;br /&gt;
&lt;br /&gt;
* Please read the {{l|Dev:Source code|source code}} page to check out the latest code. Please also check the {{l|Download|download page}} and the {{l|FAQ}} to find out about any issues that you may run into along the way.&lt;br /&gt;
&lt;br /&gt;
* Some Linux/BSD distros (Like Gentoo Linux) have a pkg-config that doesn't look in /usr/local/lib/pkgconfig by default. So if you are installing in anywhere other than the system pkg-config path, please run &amp;quot;export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig&amp;quot; or similar before building or installing anything.&lt;br /&gt;
&lt;br /&gt;
* Don't use automake 1.4, there are problems with it.&lt;br /&gt;
&lt;br /&gt;
* Using automake 1.9, 'make install' seems to re-link and re-install all the synfig core modules every time whether they have changed or not. If you intend to build code repetitively you can export export CXX=&amp;quot;/usr/bin/ccache /usr/bin/g++&amp;quot;. This allows to not rebuild the already build modules so they taken from the cache.&lt;br /&gt;
&lt;br /&gt;
* After you obtain the source code using the git repository, you obtain a single 'synfig' folder where the three main modules (etl, synfig-core and synfig-studio) are up to date. '''The trunk folder has been removed in the git tree'''. Please modify the build instructions for other platforms.&lt;br /&gt;
&lt;br /&gt;
* If you want to test a particular branch of the repository do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/synfig$ git branch -r &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You'll obtain a list of the remote branches that exists in the repo. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  origin/HEAD&lt;br /&gt;
  origin/genete_bones&lt;br /&gt;
  origin/genete_canvasview&lt;br /&gt;
  origin/genete_master&lt;br /&gt;
  origin/genete_onionskin&lt;br /&gt;
  origin/genete_scale_reverse&lt;br /&gt;
  origin/genete_setup_dialog&lt;br /&gt;
  origin/genete_svg&lt;br /&gt;
  origin/gerco_opengl&lt;br /&gt;
  origin/master&lt;br /&gt;
  origin/uiomae_opengl&lt;br /&gt;
  origin/zelgadis_cia&lt;br /&gt;
  origin/zelgadis_master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then to properly checkout a remote branch you have to create a local branch to track a particular remote branch and checkout it. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~/synfig$ git branch --track test_canvas origin/genete_canvasview&lt;br /&gt;
~/synfig$ git checkout test_canvas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your code is ready to be built on that branch.&lt;br /&gt;
&lt;br /&gt;
* The CVS requirement is only because the autopoint program run by autoreconf needs CVS. You can avoid the need for CVS by disabling the translation/gettext stuff in configure.ac.&lt;br /&gt;
&lt;br /&gt;
* If you don't want to install to a system-wide directory using sudo, run something like these commands before starting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
prefix=$(pwd)/install&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$prefix/lib/pkgconfig&amp;quot;&lt;br /&gt;
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH&lt;br /&gt;
export CXX=&amp;quot;/usr/bin/ccache /usr/bin/g++&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** export PKG_CONFIG_PATH=&amp;quot;$prefix/lib/pkgconfig&amp;quot; allows to find the linking libraries.&lt;br /&gt;
** export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH allows synfigstudio find the correct * libraries to render the icons for the toolbox etc.&lt;br /&gt;
** export CXX=&amp;quot;/usr/bin/ccache /usr/bin/g++&amp;quot; allows to use the cache to avoid rebuilding.&lt;br /&gt;
&lt;br /&gt;
And when you run ./configure, run it with &amp;lt;pre&amp;gt;--prefix $prefix&amp;lt;/pre&amp;gt; and don't use sudo when you do make install.&lt;br /&gt;
&lt;br /&gt;
* See the automatic building script attached.&lt;br /&gt;
&lt;br /&gt;
== System-specific instructions ==&lt;br /&gt;
 Please update them including the new GIT repo.&lt;br /&gt;
&lt;br /&gt;
* Gentoo: {{l|Dev:Gentoo Ebuilds|ebuilds}} are available for both release versions and GIT&lt;br /&gt;
* MacOS X: {{l|Dev:Building_On_Mac_OS_X|instructions for building}} with the GTK+ Aqua port are available.&lt;br /&gt;
* PCLinuxOS: {{l|Dev:PCLinuxOS build instructions|build instructions}}&lt;br /&gt;
* Windows: {{l|Dev:Building on Windows|instructions for building}} with {{l|Dev:Mingw_installation|mingw}} in {{l|Dev:MSYS2_Build|MSYS2}} are available.&lt;br /&gt;
&lt;br /&gt;
==System wide build Instructions==&lt;br /&gt;
&lt;br /&gt;
=== ETL ===&lt;br /&gt;
&lt;br /&gt;
ETL is a template library, there is nothing to build really, it just needs to be installed.&lt;br /&gt;
&lt;br /&gt;
'''Requires''': autoconf automake&amp;lt;br&amp;gt;&lt;br /&gt;
* Debian: build-essential autoconf automake libtool&lt;br /&gt;
* OS X:  already included with Mac OS X&lt;br /&gt;
&lt;br /&gt;
''Type the following commands at the directory where you cloned the git repo''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd synfig/ETL&lt;br /&gt;
$ autoreconf --install --force&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== synfig-core ===&lt;br /&gt;
&lt;br /&gt;
'''Requires''': ETL (etl-dev, already installed if you successfully built etl), libxml++, libsigc++, libltdl, libtool, gettext, autopoint (part of gettext-dev), cvs, boost-program-options&amp;lt;br&amp;gt;&lt;br /&gt;
* Debian: etl-dev libxml++2.6-dev libsigc++-2.0-dev libltdl3-dev libtool gettext cvs autopoint&lt;br /&gt;
* Fedora: ETL-devel libxml++-devel libsigc++20-devel libtool-ltdl-devel libtool gettext-devel cvs&lt;br /&gt;
* Gentoo: dev-cpp/ETL dev-cpp/libxmlpp dev-libs/libsigc++ dev-util/cvs&lt;br /&gt;
** If you are using ./configure --prefix=&amp;quot;$PREFIX&amp;quot; to configure synfig, do not install dev-cpp/ETL.&lt;br /&gt;
*OS X use glibtoolize instead of libtoolize, as Apple renamed it.&lt;br /&gt;
&lt;br /&gt;
'''Note''': libpng isn't required to build synfig, but if you build synfig without PNG support and go on to build synfigstudio, that step will fail (because the build process for synfigstudio uses synfig to create .png icon files).  The package is  libpng12-dev on Debian or media-libs/libpng on Gentoo.&lt;br /&gt;
&lt;br /&gt;
'''Note''': the 'configure.ac' file in the synfig-core directory doesn't work with libtool version 2, as shipped with ubuntu 8.10.  To work around the problem until a proper fix is found, comment out line 622 or thereabouts (it says &amp;quot;AC_CONFIG_SUBDIRS(libltdl)&amp;quot;) by putting a &amp;quot;#&amp;quot; at the front of the line.  The line is required for older versions of libtool, as shipped with other distributions. DO it straight with this command:&lt;br /&gt;
&amp;lt;pre&amp;gt; sed -i 's/^AC_CONFIG_SUBDIRS/# AC_CONFIG_SUBDIRS/' synfig-core/configure.ac &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Optional''': libpng, libmng, libjpeg, libfreetype, libfontconfig, libopenexr, libavcodec, libmagick++, vimage (MacOS only, proprietary)&amp;lt;br&amp;gt;&lt;br /&gt;
* Debian: libpng12-dev libmng-dev libjpeg62-dev libfreetype6-dev libfontconfig1-dev libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libmagick++9-dev&lt;br /&gt;
* Gentoo: sys-devel/libtool media-libs/libpng media-libs/libmng media-libs/jpeg media-libs/freetype media-libs/fontconfig media-libs/openexr media-libs/tiff&lt;br /&gt;
*Ubuntu (since Jaunty): Same libraries as Debian but do not use libmagick++9-dev, use graphicsmagick-libmagick-dev-compat instead. &lt;br /&gt;
&lt;br /&gt;
'''Runtime''': encodedv (from libdv), ffmpeg, convert (from imagemagick)&lt;br /&gt;
* Debian: libdv-bin ffmpeg imagemagick&lt;br /&gt;
* Gentoo: media-libs/libdv media-video/ffmpeg media-gfx/imagemagick&lt;br /&gt;
&lt;br /&gt;
''Type the following commands at the directory where you cloned the git repo''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd synfig/synfig-core&lt;br /&gt;
$ libtoolize --copy --force&lt;br /&gt;
$ autoreconf --install --force&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
$ sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
&lt;br /&gt;
* Don't use --enable-half, it is slow.&lt;br /&gt;
* If ETL was installed in a non-standard directory using --prefix=&amp;lt;location&amp;gt;, it suffices to run the configure script with an updated PKG_CONFIG_PATH environment variable. E.g.:&amp;lt;br&amp;gt;PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/my/install/prefix/lib/pkgconfig ./configure --prefix=/my/install/prefix&lt;br /&gt;
&lt;br /&gt;
=== synfig-studio ===&lt;br /&gt;
&lt;br /&gt;
''Requires'': ETL (etl-dev, already installed if you successfully built etl), synfig (libsynfig-dev, already installed if you successfully built synfig-core), gtkmm &amp;gt;= 2.4, gtk &amp;gt;= 2.0, glibmm, libsigc++, libltdl, libtool, gettext, cvs, intltool, libboost &amp;gt;= 1.53, libcairo &amp;gt;= 1.12&amp;lt;br&amp;gt;&lt;br /&gt;
* Debian: etl-dev libsynfig-dev libgtkmm-2.4-dev libgtk2.0-dev libglibmm-2.4-dev libsigc++-2.0-dev libltdl3-dev libtool gettext cvs&lt;br /&gt;
* Gentoo: virtual/ETL virtual/synfig dev-cpp/gtkmm-2.4 dev-libs/libsigc++ sys-devel/libtool&lt;br /&gt;
** If you are using ./configure --prefix=&amp;quot;$PREFIX&amp;quot; to configure synfigstudio, do not install virtual/ETL or virtual/synfig.&lt;br /&gt;
''Optional'': fonts (for the images), [http://www.fmod.org FMOD] (version 3.x, proprietary)&lt;br /&gt;
* Debian: ttf-freefont ttf-dejavu ttf-dustin&lt;br /&gt;
* Gentoo: freefonts dejavu&lt;br /&gt;
&lt;br /&gt;
''Type the following commands at the directory where you cloned the git repo''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd synfig/synfig-studio&lt;br /&gt;
$ ./bootstrap.sh&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
$ sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
== synfig-docs ==&lt;br /&gt;
&lt;br /&gt;
(This step isn't required to run synfig or synfigstudio, and the documents it gets you are really quite out of date)&lt;br /&gt;
&lt;br /&gt;
This is basically a copy of what is on this wiki.&lt;br /&gt;
&lt;br /&gt;
Requires: sgml processor, ldp docbook stylesheets, db2ps, db2pdf&lt;br /&gt;
* Debian: openjade ldp-docbook-dsssl docbook-utils&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make multiple-html&lt;br /&gt;
make ps&lt;br /&gt;
make pdf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== finalizing ==&lt;br /&gt;
&lt;br /&gt;
Depending on where you installed synfig to, you might have to tell your system where the libraries can be found.  That can be done via the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo ldconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build script examples ==&lt;br /&gt;
&lt;br /&gt;
If you want to build a binary for testing or debugging proposes you can run one of the following scripts:&lt;br /&gt;
&lt;br /&gt;
The binaries are installed at $(pwd)/install/bin. Alter the script according to your preferences.&lt;br /&gt;
&lt;br /&gt;
Your system must satisfy synfig's build requirements, the script won't do it for you. Also be sure what git branch are you building each time. In some cases you'll need to make clean on each folder first.&lt;br /&gt;
&lt;br /&gt;
Be sure that '''you have ccache installed''' on your system because you will get errors otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
CPUS=4&lt;br /&gt;
prefix=$(pwd)/install&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$prefix/lib/pkgconfig&amp;quot;&lt;br /&gt;
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH&lt;br /&gt;
export CXX=&amp;quot;/usr/bin/ccache /usr/bin/g++&amp;quot;&lt;br /&gt;
# Uncomment this line if you want to use ccache&lt;br /&gt;
# export CXX=&amp;quot;/usr/bin/ccache g++-snapshot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd ETL									&amp;amp;&amp;amp;&lt;br /&gt;
autoreconf --install --force						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --prefix $prefix						&amp;amp;&amp;amp;&lt;br /&gt;
make --debug=b install							&amp;amp;&amp;amp;&lt;br /&gt;
									\&lt;br /&gt;
cd ../synfig-core							&amp;amp;&amp;amp;&lt;br /&gt;
libtoolize --copy --force		 	                	&amp;amp;&amp;amp;&lt;br /&gt;
autoreconf --install --force						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --prefix $prefix --enable-optimization=0 --enable-debug	&amp;amp;&amp;amp;&lt;br /&gt;
make --debug=b -j $CPUS install					        &amp;amp;&amp;amp;&lt;br /&gt;
     	  								\&lt;br /&gt;
cd ../synfig-studio							&amp;amp;&amp;amp;&lt;br /&gt;
./bootstrap.sh						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --prefix $prefix --enable-optimization=0 --enable-debug	&amp;amp;&amp;amp;&lt;br /&gt;
make --debug=b -j $CPUS install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With libboost no standard installation to /personal/boost/install/path/ :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#move to synfig folder (to get the script out from git)&lt;br /&gt;
cd synfig&lt;br /&gt;
CPUS=2&lt;br /&gt;
prefix=$(pwd)/install&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$prefix/lib/pkgconfig&amp;quot;&lt;br /&gt;
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH&lt;br /&gt;
export CXX=&amp;quot;/usr/bin/ccache /usr/bin/g++&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd ETL									&amp;amp;&amp;amp;&lt;br /&gt;
autoreconf --install --force						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --prefix $prefix 						&amp;amp;&amp;amp;&lt;br /&gt;
make install 								&amp;amp;&amp;amp;&lt;br /&gt;
 									\&lt;br /&gt;
cd ../synfig-core 							&amp;amp;&amp;amp;&lt;br /&gt;
libtoolize --ltdl --copy --force 					&amp;amp;&amp;amp;&lt;br /&gt;
autoreconf --install --force 						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --with-boost=/personal/boost/install/path/boost_1_55_0 --enable-optimization=0 --prefix $prefix --enable-debug &amp;amp;&amp;amp;&lt;br /&gt;
make -j $CPUS install 							&amp;amp;&amp;amp;&lt;br /&gt;
 									\&lt;br /&gt;
cd ../synfig-studio 							&amp;amp;&amp;amp;&lt;br /&gt;
autoreconf --install --force 						&amp;amp;&amp;amp;&lt;br /&gt;
intltoolize --force --copy 						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --enable-optimization=0 --prefix $prefix --enable-debug 	&amp;amp;&amp;amp;&lt;br /&gt;
make -j $CPUS install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mac OSX ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
CPUS=4&lt;br /&gt;
prefix=$(pwd)/install&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$prefix/lib/pkgconfig&amp;quot;&lt;br /&gt;
export ACLOCAL_FLAGS=&amp;quot;-I $prefix/share/aclocal&amp;quot;&lt;br /&gt;
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH&lt;br /&gt;
# Uncomment those line if you want to use g++ instead of the native clang &lt;br /&gt;
# compiler and preprocessor&lt;br /&gt;
#export CXX=&amp;quot;/opt/local/bin/ccache /usr/bin/g++&amp;quot;&lt;br /&gt;
#export CPP=&amp;quot;/usr/bin/cpp&amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I/opt/local/include&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L/opt/local/lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd ETL									&amp;amp;&amp;amp;&lt;br /&gt;
autoreconf --install --force						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --prefix $prefix						&amp;amp;&amp;amp;&lt;br /&gt;
make --debug=b install							&amp;amp;&amp;amp;&lt;br /&gt;
									\&lt;br /&gt;
cd ../synfig-core							&amp;amp;&amp;amp;&lt;br /&gt;
libtoolize --copy --force		 	                	&amp;amp;&amp;amp;&lt;br /&gt;
autoreconf --install --force						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --prefix $prefix --enable-optimization=0 --enable-debug	&amp;amp;&amp;amp;&lt;br /&gt;
make --debug=b -j $CPUS install					        &amp;amp;&amp;amp;&lt;br /&gt;
     	  								\&lt;br /&gt;
cd ../synfig-studio							&amp;amp;&amp;amp;&lt;br /&gt;
./bootstrap.sh						&amp;amp;&amp;amp;&lt;br /&gt;
./configure --prefix $prefix --enable-optimization=0 --enable-debug	&amp;amp;&amp;amp;&lt;br /&gt;
make --debug=b -j $CPUS install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=21142</id>
		<title>Dev:IDE Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=21142"/>
				<updated>2016-01-10T00:08:49Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* + dnf for Fedora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ?=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you already {{l|Dev:Source_code|cloned the code}} from git}}&lt;br /&gt;
&lt;br /&gt;
== Anjuta from gnu/linux ==&lt;br /&gt;
(Tested with Anjuta 3.14.0)&lt;br /&gt;
&lt;br /&gt;
[http://anjuta.org/ What Anjuta is?]&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|anjuta}} from synaptic or whatever ... (from xubuntu 14.10 you must install Anjuta 3.14 from this [https://launchpad.net/~inizan-yannick/+archive/ubuntu/development ppa] for example : see [https://bugzilla.gnome.org/show_bug.cgi?id=728295#c17 here] why)&lt;br /&gt;
&lt;br /&gt;
when anjuta installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Anjuta ===&lt;br /&gt;
&lt;br /&gt;
* Open Anjuta, in {{Literal|Action}} choose {{Literal|Import a project}} and choose your code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
* Select a project name and Import &lt;br /&gt;
* At the project backend choice, select {{Literal|Autotools}} and go for it (if you kept the default project name, replace the existing project with the new one)&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
&lt;br /&gt;
Repeat for each synfig project&lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Anjuta.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Execute&amp;gt;|&amp;lt;Program Paramter&amp;gt;|Program}} : select synfig-studio binary {{Literal|/home/user/synfig/bin}} (i also setup the working directory)&lt;br /&gt;
* Now you need to clean the project and build it again (but this time from anjuta) &lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Clean}}&lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Build}}&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Extra note ===&lt;br /&gt;
&lt;br /&gt;
As Anjuta projects are saved in git examined folders, you could have sort of behavior when you ''git your code'' ... personally i have made a little script to backup/restore my own project to keep the folder safe of undesired change (.gitignore is also git surveyed !)&lt;br /&gt;
&lt;br /&gt;
== Eclipse from gnu/linux ==&lt;br /&gt;
(Tested with Eclipse 3.8.1)&lt;br /&gt;
&lt;br /&gt;
[http://eclipse.org/ What Eclipse is?]&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|eclipse}} &amp;amp; {{Literal|eclispe-cdt}} packages from synaptic or whatever ...&lt;br /&gt;
&lt;br /&gt;
when eclipse installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Eclipse ===&lt;br /&gt;
&lt;br /&gt;
Open Eclipse, choose your desired place for the workspace (i recommend not in ./synfig folder if you want to commit, better just above)&lt;br /&gt;
&lt;br /&gt;
For each synfig component (etl / core / studio ...)&lt;br /&gt;
&lt;br /&gt;
# Eclipse / Menu / Makefile project with existing code&lt;br /&gt;
# Choose your project name (etl / core / studio ...)&lt;br /&gt;
# Select code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
# Select your toolchain  ... and click Finish ... and Wait a little ... &lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Eclipse.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In {{Literal|C/C++ Build}} Uncheck {{Literal|Use default build command}} and put a {{Literal|make -j2 install}} (-jXX at your connivance ...)&lt;br /&gt;
* In {{Literal|Run/Debug Setting}} click &amp;quot;New&amp;quot; or &amp;quot;Edit...&amp;quot; , in C/C++ Application , browse and select the synfig-studio binary from {{Literal|/home/user/synfig/bin}}&lt;br /&gt;
&lt;br /&gt;
Stop on Startup, what the heck ?&lt;br /&gt;
* ''Make sure you are in the c++ perspective, then go to menu Run -&amp;gt; Debug Configurations. Make sure your application is chosen in the left pane, press the Debugger tab, and uncheck Stop on startup at: checkbox.'' [http://stackoverflow.com/questions/4278532/how-to-stop-gdb-from-executing-break-main-by-default-in-eclipse How to stop GDB from executing “break main” by default in Eclipse?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Have a functional environment ===&lt;br /&gt;
&lt;br /&gt;
Add Includes paths to Code Analysis&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In C/C++ General / Paths and Symbols / Includes , add all the paths you need (ETL / Synfig-core / Cairo / Gtkmm ....)&lt;br /&gt;
&lt;br /&gt;
== Netbeans from gnu/linux ==&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))]&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in /home/''yourUsername''/sources/synfig.single in the screenshots&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't forget to replace it with your own userName!&lt;br /&gt;
&lt;br /&gt;
=== Install Netbeans ===&lt;br /&gt;
&lt;br /&gt;
Be aware you need to have a JDK devel package installed on your machine to be able to install Netbeans&amp;lt;br /&amp;gt;&lt;br /&gt;
On Fedora, I had to install it with the following command&lt;br /&gt;
{{Literal|yum install -y java-1.8.0-openjdk-devel}} (or {{Literal|dnf install -y java-1.8.0-openjdk-devel}} on latest version)&lt;br /&gt;
&lt;br /&gt;
Install {{Literal|Netbeans}} from synaptic or from the [https://netbeans.org/downloads/ original download page], if not done already ...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
OR&lt;br /&gt;
*Another possibility (like on the video) is to set DEBUG=1 (and a space) before the script name in the console&amp;lt;br /&amp;gt;&lt;br /&gt;
in the console enter:{{Literal| /home/yourUsername/sources/synfig.single/autobuild/synfigstudio-linux-build.sh}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
when Netbeans installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_1.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||/home/yourUsername/sources/synfig.single&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Default(GNU (GNU))&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_2.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_3.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|/home/yourUsername/synfig/bin/synfigstudio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_4.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_5.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_6.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|/home/yourUsername/sources}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Default(GNU (GNU))}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_7.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''You are now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Doc:Basic_Bone_Tutorial/fr&amp;diff=20786</id>
		<title>Doc:Basic Bone Tutorial/fr</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Doc:Basic_Bone_Tutorial/fr&amp;diff=20786"/>
				<updated>2015-09-17T22:53:39Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Astuce */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Page info --&amp;gt;&lt;br /&gt;
{{Title|Basic Bone Tutorial}}&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Interface}}&lt;br /&gt;
{{Navigation|Category:Tutorials|Doc:Basic Bone Tutorial}}&lt;br /&gt;
{{NewTerminology}}&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials Basic]]&lt;br /&gt;
&amp;lt;!-- Page info end --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:bone.gif|left|frame]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Dans ce tutoriel nous allons doter un bras d'une armature avec des jointures fixes en utilisant le {{l|Skeleton Layer}} et 3 os (bones). Le bras est constitué de  3 parties: '''upperArm''', '''lowerArm''' et '''hand'''. (IMAGE 1)&lt;br /&gt;
&lt;br /&gt;
Chaque partie est groupée dans son propre calque et les trois groupes sont eux-mêmes groupés dans un calque appelé '''arm''' (IMAGE 2). &lt;br /&gt;
[[File:bonestut01.png|left|frame|IMAGE 1: Les trois parties du bras]] [[File:bonestut09.png|centre|frame|216x475px|IMAGE 2: Les calques]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Préparation des jointures ==&lt;br /&gt;
[[File:bonestut02.png|left|200x237px|frame|IMAGE 3: Jointures]]&lt;br /&gt;
Avant de commencer à doter le bras d'une armature nous devons le préparer afin d'être sûr que les jointures tourneront correctement. &lt;br /&gt;
&lt;br /&gt;
Dans ''image 1'' nous pouvons voir que la partie basse du haut du bras est droit et ne possède pas de bordure, alors que la partie haut de l'avant-bras possède une bordure qui est courbe. La partie basse de l'avant bras n'a pas de bordure et est également droite. La jointure de la main est également courbe avec une bordure. &lt;br /&gt;
&lt;br /&gt;
Pour s'assurer que le parties de jointures du bras tournent correctement, nous les avons faites avec l'aide de quelques croix de visée (ou crosshair, image 3). Dans ''image 4'' et ''image 5'' nous pouvons voir comment la ligne horizontale du crosshair correspond à la ligne droite du bas de la partie haute du bras et en même temps la bordure du cercle du crosshair correspond à la bordure incurvée supérieure de l'avant-bras. &lt;br /&gt;
&lt;br /&gt;
Le même principe est appliqué à la main et à la partie basse de l'avant-bras. Les crosshairs marquent aussi le centre du point de rotation qui sera utilisé ultérieurement durant le placement des armatures. Avant de placer les armatures nous pouvons aligner le  {{l|Group Transformation Widget}} (pressez contrôle et tirez la poignée du coin gauche du {{l|Group Transformation Widget}} pour le déplacer.) du groupe '''lowerArm''' et le groupe '''hand''' avec les crosshairs du coude et le poignet pour vérifier si les jointures tournent correctement. &lt;br /&gt;
&lt;br /&gt;
N'oubliez pas d'amener le bras dans sa position initiale originale en pressant undo. (Ne vous inquiétez pas si la main ne tourne pas avec le coude quand vous vérifierez la jointure du coude en utilisant le {{l|Group Transformation Widget}}.)&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
[[File:bonestut07.png|left|frame|IMAGE 4: Alignement des jointures]] [[File:bonestut08.png|center|frame|IMAGE 5: Alignement des jointures]] &lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ajout des armatures ==&lt;br /&gt;
[[File:bonestut13.png|left|250x400px|frame|IMAGE 6: Ajout d'une armature]]Il est maintenant temps d'ajouter un {{l|Skeleton Layer}} qui fournira les armatures dont nous avons besoin pour bouger le bras. &lt;br /&gt;
&lt;br /&gt;
Cliquez-droit sur n'importe quel calque dans le {{l|Layers Panel}} et choisissez {{c|&amp;lt;New Layer&amp;gt;|&amp;lt;Other&amp;gt;|&amp;lt;Skeleton&amp;gt;}}. Un nouveau {{l|Skeleton Layer}} (IMAGE 7) va apparaître dans le {{l|Layers Panel}} avec à côté un petit os dans le canevas (IMAGE 6). Mettez le {{l|Skeleton Layer}} au-dessus du groupe '''arm''' s'il n'est pas encore placé là. La poignée verte de l'armature est l'origine de celle-ci et est utilisé pour la déplacer et est également son centre de rotation. LA poignée bleue est utilisée pour faire tourner l'armature.&lt;br /&gt;
&lt;br /&gt;
La poignée orange détermine la longueur de l'armature et est utilisée pour étirer l'armature et son contenu. La première armature est l'armature parente et devrait être placée devant l'épaule et étirée de façon à ce qu'elle atteigne presque les bordures du premier crosshair du coude. Cliquez-droit sur n'importe quelle poignée de l'armature parente et sélectionnez {{Literal|Create Child Bone}}. Déplacez le point d'origine vert de l'armature enfant de sorte qu'il corresponde au crosshair du coude et étirez jusqu'à ce qu'il atteigne presque le crosshair du poignet. Cliquez-droit sur n'importe quelle poignée de l'armature enfant et créez une autre armature enfant. Déplacez le point d'origine vert de la seconde armature enfant de sorte qu'elle corresponde au crosshair du poignet (IMAGE 8). Étirez l'armature jusqu'à ce qu'elle atteigne l'extrémité des doigts.&lt;br /&gt;
[[File:bonestut11.png|left|frame|200x200px|IMAGE 7: Ajout du skeleton layer]][[File:bonestut05.png|center|frame|300x300px|IMAGE 8: Point d'origine vert de la main]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lier l'ossature ==&lt;br /&gt;
[[File:bonestut12.png|left|frame|IMAGE 8: Liaison de la main au deuxième os enfant.]]&lt;br /&gt;
Maintenant que le {{l|Skeleton Layer}} est en place nous devons attacher les armatures aux parties du bras. Dans le {{l|Layers Panel}} cliquez sur le  groupe '''upperArm''', cliquez-droit et {{Literal|Select All Child Layers}}. Pressez alors {{Shortcut|ctrl|A}} dans la fenêtre canevas. Avec tout de mis en surbrillance dans le groupe '''upperArm''',  {{Shortcut|ctrl}}-clic sur n'importe quelle armature dans la fenêtre canevas et cliquez-droit sur n'importe laquelle des poignées de l'armature parent et cliquez {{Literal|Link to Bone}}. Le groupe '''upperArm''' est désormais lié à l'armature parente.&lt;br /&gt;
&lt;br /&gt;
Allez à nouveau au {{l|Layers Panel}} et sélectionnez le groupe '''lowerArm'''. Cliquez-droit et {{Literal|Select All Child Layers}}. Pressez {{Shortcut|ctrl|A}} dans la fenêtre canevas et {{Shortcut|ctrl}}-clic sur l'une des armatures. Alors cliquez-droit sur n'importe quelle poignée de la première armature enfantet sélectionnez {{Literal|Link to bone}}. Le groupe '''lowerArm''' est maintenant lié à la seconte armature enfant. &lt;br /&gt;
&lt;br /&gt;
Dans le {{l|Layers Panel}} sélectionnez tous les calques enfants du groupe '''hand''' et pressez {{Shortcut|ctrl|A}} dans la fenêtre canevas. {{Shortcut|ctrl}}-clic sur n'importe quelle armature et cliquez-droit sur n'importe laquelle des poignées de la seconde armature enfant et sélectionnez {{Literal|Link to bone}} (IMAGE 8) LA main est alors liée à la seconde armature enfant et le squelette entier est maintenant lié au bras.&lt;br /&gt;
&lt;br /&gt;
Le fichier sif contenant les parties de ce tutoriel peut être trouvé {{l|Media:rigarm.sifz|ici}}&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Astuce ==&lt;br /&gt;
Faire un crosshair dans Synfig est simple. Dessinez un cercle. Dessinez les bordures d'un carré et alignez-les avec le cercle. Dessinez un X en utilisant les coins du carré comme référence. Effacez le carré. Groupez le cercle et le X. Tournez à 45 degrés en utilisant le {{l|Group Transformation Widget}}.&lt;br /&gt;
[[File:bonestut18.png|left|frame|IMAGE 9: Dessiner un crosshair.]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Étapes suivantes == &lt;br /&gt;
&lt;br /&gt;
Félicitation, vous avez atteint la fin des tutos d'introductions !&lt;br /&gt;
&lt;br /&gt;
A partir de maintenant vous pouvez jetez un oeil à la page traitant de l'{{l|Doc:Quick_Overview|Interface}}, ou continuer à lire et réaliser le reste des {{l|Category:Tutorials|Tutoriels}}. La page {{l|Category:Manual|Manuel}} liste tout les articles disponibles afin de compléter vôtre apprentissage de Synfig.&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Category:Manual|Doc:Interface}}&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=20694</id>
		<title>Dev:IDE Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Linux&amp;diff=20694"/>
				<updated>2015-08-23T23:33:20Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Import synfig (etl / core / studio) projects in Netbeans */ Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ?=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you already {{l|Dev:Source_code|cloned the code}} from git}}&lt;br /&gt;
&lt;br /&gt;
== Anjuta from gnu/linux ==&lt;br /&gt;
(Tested with Anjuta 3.14.0)&lt;br /&gt;
&lt;br /&gt;
[http://anjuta.org/ What Anjuta is?]&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|anjuta}} from synaptic or whatever ... (from xubuntu 14.10 you must install Anjuta 3.14 from this [https://launchpad.net/~inizan-yannick/+archive/ubuntu/development ppa] for example : see [https://bugzilla.gnome.org/show_bug.cgi?id=728295#c17 here] why)&lt;br /&gt;
&lt;br /&gt;
when anjuta installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Anjuta ===&lt;br /&gt;
&lt;br /&gt;
* Open Anjuta, in {{Literal|Action}} choose {{Literal|Import a project}} and choose your code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
* Select a project name and Import &lt;br /&gt;
* At the project backend choice, select {{Literal|Autotools}} and go for it (if you kept the default project name, replace the existing project with the new one)&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
&lt;br /&gt;
Repeat for each synfig project&lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Anjuta.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Execute&amp;gt;|&amp;lt;Program Paramter&amp;gt;|Program}} : select synfig-studio binary {{Literal|/home/user/synfig/bin}} (i also setup the working directory)&lt;br /&gt;
* Now you need to clean the project and build it again (but this time from anjuta) &lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Clean}}&lt;br /&gt;
* Anjuta {{c|&amp;lt;Menu&amp;gt;|&amp;lt;Build&amp;gt;|Build}}&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Extra note ===&lt;br /&gt;
&lt;br /&gt;
As Anjuta projects are saved in git examined folders, you could have sort of behavior when you ''git your code'' ... personally i have made a little script to backup/restore my own project to keep the folder safe of undesired change (.gitignore is also git surveyed !)&lt;br /&gt;
&lt;br /&gt;
== Eclipse from gnu/linux ==&lt;br /&gt;
(Tested with Eclipse 3.8.1)&lt;br /&gt;
&lt;br /&gt;
[http://eclipse.org/ What Eclipse is?]&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
* Build from {{Literal|autobuild/synfigstudio-linux-build.sh}}&lt;br /&gt;
* During this time install {{Literal|eclipse}} &amp;amp; {{Literal|eclispe-cdt}} packages from synaptic or whatever ...&lt;br /&gt;
&lt;br /&gt;
when eclipse installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Eclipse ===&lt;br /&gt;
&lt;br /&gt;
Open Eclipse, choose your desired place for the workspace (i recommend not in ./synfig folder if you want to commit, better just above)&lt;br /&gt;
&lt;br /&gt;
For each synfig component (etl / core / studio ...)&lt;br /&gt;
&lt;br /&gt;
# Eclipse / Menu / Makefile project with existing code&lt;br /&gt;
# Choose your project name (etl / core / studio ...)&lt;br /&gt;
# Select code location (synfig/ETL , synfig/synfig-core or synfig/synfig-studio)&lt;br /&gt;
# Select your toolchain  ... and click Finish ... and Wait a little ... &lt;br /&gt;
&lt;br /&gt;
''Your now able to build from Eclipse.''&lt;br /&gt;
&lt;br /&gt;
=== Want to debug maybe ?===&lt;br /&gt;
&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In {{Literal|C/C++ Build}} Uncheck {{Literal|Use default build command}} and put a {{Literal|make -j2 install}} (-jXX at your connivance ...)&lt;br /&gt;
* In {{Literal|Run/Debug Setting}} click &amp;quot;New&amp;quot; or &amp;quot;Edit...&amp;quot; , in C/C++ Application , browse and select the synfig-studio binary from {{Literal|/home/user/synfig/bin}}&lt;br /&gt;
&lt;br /&gt;
Stop on Startup, what the heck ?&lt;br /&gt;
* ''Make sure you are in the c++ perspective, then go to menu Run -&amp;gt; Debug Configurations. Make sure your application is chosen in the left pane, press the Debugger tab, and uncheck Stop on startup at: checkbox.'' [http://stackoverflow.com/questions/4278532/how-to-stop-gdb-from-executing-break-main-by-default-in-eclipse How to stop GDB from executing “break main” by default in Eclipse?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''you (shouldbe) are ready to debug / improve / patch and share !''&lt;br /&gt;
&lt;br /&gt;
=== Have a functional environment ===&lt;br /&gt;
&lt;br /&gt;
Add Includes paths to Code Analysis&lt;br /&gt;
* From {{Literal|Project Explorer}} panel, select your project properties (alt+enter / menu-project or right clicking)&lt;br /&gt;
* In C/C++ General / Paths and Symbols / Includes , add all the paths you need (ETL / Synfig-core / Cairo / Gtkmm ....)&lt;br /&gt;
&lt;br /&gt;
== Netbeans from gnu/linux ==&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))]&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in /home/''yourUsername''/sources/synfig.single in the screenshots&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't forget to replace it with your own userName!&lt;br /&gt;
&lt;br /&gt;
=== Install Netbeans ===&lt;br /&gt;
&lt;br /&gt;
Be aware you need to have a JDK devel package installed on your machine to be able to install Netbeans&amp;lt;br /&amp;gt;&lt;br /&gt;
On Fedora, I had to install it with the following command&lt;br /&gt;
{{Literal|yum install -y java-1.8.0-openjdk-devel}}&lt;br /&gt;
&lt;br /&gt;
Install {{Literal|Netbeans}} from synaptic or from the [https://netbeans.org/downloads/ original download page], if not done already ...&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== First build !===&lt;br /&gt;
&lt;br /&gt;
This will generate all needed makefile&lt;br /&gt;
&lt;br /&gt;
* Open {{Literal|autobuild/synfigstudio-linux-build.sh}} and change {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=&amp;lt;/nowiki&amp;gt;0}} to {{Literal|&amp;lt;nowiki&amp;gt;DEBUG=1&amp;lt;/nowiki&amp;gt;}} (line 76)&lt;br /&gt;
OR&lt;br /&gt;
*Another possibility (like on the video) is to set DEBUG=1 (and a space) before the script name in the console&amp;lt;br /&amp;gt;&lt;br /&gt;
in the console enter:{{Literal| /home/yourUsername/sources/synfig.single/autobuild/synfigstudio-linux-build.sh}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
when Netbeans installed and synfig builded....&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_1.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||/home/yourUsername/sources/synfig.single&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Default(GNU (GNU))&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_2.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_3.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|/home/yourUsername/sources/synfig.single/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|/home/yourUsername/synfig/bin/synfigstudio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_4.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_5.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_6.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|/home/yourUsername/sources}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|/home/yourUsername/sources/synfig.single}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Default(GNU (GNU))}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:Install_In_Netbeans_7.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''You are now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20693</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20693"/>
				<updated>2015-08-23T23:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Import synfig (etl / core / studio) projects in Netbeans */ Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website https://git-for-windows.github.io/ and click on the big download button. If you don't see it, go and see an ophthalmologist :P&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
You can also paste in the Git Bash window with ''alt-space, modify, paste''&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&amp;lt;br /&amp;gt;&lt;br /&gt;
''With Git 2.5.0 I had an error with &amp;quot;mkdir C:\synfig-build&amp;quot; so I changed it to &amp;quot;mkdir /c/synfig-build&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /c/synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download and install Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Download Cygwin setup binary (http://www.cygwin.com/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Save it into ''C:\synfig-build\cygwin-dist\'' directory.&lt;br /&gt;
&lt;br /&gt;
Run Cygwin setup (with administrator rights) and install with the default parameters.&amp;lt;br /&amp;gt;&lt;br /&gt;
It should be intalled in ''C:\cygwin''.&lt;br /&gt;
&lt;br /&gt;
=== Download and install NSIS ===&lt;br /&gt;
&lt;br /&gt;
Download and install NSIS '''''&amp;gt;=3.0''''' (http://nsis.sourceforge.net/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't use ''2.46'', it will fail!&amp;lt;br /&amp;gt;&lt;br /&gt;
Install it full into ''C:\synfig-build\NSIS\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== You plan to build 64-bit version? You need 7zip ===&lt;br /&gt;
For the 64-bit build only!&lt;br /&gt;
Download and install 7zip (''http://downloads.sourceforge.net/sevenzip/7z920-x64.msi'').&amp;lt;br /&amp;gt;&lt;br /&gt;
Install into ''C:\synfig-build\7zip\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== First build ! ===&lt;br /&gt;
Be aware that it was downloading components and compiling during more than 2 hours for me.&amp;lt;br /&amp;gt;&lt;br /&gt;
It depends on you bandwith, the speed of your computer and hard disk type!&amp;lt;br /&amp;gt;&lt;br /&gt;
But it should be only for this first build if you follow it carefully :)&amp;lt;br /&amp;gt;&lt;br /&gt;
Sometimes it will looks stalled but you can check in your Task Manager if there are some sh/bash executable running.&amp;lt;br /&amp;gt;&lt;br /&gt;
So let it run !&lt;br /&gt;
&lt;br /&gt;
Open Cygwin console (with administrator privileges) and run the build script:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can go and take a coffee (or a cocoa, depending on your age ;) )&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation bundle will be written to ''C:\synfig-build\''&lt;br /&gt;
&lt;br /&gt;
== Netbeans from Windows ==&lt;br /&gt;
&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))] and adapted for Windows/Cygwin.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in C:\synfig-build\synfig\ as expected.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare your Build Tools ===&lt;br /&gt;
&lt;br /&gt;
You have to use a specific Build Tool Collection in your project.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go in the menu ''Tools'' / ''Options'' / ''C/C++'' / ''Build Tools''&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''Add'' (down-left).&amp;lt;br /&amp;gt;&lt;br /&gt;
Enter ''C:\cygwin\bin'' as '''Base Directory''', ''GNU 4.x Cygwin'' as '''Tool Collection Family''', and ''Cygwin_4.x'' as '''Tool Collection Name'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-AddNewTool.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, you should have the resulting information in the form:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-Build-Tools-Options.png]]&lt;br /&gt;
&lt;br /&gt;
Press Ok.&amp;lt;br /&amp;gt;&lt;br /&gt;
Now we are ready to setup the projects!&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans (if not done yet)&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:NB-Win-01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||c:\synfig-build\synfig&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Cygwin 4.x (GNU 4.x Cygwin)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|c:/synfig-build/synfig/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|c:/synfig-build/synfig/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|c:/synfig-build/dist/bin/synfigstudio.exe}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|c:\synfig-build}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Cygwin_4.x (GNU 4.x Cygwin)}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''You are now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20692</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20692"/>
				<updated>2015-08-23T14:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: In First build - Changed duration + advice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website https://git-for-windows.github.io/ and click on the big download button. If you don't see it, go and see an ophthalmologist :P&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
You can also paste in the Git Bash window with ''alt-space, modify, paste''&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&amp;lt;br /&amp;gt;&lt;br /&gt;
''With Git 2.5.0 I had an error with &amp;quot;mkdir C:\synfig-build&amp;quot; so I changed it to &amp;quot;mkdir /c/synfig-build&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /c/synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download and install Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Download Cygwin setup binary (http://www.cygwin.com/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Save it into ''C:\synfig-build\cygwin-dist\'' directory.&lt;br /&gt;
&lt;br /&gt;
Run Cygwin setup (with administrator rights) and install with the default parameters.&amp;lt;br /&amp;gt;&lt;br /&gt;
It should be intalled in ''C:\cygwin''.&lt;br /&gt;
&lt;br /&gt;
=== Download and install NSIS ===&lt;br /&gt;
&lt;br /&gt;
Download and install NSIS '''''&amp;gt;=3.0''''' (http://nsis.sourceforge.net/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't use ''2.46'', it will fail!&amp;lt;br /&amp;gt;&lt;br /&gt;
Install it full into ''C:\synfig-build\NSIS\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== You plan to build 64-bit version? You need 7zip ===&lt;br /&gt;
For the 64-bit build only!&lt;br /&gt;
Download and install 7zip (''http://downloads.sourceforge.net/sevenzip/7z920-x64.msi'').&amp;lt;br /&amp;gt;&lt;br /&gt;
Install into ''C:\synfig-build\7zip\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== First build ! ===&lt;br /&gt;
Be aware that it was downloading components and compiling during more than 2 hours for me.&amp;lt;br /&amp;gt;&lt;br /&gt;
It depends on you bandwith, the speed of your computer and hard disk type!&amp;lt;br /&amp;gt;&lt;br /&gt;
But it should be only for this first build if you follow it carefully :)&amp;lt;br /&amp;gt;&lt;br /&gt;
Sometimes it will looks stalled but you can check in your Task Manager if there are some sh/bash executable running.&amp;lt;br /&amp;gt;&lt;br /&gt;
So let it run !&lt;br /&gt;
&lt;br /&gt;
Open Cygwin console (with administrator privileges) and run the build script:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can go and take a coffee (or a cocoa, depending on your age ;) )&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation bundle will be written to ''C:\synfig-build\''&lt;br /&gt;
&lt;br /&gt;
== Netbeans from Windows ==&lt;br /&gt;
&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))] and adapted for Windows/Cygwin.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in C:\synfig-build\synfig\ as expected.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare your Build Tools ===&lt;br /&gt;
&lt;br /&gt;
You have to use a specific Build Tool Collection in your project.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go in the menu ''Tools'' / ''Options'' / ''C/C++'' / ''Build Tools''&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''Add'' (down-left).&amp;lt;br /&amp;gt;&lt;br /&gt;
Enter ''C:\cygwin\bin'' as '''Base Directory''', ''GNU 4.x Cygwin'' as '''Tool Collection Family''', and ''Cygwin_4.x'' as '''Tool Collection Name'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-AddNewTool.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, you should have the resulting information in the form:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-Build-Tools-Options.png]]&lt;br /&gt;
&lt;br /&gt;
Press Ok.&amp;lt;br /&amp;gt;&lt;br /&gt;
Now we are ready to setup the projects!&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans (if not done yet)&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:NB-Win-01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||c:\synfig-build\synfig&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Cygwin 4.x (GNU 4.x Cygwin)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|c:/synfig-build/synfig/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|c:/synfig-build/synfig/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|c:/synfig-build/dist/bin/synfigstudio.exe}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|c:\synfig-build}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Cygwin_4.x (GNU 4.x Cygwin)}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''Your now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20691</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20691"/>
				<updated>2015-08-22T21:50:49Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Modified to &amp;quot;mkdir /c/synfig-build&amp;quot;, can't create with &amp;quot;mkdir C:\synfig-build&amp;quot; (Git 2.5.0)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website https://git-for-windows.github.io/ and click on the big download button. If you don't see it, go and see an ophthalmologist :P&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
You can also paste in the Git Bash window with ''alt-space, modify, paste''&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&amp;lt;br /&amp;gt;&lt;br /&gt;
''With Git 2.5.0 I had an error with &amp;quot;mkdir C:\synfig-build&amp;quot; so I changed it to &amp;quot;mkdir /c/synfig-build&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /c/synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download and install Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Download Cygwin setup binary (http://www.cygwin.com/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Save it into ''C:\synfig-build\cygwin-dist\'' directory.&lt;br /&gt;
&lt;br /&gt;
Run Cygwin setup (with administrator rights) and install with the default parameters.&amp;lt;br /&amp;gt;&lt;br /&gt;
It should be intalled in ''C:\cygwin''.&lt;br /&gt;
&lt;br /&gt;
=== Download and install NSIS ===&lt;br /&gt;
&lt;br /&gt;
Download and install NSIS '''''&amp;gt;=3.0''''' (http://nsis.sourceforge.net/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't use ''2.46'', it will fail!&amp;lt;br /&amp;gt;&lt;br /&gt;
Install it full into ''C:\synfig-build\NSIS\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== You plan to build 64-bit version? You need 7zip ===&lt;br /&gt;
For the 64-bit build only!&lt;br /&gt;
Download and install 7zip (''http://downloads.sourceforge.net/sevenzip/7z920-x64.msi'').&amp;lt;br /&amp;gt;&lt;br /&gt;
Install into ''C:\synfig-build\7zip\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== First build ! ===&lt;br /&gt;
Be aware that it was downloading components and compiling during about one hour for me.&amp;lt;br /&amp;gt;&lt;br /&gt;
It depends on you bandwith, the speed of your computer and hard disk type!&amp;lt;br /&amp;gt;&lt;br /&gt;
But it should be only for this first build if you follow it carefully :)&lt;br /&gt;
&lt;br /&gt;
Open Cygwin console (with administrator privileges) and run the build script:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can go and take a coffee (or a cocoa, depending on your age ;) )&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation bundle will be written to ''C:\synfig-build\''&lt;br /&gt;
&lt;br /&gt;
== Netbeans from Windows ==&lt;br /&gt;
&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))] and adapted for Windows/Cygwin.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in C:\synfig-build\synfig\ as expected.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare your Build Tools ===&lt;br /&gt;
&lt;br /&gt;
You have to use a specific Build Tool Collection in your project.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go in the menu ''Tools'' / ''Options'' / ''C/C++'' / ''Build Tools''&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''Add'' (down-left).&amp;lt;br /&amp;gt;&lt;br /&gt;
Enter ''C:\cygwin\bin'' as '''Base Directory''', ''GNU 4.x Cygwin'' as '''Tool Collection Family''', and ''Cygwin_4.x'' as '''Tool Collection Name'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-AddNewTool.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, you should have the resulting information in the form:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-Build-Tools-Options.png]]&lt;br /&gt;
&lt;br /&gt;
Press Ok.&amp;lt;br /&amp;gt;&lt;br /&gt;
Now we are ready to setup the projects!&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans (if not done yet)&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:NB-Win-01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||c:\synfig-build\synfig&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Cygwin 4.x (GNU 4.x Cygwin)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|c:/synfig-build/synfig/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|c:/synfig-build/synfig/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|c:/synfig-build/dist/bin/synfigstudio.exe}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|c:\synfig-build}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Cygwin_4.x (GNU 4.x Cygwin)}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''Your now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=20690</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Developer_Documentation&amp;diff=20690"/>
				<updated>2015-08-22T19:32:59Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Main pages */&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|Build Instructions}}&lt;br /&gt;
* [[Building Documentation|Building Documentation]]&lt;br /&gt;
* {{l|Dev:Source code|Source code}} description and workflow&lt;br /&gt;
* IDE Setup {{l|Dev:IDE_Linux|under Linux}} | {{l|Dev:IDE_Windows| under Windows}}&lt;br /&gt;
* {{l|Dev:Roadmap|Roadmap}}&lt;br /&gt;
* {{l|Dev:Contribute to Code}}&lt;br /&gt;
* {{l|Dev:Wish list|Wish List}}&lt;br /&gt;
* {{l|Dev:Coding_Conventions|Coding Conventions}}&lt;br /&gt;
* {{l|Dev:UI/UX Redesign|UI/UX Redesign}}&lt;br /&gt;
* {{l|Dev:ETL_replacement|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|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|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|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;
* [http://www.synfig.org/issues/thebuggenie/synfig Synfig Issue Tracker]&lt;br /&gt;
* [http://www.synfig.org/forums/viewtopic.php?f=2&amp;amp;t=6097 Genete free stuff...]&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20689</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20689"/>
				<updated>2015-08-22T19:28:03Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Added Import in Netbeans&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website https://git-for-windows.github.io/ and click on the big download button. If you don't see it, go and see an ophthalmologist :P&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir C:\synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download and install Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Download Cygwin setup binary (http://www.cygwin.com/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Save it into ''C:\synfig-build\cygwin-dist\'' directory.&lt;br /&gt;
&lt;br /&gt;
Run Cygwin setup (with administrator rights) and install with the default parameters.&amp;lt;br /&amp;gt;&lt;br /&gt;
It should be intalled in ''C:\cygwin''.&lt;br /&gt;
&lt;br /&gt;
=== Download and install NSIS ===&lt;br /&gt;
&lt;br /&gt;
Download and install NSIS '''''&amp;gt;=3.0''''' (http://nsis.sourceforge.net/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't use ''2.46'', it will fail!&amp;lt;br /&amp;gt;&lt;br /&gt;
Install it full into ''C:\synfig-build\NSIS\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== You plan to build 64-bit version? You need 7zip ===&lt;br /&gt;
For the 64-bit build only!&lt;br /&gt;
Download and install 7zip (''http://downloads.sourceforge.net/sevenzip/7z920-x64.msi'').&amp;lt;br /&amp;gt;&lt;br /&gt;
Install into ''C:\synfig-build\7zip\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== First build ! ===&lt;br /&gt;
Be aware that it was downloading components and compiling during about one hour for me.&amp;lt;br /&amp;gt;&lt;br /&gt;
It depends on you bandwith, the speed of your computer and hard disk type!&amp;lt;br /&amp;gt;&lt;br /&gt;
But it should be only for this first build if you follow it carefully :)&lt;br /&gt;
&lt;br /&gt;
Open Cygwin console (with administrator privileges) and run the build script:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can go and take a coffee (or a cocoa, depending on your age ;) )&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation bundle will be written to ''C:\synfig-build\''&lt;br /&gt;
&lt;br /&gt;
== Netbeans from Windows ==&lt;br /&gt;
&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))] and adapted for Windows/Cygwin.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in C:\synfig-build\synfig\ as expected.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare your Build Tools ===&lt;br /&gt;
&lt;br /&gt;
You have to use a specific Build Tool Collection in your project.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go in the menu ''Tools'' / ''Options'' / ''C/C++'' / ''Build Tools''&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''Add'' (down-left).&amp;lt;br /&amp;gt;&lt;br /&gt;
Enter ''C:\cygwin\bin'' as '''Base Directory''', ''GNU 4.x Cygwin'' as '''Tool Collection Family''', and ''Cygwin_4.x'' as '''Tool Collection Name'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-AddNewTool.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, you should have the resulting information in the form:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-Build-Tools-Options.png]]&lt;br /&gt;
&lt;br /&gt;
Press Ok.&amp;lt;br /&amp;gt;&lt;br /&gt;
Now we are ready to setup the projects!&lt;br /&gt;
&lt;br /&gt;
=== Import synfig (etl / core / studio) projects in Netbeans ===&lt;br /&gt;
* Open Netbeans (if not done yet)&lt;br /&gt;
* Open File/New Project....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
1. Choose Project&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project}} under {{Literal|Categories}},&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|C/C++ Project with Existing Sources}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[File:NB-Win-01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
* 2. Select Mode&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Source folder||c:\synfig-build\synfig&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||localhost&lt;br /&gt;
|-&lt;br /&gt;
|Tools Collection||Cygwin 4.x (GNU 4.x Cygwin)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Mode||Custom&lt;br /&gt;
|}&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
3. Build Tool&amp;lt;br /&amp;gt;&lt;br /&gt;
* Using an existing makefile&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Literal|c:/synfig-build/synfig/synfig-studio/Makefile}}&lt;br /&gt;
* Uncheck {{Literal|Clean and Build after Finish}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
4. Build Action&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Working Directory||{{Literal|c:/synfig-build/synfig/synfig-studio}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Command||{{Literal|${MAKE} -f Makefile -j 4 install}}&lt;br /&gt;
|-&lt;br /&gt;
|Clean Command||{{Literal|${MAKE} -f Makefile clean}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Result||{{Literal|c:/synfig-build/dist/bin/synfigstudio.exe}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. Source Files&amp;lt;br /&amp;gt;&lt;br /&gt;
* Add {{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. Code Assistance Configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
* Choose {{Literal|Automatic Configuration}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;7. Project Name and Location &amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Project Name||{{Literal|synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Location||{{Literal|c:\synfig-build}}&lt;br /&gt;
|-&lt;br /&gt;
|Project Folder||{{Literal|c:\synfig-build\synfig}}&lt;br /&gt;
|-&lt;br /&gt;
|Build Host||{{Literal|localhost}}&lt;br /&gt;
|-&lt;br /&gt;
|Tool Collection||{{Literal|Cygwin_4.x (GNU 4.x Cygwin)}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:NB-Win-07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
* Press {{Literal|Finish}}&lt;br /&gt;
* Wait a minute ... project loaded !&lt;br /&gt;
''Your now able to build from Netbeans.''&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-07.png&amp;diff=20688</id>
		<title>File:NB-Win-07.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-07.png&amp;diff=20688"/>
				<updated>2015-08-22T18:50:10Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-07&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-07&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-06.png&amp;diff=20687</id>
		<title>File:NB-Win-06.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-06.png&amp;diff=20687"/>
				<updated>2015-08-22T18:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-06&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-06&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-05.png&amp;diff=20686</id>
		<title>File:NB-Win-05.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-05.png&amp;diff=20686"/>
				<updated>2015-08-22T18:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-05&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-05&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-04.png&amp;diff=20685</id>
		<title>File:NB-Win-04.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-04.png&amp;diff=20685"/>
				<updated>2015-08-22T18:48:57Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-04&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-04&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-03.png&amp;diff=20684</id>
		<title>File:NB-Win-03.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-03.png&amp;diff=20684"/>
				<updated>2015-08-22T18:48:31Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-03&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-03&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-02.png&amp;diff=20683</id>
		<title>File:NB-Win-02.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-02.png&amp;diff=20683"/>
				<updated>2015-08-22T18:47:35Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-02&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-02&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-01.png&amp;diff=20682</id>
		<title>File:NB-Win-01.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-01.png&amp;diff=20682"/>
				<updated>2015-08-22T18:46:54Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-01&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-01&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20681</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20681"/>
				<updated>2015-08-22T18:45:24Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: /* Netbeans from Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website https://git-for-windows.github.io/ and click on the big download button. If you don't see it, go and see an ophthalmologist :P&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir C:\synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download and install Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Download Cygwin setup binary (http://www.cygwin.com/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Save it into ''C:\synfig-build\cygwin-dist\'' directory.&lt;br /&gt;
&lt;br /&gt;
Run Cygwin setup (with administrator rights) and install with the default parameters.&amp;lt;br /&amp;gt;&lt;br /&gt;
It should be intalled in ''C:\cygwin''.&lt;br /&gt;
&lt;br /&gt;
=== Download and install NSIS ===&lt;br /&gt;
&lt;br /&gt;
Download and install NSIS '''''&amp;gt;=3.0''''' (http://nsis.sourceforge.net/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't use ''2.46'', it will fail!&amp;lt;br /&amp;gt;&lt;br /&gt;
Install it full into ''C:\synfig-build\NSIS\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== You plan to build 64-bit version? You need 7zip ===&lt;br /&gt;
For the 64-bit build only!&lt;br /&gt;
Download and install 7zip (''http://downloads.sourceforge.net/sevenzip/7z920-x64.msi'').&amp;lt;br /&amp;gt;&lt;br /&gt;
Install into ''C:\synfig-build\7zip\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== First build ! ===&lt;br /&gt;
Be aware that it was downloading components and compiling during about one hour for me.&amp;lt;br /&amp;gt;&lt;br /&gt;
It depends on you bandwith, the speed of your computer and hard disk type!&amp;lt;br /&amp;gt;&lt;br /&gt;
But it should be only for this first build if you follow it carefully :)&lt;br /&gt;
&lt;br /&gt;
Open Cygwin console (with administrator privileges) and run the build script:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can go and take a coffee (or a cocoa, depending on your age ;) )&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation bundle will be written to ''C:\synfig-build\''&lt;br /&gt;
&lt;br /&gt;
== Netbeans from Windows ==&lt;br /&gt;
&lt;br /&gt;
(Tested with Netbeans 8.0.2)&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://netbeans.org/ What Netbeans is?]&amp;lt;br /&amp;gt;&lt;br /&gt;
Done following the [https://www.youtube.com/watch?v=kR7MKXAYCww video tutorial made by Konstantin Dmitriev (in russian ;))] and adapted for Windows/Cygwin.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assuming the source will be installed in C:\synfig-build\synfig\ as expected.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare your Build Tools ===&lt;br /&gt;
&lt;br /&gt;
You have to use a specific Build Tool Collection in your project.&amp;lt;br /&amp;gt;&lt;br /&gt;
Go in the menu ''Tools'' / ''Options'' / ''C/C++'' / ''Build Tools''&amp;lt;br /&amp;gt;&lt;br /&gt;
Press ''Add'' (down-left).&amp;lt;br /&amp;gt;&lt;br /&gt;
Enter ''C:\cygwin\bin'' as '''Base Directory''', ''GNU 4.x Cygwin'' as '''Tool Collection Family''', and ''Cygwin_4.x'' as '''Tool Collection Name'''.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-AddNewTool.png]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, you should have the resulting information in the form:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NB-Win-Build-Tools-Options.png]]&lt;br /&gt;
&lt;br /&gt;
Press Ok.&amp;lt;br /&amp;gt;&lt;br /&gt;
Now we are ready to setup the projects!&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-Build-Tools-Options.png&amp;diff=20680</id>
		<title>File:NB-Win-Build-Tools-Options.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-Build-Tools-Options.png&amp;diff=20680"/>
				<updated>2015-08-22T18:41:32Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: NB-Win-Build-Tools-Options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NB-Win-Build-Tools-Options&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:NB-Win-AddNewTool.png&amp;diff=20679</id>
		<title>File:NB-Win-AddNewTool.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:NB-Win-AddNewTool.png&amp;diff=20679"/>
				<updated>2015-08-22T18:37:28Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Netbeans - Add New Tool Collection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Netbeans - Add New Tool Collection&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20678</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20678"/>
				<updated>2015-08-22T17:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Some additions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website https://git-for-windows.github.io/ and click on the big download button. If you don't see it, go and see an ophthalmologist :P&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir C:\synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download and install Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Download Cygwin setup binary (http://www.cygwin.com/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Save it into ''C:\synfig-build\cygwin-dist\'' directory.&lt;br /&gt;
&lt;br /&gt;
Run Cygwin setup (with administrator rights) and install with the default parameters.&amp;lt;br /&amp;gt;&lt;br /&gt;
It should be intalled in ''C:\cygwin''.&lt;br /&gt;
&lt;br /&gt;
=== Download and install NSIS ===&lt;br /&gt;
&lt;br /&gt;
Download and install NSIS '''''&amp;gt;=3.0''''' (http://nsis.sourceforge.net/).&amp;lt;br /&amp;gt;&lt;br /&gt;
Don't use ''2.46'', it will fail!&amp;lt;br /&amp;gt;&lt;br /&gt;
Install it full into ''C:\synfig-build\NSIS\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== You plan to build 64-bit version? You need 7zip ===&lt;br /&gt;
For the 64-bit build only!&lt;br /&gt;
Download and install 7zip (''http://downloads.sourceforge.net/sevenzip/7z920-x64.msi'').&amp;lt;br /&amp;gt;&lt;br /&gt;
Install into ''C:\synfig-build\7zip\'' directory.&lt;br /&gt;
&lt;br /&gt;
=== First build ! ===&lt;br /&gt;
Be aware that it was downloading components and compiling during about one hour for me.&amp;lt;br /&amp;gt;&lt;br /&gt;
It depends on you bandwith, the speed of your computer and hard disk type!&amp;lt;br /&amp;gt;&lt;br /&gt;
But it should be only for this first build if you follow it carefully :)&lt;br /&gt;
&lt;br /&gt;
Open Cygwin console (with administrator privileges) and run the build script:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can go and take a coffee (or a cocoa, depending on your age ;) )&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation bundle will be written to ''C:\synfig-build\''&lt;br /&gt;
&lt;br /&gt;
== Netbeans from Windows ==&lt;br /&gt;
&lt;br /&gt;
(Tested with Netbeans 8.0.2)&lt;br /&gt;
What Netbeans is?&lt;br /&gt;
Done following the video tutorial made by Konstantin Dmitriev (in russian ;)) and adapted for Windows.&lt;br /&gt;
Assuming the source will be installed in C:\synfig-build\synfig\ as expected.&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20677</id>
		<title>Dev:IDE Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=Dev:IDE_Windows&amp;diff=20677"/>
				<updated>2015-08-21T22:45:01Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: Creation of the page, install of Git, Clone the code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Want to setup an IDE to debug / develop synfig ? (under Windows)=&lt;br /&gt;
&lt;br /&gt;
''Here, we will not discuss of witch IDE is better or if real hacker do all with vi/emacs''&lt;br /&gt;
&lt;br /&gt;
== Install GIT, other tools and clone the code ==&lt;br /&gt;
 {{Note|Clone the code my dear|This assume you read the section {{l|Dev:Source_code|&amp;quot;Clone the code from git&amp;quot;}} }}&lt;br /&gt;
&lt;br /&gt;
Before to setup any IDE, you will have to prepare the synfig-build environment under Windows.&lt;br /&gt;
It requires administrator rights.&lt;br /&gt;
&lt;br /&gt;
Here is the original &amp;quot;Usage notes&amp;quot; from ''synfigstudio-cygwin-mingw-build.sh'' (by Konstantin Dmitriev).&lt;br /&gt;
We will follow it step-by-step!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# * Download and install Git (http://msysgit.github.io/).&lt;br /&gt;
# * Open Git Bash and execute following commands:&lt;br /&gt;
# ** mkdir C:\synfig-build&lt;br /&gt;
# ** cd C:\synfig-build&lt;br /&gt;
# ** git clone https://github.com/synfig/synfig.git&lt;br /&gt;
# ** mkdir cygwin-dist&lt;br /&gt;
# ** cd synfig&lt;br /&gt;
# ** git config --global core.autocrlf input&lt;br /&gt;
# ** exit&lt;br /&gt;
# * Download Cygwin setup binary (http://www.cygwin.com/) and save it into C:\synfig-build\cygwin-dist\ directory.&lt;br /&gt;
# * Run Cygwin setup and install with the default parameters.&lt;br /&gt;
# * Download and install NSIS &amp;gt;=3.0 (http://nsis.sourceforge.net/). Install into C:\synfig-build\NSIS\ directory.&lt;br /&gt;
# * (64-bit build only!) Download and install 7zip (http://downloads.sourceforge.net/sevenzip/7z920-x64.msi). Install into C:\synfig-build\7zip\ directory.&lt;br /&gt;
# * Open Cygwin console (with administrator previlegies) and run the build script:&lt;br /&gt;
# ** bash C:/synfig-build/synfig/autobuild/synfigstudio-cygwin-mingw-build.sh&lt;br /&gt;
# * Installation bundle will be written to C:\synfig-build\&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# = Other notes =&lt;br /&gt;
# * Builds from current repository, current revision. So you should manually checkout the desired revision to build&lt;br /&gt;
# * Executing script without arguments makes a full clean build and produces installer package&lt;br /&gt;
# * You can pass arguments to the script to invoke particular stage. &lt;br /&gt;
#	Available stages: mkprep, mketl, mksynfig, mksynfigstudio, mkpackage&lt;br /&gt;
#	Example: &lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh mkpackage&lt;br /&gt;
# * You can pass a custom command to be invoked in the build environment.&lt;br /&gt;
#	Example (executes make with respect to the build environment):&lt;br /&gt;
#		synfigstudio-cygwin-mingw-build.sh make -j2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Warning! Your attention please!|'''Be aware that the lines with ** have to be executed in Git Bash.''' If you don't, you will meet some nasty side-effects during the first build and you may lose your sanity!}}&lt;br /&gt;
&lt;br /&gt;
=== Download and install Git ===&lt;br /&gt;
If you already installed Git, you can skip this section.&lt;br /&gt;
&lt;br /&gt;
Visit the original website [[https://git-for-windows.github.io/|https://git-for-windows.github.io/]] and click on the big download button.&amp;lt;br /&amp;gt;&lt;br /&gt;
You will be redirected on the GitHub page with the last version, offered as 32 and 64bit.&lt;br /&gt;
&lt;br /&gt;
You will install it with (most of) the default values, like on the screenshots below (featuring my mouse cursor as a Guest Star).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;1.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Welcome Screen.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_01.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;2.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;GNU GPL License Notice.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_02.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;3.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;In this page, you should check everything.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_03.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;4.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use Git from Git Bash only&amp;quot;.&amp;lt;br /&amp;gt;It would permit you to avoid some mess with other tools.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_04.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;5.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Checkout Windows-style, commit Unix-style line endings&amp;quot;.&amp;lt;br /&amp;gt;Press Next.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_05.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;6.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Choose &amp;quot;Use MiniTTY&amp;quot;.&amp;lt;br /&amp;gt;It has more possibilities.&amp;lt;br /&amp;gt;Press Next&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_06.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;7.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Let this one unchecked.&amp;lt;br /&amp;gt;It doesn't take so much time anyway.&amp;lt;br /&amp;gt;Press Next. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_07.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;8.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Uncheck this one, no need to read.&amp;lt;br /&amp;gt;Press Finish.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[File:GitWinSetup_08.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clone the Code ===&lt;br /&gt;
&lt;br /&gt;
Start Git Bash as Administrator and type exactly all the following commands at the prompt.&amp;lt;br /&amp;gt;&lt;br /&gt;
If you don't, you will notice it soon!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir C:\synfig-build&lt;br /&gt;
cd C:\synfig-build&lt;br /&gt;
git clone https://github.com/synfig/synfig.git&lt;br /&gt;
mkdir cygwin-dist&lt;br /&gt;
cd synfig&lt;br /&gt;
git config --global core.autocrlf input&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:GitWinSetup_08.png&amp;diff=20676</id>
		<title>File:GitWinSetup 08.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:GitWinSetup_08.png&amp;diff=20676"/>
				<updated>2015-08-21T22:11:56Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: GitWinSetup_08&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitWinSetup_08&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:GitWinSetup_07.png&amp;diff=20675</id>
		<title>File:GitWinSetup 07.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:GitWinSetup_07.png&amp;diff=20675"/>
				<updated>2015-08-21T22:11:22Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: GitWinSetup_07&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitWinSetup_07&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:GitWinSetup_06.png&amp;diff=20674</id>
		<title>File:GitWinSetup 06.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:GitWinSetup_06.png&amp;diff=20674"/>
				<updated>2015-08-21T22:10:46Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: GitWinSetup_06&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitWinSetup_06&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:GitWinSetup_05.png&amp;diff=20673</id>
		<title>File:GitWinSetup 05.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:GitWinSetup_05.png&amp;diff=20673"/>
				<updated>2015-08-21T22:10:16Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: GitWinSetup_05&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitWinSetup_05&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:GitWinSetup_04.png&amp;diff=20672</id>
		<title>File:GitWinSetup 04.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:GitWinSetup_04.png&amp;diff=20672"/>
				<updated>2015-08-21T22:09:50Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: GitWinSetup_04&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitWinSetup_04&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:GitWinSetup_03.png&amp;diff=20671</id>
		<title>File:GitWinSetup 03.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:GitWinSetup_03.png&amp;diff=20671"/>
				<updated>2015-08-21T22:09:07Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: GitWinSetup_03&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitWinSetup_03&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	<entry>
		<id>https://wiki.synfig.org/index.php?title=File:GitWinSetup_02.png&amp;diff=20670</id>
		<title>File:GitWinSetup 02.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.synfig.org/index.php?title=File:GitWinSetup_02.png&amp;diff=20670"/>
				<updated>2015-08-21T22:08:30Z</updated>
		
		<summary type="html">&lt;p&gt;BobSynfig: GitWinSetup_02&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GitWinSetup_02&lt;/div&gt;</summary>
		<author><name>BobSynfig</name></author>	</entry>

	</feed>