https://wiki.synfig.org/api.php?action=feedcontributions&user=Genete&feedformat=atomSynfig Studio :: Documentation - User contributions [en]2024-03-29T09:03:59ZUser contributionsMediaWiki 1.26.3https://wiki.synfig.org/index.php?title=Convert&diff=19036Convert2014-03-07T12:17:22Z<p>Genete: /* Dynamic */ Some updates and clarifications to the latest version</p>
<hr />
<div><!-- Page info --><br />
{{Title|Convert}}<br />
{{Category|Glossary}}<br />
{{NewTerminology}}<br />
<!-- Page info end --><br />
<br />
Right-clicking on a value in the {{l|Parameters Panel}} brings up a context menu which has a sub-menu called {{Literal|Convert}}. The {{Literal|Convert}} menu allows you to specify that the parameter should be controlled automatically in various ways or used in mathematical formulas. Depending on the type of the parameter the Convert menu will contain different options.<br />
<br />
To convert the parameter back to its original type, select {{Literal|Disconnect}} from its context menu.<br />
<br />
== Convert Types ==<br />
<br />
=== Add ===<br />
<br />
Converting a parameter to {{Literal|Add}} adds three sub-parameters, the first two of which are the same type as the parameter itself:<br />
* <param> "LHS"<br />
* <param> "RHS"<br />
* real "Scalar"<br />
<br />
The {{Literal|Add}} conversion can be used with parameters of type {{l|Convert#Angle|angle}}, {{l|Convert#Color|color}}, {{l|Convert#Gradient|gradient}}, {{l|Convert#Integer|integer}}, {{l|Convert#Real|real}}, {{l|Convert#Time|time}}, and {{l|Convert#Vector|vector}}.<br />
<br />
The resulting value is:<br />
(LHS + RHS) * Scalar<br />
<br />
=== And ===<br />
<br />
Converting a {{l|Convert#Bool|bool}} parameter to {{Literal|And}} adds two sub-parameters:<br />
* bool "Link1"<br />
* bool "Link2"<br />
<br />
The resulting value is true only if both Link1 and Link2 are true.<br />
<br />
<br />
=== Angle String ===<br />
<br />
Converting an {{l|Convert#String|string}}-valued parameter to {{Literal|Angle String}} adds four sub-parameters:<br />
* angle "Angle"<br />
* integer "Width"<br />
* integer "Precision"<br />
* bool "Zero Padded"<br />
<br />
The resulting value a string containing the value of {{Literal|Angle}} (in degrees) formatted as a string with a minimum width {{Literal|Width}}, with {{Literal|Precision}} decimal places. If {{Literal|Zero Padded}} is true, it will be left-padded with '''0''' characters.<br />
<br />
=== aTan2 ===<br />
<br />
Converting an {{l|Convert#Angle|angle}}-valued parameter to {{Literal|aTan2}} adds two sub-parameters:<br />
* real "X"<br />
* real "Y".<br />
<br />
The resulting value is:<br />
atan2(y,x)<br />
<br />
ie. atan(y/x) but without an error when x is '''0'''. The value is the angle between the x axis and the vector (x,y).<br />
<br />
=== Spline ===<br />
<br />
Converting a {{l|Convert#List|list}} parameter to {{Literal|Spline}} doesn't seem to change anything. Perhaps that's the default type for lists of vertices, such as are found in outlines and regions?<br />
<br />
=== Compare ===<br />
<br />
Converting a {{l|Convert#Bool|bool}} parameter to {{Literal|Compare}} adds five sub-parameters:<br />
* real "LHS"<br />
* real "RHS"<br />
* bool "Greater than"<br />
* bool "Equal to"<br />
* bool "Less than"<br />
<br />
The valuenode compares {{Literal|LHS}} and {{Literal|RHS}}. The three boolean values determine which comparison returns '''true'''. For example, if LHS>RHS and {{Literal|Greater than}} is checked, the valuenode will evaluate to '''true'''.<br />
<br />
=== Composite ===<br />
<br />
Converting a {{l|Convert#Spline Point|Spline Point}} parameter to {{Literal|Composite}} adds six sub-parameters:<br />
* vector "Vertex"<br />
* real "Width"<br />
* real "Origin"<br />
* bool "Split Tangents"<br />
* vector "Tangent 1"<br />
* vector "Tangent 2"<br />
<br />
Converting a {{l|Convert#Color|color}} parameter to {{Literal|Composite}} adds four real-valued sub-parameters:<br />
* real "Red"<br />
* real "Green"<br />
* real "Blue"<br />
* real "Alpha"<br />
<br />
Converting a {{l|Convert#Segment|segment}} parameter to {{Literal|Composite}} adds four vertex sub-parameters:<br />
* vertex "Vertex 1"<br />
* vertex "Tangent 1"<br />
* vertex "Vertex 2"<br />
* vertex "Tangent 2"<br />
<br />
Converting a {{l|Convert#Vector|vector}} parameter to {{Literal|Composite}} adds two real-valued sub-parameters:<br />
* real "X-Axis"<br />
* real "Y-Axis"<br />
<br />
The resulting value is a Spline Point, Color, Segment, or Vector made by combining the component parts.<br />
<br />
=== Cos ===<br />
<br />
Converting a {{l|Convert#Real|real}}-valued parameter to {{Literal|Cos}} adds two sub-parameters:<br />
* angle "Angle"<br />
* real "Amplitude".<br />
<br />
The resulting value is:<br />
{{Literal|Amplitude}} * cos({{Literal|Angle}})<br />
<br />
=== Dot Product ===<br />
<br />
Converting a {{l|Convert#Real|real}} or {{l|Convert#Angle|angle}} parameter to a {{Literal|Dot Product}} adds two sub-parameters:<br />
* vector "LHS"<br />
* vector "RHS"<br />
<br />
If the converted value is an angle, the return value is the angle between the two vectors:<br />
<br />
return = acos((LHS · RHS) / (|LHS| * |RHS|))<br />
<br />
If the converted value is a real, the result value is the dot product of the two vectors:<br />
<br />
return = LHS · RHS = |LHS| * |RHS| * cos(alpha)<br />
<br />
(where alpha is the angle between {{Literal|LHS}} and {{Literal|RHS}}).<br />
<br />
=== Duplicate ===<br />
<br />
This ValueNode type is only used by the {{l|Duplicate Layer}}. It never appears in the {{Literal|Convert}} menu. It is used to control the range of the Index in the Duplicate Layer (q.v.).<br />
<br />
The {{Literal|Duplicate}} ValueNode type has 3 real-valued sub-parameters:<br />
<br />
* real "From"<br />
* real "To"<br />
* real "Step"<br />
<br />
The value of the ValueNode varies from the value of {{Literal|From}} to the value of {{Literal|To}} in steps of size {{Literal|Step}}. The sign of {{Literal|Step}} is ignored. If From<To the steps are positive, else they're negative.<br />
<br />
=== Dynamic ===<br />
<br />
Allows to link two vectors with a dynamic link. The ValueNode (vector type) that is converted to {{Literal|Dynamic}} will be linked to another vector value using a linear/rotational spring system with damping and friction.<br />
<br />
Once you convert the Value to {{Literal|Dynamic}} it offers the following sub-parameters:<br />
<br />
* vector {{Literal|Tip Static}} This is the equilibrium position of the system without external forces relative to the Origin. See Origin. Since it is a vector its length is used for the linear spring equilibrium length and its angle form the x axis is used for the torsion spring equilibrium angle. The initial value of this subparameter is the current value of the Value that is being converted to Dynamic.<br />
* vector {{Literal|Origin}} This is the basement of the dynamic system. Defaults to ('''0.0''', '''0.0'''). If the user changes this value the final equilibrium calculated position of the value is modified too. Accelerations of the Origin are used to move the Tip due to the fictitious forces needed to apply under non inertial reference systems.<br />
* vector {{Literal|Force}} External force applied on the Tip of the dynamic system. Defaults to ('''0.0''', '''0.0''').<br />
* real {{Literal|Torque}} External momentum applied tot he dynamic system at the Origin. Defaults to '''0.0'''.<br />
* real {{Literal|Damping}} Damper coefficient of the linear link. Defaults to '''0.4'''<br />
* real {{Literal|Friction}} Friction coefficient of the rotational link. Defaults to '''0.4'''<br />
* real {{Literal|Spring}} Spring coefficient of the linear link. Defaults to '''30.0'''<br />
* real {{Literal|Torsion}} Torsion coefficient of the rotational link. Defaults to '''30.0'''<br />
* real {{Literal|Mass}} Mass of the dynamic system. Defaults to '''0.3'''<br />
* real {{Literal|Inertia}} Moment of inertia of the dynamic system. Defaults to '''0.3'''<br />
* bool {{Literal|Spring rigid}} When checked linear spring is rigid. Defaults to '''off'''<br />
* bool {{Literal|Torsion rigid}} When checked torsion spring is rigid. Defaults to '''off'''<br />
* bool {{Literal|Origin drags tip}} When checked result is origin + dynamic tip otherwise result is just dynamic tip. Defaults to '''off'''<br />
<br />
==== Comments ====<br />
<br />
The movement of the Origin produces two effects. It drags the resulting vector the same amount of the Origin along the time (that is the resulting vector is the sum of the Origin(t) + dynamic tip(t)) and its acceleration produces an inertial force contrary to the acceleration direction and magnitude.<br />
<br />
The Torque only affects the angle of the resulting vector respect to the Origin. This means that the mass center of gravity is located at the origin (where the torque is applied) and so there is not centrifugal effects.<br />
<br />
Since the Origin only can be translated and not rotated, there are not Coriolis forces.<br />
<br />
The Force is applied on the tip position so it would produce effects on the angle and on the length of the tip. Force (F) is decomposed into two vectors one aligned with the Tip vector (Fr) and other perpendicular (Fa). The one aligned (Fr) is used on the linear damper spring equations. The one perpendicular (Fa) is used as additional torque by this expression Fr*R (where R is the variable length of the Tip vector)<br />
<br />
If Mass (Inertia) reaches near to zero, then the movement for linear (rotational) link is disabled.<br />
<br />
User is responsible of the meaning of the values of the parameters (i.e. negative mass, or negative friction or spring constant)<br />
<br />
Origin is automatically connected to a subparameter of an internal Value Node in order to calculate the second derivative of the Origin (that is the acceleration of the Origin). '''Do not''' Disconnect Origin value node. Export it instead and link or connect other Value Nodes to the exported.<br />
<br />
=== Dynamic List ===<br />
<br />
Converting a {{l|Convert#List|list}} parameter to {{Literal|Dynamic List}} seems to replace each of the {{Literal|Vertex NNN}} sub-parameters with {{Literal|Item NNN}} parameters which '''can't be expanded''', but can be {{l|Export|exported}}.<br />
<br />
=== Exponential ===<br />
<br />
Converting a {{l|Convert#Real|real}} parameter to {{Literal|Exponential}} adds two sub-parameters:<br />
<br />
* real "Exponent"<br />
* real "Scale"<br />
<br />
The resulting value is the result raising the [http://en.wikipedia.org/wiki/E_%28mathematical_constant%29 mathematical constant 'e'] to the power of {{Literal|Exponent}}, and scaling the result by {{Literal|Scale}}. That is, it returns:<br />
Scale * e^Exponent<br />
<br />
This is useful for tracking layers which have been zoomed, since the {{l|Zoom Layer}} scales by e^(zoom factor).<br />
<br />
See [http://youtube.com/watch?v=GAWtndOHkUw this video] for an example of the use of this convert type.<br />
<br />
=== From Integer ===<br />
<br />
This is currently disabled. It converts an integer to one of several types.<br />
<br />
=== Gradient Color ===<br />
<br />
Converting a {{l|Convert#Color|color}} parameter to {{Literal|Gradient Color}} adds two sub-parameters:<br />
<br />
* gradient "Gradient"<br />
* real "Index"<br />
<br />
The resulting value is a color taken from the {{l|Gradient Tool}} at the given index position. {{Literal|Index}} '''0''' corresponds to the left of the {{Literal|Gradient}}; {{Literal|Index}} '''1''' corresponds to the right of the {{Literal|Gradient}}.<br />
<br />
=== Gradient Rotate ===<br />
<br />
Converting a {{l|Convert#Gradient|gradient}} parameter to {{Literal|Gradient Rotate}} adds two sub-parameters:<br />
<br />
* gradient "Gradient"<br />
* real "Offset"<br />
<br />
The resulting value is a gradient based on the {{Literal|Gradient}} parameter, but shifted left (for negative values) or right, according to the value of the {{Literal|Offset}} parameter. An offset of '''1.0''' will shift the gradient by its entire visible width. Values shifted off the left or right edge aren't lost - they aren't visible in the gradient as it's displayed in the parameters dialog, but they will still be used when rendering (depending on parameters such as {{Literal|Loop}} and {{Literal|Zigzag}}, which can cause gradients to be looped between their their left and right edges, rather than using the non-displayed parts).<br />
<br />
=== Int String ===<br />
<br />
Converting an {{l|Convert#String|string}}-valued parameter to {{Literal|Int String}} adds three sub-parameters:<br />
* integer "Int"<br />
* integer "Width"<br />
* bool "Zero Padded"<br />
<br />
The resulting value a string containing {{Literal|Int}} formatted as a string with a minimum width {{Literal|Width}}. If {{Literal|Zero Padded}} is '''true''', it will be left-padded with "0" characters.<br />
<br />
=== Joined List ===<br />
<br />
Converting a {{l|Convert#String|string}} parameter to be {{Literal|Joined List}} adds four sub-parameters:<br />
* list "Strings"<br />
* string "Before"<br />
* string "Separator"<br />
* string "After"<br />
<br />
The result is a string containing the value of {{Literal|Before}}, followed by all the strings in the {{Literal|Strings}} list, with the value of {{Literal|Separator}} between each pair, followed by the value of {{Literal|After}}.<br />
<br />
=== Linear ===<br />
<br />
Converting an {{l|Convert#Angle|angle}} parameter to be {{Literal|Linear}} adds two angle sub-parameters:<br />
* angle "Rate"<br />
* angle "Offset"<br />
<br />
Converting a {{l|Convert#Color|color}} parameter to be {{Literal|Linear}} adds two angle sub-parameters (since svn r617):<br />
* color "Rate"<br />
* color "Offset"<br />
<br />
Converting an {{l|Convert#Integer|integer}} parameter to be {{Literal|Linear}} adds two angle sub-parameters (since svn r617):<br />
* integer "Rate"<br />
* integer "Offset"<br />
<br />
Converting a {{l|Convert#Real|real}} parameter to be {{Literal|Linear}} adds two real-valued sub-parameters:<br />
* real "Rate"<br />
* real "Offset"<br />
<br />
Converting a {{l|Convert#Time|time}} parameter to be {{Literal|Linear}} adds two time sub-parameters:<br />
* time "Rate"<br />
* time "Offset"<br />
<br />
Converting a {{l|Convert#Vector|vector}} parameter to be {{Literal|Linear}} adds two vector sub-parameters:<br />
* vector "Slope"<br />
* vector "Offset"<br />
<br />
The parameter's value will change linearly over time, starting with the value specified by {{Literal|Offset}} at time zero, and increasing by the value specified by {{Literal|Rate}} (or {{Literal|Slope}}, in the case of vector parameters) every second.<br />
<br />
The resulting value for vector parameters is:<br />
Offset + Slope*time<br />
<br />
and for the other 5 types of parameter it is:<br />
Offset + Rate*time<br />
<br />
=== Logarithm ===<br />
<br />
Converting a {{l|Convert#Real|real}}-valued parameter to {{Literal|Logarithm}} adds three sub-parameters:<br />
<br />
* real "Link"<br />
* real "Epsilon".<br />
* real "Infinite". <br />
<br />
The resulting value is:<br />
<br />
Log(Link) (if Link >= Epsilon)<br />
-Infinite (if Link < Epsilon)<br />
<br />
The {{Literal|Epsilon}} and {{Literal|Infinite}} parameters are only needed to prevent logarithm of negative or zero numbers. For regular operation the resulting value is simply the natural logarithm of {{Literal|Link}}. In fact a logarithm of a negative number cannot be calculated in the space of Real numbers. This convert type returns -Infinite for simplicity.<br />
<br />
=== Not ===<br />
<br />
Converting a {{l|Convert#Bool|bool}} parameter to {{Literal|Not}} adds one sub-parameter:<br />
* bool "Link"<br />
<br />
The resulting value is the opposite of {{Literal|Link}}.<br />
<br />
=== Or ===<br />
<br />
Converting a {{l|Convert#Bool|bool}} parameter to {{Literal|Or}} adds two sub-parameters:<br />
* bool "Link1"<br />
* bool "Link2"<br />
<br />
The resulting value is true if either {{Literal|Link1}}, {{Literal|Link2}}, or both are '''true'''.<br />
<br />
=== Power ===<br />
<br />
Converting a {{l|Convert#Real|real}}-valued parameter to {{Literal|Power}} adds three sub-parameters:<br />
* real "Base"<br />
* real "Power"<br />
* real "Epsilon".<br />
* real "Infinite".<br />
<br />
The resulting value is Base^Power if the operation is defined.<br />
The undefined cases will also return a value (to avoid errors):<br />
0^0 = 1<br />
0^-x = +/- infinite<br />
If a negative base is raised to a noninteger power, the power is rounded (typecast) to an integer<br />
<br />
The {{Literal|Epsilon}} and {{Literal|Infinite}} parameters are only needed to prevent division by zero.<br />
<br />
=== Radial Composite ===<br />
<br />
Converting a {{l|Convert#Color|color}} to {{Literal|Radial Composite}} adds four sub-parameters:<br />
* real "Luma"<br />
* real "Saturation"<br />
* angle "Hue"<br />
* real "Alpha"<br />
<br />
Converting a {{l|Convert#Vector|vector}} to {{Literal|Radial Composite}} adds two sub-parameters:<br />
* real "Radius"<br />
* angle "Theta"<br />
<br />
For color parameters, the resulting value is the color with the given {{Literal|Luma}}, {{Literal|Saturation}}, {{Literal|Hue}}, and {{Literal|Alpha}} amounts.<br />
<br />
For vector parameters, the resulting value is the point reached by traveling a distance {{Literal|Radius}} from the origin, in the distance given by the angle {{Literal|Theta}}.<br />
<br />
=== Random === <br />
<br />
Converting a parameter to {{Literal|Random}} adds five sub-parameters, the first of which is the same type as the converted parameter:<br />
<br />
* <param> "Link"<br />
* real "Radius"<br />
* integer "Seed"<br />
* real "Animation Speed"<br />
* integer "Interpolation"<br />
* real "Loop Time" (since SVN r2315)<br />
<br />
{{Literal|Random}} can be used on {{l|Convert#Angle|angles}}, {{l|Convert#Color|colors}}, {{l|Convert#Integer|integers}}, {{l|Convert#Real|reals}}, {{l|Convert#Time|times}}, and {{l|Convert#Vector|vectors}}.<br />
<br />
It is used to cause a parameter's value to vary randomly over time, around a central value:<br />
<br />
* {{Literal|Link}} provides the central value.<br />
* {{Literal|Radius}} defines the maximum random difference.<br />
* {{Literal|Seed}} seeds the random number generator<br />
* {{Literal|Animation Speed}} defines how often a new random value is chosen (in choices per second)<br />
* {{Literal|Interpolation}} determines how the value is interpolated from one random choice to the next. Possible values are:<br />
** '''0''' - no interpolation; the value jumps from one value to the next<br />
** '''1''' - linear interpolation<br />
** '''2''' - cosine<br />
** '''3''' - spline<br />
** '''4''' - cubic (the default); uses [http://www.gamedev.net/reference/articles/article1497.asp Catmull-Rom] spline interpolation<br />
* {{Literal|Loop Time}} (added in SVN r2315) makes the random value repeat after the given time. The value ends up the same at the given time as at time=0 so it's possible to make random looping animations without a nasty jump when the time wraps back to zero.<br />
<br />
The {{Literal|Interpolation}} sub-parameter should really be a drop-down menu, rather than an integer field, but that isn't yet implemented.<br />
<br />
=== Range ===<br />
<br />
Converting a parameter to {{Literal|Range}} adds three sub-parameters, all the same type as the parameter itself:<br />
* <param> "Min"<br />
* <param> "Max"<br />
* <param> "Link"<br />
<br />
{{Literal|Range}} can be used on {{l|Convert#Angle|angles}}, {{l|Convert#Integer|integers}}, {{l|Convert#Real|reals}}, and {{l|Convert#Time|times}}.<br />
<br />
It is used to limit the value of the linked parameter to be between {{Literal|Min}} and {{Literal|Max}}.<br />
<br />
The resulting value is:<br />
Min (if Link < Min)<br />
Max (if Link > Max)<br />
Link (otherwise)<br />
<br />
=== Real String ===<br />
<br />
Converting a {{l|Convert#String|string}} parameter to {{Literal|Real String}} adds four sub-parameters:<br />
<br />
* real "Real"<br />
* int "Width"<br />
* int "Precision"<br />
* bool "Zero Padded"<br />
<br />
The result is a string formatted to contain the given value {{Literal|Real}}. {{Literal|Width}} specifies the minimum field width, {{Literal|Precision}} specifies the number of decimal places and {{Literal|Zero Padded}} specifies whether to pad with zeros on the left hand side.<br />
<br />
For example, with Real=3.1415, Width=6, Precision=2, and ZeroPadded=true, we get:<br />
"003.14"<br />
(6 characters long, 2 decimal places, and padded with zeros on the left).<br />
<br />
=== Reciprocal ===<br />
<br />
Converting a {{l|Convert#Real|real}}-valued parameter to {{Literal|Reciprocal}} adds three sub-parameters:<br />
* real "Link"<br />
* real "Epsilon".<br />
* real "Infinite".<br />
<br />
The resulting value is:<br />
1/Link (Link <= -epsilon or epsilon <= Link)<br />
Infinite (if 0 <= Link < epsilon)<br />
-Infinite (if -epsilon < Link < 0)<br />
<br />
The {{Literal|Epsilon}} and {{Literal|Infinite}} parameters are only needed to prevent division by zero. For regular operation the resulting value is simply the reciprocal of {{Literal|Link}}.<br />
<br />
=== Reference ===<br />
<br />
Converting a parameter to {{Literal|Reference}} adds a single sub-parameter called {{Literal|Link}}. The {{Literal|Link}} parameter is the same type as the parameter being converted.<br />
<br />
It doesn't seem to do anything at all, other than adding an extra parameter. Whatever value is put into {{Literal|Link}} becomes the value of the parameter being converted.<br />
<br />
The only use for this conversion type I can think of is the following:<br />
<br />
* you know that point A should follow point B, so you export point B and connect point A to it<br />
* you're not yet sure exactly how point B should move, so you experiment with different conversion types for point B<br />
* changing the conversion type for point B breaks the connection you made in the first step<br />
* converting point B to be a reference, and then experimenting with different conversions in its {{Literal|Link}} parameter allows point A to connect to point B and for the connection to remain in place while you experiment in the {{Literal|Link}} parameter<br />
<br />
The resulting value is:<br />
Link<br />
<br />
=== Repeat Gradient ===<br />
<br />
Converting a {{l|Convert#Gradient|gradient}} parameter to {{Literal|Repeat Gradient}} adds seven sub-parameters:<br />
* gradient "Gradient"<br />
* integer "Count"<br />
* real "Width"<br />
* bool "Specify Start"<br />
* bool "Specify End"<br />
* color "Start Color"<br />
* color "End Color"<br />
<br />
The resulting value is a gradient containing {{Literal|Count}} equally spaced, equally wide copies of {{Literal|Gradient}}. Each copy has {{Literal|Gradient}} going forwards and then backwards. {{Literal|Width}} specifies relative width of the forward copy, with a width of '''0''' or less meaning only the backward copy is used, and a width of '''1''' or more meaning only the forward copy is used. A value of '''0.5''' will result in the forward and reverse copies of {{Literal|Gradient}} being the same width.<br />
<br />
If {{Literal|Specify Start}} is checked then {{Literal|Start Color}} will be inserted at the beginning of the new gradient, otherwise the beginning of {{Literal|Gradient}} will be used as the beginning of the new gradient.<br />
<br />
If {{Literal|Specify End}} is checked then {{Literal|End Color}} will be appended to the end of the new gradient, otherwise the end of {{Literal|Gradient}} will be used as the end of the new gradient.<br />
<br />
Here's an example of a repeated gradient - the radiating green/yellow lines are a repeated gradient, applied to a perpendicular curve gradient. This gradient was repeated with a width of '''0.5''', meaning it is used backwards and forwards the same amount:<br />
<br />
[[File:Repeat-gradient-valuenode-gradient.png|frame|center]]<br />
<br />
and here's the resulting image, along with the .sif file:<br />
<br />
[[File:Repeat-gradient-valuenode.png|frame|center]]<br />
<br />
You can donwload the project [[Media:Repeat-gradient-valuenode.sif]]<br />
<br />
=== Reverse Tangent ===<br />
<br />
Converting a {{l|Convert#Spline Point|Spline Point}} parameter to {{Literal|Reverse Tangent}} adds two sub-parameters: one called {{Literal|Reference}} of type Spline Point, and a boolean parameter called {{Literal|Reverse}}.<br />
* Spline Point "Reference"<br />
* bool "Reverse"<br />
<br />
{{Literal|Reverse Tangent}} can only be used on {{l|Convert#Spline Point|Spline Points}}.<br />
<br />
The resulting value is the same as the {{Literal|Reference}} Spline Point, but with its tangents switched over. This is useful when attempting to link the vertices of a {{l|Region Layer|region}} to the vertices of an {{l|Outline Layer|outline}} when the region and the outline were drawn in opposite directions, and so tangent1 of an outline vertex needs to be linked to tangent2 of the region vertex, and vice versa.<br />
<br />
=== Scale ===<br />
<br />
Converting a parameter to {{Literal|Scale}} adds two sub-parameters: one called {{Literal|Link}}, of the same type as the parameter itself, and a real-valued parameter called {{Literal|Scalar}}.<br />
* <param> "Link"<br />
* real "Scalar"<br />
<br />
{{Literal|Scale}} can be used on {{l|Convert#Angle|angles}}, {{l|Convert#Color|colors}}, {{l|Convert#Integer|integers}}, {{l|Convert#Real|reals}}, {{l|Convert#Time|times}}, and {{l|Convert#Vector|vectors}}.<br />
<br />
The resulting value is:<br />
Link * Scalar<br />
<br />
=== Segment Tangent ===<br />
<br />
Converting a {{l|Convert#Vector|vector}} parameter to {{Literal|Segment Tangent}} adds two sub-parameters:<br />
* segment "Segment"<br />
* real "Amount"<br />
<br />
{{Literal|Amount}} is a number between '''0''' and '''1''', defining the distance along the given {{Literal|Segment}}. The resulting value for the whole parameter is the tangent to the segment, at the given point along the segment.<br />
<br />
=== Segment Vertex ===<br />
<br />
Converting a {{l|Convert#Vector|vector}} parameter to {{Literal|Segment Vertex}} adds two sub-parameters:<br />
* segment "Segment"<br />
* real "Amount" <br />
<br />
{{Literal|Amount}} is a number between '''0''' and '''1''', defining the distance along the given {{Literal|Segment}}. The resulting value is the vertex at the given point along the segment.<br />
<br />
=== Sine ===<br />
<br />
Converting a {{l|Convert#Real|real}}-valued parameter to {{Literal|Sine}} adds two sub-parameters:<br />
* angle "Angle"<br />
* real "Amplitude".<br />
<br />
The resulting value is:<br />
Amplitude * sin(Angle)<br />
<br />
=== Spline Tangent ===<br />
<br />
Converting a {{l|Convert#Angle|angle}}, {{l|Convert#Real|real}} (since SVN r1862), or {{l|Convert#Vector|vector}} parameter to {{Literal|Spline Tangent}} adds six sub-parameters:<br />
* spline "Spline"<br />
* bool "Loop"<br />
* real "Amount"<br />
* angle "Offset" (since SVN r1863)<br />
* real "Scale" (since SVN r1863)<br />
* bool "Fixed Length" (since SVN r1863)<br />
<br />
{{Literal|Amount}} is a number between '''0''' and '''1''', defining the distance along the given spline. The resulting value for the whole parameter is the tangent to the spline, at the given point along the spline, optionally rotated and scaled according to the {{Literal|Offset}}, {{Literal|Scale}}, and {{Literal|Fixed Length}} parameters.<br />
<br />
{{Literal|Offset}} is an angle used to give the tangent an extra rotation before returning it. If {{Literal|Fixed Length}} is '''true''', the tangent is then scaled to have a length equal to {{Literal|Scale}}. Otherwise the tangent is multiplied by {{Literal|Scale}}.<br />
<br />
If a vector was converted the result is the tangent itself. If an angle was converted, the result is the angle of the tangent to the horizontal, and if a real was converted, the result is the length of the tangent.<br />
<br />
This {{l|Following_a_Spline|tutorial}} gives an example of the use of this convert type.<br />
<br />
=== Spline Vertex ===<br />
<br />
Converting a {{l|Convert#Vector|vector}} parameter to {{Literal|Spline Vertex}} adds three sub-parameters:<br />
* spline "Spline"<br />
* bool "Loop"<br />
* real "Amount"<br />
<br />
{{Literal|Amount}} is a number between '''0''' and '''1''', defining the distance along the given spline. The resulting value for the whole parameter is a vector giving the position of the given point along the spline.<br />
<br />
This {{l|Following a Spline|tutorial}} gives an example of the use of this convert type.<br />
<br />
=== Spline Width ===<br />
<br />
Converting a {{l|Convert#Real|real}} parameter to {{Literal|Spline Width}} adds three sub-parameters:<br />
* spline "Spline"<br />
* bool "Loop"<br />
* real "Amount"<br />
* real "Scale" (since SVN r1872)<br />
<br />
{{Literal|Amount}} is a number between '''0''' and '''1''', defining the distance along the given spline. The resulting value for the whole parameter is the width of the spline at the given point along it, multiplied by the {{Literal|Scale}} parameter.<br />
<br />
=== Step ===<br />
<br />
Converting an {{l|Convert#Angle|angle}}, {{l|Convert#Color|color}}, {{l|Convert#Integer|integer}}, {{l|Convert#Real|real}}, {{l|Convert#Time|time}}, or {{l|Convert#Vector|vector}} parameter to be {{Literal|Step}} adds four sub-parameters:<br />
* <param> "Link"<br />
* time "Duration"<br />
* time "Start Time"<br />
* real "Intersection"<br />
<br />
The parameter's value will change in steps. Each step is {{Literal|Duration}} seconds long. The steps start at times {{Literal|Start Time}}, {{Literal|Start Time}}+{{Literal|Duration}}, etc. The value of the valuenode is the value of {{Literal|Link}} at some time. {{Literal|Intersection}} determines which time is used. An {{Literal|Intersection}} of '''0.0''' means that the value of {{Literal|Link}} at the start of the step should be used. An {{Literal|Intersection}} of '''0.5''' (the default) means to use the value of {{Literal|Link}} at the middle of the step, etc.<br />
<br />
The resulting value at time <math>T</math> is:<br />
<math>Link \Bigg ( \Bigg ( Duration \cdot \left ( \left \lfloor \frac{T - Start\ Time}{Duration} \right \rfloor + Intersection \right ) \Bigg ) + Start \ Time \Bigg )</math><br />
<br />
==== Example ====<br />
<br />
{{Literal|Link}} is a sine wave. {{Literal|Duration}} is '''10f''' (the frame rate is 24 fps). {{Literal|Start Time}} is '''1s'''.<br />
<br />
So one step starts at '''1s''', and others start at '''0s 14f''', '''0s 4f''', '''1s 10f''', etc.<br />
<br />
This is the (kind of) sine wave:<br />
<br />
[[File:Convert Smooth-sine 0.63.06.png|frame|center]]<br />
<br />
And this is the effect of the Step valuenode on it, with an {{Literal|Intersection}} of '''0.0'''. Notice that at time '''0s''', the step has a negative value -- that step runs from '''-6f''' to '''4f''', and so its value is the value of {{Literal|Link}} at time '''-6f'''. ''These images were created in [http://www.gimp.org/ The Gimp] - it's not currently possible to view two curves at the same time in Synfig Studio.''<br />
<br />
[[File:Convert Stepped-sine 0.0 0.63.06.png|frame|center]]<br />
<br />
Here it is with an {{Literal|Intersection}} of '''0.5''':<br />
<br />
[[File:Convert Stepped-sine 0.5 0.63.06.png|frame|center]]<br />
<br />
and here, with an {{Literal|Intersection}} '''of 1.0''':<br />
<br />
[[File:Convert Stepped-sine 1.0 0.63.06.png|frame|center]]<br />
<br />
You can download the project [[Media:Doc Convert Step.sifz]]<br />
<br />
=== Stripes ===<br />
<br />
Converting a {{l|Convert#Gradient|gradient}} parameter to {{Literal|Stripes}} adds four sub-parameters:<br />
* color "Color 1"<br />
* color "Color 2"<br />
* integer "Stripe Count"<br />
* real "Width"<br />
<br />
The resulting value is a gradient containing {{Literal|Stripe Count}} equally spaced, equally wide stripes of color {{Literal|Color 2}} with a background of {{Literal|Color 1}}. {{Literal|Width}} specifies the width of the stripes, with a {{Literal|Width}} of '''0''' or less meaning they are invisible, and a {{Literal|Width}} of '''1''' or more meaning the whole gradient is of {{Literal|Color 2}}.<br />
<br />
=== Subtract ===<br />
<br />
Converting a parameter to {{Literal|Subtract}} adds three sub-parameters, the first two of which are the same type as the parameter itself:<br />
* <param> "LHS"<br />
* <param> "RHS"<br />
* real "Scalar"<br />
<br />
The {{Literal|Subtract}} conversion can be used with parameters of type {{l|Convert#Angle|angle}}, {{l|Convert#Color|color}}, {{l|Convert#Gradient|gradient}}, {{l|Convert#Integer|integer}}, {{l|Convert#Real|real}}, {{l|Convert#Time|time}}, and {{l|Convert#Vector|vector}}.<br />
<br />
The resulting value is:<br />
(LHS - RHS) * Scalar<br />
<br />
=== Switch ===<br />
<br />
Converting a parameter to {{Literal|Switch}} adds three sub-parameters:<br />
* <param> "Link Off"<br />
* <param> "Link On"<br />
* bool "Switch"<br />
<br />
{{Literal|Link Off}} and {{Literal|Link On}} are the same type as the parameter being converted.<br />
<br />
The resulting value is the value of {{Literal|Link Off}} when {{Literal|Switch}} is '''off''', and {{Literal|Link On}} when {{Literal|Switch}} is '''on'''.<br />
<br />
This conversion can be used on all value types.<br />
<br />
=== Time Loop ===<br />
<br />
Converting a parameter to {{Literal|Time Loop}} adds four sub-parameters: one called {{Literal|Link}}, of the same type as the parameter itself, and three time parameters:<br />
<br />
* <param> "Link"<br />
* time "Link Time" <br />
* time "Local Time"<br />
* time "Duration"<br />
<br />
It works similarly to the {{l|Time Loop Layer}} but affects only a single parameter.<br />
<br />
For any integer value '''n''', from "Local Time + abs(Duration)*n" to "Local Time + abs(Duration)*(n+1)", the resulting value of the parameter is the same as that of the {{Literal|Link}} parameter from {{Literal|Link Time}} to "Link Time + Duration".<br />
<br />
In other words, {{Literal|Duration}} seconds of values of the parameter {{Literal|Link}} starting from time {{Literal|Link Time}} onwards are looped over and over, with the value of the {{Literal|Link}} parameter at time {{Literal|Link Time}} corresponding to the resulting value at time {{Literal|Local Time}}.<br />
<br />
As an example, suppose the {{Literal|Link}} parameter has a value of time the current time. At '''0s''' the value is '''0''', at '''10s''' the value is '''20'''.<br />
<br />
If we set:<br />
* Link Time = 5s<br />
* Local Time = 2s<br />
* Duration = 4s<br />
then from '''2s''' to '''6s''' and from '''6s''' to '''10s''', etc., the resulting value is the value of {{Literal|Link}} from '''5s''' to '''9s''', as follows:<br />
<br />
Then the resulting values will be:<br />
* 0s -> "Link" value at 7s = 14<br />
* 1s -> "Link" value at 8s = 16<br />
* 2s -> "Link" value at 5s = 10 (at "Link Time" = 2s, result is the value of "Link" at "Link Time" = 5s = 10)<br />
* 3s -> "Link" value at 6s = 12<br />
* 4s -> "Link" value at 7s = 14<br />
* 5s -> "Link" value at 8s = 16<br />
* 6s -> "Link" value at 5s = 10 ("Duration" = 4s later, the value is the same as at 2s)<br />
* 7s -> "Link" value at 6s = 12<br />
<br />
If {{Literal|Duration}} is '''zero''', the resulting value is whatever the value of the {{Literal|Link}} parameter is at time {{Literal|Link Time}}.<br />
<br />
If {{Literal|Duration}} is negative, the resulting value at {{Literal|Local Time}} still matches the value of {{Literal|Link}} at {{Literal|Link Time}}, but the animation goes in the opposite direction. For example:<br />
<br />
If we set:<br />
* Link Time = 5s<br />
* Local Time = 2s<br />
* Duration = -4s<br />
then from '''2s''' to '''6s''' and from '''6s''' to '''10s''', etc., the resulting value is the value of {{Literal|Link}} from '''5s''' to '''1s''', as follows:<br />
<br />
Then the resulting values will be:<br />
* 0s -> "Link" value at 3s = 6<br />
* 1s -> "Link" value at 2s = 4<br />
* 2s -> "Link" value at 5s = 10 (at "Link Time" = 2s, result is the value of "Link" at "Link Time" = 5s = 10)<br />
* 3s -> "Link" value at 4s = 8<br />
* 4s -> "Link" value at 3s = 6<br />
* 5s -> "Link" value at 2s = 4<br />
* 6s -> "Link" value at 5s = 10 (4s later, the value is the same as at "Link Time" = 2s)<br />
* 7s -> "Link" value at 4s = 8<br />
<br />
This conversion can be used on all value types.<br />
<br />
=== Time String ===<br />
<br />
Converting a {{l|Convert#String|string}} parameter to {{Literal|Time String}} adds one sub-parameter called {{Literal|Time}}, of type time:<br />
<br />
* time "Time" <br />
<br />
The result is a string containing the given {{Literal|Time}}.<br />
<br />
=== Timed Swap ===<br />
<br />
This convert type was disabled in Synfig 0.61.06 and earlier because it didn't work.<br />
<br />
Converting a parameter to {{Literal|Timed Swap}} adds four sub-parameters:<br />
* <param> "Before"<br />
* <param> "After"<br />
* time "Swap Time"<br />
* time "Swap Duration"<br />
<br />
{{Literal|Before}} and {{Literal|After}} are the same type as the parameter being converted.<br />
<br />
This conversion type linearly switches from {{Literal|Before}} to {{Literal|After}}, taking {{Literal|Swap Duration}} seconds to do so, and completing the swap at {{Literal|Swap Time}}.<br />
<br />
Note that this doesn't give us anything that we can't achieve using the "{{l|Convert#Linear|Linear}}" conversion type and a few {{l|Waypoint|waypoints}}.<br />
<br />
{{Literal|Timed Swap}} can be used on {{l|Convert#Angle|angles}}, {{l|Convert#Color|colors}}, {{l|Convert#Integer|integers}}, {{l|Convert#Real|reals}}, {{l|Convert#Time|times}}, and {{l|Convert#Vector|vectors}}.<br />
<br />
The resulting value is:<br />
if time > "Swap Time" then "After"<br />
else if time < ("Swap Time" - "Swap Duration") then "Before"<br />
else interpolate between "Before" and "After"<br />
<br />
=== Two-Tone ===<br />
<br />
Converting a {{l|Convert#Gradient|gradient}} to {{Literal|Two-Tone}} adds two color-valued sub-parameters:<br />
* color "Color1"<br />
* color "Color2"<br />
<br />
The resulting gradient has two {{l|Color Stop}}, one at each end, starting with {{Literal|Color1}} and ending with {{Literal|Color2}}.<br />
<br />
These color parameters can be animated, giving us the ability to have the gradient change color over time. It used to be used as a workaround for [http://sourceforge.net/tracker/index.php?func=detail&aid=1568818&group_id=144022&atid=757416 this bug].<br />
<br />
=== Vector Angle ===<br />
<br />
Converting an {{l|Convert#Angle|angle}} to {{Literal|Vector Angle}} adds a vector sub-parameter:<br />
* vector "Vector"<br />
<br />
The resulting value is the angle between the {{Literal|Vector}} and the X axis.<br />
<br />
=== Vector Length ===<br />
<br />
Converting a {{l|Convert#Real|real}} to {{Literal|Vector Length}} adds a vector sub-parameter:<br />
* vector "Vector"<br />
<br />
The resulting value is the length of the {{Literal|Vector}}.<br />
<br />
=== Vector X ===<br />
<br />
Converting a {{l|Convert#Real|real}} to {{Literal|Vector X}} adds a vector sub-parameter:<br />
* vector "Vector"<br />
<br />
The resulting value is the X component of the {{Literal|Vector}}.<br />
<br />
=== Vector Y ===<br />
<br />
Converting a {{l|Convert#Real|real}} to {{Literal|Vector Y}} adds a vector sub-parameter:<br />
* vector "Vector"<br />
<br />
The resulting value is the Y component of the {{Literal|Vector}}.<br />
<br />
== Which Value Types can use which Convert Types? ==<br />
<br />
There are 13 different types of value in Synfig. Each of these types has a different set of convert types available to it, as follows:<br />
<br />
=== {{l|Image:type_angle_icon.png|22px}} Angle ===<br />
<br />
Angle parameters can be converted to {{l|Convert#Add|Add}}, {{l|Convert#aTan2|aTan2}}, {{l|Convert#Spline Tangent|Spline Tangent}}, {{l|Convert#Dot Product|Dot Product}}, {{l|Convert#Linear|Linear}}, {{l|Convert#Random|Random}}, {{l|Convert#Range|Range}}, {{l|Convert#Scale|Scale}}, {{l|Convert#Step|Step}}, {{l|Convert#Subtract|Subtract}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Timed Swap|Timed Swap}}, {{l|Convert#Vector Angle|Vector Angle}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_bool_icon.png|22px}} Bool ===<br />
<br />
Bool parameters can only be converted to the {{l|Convert#And|And}}, {{l|Convert#Greyed|Greyed}}, {{l|Convert#Or|Or}}, {{l|Convert#Not|Not}}, {{l|Convert#Compare|Compare}} {{l|Convert#Random|Random}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}},and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:Type canvas icon 0.63.06.png|22px}} Canvas ===<br />
<br />
Canvas parameters can be converted to the {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, and {{l|Convert#Reference|Reference}} type.<br />
<br />
=== {{l|Image:type_color_icon.png|22px}} Color ===<br />
<br />
Color parameters can be converted to {{l|Convert#Add|Add}}, {{l|Convert#Composite|Composite}}, {{l|Convert#Gradient Color|Gradient Color}}, {{l|Convert#Linear|Linear}}, {{l|Convert#Radial Composite|Radial Composite}}, {{l|Convert#Random|Random}}, {{l|Convert#Scale|Scale}}, {{l|Convert#Step|Step}}, {{l|Convert#Subtract|Subtract}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Timed Swap|Timed Swap}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_gradient_icon.png|22px}} Gradient ===<br />
<br />
Gradient parameters can be converted to {{l|Convert#Add|Add}}, {{l|Convert#Gradient Rotate|Gradient Rotate}}, {{l|Convert#Repeat Gradient|Repeat Gradient}}, {{l|Convert#Stripes|Stripes}}, {{l|Convert#Subtract|Subtract}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Two-Tone|Two-Tone}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_integer_icon.png|22px}} Integer ===<br />
<br />
Integer parameters can be converted to {{l|Convert#Add|Add}}, {{l|Convert#Linear|Linear}}, {{l|Convert#Random|Random}}, {{l|Convert#Range|Range}}, {{l|Convert#Scale|Scale}}, {{l|Convert#Step|Step}}, {{l|Convert#Subtract|Subtract}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Timed Swap|Timed Swap}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_list_icon.png|22px}} List ===<br />
<br />
List parameters can be converted to {{l|Convert#Spline|Spline}}, {{l|Convert#Dynamic List|Dynamic List}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_real_icon.png|22px}} Real ===<br />
<br />
Real parameters can be converted to {{l|Convert#Add|Add}}, {{l|Convert#Spline Width|Spline Width}}, {{l|Convert#Cos|Cos}}, {{l|Convert#Dot Product|Dot Product}}, {{l|Convert#Exponential|Exponential}}, {{l|Convert#Linear|Linear}}, {{l|Convert#Logarithm|Logarithm}}, {{l|Convert#Power|Power}}, {{l|Convert#Random|Random}}, {{l|Convert#Range|Range}}, {{l|Convert#Reciprocal|Reciprocal}}, {{l|Convert#Scale|Scale}}, {{l|Convert#Sine|Sine}}, {{l|Convert#Step|Step}}, {{l|Convert#Subtract|Subtract}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Timed Swap|Timed Swap}}, {{l|Convert#Vector Length|Vector Length}}, {{l|Convert#Vector X|Vector X}}, {{l|Convert#Vector Y|Vector Y}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_segment_icon.png|22px}} Segment ===<br />
<br />
Segment parameters can be converted to the {{l|Convert#Composite|Composite}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_blinepoint_icon.png|22px}} Spline Point ===<br />
<br />
Spline Point parameters can be converted to {{l|Convert#Composite|Composite}}, {{l|Convert#Reverse Tangent|Reverse Tangent}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
<br />
=== {{l|Image:type_string_icon.png|22px}} String ===<br />
<br />
String parameters can be converted to the {{l|Convert#Angle String|Angle String}}, {{l|Convert#Int String|Int String}}, {{l|Convert#Joined List|Joined List}}, {{l|Convert#Real String|Real String}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Time String|Time String}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_time_icon.png|22px}} Time ===<br />
<br />
Time parameters can be converted to the {{l|Convert#Add|Add}}, {{l|Convert#Linear|Linear}}, {{l|Convert#Random|Random}}, {{l|Convert#Range|Range}}, {{l|Convert#Scale|Scale}}, {{l|Convert#Step|Step}}, {{l|Convert#Subtract|Subtract}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Timed Swap|Timed Swap}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
=== {{l|Image:type_vector_icon.png|22px}} Vector ===<br />
<br />
Vector parameters can be converted to {{l|Convert#Add|Add}}, {{l|Convert#Spline Tangent|Spline Tangent}}, {{l|Convert#Spline Vertex|Spline Vertex}}, {{l|Convert#Composite|Composite}}, {{l|Convert#Linear|Linear}}, {{l|Convert#Radial Composite|Radial Composite}}, {{l|Convert#Random|Random}}, {{l|Convert#Scale|Scale}}, {{l|Convert#Segment Tangent|Segment Tangent}}, {{l|Convert#Segment Vertex|Segment Vertex}}, {{l|Convert#Step|Step}}, {{l|Convert#Subtract|Subtract}}, {{l|Convert#Switch|Switch}}, {{l|Convert#Time Loop|Time Loop}}, {{l|Convert#Timed Swap|Timed Swap}}, and {{l|Convert#Reference|Reference}} types.<br />
<br />
== Compatibility ==<br />
<br />
When a new ValueNode type is added to Synfig, the .sif file format is extended to include a way of writing the new type. This extension won't be able to be read by any older version of Synfig. Here's a list of the ValueNode types that have been added, along with the subversion revision number in which they first appeared:<br />
<br />
<blockquote><br />
{| style="width:55%"<br />
| '''Version''' || '''Revision''' || '''Convert'''<br />
|-<br />
| <hr> || <hr> || <hr><br />
|-<br />
| '''(0.65.0)''' || not yet released || &nbsp;<br />
|-<br />
| &nbsp; || [https://github.com/synfig/synfig/pull/105 pull#105] || {{l|#Dynamic|Dynamic}}<br />
|-<br />
| '''(0.63.06)''' || || &nbsp;<br />
|-<br />
| &nbsp; || ? || BLine Width renamed {{l|#Spline Width|Spline Width}}<br />
|-<br />
| &nbsp; || ? || BLine Vertex renamed {{l|#Spline Vertex|Spline Vertex}}<br />
|-<br />
| &nbsp; || ? || BLine Tangent renamed {{l|#Spline Tangent|Spline Tangent}}<br />
|-<br />
| <hr> || <hr> || <hr><br />
|-<br />
| '''(0.61.09)''' || || &nbsp;<br />
|-<br />
| &nbsp; || 2034 || {{l|#Logarithm|Logarithm}}<br />
|-<br />
| &nbsp; || 2010 || {{l|#Int String|Int String}}<br />
|-<br />
| &nbsp; || 2010 || {{l|#Angle String|Angle String}}<br />
|-<br />
| &nbsp; || 2007 || {{l|#Joined List|Joined List}}<br />
|-<br />
| &nbsp; || 2003 || {{l|#Real String|Real String}}<br />
|-<br />
| &nbsp; || 2000 || {{l|#Time String|Time String}}<br />
|-<br />
| &nbsp; || 1891 || {{l|#Dot Product|Dot Product}}<br />
|-<br />
| &nbsp; || 1885 || {{l|#Gradient Color|Gradient Color}}<br />
|-<br />
| &nbsp; || 1882 || {{l|#Vector X|Vector X}}<br />
|-<br />
| &nbsp; || 1882 || {{l|#Vector Y|Vector Y}}<br />
|-<br />
| &nbsp; || 1881 || {{l|#Vector Length|Vector Length}}<br />
|-<br />
| &nbsp; || 1880 || {{l|#Vector Angle|Vector Angle}}<br />
|-<br />
| <hr> || <hr> || <hr><br />
|-<br />
| '''(0.61.08)''' || 1839 || &nbsp;<br />
|-<br />
| &nbsp; || 1694 || {{l|#Spline Width|BLine Width}}<br />
|-<br />
| &nbsp; || 1690 || {{l|#Random|Random}} (for bools)<br />
|-<br />
| &nbsp; || 1691 || {{l|#Step|Step}}<br />
|-<br />
| &nbsp; || 1354 || {{l|#Subtract|Subtract}} (for gradients)<br />
|-<br />
| &nbsp; || 1354 || {{l|#Add|Add}} (for gradients)<br />
|-<br />
| &nbsp; || 1267 || {{l|#From Integer|From Integer}}<br />
|-<br />
| &nbsp; || 1267 || {{l|#Duplicate|Duplicate}}<br />
|-<br />
| &nbsp; || 1238 || {{l|#Reciprocal|Reciprocal}}<br />
|-<br />
| &nbsp; || 1226 || {{l|#Time Loop|Time Loop}}<br />
|-<br />
| &nbsp; || 1162 || {{l|#Reverse Tangent|Reverse Tangent}}<br />
|-<br />
| &nbsp; || 1132 || {{l|#aTan2|aTan2}}<br />
|-<br />
| &nbsp; || 1111 || {{l|#Cos|Cos}}<br />
|-<br />
| &nbsp; || 923 || {{l|#Switch|Switch}}<br />
|-<br />
| &nbsp; || 907 || {{l|#Random|Random}}<br />
|-<br />
| <hr> || <hr> || <hr><br />
|-<br />
| '''(0.61.07)''' || 878 || &nbsp;<br />
|-<br />
| &nbsp; || 776 || {{l|#Range|Range}}<br />
|-<br />
| &nbsp; || 744 || {{l|#BLine Vertex|Spline Vertex}}<br />
|-<br />
| &nbsp; || 744 || {{l|#BLine Tangent|Spline Tangent}}<br />
|-<br />
| &nbsp; || 742 || {{l|#Add|Add}}<br />
|-<br />
| &nbsp; || 739 || {{l|#Exponential|Exponential}}<br />
|-<br />
| &nbsp; || 666 || {{l|#Repeat Gradient|Repeat Gradient}}<br />
|-<br />
| &nbsp; || 610 || {{l|#Timed Swap|Timed Swap}}<br />
|-<br />
| <hr> || <hr> || <hr><br />
|-<br />
| '''(0.61.06)''' || 536 || &nbsp;<br />
|-|}<br />
</blockquote></div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Roadmap&diff=17853Dev:Roadmap2013-05-10T17:43:00Z<p>Genete: Add note to remember update this page with the bug genie</p>
<hr />
<div> ALL THIS STUFF SHOULD BE HANDLED BY [http://www.synfig.org/issues/thebuggenie/synfig THE BUG GENNIE] NOW <br />
= Synfig Roadmap =<br />
* <s>'''0.62.02 targets'''</s><br />
** <s>Smart Tangents Linking</s> - applied to master branch<br />
** <s>Initial Bones support</s> - applied a separated bones branch<br />
* '''0.62.03''' targets<br />
** Outline with movable/sliding width points: ''Advanced Outline''<br />
*** <s>WidthPoint class.</s><br />
*** <s>ValueNode_WPList.</s><br />
*** <s>Support of Widthpoint from ValueNode_Composite.</s><br />
*** <s>New Advanced Outline Layer.</s><br />
*** <s>Support for load and save Advanced Outline Layer.</s><br />
*** <s>Hide width ducks from bline at the Advanced Outline.</s><br />
*** <s>Keep ValueNode_WPList's bline synced with Advanced Outline's bline.</s><br />
*** <s>Allow Width Tool to handle Advanced Outlines. Fix old bugs.</s><br />
*** <s>Write the render engine for Advanced Outline using Widthpoint interpolations side types.</s><br />
*** <s>Add custom tips for start or end of the bline when not looped.</s><br />
*** Possibly improve step size on render engine. Quicker when straight, Slower when curved.<br />
*** <s>Support for rounded/sharp/flat cusps when tangents are split.</s><br />
*** <s>Remove Expand parameter or use it.</s><br />
*** <s>Exclude WidthPoints's positions duks from drag selection.</s><br />
*** <s>Improve width interpolation calculation form linear to smooth.</s><br />
*** <s>Support of Advanced Outline on Draw Tool.</s><br />
*** <s>Support of Advanced Outline on BLine Tool.</s><br />
*** Support of Advanced Outline on Curved Gradients and Plants.<br />
*** <s>Add actions to change WidthPoint's interpolation type by contextual menu. Include icons.</s><br />
*** <s>New icon for Advanced Outline.</s><br />
** <s>Replace ''class Widget_Enum : public Gtk::OptionMenu'' by ''class Widget_Enum : public Gtk::ComboBoxText'' as the first is deprecated since long time ago. Maybe it stops the "Straight" bug (or the bug that doesn't allow to select the item numbered as 1)</s> Bud didn't dissapear.<br />
** <s>Replace Gtk::Tooltips by Gtk::Tooltip since the first is deprecated and doesn't work fine on treeviews.</s><br />
** Enable Layer Composite specific parameters (zdepth, amount, blend method) for the distortion layers when possible<br />
** Collect all bline functions (i.e. find closest point to bline) and encapsulate into a calculation class.<br />
** <s>Drag Blines with mouse (Nikitakit) ''(in progress)''</s><br />
** Add feedback for Smooth Move Tool's radius.<br />
** <s>Resize Rectangle Tool icon to 128x128.</s><br />
** Add zoom duck for Paste Canvas layer<br />
* '''0.63.00 targets'''<br />
** Improve Preview dialog. Use better navigation icons. Allow quick shortcuts for 50% 100% resize. Don't resize content with the window. ON GOING (jcome)<br />
** Bones user interface improvement.<br />
** <s>Fix Groups feature.</s><br />
** Make curves labels translatable or take the (sub)parameter local name.<br />
** Add angle parameter to Paste Canvas Layer (via transform stack)<br />
* '''0.64.00 targets'''<br />
** Bones user interface finalization.<br />
** New preferences system more versatile.<br />
** Rewrite the current GUI using glade xml files and Gtk:Builder<br />
** <s>Improve SVG import support</s> Not needed since Nikitakit's svg2sif Inkscape pluging.<br />
** Video import improvement.<br />
** Sif format documentation.<br />
* '''1.0 targets'''<br />
** Real Particles support<br />
** OpenGL rendering support<br />
** Cairo rendering support<br />
** Sound support<br />
** Free drawing tools<br />
** UI redesign<br />
** SWF export<br />
** <s>Full SVG import/export support</s> Import is done and export will be via Cairo.<br />
** Full video import support<br />
** Scripting support (python)<br />
<br />
[http://www.mind42.com/pub/mindmap?mid=04afc25d-b337-483b-bba4-fdbe4de6327e Online Roadmap Of Synfig]. If you want to collaborate to edit this "roadmap mindmap" please let us know on [[Dev_talk:Roadmap|the Talk page]].<br />
<br />
This is not finished but would be a comprehensive list of things to be done/fix.<br />
This mind map would help to create the real Road Map for the next release. The road map should be an ordered list of bugs and features that should be fixed/implemented in the next release.<br />
<br />
= Web infrastructure reorganization =<br />
* Hosting<br />
** <s>Resolve memory issues</s><br />
** <s>Cleanup</s><br />
** <s>Manage all settings with git</s><br />
** <s>Sophisticated backup system</s><br />
* CMS<br />
** <s>Common skin</s><br />
** <s>Top banner</s><br />
** <s>Main page: Splash and "download now" button</s><br />
** <s>Development page</s><br />
** <s>Releases information with features overview (like on blender.org)</s><br />
*** <s>Put splash screen on each release page</s><br />
** <s>Transfer News</s><br />
*** <s>And Events too</s><br />
** <s>Resolve News navigation issues</s><br />
** <s>Transfer Press links</s><br />
** Download -> Tools<br />
** <s>Download -> Examples</s><br />
** <s>Twitter notifications</s><br />
*** Notify on edits<br />
*** Notify on page deletion<br />
** <s>--- !!! go to public mode !!! ---</s><br />
** Integrated irc client<br />
** Integrated IRC logs page<br />
** News calendar - include Releases (display all pages RECURSIVELY)<br />
** <s>New Gallery</s><br />
** <s>Rename items in global scrapbook</s><br />
** Merge "How do I..." into "FAQ"<br />
** Synfig campaings<br />
** Developers profiles<br />
** <s>Rss on the main page</s><br />
** Usage Cases page<br />
* Documentation<br />
** Common skin<br />
** Solid manual/guide<br />
** <s>PDF export</s><br />
*** <s>Basic implementation</s><br />
*** <s>Ignore navigation panel</s><br />
*** <s>Multilevel headings</s><br />
*** <s>Internal links</s><br />
** <s>Navigation Templates</s><br />
** Inline .po support<br />
** <s>Writer guide</s><br />
** Translator guide<br />
** <s>Describe templates</s><br />
* Forums<br />
** Common skin<br />
* Library<br />
** Setup ccHost<br />
** Common skin<br />
<br />
=Old Road Map=<br />
There is '''''no specific roadmap''''', we just work on whatever happens to catch our interest. So far, we've made releases once there are a reasonable number of new fixes and/or features. This usually occurs every 6 months or so. Please see the {{l|Release|release}} page for the process we go through when releasing. Please see the {{l|Wish list|wishlist}} page if you have some ideas. Please see {{l|Software roadmap}} for things we want to do with synfig at some point.<br />
<br />
As an open source project, synfig is relatively young. As a result, it has lots of creases that need to be ironed out. The copyright is sorted, the code compiles fine, but there are warts when running the code and important features that are missing. To smooth out those warts, we need people to help out. We cannot do everything ourselves, WE NEED YOUR HELP!!</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Source_code&diff=17852Dev:Source code2013-05-10T17:38:17Z<p>Genete: Update to github repository</p>
<hr />
<div>{{Category|Code}} {{Category|Permalink}}<br />
<br />
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide a way to get the code: <br />
<br />
*Using git (one repository)<br />
<br />
Once you grab the code, you will need to follow the {{l|Dev:Build Instructions|build instructions}}.<br />
<br />
Commit notifications to master branch are <strike>sent to [http://cia.vc/stats/project/synfig CIA] and</strike> shown up in the {{l|Contact|IRC channel}}.<br />
<br />
While you are browsing the code, you may wish to refer to these links:<br />
<br />
* [http://www.synfig.org/issues/thebuggenie/synfig Bug tracker]<br />
* [http://download.tuxfamily.org/synfig/api/index.html API documentation]<br />
* {{l|Dev:Source Outline|source code outline}}<br />
* {{l|Dev:Source Glossary|source code glossary}}<br />
* {{l|Dev:ETL_make_check|ETL make check failures}}<br />
* {{l|Dev:Layers|Mapping between layer types, classes and .cpp files}}<br />
* {{l|Dev:class_ValueNode|ValueNode types}}<br />
* {{l|Dev:BlendMethods|Blend Method enumeration values}}<br />
* {{l|Interesting Readings}}<br />
<br />
== GIT repository at Github==<br />
<br />
Anonymous access: <br />
<br />
git clone git://github.com/synfig/synfig.git <br />
People with commit access should use this command instead:<br />
<br />
git clone git@github.com:synfig/synfig.git<br />
Or this one if you prefer https protocol:<br />
git clone https://github.com/synfig/synfig.git<br />
<br />
You can also check out the [https://github.com/synfig/synfig web interface] to that repository.<br />
<br />
Check out [https://help.github.com Github help page] for further references.<br />
<br />
==Proposed workflow and other repositories ==<br />
<br />
Proposed git workflow:<br />
<br />
* Consider the '''master''' branch the stable one. <br />
* Each coder should have a '''username_master''' branch where all the small changes are done. <br />
* Once the '''username_master''' branch is considered stable it can be rebased/merged to '''master'''.<br />
* Work on new non-trivial features/fixes on '''username_feature''' branches.<br />
* Once the '''username_feature''' branch is considered stable it can be rebased/merged to '''master'''.<br />
* Obviously commit trivial fixes straight to the '''master'''.<br />
* If it is possible, rebase & rework branches to keep history more sane, linear and atomic.<br />
* Releases are tagged according to following criteria:<br />
** If the release consist on a few trivial set of features or bug fixes then increase the third numeration level: 0.64.0 -> 0.64.1<br />
** If the release consist on a set of important features and/or includes non backward compatible file format, then increase the second level numeration: 0.64.1 -> 0.65.0<br />
<br />
Proposed set of git repositories (this section is outdated):<br />
<br />
* admin.git - gitosis admin settings - holds groups, repos and users<br />
* code/* - direct conversions from SVN<br />
** code/ETL.git - ETL<br />
** code/synfig.git - synfig<br />
** code/synfigstudio.git - synfigstudio<br />
* pkg/* - bits for various packaging systems<br />
** pkg/windows.git - Windows packaging (needs separating from the code repos)<br />
** pkg/macos.git - MacOS packaging (needs separating from the code repos)<br />
** pkg/jhbuild.git - JHBuild moduleset (needs writing)<br />
** pkg/autopackage.git - Autopackage bits (needs writing)<br />
* web/* - various bits used to maintain the website<br />
** web/skin.git - skin for the website<br />
** web/content.git - content for the website (pending switch to ikiwiki)<br />
* misc/* - various stuff needed<br />
** misc/svn2git.git - the scripts used to convert the SVN repo to git</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Class_ValueNode&diff=17851Dev:Class ValueNode2013-05-10T17:25:13Z<p>Genete: </p>
<hr />
<div>{{Category|Code}}<br />
Objects of the ValueNode class hold values which can change over time. ValueNodes are of one of the following types:<br />
<br />
UPDATE THIS WITH THE NEW TYPES<br />
<br />
== TYPE_BOOL ==<br />
<br />
Uses C++ type "bool".<br />
<br />
== TYPE_INTEGER ==<br />
<br />
Uses C++ type "int".<br />
<br />
== TYPE_ANGLE ==<br />
<br />
Uses class "Angle".<br />
<br />
== TYPE_TIME ==<br />
<br />
Uses class "Time".<br />
<br />
== TYPE_REAL ==<br />
<br />
Uses class "Real".<br />
<br />
== TYPE_VECTOR ==<br />
<br />
Uses class "Vector".<br />
<br />
== TYPE_COLOR ==<br />
<br />
Uses class "Color".<br />
<br />
== TYPE_SEGMENT ==<br />
<br />
Uses class "Segment".<br />
<br />
== TYPE_BLINEPOINT ==<br />
<br />
Uses class "BLinePoint".<br />
<br />
== TYPE_LIST ==<br />
<br />
Uses class "list_type".<br />
<br />
== TYPE_CANVAS ==<br />
<br />
Uses class "Canvas".<br />
<br />
== TYPE_STRING ==<br />
<br />
Uses class "String".<br />
<br />
== TYPE_GRADIENT ==<br />
<br />
Uses class "Gradient".</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Build_Instructions&diff=17850Dev:Build Instructions2013-05-10T16:58:33Z<p>Genete: Small section about automatic packages scripts</p>
<hr />
<div><!-- Page info --><br />
{{Title|Build Instructions}}<br />
{{Category|Manual}}<br />
<!-- Page info end --><br />
<br />
<!-- This is Ad-Hoc - maybe this page should go to Dev section? --><br />
<br />
== Notes ==<br />
<br />
* If you are using the released versions instead of GIT, none of the libtoolize or autoreconf steps are necessary. For released versions, "./configure && make && sudo make install" should be enough.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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 "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig" or similar before building or installing anything.<br />
<br />
* Don't use automake 1.4, there are problems with it.<br />
<br />
* 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="/usr/bin/ccache /usr/bin/g++". This allows to not rebuild the already build modules so they taken from the cache.<br />
<br />
* 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.<br />
<br />
* If you want to test a particular branch of the repository do the following:<br />
<pre><br />
~/synfig$ git branch -r <br />
</pre><br />
You'll obtain a list of the remote branches that exists in the repo. For example:<br />
<pre><br />
origin/HEAD<br />
origin/genete_bones<br />
origin/genete_canvasview<br />
origin/genete_master<br />
origin/genete_onionskin<br />
origin/genete_scale_reverse<br />
origin/genete_setup_dialog<br />
origin/genete_svg<br />
origin/gerco_opengl<br />
origin/master<br />
origin/uiomae_opengl<br />
origin/zelgadis_cia<br />
origin/zelgadis_master<br />
</pre><br />
<br />
Then to checkout properly a remote branch you have to create a local branch to track a particular remote branch and checkout it. For example:<br />
<pre><br />
~/synfig$ git branch --track test_canvas origin/genete_canvasview<br />
~/synfig$ git checkout test_canvas<br />
</pre><br />
<br />
Your code is ready to be built on that branch.<br />
<br />
* 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.<br />
<br />
* If you don't want to install to a system-wide directory using sudo, run something like these commands before starting:<br />
<br />
<pre><br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
export CXX="/usr/bin/ccache /usr/bin/g++"<br />
</pre><br />
<br />
** export PKG_CONFIG_PATH="$prefix/lib/pkgconfig" allows to find the linking libraries.<br />
** export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH allows synfigstudio find the correct * libraries to render the icons for the toolbox etc.<br />
** export CXX="/usr/bin/ccache /usr/bin/g++" allows to use the cache to avoid rebuilding.<br />
<br />
And when you run ./configure, run it with --prefix="$PREFIX" and don't use sudo when you do make install.<br />
<br />
* See the automatic building script attached.<br />
<br />
== System-specific instructions ==<br />
Please update them including the new GIT repo.<br />
<br />
* Gentoo: {{l|Dev:Gentoo Ebuilds|ebuilds}} are available for both release versions and GIT<br />
* MacOS X: {{l|Dev:Building_On_Mac_OS_X|instructions for building}} with the GTK+ Aqua port are available.<br />
* PCLinuxOS: {{l|Dev:PCLinuxOS build instructions|build instructions}}<br />
* Windows: {{l|Dev:Building on Windows|instructions for building}} in {{l|Dev:Mingw_installation|mingw}} are available.<br />
<br />
==System wide build Instructions==<br />
<br />
=== ETL ===<br />
<br />
ETL is a template library, there is nothing to build really, it just needed to be installed.<br />
<br />
'''Requires''': autoconf automake<br><br />
* Debian: build-essential autoconf automake libtool<br />
* OS X: already included with Mac OS X<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/ETL<br />
$ autoreconf --install --force<br />
$ ./configure<br />
$ sudo make install<br />
</pre><br />
<br />
=== synfig-core ===<br />
<br />
'''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<br><br />
* Debian: etl-dev libxml++2.6-dev libsigc++-2.0-dev libltdl3-dev libtool gettext cvs autopoint<br />
* Fedora: ETL-devel libxml++-devel libsigc++20-devel libtool-ltdl-devel libtool gettext-devel cvs<br />
* Gentoo: dev-cpp/ETL dev-cpp/libxmlpp dev-libs/libsigc++ dev-util/cvs<br />
** If you are using ./configure --prefix="$PREFIX" to configure synfig, do not install dev-cpp/ETL.<br />
*OS X use glibtoolize instead of libtoolize, as Apple renamed it.<br />
<br />
'''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.<br />
<br />
'''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 "AC_CONFIG_SUBDIRS(libltdl)") by putting a "#" 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:<br />
<pre> sed -i 's/^AC_CONFIG_SUBDIRS/# AC_CONFIG_SUBDIRS/' synfig-core/configure.ac </pre><br />
<br />
'''Optional''': libpng, libmng, libjpeg, libfreetype, libfontconfig, libopenexr, libavcodec, libmagick++, vimage (MacOS only, proprietary)<br><br />
* Debian: libpng12-dev libmng-dev libjpeg62-dev libfreetype6-dev libfontconfig1-dev libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libmagick++9-dev<br />
* 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<br />
*Ubuntu (since Jaunty): Same libraries as Debian but do not use libmagick++9-dev, use graphicsmagick-libmagick-dev-compat instead. <br />
<br />
'''Runtime''': encodedv (from libdv), ffmpeg, convert (from imagemagick)<br />
* Debian: libdv-bin ffmpeg imagemagick<br />
* Gentoo: media-libs/libdv media-video/ffmpeg media-gfx/imagemagick<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/synfig-core<br />
$ libtoolize --copy --force<br />
$ autoreconf --install --force<br />
$ ./configure<br />
$ make<br />
$ sudo make install<br />
</pre><br />
<br />
''Note'':<br />
<br />
* Don't use --enable-half, it is slow.<br />
* If ETL was installed in a non-standard directory using --prefix=<location>, it suffices to run the configure script with an updated PKG_CONFIG_PATH environment variable. E.g.:<br>PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/my/install/prefix/lib/pkgconfig ./configure --prefix=/my/install/prefix<br />
<br />
=== synfig-studio ===<br />
<br />
''Requires'': ETL (etl-dev, already installed if you successfully built etl), synfig (libsynfig-dev, already installed if you successfully built synfig-core), gtkmm >= 2.4, gtk >= 2.0, glibmm, libsigc++, libltdl, libtool, gettext, cvs, intltool<br><br />
* 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<br />
* Gentoo: virtual/ETL virtual/synfig dev-cpp/gtkmm-2.4 dev-libs/libsigc++ sys-devel/libtool<br />
** If you are using ./configure --prefix="$PREFIX" to configure synfigstudio, do not install virtual/ETL or virtual/synfig.<br />
''Optional'': fonts (for the images), [http://www.fmod.org FMOD] (version 3.x, proprietary)<br />
* Debian: ttf-freefont ttf-dejavu ttf-dustin<br />
* Gentoo: freefonts dejavu<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/synfig-studio<br />
$ ./bootstrap.sh<br />
$ ./configure<br />
$ make<br />
$ sudo make install<br />
</pre><br />
<br />
<!--<br />
<br />
== synfig-docs ==<br />
<br />
(This step isn't required to run synfig or synfigstudio, and the documents it gets you are really quite out of date)<br />
<br />
This is basically a copy of what is on this wiki.<br />
<br />
Requires: sgml processor, ldp docbook stylesheets, db2ps, db2pdf<br />
* Debian: openjade ldp-docbook-dsssl docbook-utils<br />
<br />
<pre><br />
make multiple-html<br />
make ps<br />
make pdf<br />
</pre><br />
<br />
--><br />
<br />
== finalizing ==<br />
<br />
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:<br />
<br />
<pre><br />
$ sudo ldconfig<br />
</pre><br />
<br />
<br />
== Build script examples ==<br />
<br />
If you want to build a binary for testing or debugging proposes you can run one of the following scripts:<br />
<br />
The binaries are installed at $(pwd)/install/bin. Alter the script according to your preferences.<br />
<br />
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.<br />
<br />
Be sure that '''you have ccache installed''' on your system because you will get errors otherwise.<br />
<br />
=== Linux ===<br />
<pre><br />
#!/bin/sh<br />
CPUS=4<br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
export CXX="/usr/bin/ccache /usr/bin/g++"<br />
# Uncomment this line if you want to use ccache<br />
# export CXX="/usr/bin/ccache g++-snapshot"<br />
<br />
cd ETL &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix &&<br />
make --debug=b install &&<br />
\<br />
cd ../synfig-core &&<br />
libtoolize --copy --force &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install &&<br />
\<br />
cd ../synfig-studio &&<br />
./bootstrap.sh &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install<br />
</pre><br />
<br />
=== Mac OSX ===<br />
<pre><br />
#!/bin/sh<br />
CPUS=4<br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export ACLOCAL_FLAGS="-I $prefix/share/aclocal"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
# Uncomment those line if you want to use g++ instead of the native clang <br />
# compiler and preprocessor<br />
#export CXX="/opt/local/bin/ccache /usr/bin/g++"<br />
#export CPP="/usr/bin/cpp"<br />
export CPPFLAGS="-I/opt/local/include"<br />
export LDFLAGS="-L/opt/local/lib"<br />
<br />
cd ETL &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix &&<br />
make --debug=b install &&<br />
\<br />
cd ../synfig-core &&<br />
libtoolize --copy --force &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install &&<br />
\<br />
cd ../synfig-studio &&<br />
./bootstrap.sh &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install<br />
</pre><br />
<br />
== Scripts provided with the source code ==<br />
<br />
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.<br />
<br />
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.</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Build_Instructions&diff=17849Dev:Build Instructions2013-05-10T16:52:43Z<p>Genete: Add Mac OSX script and reorder the section</p>
<hr />
<div><!-- Page info --><br />
{{Title|Build Instructions}}<br />
{{Category|Manual}}<br />
<!-- Page info end --><br />
<br />
<!-- This is Ad-Hoc - maybe this page should go to Dev section? --><br />
<br />
== Notes ==<br />
<br />
* If you are using the released versions instead of GIT, none of the libtoolize or autoreconf steps are necessary. For released versions, "./configure && make && sudo make install" should be enough.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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 "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig" or similar before building or installing anything.<br />
<br />
* Don't use automake 1.4, there are problems with it.<br />
<br />
* 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="/usr/bin/ccache /usr/bin/g++". This allows to not rebuild the already build modules so they taken from the cache.<br />
<br />
* 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.<br />
<br />
* If you want to test a particular branch of the repository do the following:<br />
<pre><br />
~/synfig$ git branch -r <br />
</pre><br />
You'll obtain a list of the remote branches that exists in the repo. For example:<br />
<pre><br />
origin/HEAD<br />
origin/genete_bones<br />
origin/genete_canvasview<br />
origin/genete_master<br />
origin/genete_onionskin<br />
origin/genete_scale_reverse<br />
origin/genete_setup_dialog<br />
origin/genete_svg<br />
origin/gerco_opengl<br />
origin/master<br />
origin/uiomae_opengl<br />
origin/zelgadis_cia<br />
origin/zelgadis_master<br />
</pre><br />
<br />
Then to checkout properly a remote branch you have to create a local branch to track a particular remote branch and checkout it. For example:<br />
<pre><br />
~/synfig$ git branch --track test_canvas origin/genete_canvasview<br />
~/synfig$ git checkout test_canvas<br />
</pre><br />
<br />
Your code is ready to be built on that branch.<br />
<br />
* 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.<br />
<br />
* If you don't want to install to a system-wide directory using sudo, run something like these commands before starting:<br />
<br />
<pre><br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
export CXX="/usr/bin/ccache /usr/bin/g++"<br />
</pre><br />
<br />
** export PKG_CONFIG_PATH="$prefix/lib/pkgconfig" allows to find the linking libraries.<br />
** export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH allows synfigstudio find the correct * libraries to render the icons for the toolbox etc.<br />
** export CXX="/usr/bin/ccache /usr/bin/g++" allows to use the cache to avoid rebuilding.<br />
<br />
And when you run ./configure, run it with --prefix="$PREFIX" and don't use sudo when you do make install.<br />
<br />
* See the automatic building script attached.<br />
<br />
== System-specific instructions ==<br />
Please update them including the new GIT repo.<br />
<br />
* Gentoo: {{l|Dev:Gentoo Ebuilds|ebuilds}} are available for both release versions and GIT<br />
* MacOS X: {{l|Dev:Building_On_Mac_OS_X|instructions for building}} with the GTK+ Aqua port are available.<br />
* PCLinuxOS: {{l|Dev:PCLinuxOS build instructions|build instructions}}<br />
* Windows: {{l|Dev:Building on Windows|instructions for building}} in {{l|Dev:Mingw_installation|mingw}} are available.<br />
<br />
==System wide build Instructions==<br />
<br />
=== ETL ===<br />
<br />
ETL is a template library, there is nothing to build really, it just needed to be installed.<br />
<br />
'''Requires''': autoconf automake<br><br />
* Debian: build-essential autoconf automake libtool<br />
* OS X: already included with Mac OS X<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/ETL<br />
$ autoreconf --install --force<br />
$ ./configure<br />
$ sudo make install<br />
</pre><br />
<br />
=== synfig-core ===<br />
<br />
'''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<br><br />
* Debian: etl-dev libxml++2.6-dev libsigc++-2.0-dev libltdl3-dev libtool gettext cvs autopoint<br />
* Fedora: ETL-devel libxml++-devel libsigc++20-devel libtool-ltdl-devel libtool gettext-devel cvs<br />
* Gentoo: dev-cpp/ETL dev-cpp/libxmlpp dev-libs/libsigc++ dev-util/cvs<br />
** If you are using ./configure --prefix="$PREFIX" to configure synfig, do not install dev-cpp/ETL.<br />
*OS X use glibtoolize instead of libtoolize, as Apple renamed it.<br />
<br />
'''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.<br />
<br />
'''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 "AC_CONFIG_SUBDIRS(libltdl)") by putting a "#" 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:<br />
<pre> sed -i 's/^AC_CONFIG_SUBDIRS/# AC_CONFIG_SUBDIRS/' synfig-core/configure.ac </pre><br />
<br />
'''Optional''': libpng, libmng, libjpeg, libfreetype, libfontconfig, libopenexr, libavcodec, libmagick++, vimage (MacOS only, proprietary)<br><br />
* Debian: libpng12-dev libmng-dev libjpeg62-dev libfreetype6-dev libfontconfig1-dev libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libmagick++9-dev<br />
* 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<br />
*Ubuntu (since Jaunty): Same libraries as Debian but do not use libmagick++9-dev, use graphicsmagick-libmagick-dev-compat instead. <br />
<br />
'''Runtime''': encodedv (from libdv), ffmpeg, convert (from imagemagick)<br />
* Debian: libdv-bin ffmpeg imagemagick<br />
* Gentoo: media-libs/libdv media-video/ffmpeg media-gfx/imagemagick<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/synfig-core<br />
$ libtoolize --copy --force<br />
$ autoreconf --install --force<br />
$ ./configure<br />
$ make<br />
$ sudo make install<br />
</pre><br />
<br />
''Note'':<br />
<br />
* Don't use --enable-half, it is slow.<br />
* If ETL was installed in a non-standard directory using --prefix=<location>, it suffices to run the configure script with an updated PKG_CONFIG_PATH environment variable. E.g.:<br>PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/my/install/prefix/lib/pkgconfig ./configure --prefix=/my/install/prefix<br />
<br />
=== synfig-studio ===<br />
<br />
''Requires'': ETL (etl-dev, already installed if you successfully built etl), synfig (libsynfig-dev, already installed if you successfully built synfig-core), gtkmm >= 2.4, gtk >= 2.0, glibmm, libsigc++, libltdl, libtool, gettext, cvs, intltool<br><br />
* 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<br />
* Gentoo: virtual/ETL virtual/synfig dev-cpp/gtkmm-2.4 dev-libs/libsigc++ sys-devel/libtool<br />
** If you are using ./configure --prefix="$PREFIX" to configure synfigstudio, do not install virtual/ETL or virtual/synfig.<br />
''Optional'': fonts (for the images), [http://www.fmod.org FMOD] (version 3.x, proprietary)<br />
* Debian: ttf-freefont ttf-dejavu ttf-dustin<br />
* Gentoo: freefonts dejavu<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/synfig-studio<br />
$ ./bootstrap.sh<br />
$ ./configure<br />
$ make<br />
$ sudo make install<br />
</pre><br />
<br />
<!--<br />
<br />
== synfig-docs ==<br />
<br />
(This step isn't required to run synfig or synfigstudio, and the documents it gets you are really quite out of date)<br />
<br />
This is basically a copy of what is on this wiki.<br />
<br />
Requires: sgml processor, ldp docbook stylesheets, db2ps, db2pdf<br />
* Debian: openjade ldp-docbook-dsssl docbook-utils<br />
<br />
<pre><br />
make multiple-html<br />
make ps<br />
make pdf<br />
</pre><br />
<br />
--><br />
<br />
== finalizing ==<br />
<br />
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:<br />
<br />
<pre><br />
$ sudo ldconfig<br />
</pre><br />
<br />
<br />
== Build script examples ==<br />
<br />
If you want to build a binary for testing or debugging proposes you can run one of the following scripts:<br />
<br />
The binaries are installed at $(pwd)/install/bin. Alter the script according to your preferences.<br />
<br />
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.<br />
<br />
Be sure that '''you have ccache installed''' on your system because you will get errors otherwise.<br />
<br />
=== Linux ===<br />
<pre><br />
#!/bin/sh<br />
CPUS=4<br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
export CXX="/usr/bin/ccache /usr/bin/g++"<br />
# Uncomment this line if you want to use ccache<br />
# export CXX="/usr/bin/ccache g++-snapshot"<br />
<br />
cd ETL &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix &&<br />
make --debug=b install &&<br />
\<br />
cd ../synfig-core &&<br />
libtoolize --copy --force &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install &&<br />
\<br />
cd ../synfig-studio &&<br />
./bootstrap.sh &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install<br />
</pre><br />
<br />
=== Mac OSX ===<br />
<pre><br />
#!/bin/sh<br />
CPUS=4<br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export ACLOCAL_FLAGS="-I $prefix/share/aclocal"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
# Uncomment those line if you want to use g++ instead of the native clang <br />
# compiler and preprocessor<br />
#export CXX="/opt/local/bin/ccache /usr/bin/g++"<br />
#export CPP="/usr/bin/cpp"<br />
export CPPFLAGS="-I/opt/local/include"<br />
export LDFLAGS="-L/opt/local/lib"<br />
<br />
cd ETL &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix &&<br />
make --debug=b install &&<br />
\<br />
cd ../synfig-core &&<br />
libtoolize --copy --force &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install &&<br />
\<br />
cd ../synfig-studio &&<br />
./bootstrap.sh &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install<br />
</pre></div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Build_Instructions&diff=17848Dev:Build Instructions2013-05-10T16:09:19Z<p>Genete: /* Automatic build script */ Update bootstrap.sh</p>
<hr />
<div><!-- Page info --><br />
{{Title|Build Instructions}}<br />
{{Category|Manual}}<br />
<!-- Page info end --><br />
<br />
<!-- This is Ad-Hoc - maybe this page should go to Dev section? --><br />
<br />
== Notes ==<br />
<br />
* If you are using the released versions instead of GIT, none of the libtoolize or autoreconf steps are necessary. For released versions, "./configure && make && sudo make install" should be enough.<br />
<br />
* 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.<br />
<br />
* 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.<br />
<br />
* 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 "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig" or similar before building or installing anything.<br />
<br />
* Don't use automake 1.4, there are problems with it.<br />
<br />
* 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="/usr/bin/ccache /usr/bin/g++". This allows to not rebuild the already build modules so they taken from the cache.<br />
<br />
* 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.<br />
<br />
* If you want to test a particular branch of the repository do the following:<br />
<pre><br />
~/synfig$ git branch -r <br />
</pre><br />
You'll obtain a list of the remote branches that exists in the repo. For example:<br />
<pre><br />
origin/HEAD<br />
origin/genete_bones<br />
origin/genete_canvasview<br />
origin/genete_master<br />
origin/genete_onionskin<br />
origin/genete_scale_reverse<br />
origin/genete_setup_dialog<br />
origin/genete_svg<br />
origin/gerco_opengl<br />
origin/master<br />
origin/uiomae_opengl<br />
origin/zelgadis_cia<br />
origin/zelgadis_master<br />
</pre><br />
<br />
Then to checkout properly a remote branch you have to create a local branch to track a particular remote branch and checkout it. For example:<br />
<pre><br />
~/synfig$ git branch --track test_canvas origin/genete_canvasview<br />
~/synfig$ git checkout test_canvas<br />
</pre><br />
<br />
Your code is ready to be built on that branch.<br />
<br />
* 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.<br />
<br />
* If you don't want to install to a system-wide directory using sudo, run something like these commands before starting:<br />
<br />
<pre><br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
export CXX="/usr/bin/ccache /usr/bin/g++"<br />
</pre><br />
<br />
** export PKG_CONFIG_PATH="$prefix/lib/pkgconfig" allows to find the linking libraries.<br />
** export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH allows synfigstudio find the correct * libraries to render the icons for the toolbox etc.<br />
** export CXX="/usr/bin/ccache /usr/bin/g++" allows to use the cache to avoid rebuilding.<br />
<br />
And when you run ./configure, run it with --prefix="$PREFIX" and don't use sudo when you do make install.<br />
<br />
* See the automatic building script attached.<br />
<br />
== System-specific instructions ==<br />
Please update them including the new GIT repo.<br />
<br />
* Gentoo: {{l|Dev:Gentoo Ebuilds|ebuilds}} are available for both release versions and GIT<br />
* MacOS X: {{l|Dev:Building_On_Mac_OS_X|instructions for building}} with the GTK+ Aqua port are available.<br />
* PCLinuxOS: {{l|Dev:PCLinuxOS build instructions|build instructions}}<br />
* Windows: {{l|Dev:Building on Windows|instructions for building}} in {{l|Dev:Mingw_installation|mingw}} are available.<br />
<br />
==System wide build Instructions==<br />
<br />
=== ETL ===<br />
<br />
ETL is a template library, there is nothing to build really, it just needed to be installed.<br />
<br />
'''Requires''': autoconf automake<br><br />
* Debian: build-essential autoconf automake libtool<br />
* OS X: already included with Mac OS X<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/ETL<br />
$ autoreconf --install --force<br />
$ ./configure<br />
$ sudo make install<br />
</pre><br />
<br />
=== synfig-core ===<br />
<br />
'''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<br><br />
* Debian: etl-dev libxml++2.6-dev libsigc++-2.0-dev libltdl3-dev libtool gettext cvs autopoint<br />
* Fedora: ETL-devel libxml++-devel libsigc++20-devel libtool-ltdl-devel libtool gettext-devel cvs<br />
* Gentoo: dev-cpp/ETL dev-cpp/libxmlpp dev-libs/libsigc++ dev-util/cvs<br />
** If you are using ./configure --prefix="$PREFIX" to configure synfig, do not install dev-cpp/ETL.<br />
*OS X use glibtoolize instead of libtoolize, as Apple renamed it.<br />
<br />
'''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.<br />
<br />
'''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 "AC_CONFIG_SUBDIRS(libltdl)") by putting a "#" 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:<br />
<pre> sed -i 's/^AC_CONFIG_SUBDIRS/# AC_CONFIG_SUBDIRS/' synfig-core/configure.ac </pre><br />
<br />
'''Optional''': libpng, libmng, libjpeg, libfreetype, libfontconfig, libopenexr, libavcodec, libmagick++, vimage (MacOS only, proprietary)<br><br />
* Debian: libpng12-dev libmng-dev libjpeg62-dev libfreetype6-dev libfontconfig1-dev libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libmagick++9-dev<br />
* 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<br />
*Ubuntu (since Jaunty): Same libraries as Debian but do not use libmagick++9-dev, use graphicsmagick-libmagick-dev-compat instead. <br />
<br />
'''Runtime''': encodedv (from libdv), ffmpeg, convert (from imagemagick)<br />
* Debian: libdv-bin ffmpeg imagemagick<br />
* Gentoo: media-libs/libdv media-video/ffmpeg media-gfx/imagemagick<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/synfig-core<br />
$ libtoolize --copy --force<br />
$ autoreconf --install --force<br />
$ ./configure<br />
$ make<br />
$ sudo make install<br />
</pre><br />
<br />
''Note'':<br />
<br />
* Don't use --enable-half, it is slow.<br />
* If ETL was installed in a non-standard directory using --prefix=<location>, it suffices to run the configure script with an updated PKG_CONFIG_PATH environment variable. E.g.:<br>PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/my/install/prefix/lib/pkgconfig ./configure --prefix=/my/install/prefix<br />
<br />
=== synfig-studio ===<br />
<br />
''Requires'': ETL (etl-dev, already installed if you successfully built etl), synfig (libsynfig-dev, already installed if you successfully built synfig-core), gtkmm >= 2.4, gtk >= 2.0, glibmm, libsigc++, libltdl, libtool, gettext, cvs, intltool<br><br />
* 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<br />
* Gentoo: virtual/ETL virtual/synfig dev-cpp/gtkmm-2.4 dev-libs/libsigc++ sys-devel/libtool<br />
** If you are using ./configure --prefix="$PREFIX" to configure synfigstudio, do not install virtual/ETL or virtual/synfig.<br />
''Optional'': fonts (for the images), [http://www.fmod.org FMOD] (version 3.x, proprietary)<br />
* Debian: ttf-freefont ttf-dejavu ttf-dustin<br />
* Gentoo: freefonts dejavu<br />
<br />
''Type the following commands at the directory where you cloned the git repo''<br />
<pre><br />
$ cd synfig/synfig-studio<br />
$ ./bootstrap.sh<br />
$ ./configure<br />
$ make<br />
$ sudo make install<br />
</pre><br />
<br />
<!--<br />
<br />
== synfig-docs ==<br />
<br />
(This step isn't required to run synfig or synfigstudio, and the documents it gets you are really quite out of date)<br />
<br />
This is basically a copy of what is on this wiki.<br />
<br />
Requires: sgml processor, ldp docbook stylesheets, db2ps, db2pdf<br />
* Debian: openjade ldp-docbook-dsssl docbook-utils<br />
<br />
<pre><br />
make multiple-html<br />
make ps<br />
make pdf<br />
</pre><br />
<br />
--><br />
<br />
== finalizing ==<br />
<br />
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:<br />
<br />
<pre><br />
$ sudo ldconfig<br />
</pre><br />
<br />
<br />
== Automatic build script ==<br />
<br />
If you want to build a binary for testing or debugging proposes you can run this script:<br />
<br />
<pre><br />
#!/bin/sh<br />
CPUS=4<br />
prefix=$(pwd)/install<br />
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"<br />
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH<br />
export CXX="/usr/bin/ccache /usr/bin/g++"<br />
# export CXX="/usr/bin/ccache g++-snapshot"<br />
# This command comments out the line in configure.ac if it isn't already <br />
# commented. Needed for Ubuntu 8.10 or higher<br />
# Uncomment it if needed.<br />
# sed -i 's/^AC_CONFIG_SUBDIRS/# AC_CONFIG_SUBDIRS/' synfig-core/configure.ac<br />
<br />
cd ETL &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix &&<br />
make --debug=b install &&<br />
\<br />
cd ../synfig-core &&<br />
libtoolize --copy --force &&<br />
autoreconf --install --force &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install &&<br />
\<br />
cd ../synfig-studio &&<br />
./bootstrap.sh &&<br />
./configure --prefix $prefix --enable-optimization=0 --enable-debug &&<br />
make --debug=b -j $CPUS install<br />
</pre><br />
<br />
The binaries are installed at $(pwd)/install/bin. Alter the script according to your preferences.<br />
<br />
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.<br />
<br />
Be sure that '''you have ccache installed''' on your system because you will get errors otherwise.</div>Genetehttps://wiki.synfig.org/index.php?title=File:Canvas_0.63.06.png&diff=17657File:Canvas 0.63.06.png2013-04-05T12:50:09Z<p>Genete: Genete uploaded a new version of &quot;File:Canvas 0.63.06.png&quot;</p>
<hr />
<div></div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17319Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T17:33:13Z<p>Genete: Remove pages to not be updated by terminology sprint. FINISHED!!!!</p>
<hr />
<div>... and now what?</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17318Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T17:31:05Z<p>Genete: Done with the previous</p>
<hr />
<div>* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Multiplane Camera/ru]]</div>Genetehttps://wiki.synfig.org/index.php?title=Curve_Warp_Layer&diff=17317Curve Warp Layer2013-02-18T17:27:54Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Curve Warp Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_distortion_curvewarp_icon.png|64px}}<br />
<br />
== About Curve Warp Layer ==<br />
<br />
Curve Warp Layers maps the context where it is applied from a straight line to a curved bezier shape. Each point on the source context can be defined by two perpendicular coordinates values based on the position and the length of the source straight line. Those coordinates are like the X and Y coordinates of a scaled and rotated 2D coordinate system. <br />
<br />
Then each pair of coordinates is mapped onto the curve considering that the distance from the start point of the curve (the X coordinate) and the perpendicular distance to the straight line (the Y coordinate) are now the length of the spline from the first splinepoint and the perpendicular distance to the curve on that point.<br />
<br />
== Parameters of Curve Warp Layer ==<br />
<br />
The parameters of the Curve Warp Layer are:<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Origin<br />
||0.000000pt,0.000000pt<br />
||vector<br />
<br />
|-<br />
||{{l|Image:Real_icon.png|16px}} Width<br />
||5.500000pt<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Start Point<br />
||-150.0000pt,-30.00000pt<br />
||vector<br />
<br />
|-<br />
||{{l|Image:Vector_icon.png|16px}} End Point<br />
||150.00000pt,-18.00000pt<br />
||vector<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:List_icon.png|16px}} Vertices<br />
||List<br />
||Spline<br />
<br />
|-<br />
||{{l|Image:Bool_icon.png|16px}} Fast<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|}<br />
<br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br />
== Using a Curve Warp ==<br />
<br />
Curve Warp layer is inside the Distortion sub menu of the New Layer menu. There is no tool to create this type of layer.<br />
<br />
Let's show how to use a Curve Warp layer and what's the effect it produces by a direct example. <br />
<br />
I first create one radial gradient at the center of the screen. I modified the default gradient to give me that result.<br />
<br />
[[File:Curve-warp-radial-layer.png]]<br />
<br />
Then we create a Warp Layer over that radial gradient layer. <br />
<br />
[[File:Curve-warp-radial-layer-2.png]]<br />
<br />
When you first create the Warp Layer you obtain a almost straight horizontal line defined by two points (below) and a slightly moved spline curve near it (above). I've disabled the curve warp layer on the screen shot to allow to see clearly the handles of the curve warp layer. The straight line defines the source coordinate system where for the context. The Spline defines the curve that is going to be used to map the context along the curve. Let's edit the curve warp components by placing the straight line along the green area of the gradient and inserting another splinepoint on the curve and tweaking the position of the tangents and vertexes.<br />
<br />
[[File:Curve-warp-radial-layer-3.png]]<br />
<br />
Let's enable the curve warp layer to see the effect.<br />
<br />
[[File:Curve-warp-radial-layer-4.png]]<br />
<br />
As you can now understand, the context is read based on the straight line position and mapped along the spline from the first to the last vertex. Due to the curvature of the spline, there are points from the source that are mapped on the same place, and so some kind of render artifact is produced. It can be view like a feature if some kind of special effect is wanted to be achieved.<br />
<br />
There is one radial handle over the first point of the straight line. It has two missions:<br />
<br />
* First, it defines the perpendicular width of the mapped result. <br />
* Second, it is placed on the start point of the straight line.<br />
<br />
If we decrease the width the effect is that the whole warp is stretched in the perpendicular direction of the line and the curve.<br />
<br />
[[File:Curve-warp-radial-layer-5.png]]<br />
<br />
It defines the global width but it is possible to use the local width of the splinepoints to modify the width along the spline. Enable the visibiity of the width handles and modify them.<br />
<br />
[[File:Curve-warp-radial-layer-6.png]]<br />
<br />
== Fast Option ==<br />
<br />
The above screen shots were taken using the Fast option disabled. When enabled, calculations are made in a rough mode what produces more artifacts but it renders faster.<br />
<br />
[[File:Curve-warp-radial-layer-7.png]]<br />
<br />
<br />
== Other examples ==<br />
<br />
Curve warp layer are ideal for curved texts...<br />
<br />
[[File:Curve-warp-radial-layer-8.png]]<br />
<br />
Tails, tentacles...<br />
<br />
[[File:Tail.gif]]<br />
<br />
Source file: [[File:Tail.sifz]]</div>Genetehttps://wiki.synfig.org/index.php?title=Constant&diff=17316Constant2013-02-18T17:27:51Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|Glossary}}<br />
{{Category|NewTerminology}}<br />
An {{l|Waypoints#Interpolation|interpolation}} type.<br><br />
The value of a constant waypoint stays static until the next waypoint in the timeline.</div>Genetehttps://wiki.synfig.org/index.php?title=Comments&diff=17315Comments2013-02-18T17:27:48Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|NewTerminology}}<br />
'''This page currently requires a login to edit, still working out technical details.'''<br />
<br />
Add your comments about synfig here! This page is open to all users, even those without wiki accounts :D</div>Genetehttps://wiki.synfig.org/index.php?title=Doc:Brushes&diff=17314Doc:Brushes2013-02-18T17:27:46Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Brushes}}<br />
{{Category|Manual}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
== Introduction ==<br />
<br />
The Outlines that you can draw with Synfig are formed by a rounded brush. The brush is defined by a radius that you can modify by its brush editor widget. This tutorial explains how to make brushed outlines that would improve sustantially your artwork.<br />
<br />
== What do I need to use brushes? ==<br />
<br />
=== A brush image ===<br />
Well, for the moment Synfig hasn't any brush image included so you'll need to do them by your self or grab from the free resources (insert link here to those resources). <br />
<br />
Here are some examples of brushes:<br />
<br />
{{l|Image:Soft-wheezy-asymetric-brush.png}}<br />
{{l|Image:Wool-ball-brush.png}}<br />
{{l|Image:Soft-triangle-brush.png}}<br />
{{l|Image:Tictactoe-brush.png}}<br />
{{l|Image:Rhomb-fuzzy-brush.png}}<br />
{{l|Image:Big-soft-brush.png|128px}}<br />
<br />
These pictures are all licensed as public domain. Feel free to use them in your projects.<br />
<br />
Brush images can just be any kind of image file that allows transparency (PNG, TIFF, GIF). The more resolution your image has, the bigger your brush size can be without pixelisation. Huge file sizes would take synfig more time to render,though. Find the balance between both options of quality and speed.<br />
<br />
Anyway, you can use anything that is visible under synfig as a brush. See below.<br />
<br />
=== A recent Release ===<br />
<br />
Brushes are not a primary feature of Synfig. They are obtained from the combination of the following features:<br />
<br />
* {{l|Duplicate Layer}} what implies SVN revision >= 1358<br />
* Link to Spline (what uses the following convert types):<br />
** {{l|Convert#Spline Vertex|Spline Vertex}}, what implies SVN revision >= 774<br />
** {{l|Convert#Spline Tangent|Spline Tangent}}, what implies SVN revision >= 1863<br />
** {{l|Convert#Spline Width|Spline Width}}, what implies SVN revision >= 1872<br />
<br />
Strictly the Link to Spline feature is not needed but it would help on make several conversion types and linking.<br />
<br />
== The Idea ==<br />
<br />
The idea of brushes is to use the Duplicate layer feature with the Link to Spline (automatic or manual) feature given by the conversion types.<br />
<br />
When you link a vertex to a spline (or a tangent or a width) it converts your parameter to the following sub-parameters.<br />
<br />
* spline "Spline" <br />
* bool "Loop" <br />
* real "Amount"<br />
<br />
There are other particular parameters for tangent or width that will be revised in other section.<br />
<br />
spline "Spline" is the spline where the parameter (vertex, tangent or width) is linked to. In the case of the vertex it means that the vertex lies on the spline given by its "Amount" parameter. When Amount is 0.0 the vertex position is the Spline begin. When Amount is 1.0 the vertex position is the Spline end. When Loop is "on" values outside the [0.0, 1.0] range are forced to be in that range by eliminating the integer part of the number. <small><tt>(It needs a better explanation)</tt></small><br />
<br />
On the other hand the Duplicate layer allows duplicate the render of everything that is below it as many times as the Index value node indicates. Also if you link any parameter to that Index one the parameter is modified according to the index before it is multiple rendered by the Duplicate layer. It allows apply some kind of transformation to the layers at the same time you duplicate them. <br />
<br />
Combining those two features (Link to Spline and Duplicate) you can achieve the emulation of brushes in synfig.<br />
<br />
== The procedure ==<br />
It is supposed you already have an outline where you would like to apply the brush. If not available create it now. <br />
<br />
These are the steps you need to follow:<br />
<br />
# If it's not already done, create an outline. That will be the outline followed by the brush.<br />
# Caret '''Menu->File->Import'''. Select your image file for the brush. <br> You can also use an existing layer to do that, even a canvas with an animation inside. It doesn't matter what you use as brush, the procedure is always the same.<br />
# Create a '''Rotate layer''' onto the brush layer.<br />
# Create a '''Zoom layer''' onto the Rotate layer.<br />
# Select Zoom, Rotate and your brush layer and group them. It would produce a Group Layer (let's call it "'''Group A'''"). <br />
# Select '''Group A''' and also select your '''outline''' layer. <br> Click on the Group A Origin handle ''-the green dot-'' (beware that it can be below the Origin of the outline layer -both at (0,0) by default-) and right-click on the outline (avoid any handle). Select the "'''Link to Spline'''" option.<br />
# Repeat the above step but do it with the ''(blue)'' '''angle''' handle of the '''Rotate layer''' instead of the Origin of Group A. It doesn't matter if you make right click on the same place of the outline spline or not. Later it will be fixed.<br />
# Repeat the same but with the '''Amount''' parameter of the '''Zoom layer'''. <br>As the Amount parameter of the zoom layer has not visual interface (hasn't any handle associated) you have to export this parameter (right click export) and then select it from the Library panel. Then you can make the right click and Link to Spline operations.<br />
# Add a '''Duplicate Layer''' over Group A. Group both, so the Duplicate layer affects only the Group A layer. <br>It would produce a Value Node at the Library panel (probably called "Index1" if that's your first Duplicate layer). Select that 'index' value node from the Library Panel. <br />
# Now go to the group layer ("Group A"). Search for the Origin parameter (that now is a converted type) and expand it. Look for the Amount parameter. This parameter should have a value between 0.0 and 1.0 depending on where did you made click to the outline. Make right click over it and select Convert->Scale. Expand it again and select the "Link" parameter (it should be a Real) and make right click and select "Connect". It would connect the Link parameter to the Index value node (already selected from the library panel). The default values for Index parameter is to duplicate from 1.0 to 3.0 so a this moment the duplicated brushes images are all placed at the end of the outline spline because all they have a value bigger or equal than 1.0. <br />
#Repeat the same procedure for the Amount sub-parameter of the Angle parameter of the Rotate layer and the Amount sub-parameter of the Amount parameter of the Zoom layer.<br />
# It is the time of spread the position of the duplicated brushes along the spline. To do that you have to properly scale the Amount sub-parameter of each converted to Link to Spline parameter. Go to the Group Layer and expand the Origin parameter. Expand the Amount sub-parameter (already converted to a Scale) and look to the "Scale" parameter. This parameter has a default value of 1.0. Make right click over it and select Convert->Reciprocal. It would produce two sub-parameter more: Link, Epsilon and Infinite. Leave Epsilon and Infinite as they are and modify the Link one to be 3.0. Voila! the brush is spread along the Spline!<br />
# Now export the Link sub-parameter (that you have just modified) by right click and "Export". Give a meaning name (for example "b-amount")<br />
# Go to the library panel and select the just exported one. <br />
# Without leaving the Origin parameter search for the following sub-parameter: Origin(Spline Origin)->Amount(Scale)->Link(Duplicate)->To. This parameter is the end of the loop of the Duplicate layer. Select it and make right click. As well as the exported b-amount is selected you can select Link from the context menu. It would make the Duplicate layer repeat it as many times says the b-amount value. By going to the Library Panel and changing the "b-amount" parameter to a high value (for example 100) make the brush to fill all the spline. Do you get the idea?<br />
# Repeat the same procedure to the following parameters of the following layers (keep in mind that the "b-amount" value node from the library list panel still selected):<br />
## Rotate Layer->Amount(Spline Angle)->Amount(Scale)->Link(Duplicate)->To. Select it and right click "Link".<br />
## Zoom Layer->Amount(Spline Width)->Amount(Scale)->Link(Duplicate)->To. Select it and right click "Link".<br />
<br />
<br />
You can make the outline layer invisible (by un-checking the visibility check box) to only render the brushed one.<br />
<br />
It only rest to make some modifications to the Outline width and the outline shape to modify the brushed one accordingly.<br />
<br />
Also you would like to not link the rotation to the spline to achieve a constant angled pen. It is up to you to use one or other feature.<br />
<br />
There is a problem with the Zoom option. The zoom is an exponential value and the width is a linear one. It means that Zoom = 0 is current size, negative values means zoom out and positive values means zoom in. To link properly the width to the zoom we need a logarithmic convert type that is not available at the moment. So to solve that you have to make the Zoom parameter of the group layer to be a negative value (between -3 and -5 are good values for normal brush sizes) and then let the Zoom Layer do its work. There is not fixed rule for this interim solution.<br />
<br />
== Further steps ==<br />
<br />
It is possible to make more fancy things with this procedure like make random angled brushes or random spread brushes stamps along the outline. But this is part of an Advanced uses of Brushes tutorial.<br />
<br />
== Examples ==<br />
<br />
{{l|Image:Test1-1.png}}<br />
<br />
A Star layer.<br />
You can see that seems to be a bug there with the feather and zoom in and out combinations.<br />
<br />
<br />
{{l|Image:Test1-2.png}}<br />
<br />
A simple stroke.<br />
<br />
{{l|Image:Test1-3.png}}<br />
<br />
A angled pen.<br />
And this is the brush image: <br />
<br />
{{l|Image:Brush002.png}}<br />
<br />
<br />
{{l|Image:Test1-4.png}}<br />
<br />
The same but not rotated.<br />
<br />
{{l|Image:Test1-5.png}}<br />
<br />
Other brush example. And this is the brush image:<br />
<br />
{{l|Image:Brush001.png|128px}}<br />
<br />
This is the sifz file used to render the examples:<br />
<br />
{{l|Media:Test1.sifz|Sample file link}}<br />
<br />
You need to modify the zoom parameter in the group layer and the b-amount value node to modify the density of the brush to achieve same values than in the examples.</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17313Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T17:09:51Z<p>Genete: Done with the previous assigned Brushes, Comments, Constant, Curve Warp Layer</p>
<hr />
<div>* [[Doc:Brushes]]<genete><br />
* [[Comments]]<genete><br />
* [[Constant]]<genete><br />
* [[Curve Warp Layer]]<genete><br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Multiplane Camera/ru]]</div>Genetehttps://wiki.synfig.org/index.php?title=Waypoint_Dialog&diff=17312Waypoint Dialog2013-02-18T17:05:54Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|NewTerminology}}<br />
[[File:waypoint-editor-dialog.png]]</div>Genetehttps://wiki.synfig.org/index.php?title=Winding_Style_Parameter&diff=17311Winding Style Parameter2013-02-18T17:05:51Z<p>Genete: Updated Terminology</p>
<hr />
<div><!--Categories--><br />
{{Category|Parameters}}<br />
{{Category|NewTerminology}}<br />
The Winding Style parameter is available in these layers:<br />
* {{l|Outline Layer}}<br />
* {{l|Region Layer}}<br />
* {{l|Polygon Layer}}<br />
* {{l|Star Layer}} (where it can be used to produce some {{l|Star_Layer#Winding_Style_Hacks|interesting effects}})<br />
<br />
It determines the way in which Synfig decides whether a point is 'inside' or 'outside' which coloring the layer in.<br />
<br />
The Winding Style parameter has two possible values:<br />
* Non Zero<br />
* Even/Odd<br />
<br />
The easiest way to see the distinction is to draw a region which contains a loop inside itself:<br />
<br />
{{l|Image:Goatse.png}} {{l|Media:Winding_style.sifz|source .sif file}}<br />
<br />
The top two images have their region winding styles set to "Non Zero" and the bottom two have their region winding styles set to "Even/Odd". "Even/Odd" makes the region see-through when it crosses itself.<br />
<br />
The left two images have their outline winding styles set to "Non Zero" and the right two have their outline winding styles set to "Even/Odd". "Even/Odd" makes the outline see-through when it crosses itself.<br />
<br />
http://dooglus.rincevent.net/synfig/regions.html has notes I made while investigating how region filling works, and describes the Winding Style parameter.</div>Genetehttps://wiki.synfig.org/index.php?title=Window_Manager_Hints&diff=17310Window Manager Hints2013-02-18T17:05:48Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|NewTerminology}}<br />
Some window managers don't work well with synfig studio by default.<br />
<br />
Synfig studio creates dialog windows with the 'utility' window manager hint, which is supposed to omit them from the taskbar, but make them automatically pop to the front when the main synfig studio window is selected, but with XFCE4 for example this doesn't happen.<br />
<br />
It is possible to specify which window manager hint to use for canvas views, dialog windows, and the main toolbox by editing the ~/Synfig/settings file (while synfigstudio isn't running), as follows:<br />
<br />
pref.canvas_view_hints=1<br />
pref.dock_dialog_hints=1<br />
pref.toolbox_hints=1<br />
<br />
The possible values are:<br />
<br />
WINDOW_TYPE_HINT_NORMAL 0<br />
WINDOW_TYPE_HINT_DIALOG 1<br />
WINDOW_TYPE_HINT_MENU 2<br />
WINDOW_TYPE_HINT_TOOLBAR 3<br />
WINDOW_TYPE_HINT_SPLASHSCREEN 4<br />
WINDOW_TYPE_HINT_UTILITY 5<br />
WINDOW_TYPE_HINT_DOCK 6<br />
WINDOW_TYPE_HINT_DESKTOP 7</div>Genetehttps://wiki.synfig.org/index.php?title=XOR_Pattern_Layer&diff=17309XOR Pattern Layer2013-02-18T17:05:47Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|XOR Pattern Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_other_xorpattern_icon.png|64px}}<br />
<br />
== About XOR Pattern Layers==<br />
<br />
FIXMM!!!<br />
<br />
<br />
==Parameters of XOR Pattern Layers==<br />
<br />
The parameters of the XOR pattern layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-"<br />
||{{l|Image:Type_real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_real_icon.png|16px}} {{l|Amount Parameter|Amount}}<br />
||1.000000<br />
||real<br />
<br />
|-style="background:#"<br />
||{{l|Image:type_integer_icon.png|16px}} {{l|Blend Method|Blend Method}}<br />
||Composite<br />
||integer<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_vector_icon.png|16px}} Origin<br />
||0.500000u,0.000000u<br />
||vector<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_vector_icon.png|16px}} Size<br />
||0.250000u,0.250000u<br />
||vector<br />
<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17308Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T17:03:19Z<p>Genete: Done with previous assigned Waypoint Dialog, Winding Style Parameter, Window Manager Hints, XOR Pattern Layer</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Multiplane Camera/ru]]<br />
* [[Waypoint Dialog]]<genete><br />
* [[Winding Style Parameter]]<genete><br />
* [[Window Manager Hints]]<genete><br />
* [[XOR Pattern Layer]]<genete></div>Genetehttps://wiki.synfig.org/index.php?title=Tracking_Curves&diff=17307Tracking Curves2013-02-18T17:01:53Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|NewTerminology}}<br />
== Introduction ==<br />
<br />
[http://uk.youtube.com/watch?v=wJ7C-FcxAy0 YouTube] | <br />
{{l|Media:Follow-bline.sifz|follow-bline.sifz}} | [http://dooglus.rincevent.net/synfig/follow-bline.avi follow-bline.avi]<br />
<br />
The above example links show an animation in which a layer follows a moving curve, and rotates to follow the curve as it moves.<br />
<br />
How was that achieved? It's currently quite complicated to set up an arrangement like this in Synfig Studio, so I'll describe here how it works.<br />
<br />
Hopefully in time someone will come up with a better design can be used to make it a lot more intuitive. I'm imagining that the Synfig back-end and .sif file format will remain the same, but some extra functionality will be added to the Synfig Studio GUI to allow the user to quickly and easily say "make this layer follow this spline and rotate with it" or some such. Ideas welcome!<br />
<br />
== Discussion ==<br />
<br />
If you download the .sif file and load it into Synfig Studio, it really isn't easy to see how the effect is achieved. A large part of the problem is that in Studio, when you convert a {{l|ValueNode}} using one of the {{l|Convert|conversion types}}, Studio doesn't indicate which conversion type was used. There is room for improvement here.<br />
<br />
Note that when this animation was created, it was possible to make a layer track a curve with just 2 points, but not to get it to track a general curve.<br />
<br />
Since then, new {{l|Convert|conversion types}} called "{{l|Convert#Spline Vector|Spline Vector}}" and "{{l|Convert#Spline Tangent|Spline Tangent}}" have been added to Synfig, and so tracking a general Spline is now possible. See {{l|Doc:Following a Spline|this tutorial}} for an example.<br />
<br />
== Details ==<br />
<br />
=== Overview ===<br />
<br />
The animation lasts for 32 seconds and has 3 top-level layers. This is a very simple animation other than the two parts with links (below), which control the location of the moving blob and the shape of the white beam of light respectively. These two parts are described separately.<br />
<br />
The three top-level layers are as follows:<br />
<br />
<blockquote><br />
<br />
==== top-level layer 1: moving blob ====<br />
<br />
An group of three layers. Its origin is connected to the exported ValueNode "{{l|Tracking Curves#Moving Point|moving point}}". The three layers are:<br />
* direction of movement - The fuzzy white beam of light. This is a simple spline with a feather of 0.3 units to make it fuzzy. Its vertices are connected to the ValueNode called "{{l|Tracking Curves#Beam of Light|beam of light}}".<br />
* inner circle - The smaller yellow circle. Not animated at all.<br />
* outer circle - The larger red circle. Not animated at all.<br />
<br />
Note the technique here. I could have animated both of the two circles and the beam all separately, but it is much simpler to group them into a single Group layer and animate the position of that instead.<br />
<br />
==== top-level layer 2: line ====<br />
<br />
The moving curve which the object follows. It has {{l|Waypoints|waypoints}} at 0s, 16s, and 32s to make the line move. I exported four of its animated {{l|ValueNode|ValueNodes}} so that I could use them later to define the curved segment that the blob should follow.<br />
<br />
The exported four {{l|ValueNode|ValueNodes}} are:<br />
* vertex1 - The position of the beginning of the curve<br />
* vertex2 - The position of the end of the curve<br />
* tangent1 - The tangent at the beginning of the curve<br />
* tangent2 - The tangent at the end of the curve<br />
<br />
The moving curve is an {{l|Outline Layer}}, created using the {{l|Spline Tool}}. It only has 2 vertices. Note that the {{l|Spline Tool}} creates layers which have lists of {{l|SplinePoints}} to define the shape of the layer, and that {{l|SplinePoints}} contain more than just vertices and tangents. {{l|SplinePoints}} also have parameters like 'split tangents', and 'width', which aren't relevant when creating a Segment, so I only exported the four {{l|ValueNode|ValueNodes}} that I needed to create the Segment.<br />
<br />
==== top-level layer 3: black background ====<br />
<br />
A solid black background. Not animated at all.<br />
<br />
</blockquote><br />
<br />
=== Moving Point ===<br />
<br />
The "moving point" ValueNode represents the point on the moving spline where the circles are currently centered. It is an exported ValueNode of type "{{l|Convert#Segment Vertex|Segment Vertex}}". It has 2 components which determine the vertex that is used as its value:<br />
* segment - this uses the ValueNode called "{{l|Tracking Curves#Spline|spline}}"<br />
* amount - this uses the ValueNode called "{{l|Tracking Curves#Spline Parameter|spline parameter}}"<br />
<br />
=== Beam of Light ===<br />
<br />
The "beam of light" ValueNode is a two-point spline, with vertices as follows:<br />
* Vertex001 - This is the vertex at the center of the circle. It doesn't need to move, since the circles don't move. What moves is the "moving blob" layer, the group layer which contains this line and the two circles. So this vertex has a constant position of (0,0)<br />
* Vertex002 - This is the other end of the fuzzy white beam. It was a width of 5 units to make the beam diverge. Its position is connected to the ValueNode called "{{l|Tracking Curves#Scaled Tangent|scaled tangent}}".<br />
<br />
=== Scaled Tangent ===<br />
<br />
The "scaled tangent" ValueNode is the offset vector from the center of the circles to the wide end of the beam of light.<br />
<br />
This offset needs to be a vector in a direction parallel to the tangent to the moving curve at the current point. This was achieved using the Scale convert type, with 2 sub parameters:<br />
* Link - This is the vector to scale. It is a vector representing the tangent to the moving curve at the current position of the circles, and so I called it "tangent". This is arrived at using the {{l|Convert#Segment Tangent|Segment Tangent}} conversion type, which has two sub-parameters:<br />
** Segment - this re-uses the ValueNode called "{{l|Tracking Curves#Spline|spline}}"<br />
** Amount - this re-uses the ValueNode called "{{l|Tracking Curves#Spline Parameter|spline parameter}}"<br />
* Scalar - This is the amount to scale it by. Spline curves have tangents which point from the start vertex towards the end vertex, along the curve. I want my beam of light to point in the direction of travel, which is sometimes towards the start of the curve and sometimes towards the end. To do this I needed to multiply the "tangent" ValueNode above by a number which would be negative when traveling towards the start of the curve. It just so happens that sin(angle+90) has exactly that property, and also has the benefit of making the beam get longer as the movement speeds up. So I called this ValueNode "(sin(angle+90))" and defined it as a "Sine" convert type, defined as value=Amplitude*sin(Angle):<br />
** Angle - This needs to be "Angle+90", so it's defined as a subtraction (Synfig has a 'subtract' convert type, but no add). value = LHS-RHS:<br />
*** LHS - The left hand side of the subtraction - this is connected to "{{l|Tracking Curves#Linearly Changing Angle|linearly changing angle}}"<br />
*** RHS - The right hand side of the subtraction. It's a constant -90.<br />
** Amplitude - This is a constant 0.4, which simply scales the length of the beam of light down to keep it mostly on the screen.<br />
<br />
=== Spline ===<br />
<br />
The "spline" ValueNode is a segment representing the curve to follow. It connects to the vertex1, vertex2, tangent1, and tangent2 ValueNodes, as exported from the '{{l|Tracking Curves#top-level layer 2: line|line}}' layer above.<br />
<br />
=== Spline Parameter ===<br />
<br />
The "Spline parameter" ValueNode is number ranging from 0 to 1, which indicates how far along the segment to go. 0 means "use vertex1" and 1 means "use vertex2".<br />
<br />
I want the point to travel along the curve [http://en.wikipedia.org/wiki/Sinusoidal sinusoidally], meaning it will travel fastest in the middle and slow to a momentary stop at either end. This makes the movement look smoother than using a linear movement.<br />
<br />
The sin() function returns a number between -1 and 1, and I want a value between 0 and 1, so I halve the sin() value, giving -0.5 to 0.5, then add 0.5 to it, giving 0 to 1.<br />
<br />
Consequently, this 'spline parameter' value is the result of a subtraction, LHS-RHS:<br />
* LHS - The left hand side of the subtraction. I called this ValueNode "((sin(angle))/2). This will range from -0.5 to 0.5, and is the result of the '{{l|Convert#Sine|sine}}' convert type, sin(Angle)*Amplitude:<br />
** Angle - This is connected to "{{l|Tracking Curves#Linearly Changing Angle|linearly changing angle}}"<br />
** Amplitude - This is used to scale the value. Since I want sin(Angle)/2, the value is a constant 0.5.<br />
* RHS - The right hand side of the subtraction. I wanted to add 0.5 to sin(angle)/2, but synfig only offers subtraction, so I subtracted -0.5 instead, which is the same. Thus, RHS is a constant Real ValueNode, with value -0.5<br />
<br />
=== Linearly Changing Angle ===<br />
<br />
The "linearly changing angle" ValueNode is the constantly changing angle that drives the whole animation. Whenever the angle increases by 360 degrees, the output of sin(Angle) does one complete cycle from 0 -> 1 -> 0 -> -1 -> 0. The angle changes linearly, using the Linear convert type, which has 2 parameters:<br />
* Rate - How many degrees per second to increase. In the animation this is set to a constant value of 45 degrees per second. This means that one complete cycle (from the center to the right end, to the left end, and back to the center) will take 360/45 = 8 seconds to complete. This gives us four complete cycles in the 32 second animation.<br />
* Offset - The value at the beginning of the animation (time = 0). Changing this to 90 for example will make the blob start at the right-hand end of the line. while changing it to 180 will make the blob start in the middle, but facing (and traveling) left.<br />
<br />
== Screen Shot ==<br />
<br />
This screen shot shows all the exported ValueNodes in the top right. Note that a few of them aren't necessary, such as the 'yellow', 'red', and 'width' ValueNodes. Well, actually none of them are necessary - it's possible to do the whole animation without exporting anything at all. It would lead to a small amount of duplication, since both the position of the blob and the direction of the light beam are driven by the same angle. But mainly exporting is a way of naming the ValueNodes, which acts as a kind of documentation.<br />
<br />
In the parameter dialog in the bottom left you can see some of the sub-parameters of the '{{l|Tracking Curves#Moving Point|moving point}}' ValueNode.<br />
<br />
{{l|Image:Track-curve-screenshot.png}}</div>Genetehttps://wiki.synfig.org/index.php?title=Translate_Layer&diff=17306Translate Layer2013-02-18T17:01:53Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Translate Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_transform_translate_icon.png|64px}}<br />
<br />
== About Translate Layers==<br />
<br />
FIXMM!!!<br />
<br />
<br />
==Parameters of Translate Layers==<br />
<br />
The parameters of the translate layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} Origin<br />
||0.00000u,0.000000u<br />
||vector<br />
<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=ValueNode&diff=17305ValueNode2013-02-18T17:01:52Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|Glossary}}<br />
{{Category|NewTerminology}}<br />
A ValueNode is a value that can change over time.<br />
<br />
A ValueNode represents a description of a value and how it changes (or doesn't!) over time.<br />
<br />
ValueNodes are the things we see as the value for every parameter of every layer. The waypoints visible in the timetrack dialog are also part of the ValueNode - waypoints are how Animated ValueNodes work out what value to be at each point in time.<br />
<br />
Each ValueNode (and hence each {{l|Parameter}} in Synfig has one of 13 {{l|Dev:Types|Types}}.<br />
<br />
There are three kinds of ValueNodes in Synfig. In the following examples the ValueNode's type is a [http://en.wikipedia.org/wiki/Real_number real number] in each case:<br />
<br />
== Constant ValueNodes ==<br />
<br />
These have a single value for all time, and no waypoints. An example of such a ValueNode would be:<br />
<br />
"3.4, for ever"<br />
<br />
== Animated ValueNodes ==<br />
<br />
These have {{l|Waypoints}} that specify their value at particular points in time. For times which don't have a value specified, the value is calculated by interpolating between the waypoints. An example would be:<br />
<br />
"3.4 at the beginning of the animation,<br />
move smoothly up to 7.6 at time = 10 seconds,<br />
then jump instantly to 2.0<br />
and stay there until the end of time"<br />
<br />
== Converted ValueNodes ==<br />
<br />
These are ValueNodes which have been {{l|Convert|Converted}} into sub-parameters, each of which is itself a ValueNode. Right-clicking on a parameter and selecting a type from the 'convert' sub-menu allows you to convert a ValueNode. Converted ValueNodes don't have waypoints themselves, but their sub-parameters may do. An example would be:<br />
"start at 3.4 and linearly increase by 1.2 per second"</div>Genetehttps://wiki.synfig.org/index.php?title=Warp_Layer&diff=17304Warp Layer2013-02-18T17:01:51Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Warp Layer Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_distortion_warp_icon.png|64px}}<br />
<br />
== About Warp Layers==<br />
<br />
The warp layer is a simple but powerful distortion layer. In a few words it takes a rectangular portion of the resulting render of the layers that are behind it and maps the four corners of the rectangle to four arbitrary points in the plane. It is a 2D -> 2D transformation. <br />
<br />
<br />
==Parameters of Warp Layers==<br />
<br />
The parameters of the warp layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-style="background:#"<br />
||{{l|Image:Type_vector_icon.png|16px}} Source TL<br />
||-2.00000u,2.000000u<br />
||vector<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_vector_icon.png|16px}} Source BR<br />
||2.00000u,-2.000000u<br />
||vector<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_vector_icon.png|16px}}Dest TL<br />
||-1.800000u,2.100000u<br />
||vector<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_vector_icon.png|16px}} Dest TR<br />
||2.20000u,-2.000000u<br />
||vector<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_vector_icon.png|16px}} Dest BR<br />
||-2.20000u,-2.000000u<br />
||vector<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_vector_icon.png|16px}} Dest BL<br />
||0.00000u,0.000000u<br />
||vector<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_bool_icon.png|16px}} Clip<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_real_icon.png|16px}} Horizon<br />
||1.00000<br />
||real<br />
<br />
|}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
* Source TL (vertex): The Top Left corner of the source that is going to be mapped. <br />
* Source BR (vertex): The Bottom Right corner of the source that is going to be mapped. With those two vertices is defined the Source rectangle.<br />
* Destination TL (vertex): The Top Left corner of the destination where the source is going to be mapped.<br />
* Destination TR (vertex): The Top Right corner of the destination where the source is going to be mapped.<br />
* Destination BL (vertex): The Bottom Left corner of the destination where the source is going to be mapped.<br />
* Destination BR (vertex): The Bottom Right corner of the destination where the source is going to be mapped.<br />
* Clip (boolean): When checked it only maps the pixels which lie inside the Source rectangle.<br />
* Horizon (Real): For infinite layers (gradients, chequerboard, etc.) it define where to stop rendering the points of the vanishing point. From 0.0 to 1.0 it renders all the points that are backwards on the perspective (in opossite direction to the vanishing point). From 1.0 to +infinite it renders the points that go in the same direction of the vanishing point. High values of Horizon make Synfig spend a lot of time rendering and the result is slightly visibly better. <br />
<br />
== Some Samples ==<br />
<br />
Here are a few sample images of the result of applying the warp layer over a checkerboard layer. <br />
<br />
Before distortion:<br />
<br />
{{l|Image:warp1.png}}<br />
<br />
The handles of the warp layer. The dotted lines represent the Source rectangle. Notice how it corresponds to a 4 by 4 section of the chequerboard:<br />
<br />
{{l|Image:warp5.png}}<br />
<br />
The resulting distortion (horizon = 15.0 and Clip = off). The destination rectangle can be seen to contain the same 4 by 4 section of the checkerboard that the source rectangle contains:<br />
<br />
{{l|Image:warp3.png}}<br />
<br />
You can see that the rendered horizon is the result of connecting the two vanishing points of the perspective distortion. In this case there are two vanishing points given by the intersection of the lines that connects the following points:<br />
<br />
* Intersection of the line that passes by Destination TL point and Destination TR point with the line that passes by Destination BL point and Destination BR point. It gives vanishing point V1 (not shown in the diagram because it is outside the visible area, far off to the left).<br />
* Intersection of the line that passes by Destination TL point and Destination BL point with the line that passes by Destination TR point and Destination BR point. It gives vanishing point V2<br />
<br />
Connecting the Vanishing points V1 and V2 gives the horizon line.<br />
<br />
See the diagram:<br />
<br />
{{l|Image:warp7.png}}<br />
<br />
To understand how the Horizon parameter works see this animated image. It moves the Horizon parameter from 0.0 to 30 in four seconds. Notice that from horizon = 0.0 to 1.0 it renders from minus infinite to the current observer position (it is made very fast in the animation, and takes about in 4/30 seconds and most of the time the rendered section is outside the visible area of the canvas - you can see it if you place a zoom out layer on top of them). This means that the portion of plane that is behind the observer point of view is rendered deformed and then very enlarged). Notice too that from horizon = 1.0 to 30.0 it renders the rest of the visible plane. As the horizon parameter gets larger, the final visible horizon gets further away. <br />
<br />
{{l|Image:warpsample2.gif}}<br />
<br />
== The Clip parameter ==<br />
<br />
This image shows what you will get when check it on. Only the pixels from inside the Source rectangle are mapped. In this case, the 4 by 4 section of the checkerboard.<br />
<br />
{{l|Image:warp6.png}}<br />
<br />
== Turning warp on/off ==<br />
<br />
Simply set the destination handles to the same position as the source handles.</div>Genetehttps://wiki.synfig.org/index.php?title=Toolbox_File_Palette&diff=17303Toolbox File Palette2013-02-18T17:01:43Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|NewTerminology}}<br />
The Toolbox File Palette has the following buttons:<br />
<br />
*'''New...''': Create a new file. Its default name is ''Synfig Animation #'' where # starts from 1 and increases by 1 for each new file you create in a Synfigstudio session. It starts editing the "Root" canvas.<br />
*'''Open...''' : Pops up a choose file dialog to select the sifz file you want to open.<br />
*'''Save''': Saves the selected file. If it has not been saved previously it works like the Save As button.<br />
*'''Save As...''': Pops up a save file dialog to save the current file with a given name.<br />
*'''Save All''': Save all open files.<br />
*'''Undo''': It makes the same than the corresponding menu entry from the {{l|Canvas Edit Menu}}. <br />
*'''Redo''': It makes the same than the corresponding menu entry from the {{l|Canvas Edit Menu}}.<br />
*'''Setup...''': It pops up a {{l|Setup Dialog}} Window where the user can set the preferences for the program like measure units, preferred external browser etc.<br />
*'''About''': It pops up the {{l|About Dialog}}.<br />
*'''Help''' : It opens the {{l|Documentation}} page in the default browser.</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17302Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T16:47:35Z<p>Genete: Done with the previous assigned Toolbox File Palette, Tracking Curves, Translate Layer, ValueNode, Warp Layer</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Multiplane Camera/ru]]<br />
* [[Toolbox File Palette]]<genete><br />
* [[Tracking Curves]]<genete><br />
* [[Translate Layer]]<genete><br />
* [[ValueNode]]<genete><br />
* [[Warp Layer]]<genete><br />
* [[Waypoint Dialog]]<br />
* [[Winding Style Parameter]]<br />
* [[Window Manager Hints]]<br />
* [[XOR Pattern Layer]]</div>Genetehttps://wiki.synfig.org/index.php?title=Time_Loop_Layer&diff=17301Time Loop Layer2013-02-18T16:45:49Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Time Loop Layer}}<br />
{{Category|Layers}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_other_timeloop_icon.png|64px}}<br />
<br />
== About Time Loop Layers==<br />
<br />
The Time Loop layer can be used to repeat an animation over and over. It loops a section of the layers below and within the same canvas over and over.<br />
<br />
See also the {{l|Convert#Time_Loop|Time Loop ValueNode}} conversion, which can be used to loop the value of a single parameter, rather than an entire layer or group of layers.<br />
<br />
[Note: ''the Time Loop layer used to have parameters 'start time' and 'end time'. Documentation for that old version of the layer {{l|Time Loop Layer (v0.1)|is available}}''.<br />
<br />
<br />
==Parameters of Time Loop Layers==<br />
<br />
The parameters of the time loop layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_time_icon.png|16px}} Link Time<br />
||0f<br />
||time<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_time_icon.png|16px}} Local Time<br />
||0f<br />
||time<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_time_icon.png|16px}} Duration<br />
||1s<br />
||time<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_bool_icon.png|16px}} Only For Positive Duration<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_bool_icon.png|16px}} Symmetrical<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
* '''Link Time''' (time) - start time of cycled material/child layers.<br />
* '''Local Time''' (time) - start time of loop.<br />
* '''Duration''' (time) - number of seconds or frames that are looped in the child layer.<br />
* '''Only For Positive Duration''' (bool) - If checked and ''Duration'' is zero or negative, then the time loop layer is effectively disabled, and acts as if it wasn't there.<br />
-If not checked and the Duration is zero, the Time Loop layer freezes the animation of the children layers at the value of "Link Time".<br />
* '''Symmetrical''' (bool) - If not checked, and the current time is less than 'local time', then 'duration' is taken off the resulting time. This is to provide compatibility with {{l|Time Loop Layer (v0.1)|version 0.1}} of the time loop layer.<br />
<br />
These parameters, like any other in Synfig can be animated, so that they change over time. This can be confusing, so make sure you aren't in Animate Edit Mode when working with the Time Loop layer, unless you know what you're doing!<br />
<br />
The Time Loop layer repeatedly loops through the 'Duration' seconds of its child layers, from 'Link Time' to 'Link Time' + 'Duration'. 'Local Time' is used to line up the offset of the time looping. When the Time Loop layer is asked to set its time to 'Local Time', it sets the time in its child layers to be 'Link Time', ie. the start of the loop.<br />
<br />
==== Breaking loop ====<br />
To break a loop and continue animating you basically need to do two things; break the loop with a waypoint and copy the animation keyframe to your position in the timeline.<br />
* Find out which frame in the child layers that corresponds to the frame in the time loop layer where you want to break the loop.<br />
Goto this frame in the child layer and add a keyframe here. Then goto the frame where you want to break the loop and duplicate the keyframe.<br />
* Set the first time loop ''Duration'' waypoint to ''Constant'' and check ''Only For Positive Duration''. Then at the breaking frame set ''Duration'' to 0.<br />
* Continue animating the child layer(s) which are not looped anymore.<br />
<br />
== Visualized Example ==<br />
<br />
For example, suppose:<br />
* Link Time is 5s<br />
* Duration is 3s<br />
* Local Time' is 4s<br />
<br />
And suppose that the Time Loop layer is applied over an existing animation. The 'Link Time' and 'Duration' specify that the section from 5s to 8s in the children layers will be looped. The 'Local Time' specifies that this loop will be at the beginning at 4s. (And so also therefore at 1s, 7s, 10s, etc).<br />
<br />
This is how the mapping actually works:<br />
<br />
{| border="1" cellspacing="0"<br />
|'''real time'''||'''child time<br/>(symmetrical = true)'''||'''child time<br/>(symmetrical = false)'''<br />
|-<br />
| 0 || 7 || 4<br />
|-<br />
| 1 || 5 || 2<br />
|-<br />
| 2 || 6 || 3<br />
|-<br />
| 3 || 7 || 4<br />
|-<br />
| 4 || 5 || 5 (local time = 4; link time = 5)<br />
|-<br />
| 5 || 6 || 6<br />
|-<br />
| 6 || 7 || 7<br />
|-<br />
| 7 || 5 || 5 (duration = 3, so loop repeats after 3 seconds)<br />
|-<br />
| 8 || 6 || 6<br />
|-<br />
| 9 || 7 || 7<br />
|-<br />
| 10 || 5 || 5<br />
|}<br />
<br />
Specifying a huge number for the Duration parameter effectively turns the Time Loop layer into a Time Shift layer. The Link Time and Local Time parameters controls which time in the children lines up with which time in the Time Loop layer, giving the amount of the timeshift, with both positive and negative differences working as expected.<br />
<br />
== Contrived Example ==<br />
<br />
Download and examine this example file: {{l|Media:Time-loop-demo-0.2.sifz|Time-loop-demo-0.2.sifz}}<br />
<br />
It's a 10 second animation, and shows 2 circles. The top one moves linearly from the left to the right. Its position is marked by static text digits 0 through 10.<br />
<br />
The other circle is an identical copy of the first one, with the same waypoints, but it's inside an Group layer. The parameters are:<br />
* Link Time: 5s<br />
* Duration: 1.5s<br />
* Local Time: 2s<br />
* Symmetrical: true<br />
<br />
So as time=2s, the top circle is at position 2 (local time) and the bottom circle is at position 5 (link time):<br />
<br />
{{l|Image:Time-loop-demo-0.2-2s-0f.png}}<br />
<br />
The loop is 1.5s long, so the bottom circle is also at position 5 every 1.5 seconds before and after this point in time, for example at t=3.5s and at t=8s:<br />
<br />
{{l|Image:Time-loop-demo-0.2-3s-12f.png}}<br />
{{l|Image:Time-loop-demo-0.2-8s-0f.png}}<br />
<br />
The following two images show the positions at t=0s and t=3s. The loop starts at t=2s, so it's also at the start at t=0.5s. So at t=0s it's half a second before finishing the previous loop. And at t=3s the same is true, but 2 loops later on:<br />
<br />
{{l|Image:Time-loop-demo-0.2-0s-0f.png}}<br />
{{l|Image:Time-loop-demo-0.2-3s-0f.png}}<br />
<br />
There's a rendered copy of this example on [http://www.youtube.com/watch?v=WyYLd7319Gw YouTube], and it's also available for download: {{l|Media:Time-loop-demo-0.2.avi|Time-loop-demo-0.2.avi}}.</div>Genetehttps://wiki.synfig.org/index.php?title=Text_Layer&diff=17300Text Layer2013-02-18T16:45:44Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Text Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_other_text_icon.png|64px}}<br />
<br />
== About Text Layers==<br />
<br />
FIXME!!!<br />
<br />
<br />
==Parameters of Text Layers==<br />
<br />
The parameters of the text layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|--style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_real_icon.png|16px}} {{l|Amount Parameter|Amount}}<br />
||1.000000<br />
||real<br />
<br />
|-style="background:#"<br />
||{{l|Image:type_integer_icon.png|16px}} {{l|Blend Method|Blend Method}}<br />
||Composite<br />
||integer<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:type_string_icon.png|16px}} Text<br />
||Text Layer<br />
||string<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_gradient_icon.png|16px}} {{l|Color Dialog|Color}}<br />
||<br />
{| style="width:95%; height:16px; background:black; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_integer_icon.png|16px}} Font Family<br />
||Sans Serif<br />
||string<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_integer_icon.png|16px}} Style<br />
||Nomral<br />
||integer<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_integer_icon.png|16px}} Weight<br />
||Normal<br />
||integer<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} Horizontal Spacing<br />
||1.000000<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_real_icon.png|16px}} Vertical Spacing<br />
||1.000000<br />
||real<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_vector_icon.png|16px}} Size<br />
||0.500000u,0.500000u<br />
||vector<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_vector_icon.png|16px}} Orientation<br />
||0.500000u,0.500000u<br />
||vector<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_vector_icon.png|16px}} Origin<br />
||0.00000u,0.000000u<br />
||vector<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_bool_icon.png|16px}} Kerning<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_bool_icon.png|16px}} Sharpen Edges<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_bool_icon.png|16px}} Invert<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Switching_Scenes&diff=17299Switching Scenes2013-02-18T16:45:42Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Switching Scenes}}<br />
{{Category|Tutorials}}<br />
{{Category|Tutorials Advanced}}<br />
<!-- Page info end --><br />
<br />
Suppose you've made a few different scenes in separate .sif files and want to edit them together.<br />
<br />
Of course, you could render each .sif file to a separate video file and use some kind of [http://en.wikipedia.org/wiki/Non-linear_editing_system video editing] software to edit it together. But what if we want to use Synfig itself to do the editing?<br />
<br />
In this example I'm going to take 3 sifz files made by {{l|User:Zelig|Zelig}} and mix them together:<br />
* {{l|Media:Sy-n-fig-s1-hi.sifz|Sy-n-fig-s1-hi.sifz}} - a 3 second introduction scene (scene 1)<br />
* {{l|Media:Sy-n-fig-s2-ball.sifz|Sy-n-fig-s2-ball.sifz}} - 28 seconds of animation (scene 2)<br />
* {{l|Media:Sy-n-fig-s3-boid.sifz|Sy-n-fig-s3-boid.sifz}} - 6 seconds of a different scene that needs cutting into the middle of scene 2<br />
<br />
Make a new document in Synfig and set its time to 47 seconds (3 seconds for scene 1 + 28 seconds for scene 2 + 6 seconds for scene 3 + 5 seconds each for opening and closing titles).<br />
<br />
Using Caret>File>Import, import each of the three scenes one at a time.<br />
<br />
Select each of the three scenes in turn in the layer dialog, and export its canvas in the parameters dialog by right-clicking the {{l|Canvas}} Parameter and selecting {{l|Export}} from the context menu. Call the exported canvases "scene1", "scene2", and "scene3". Now we can delete the three group layers from our document. We don't need them yet. ''Note: The Export context menu is not available for imported files in recent versions due to a previous bug already fixed. The external files can be referenced using the {{l|Group Layer#Canvas Parameter|canvas parameter}} nomenclature so it doesn't need to be exported at all.''<br />
<br />
We don't have any opening or closing titles, so we're going to have to make those ourselves. Make a new text layer: Caret > Layer > New Layer > Text and edit the Text Parameter to say something appropriate for the opening titles.<br />
<br />
Group the Text layer, and export the group layer's canvas parameter. Call it 'titles'.<br />
<br />
Turn on {{l|Animate Editing Mode}}, and make a keyframe at frame 0, and set the default interpolation type to "Constant". This can be found in the main 'toolbox' window, right at the bottom. It defaults to TCB, but we want our edits to happen exactly when we specify them rather than taking the risk that TCB waypoints will somehow try to 'smooth' them.<br />
<br />
Looking at the dialog now, we notice that we forgot to put a background behind the title text. Go to the {{l|Canvas Browser Panel}} Dialog, open up the tree and double-click 'titles' to open the titles sub-canvas in a new window. There we can modify it. Add a new Solid Color Layer, make it white, and put it below the Text layer. Then close the sub-canvas window.<br />
<br />
We want the first scene to start displaying at 5s. Move the time slider to 5s, make sure the main workarea is selected, select its only layer, [titles], and edit its Canvas parameter to be the 1st scene. The menu displays the titles of the scenes. Scene 1's title is "Sy'n'Fig say hi".<br />
<br />
If we play the animation now, we'll see the title frame for 5 seconds, and then it will jump to the 1st scene. But the first scene has already ended - they've already done their wave. We need to delay the first scene by 5 seconds, so it only starts to play when it's displayed. With the time slider at 5s, edit our only layer's "Time Offset' parameter to be -5s. Now when we preview the animation, we see the static title frame for 5 seconds, and then the scene 1 plays until 8s.<br />
<br />
Move the time slider to 8s and edit the Canvas Parameter to select the 2nd scene. Again we'll need to delay the start of this scene, so set the "Time Offset" to -8s.<br />
<br />
Now we want to cut scene 3 into the middle of scene 2. Playing with the time slider in the main workarea, we see that we want scene 3 to be cut in at around the 23s mark (15 seconds into scene 2, which started at 8s). Adjust the time slider to 23s and switch the canvas to scene 3. Adjust the Time Offset parameter to -23, so that scene 3 starts when we switch to it.<br />
<br />
Scene 3 lasts for 6 seconds, so fast-forward to 29s and switch back to scene 2. We'll need to edit the Time Offset parameter there to make up for the 6 seconds that scene 3 played for. Previously, scene 2 was delayed by 8 seconds, so now it will be delayed a further 6 seconds, making a total of 14s. Change the Time Offset parameter to -14.<br />
<br />
Scene 3 will end at 5+3+28+6 = 42s, so move the time pointer there, and switch back to the titles canvas. Change the Time Offset to 0.<br />
<br />
Open the {{l|Canvas Browser Panel}}, double-click the titles canvas, move the time slider to 42s and edit the titles text to show the closing credits. Note that the titles are in a separate canvas from everything else, and so have their own set of keyframes. Currently they have no keyframes, so if we edit the title text, it will change for all time. To prevent this, make a keyframe at frame 0. Note also that {{l|Animate Editing Mode}} is a per-canvas setting. It's on in the main workarea, but off in the sub-canvases, so you'll need to enable it here before editing the titles.<br />
<br />
Close the titles sub-canvas and we're done.<br />
<br />
I ended up with this file: {{l|Media:Sy-n-fig-mixed.sifz}}<br />
<br />
Note that using the 'Canvas' parameter to switch scenes will always cause an instant switch. If you want to fade from scene to scene, you can use 2 different layers, fading one out while the other fades in. Animate the Group Layer's "Amount" parameter from 1 down to 0 to fade the scene out.<br />
<br />
Note also that we end up with a single huge file which includes copies of the three imported canvases. If we wanted to end up with a small file which referenced the imported files rather than copying them, then we could group the imported layers and export the canvases from the new group layers. I think that would leave the imported layers as file references. Please try it and update this tutorial with your findings... Also, if we went that route, we could give each scene its own Time Offset value, and not have to keep messing with the Time Offset in the master canvas.</div>Genetehttps://wiki.synfig.org/index.php?title=Super_Sample_Layer&diff=17298Super Sample Layer2013-02-18T16:45:40Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Super Sample Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_other_supersample_icon.png|64px}}<br />
<br />
== About Super Sample Layers==<br />
<br />
The Super Sample layer is used to anti-alias all the layers under it.<br />
<br />
It isn't often needed, since most layers produce smooth output already.<br />
<br />
<br />
==Parameters of Supersample Layer==<br />
<br />
The parameters of the supersample layer are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-style="background:#"<br />
||{{l|Image:Type_integer_icon.png|16px}} Width<br />
||2<br />
||integer<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_integer_icon.png|16px}} Height<br />
||2<br />
||integer<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_bool_icon.png|16px}} Use Parametric<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_bool_icon.png|16px}} Be Alpha Safe<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
You specify width and a height parameters. Internally, the scene is rendered <width> times wider and <height> times taller than the output image, and then each <width> by <height> block is averaged down to a single pixel.<br />
<br />
For example, the output image is 320x240 pixels, the width and height parameters of the Super Sample layer are both set to the default value of 2. Synfig will render a 640x480 image internally, and then average the 4 pixels in each 2x2 block down into a single pixel that it then uses in the output image.<br />
<br />
This shows a zoomed image of an outline with anti-alias turned off, and without a supersample layer:<br />
<br />
{{l|Image:Supersample-none.png}}<br />
<br />
The 'Use Parametric' checkbox makes it use the {{l|parametric renderer}} rather than the default {{l|accelerated renderer}}.<br />
<br />
The 'Be Alpha Safe' checkbox makes the averaging process aware of the alpha channel. When 'Alpha Safe', the average is sum(color * alpha)/sum(alpha), with an alpha value of sum(alpha)/sum(1). When not 'Alpha Safe', the average is simply sum(color)/sum(1).<br />
<br />
For instance, consider averaging two pixels, one a completely transparent blue (R:0 G:0 B:1 A:0) and the other an opaque red (R:1 G:0 B:0 A:1). When being alpha safe, the average is (R:1 G:0 B:0 A:0.5). When not being alpha safe, the average is (R:0.5 G:0 B:0.5 A:0.5).<br />
<br />
This is the same outline as before, but with a Super Sample layer over the top of it. This one is with 'Be Alpha Safe' enabled:<br />
<br />
{{l|Image:Supersample-safe.png}}<br />
<br />
And this one is without 'Be Alpha Safe'. The background is a strong blue, but with a very low Alpha. The edges are much bluer than they would be if alpha was taken into account:<br />
<br />
{{l|Image:Supersample-unsafe.png}}<br />
<br />
It's worth pointing out that the Super Sample layer is disabled when the 'quality' setting is 10 or higher. During editing, the quality is 10.<br />
<br />
If you want to see an example of what Super Sample does, create an outline and turn off it's anti-aliasing parameter. It will look jagged around the edges. Add a Super Sample layer over the top of it, save the file and render it to an image. Rendering with 'synfig -Q 10 file.sif' will leave it jagged, and 'synfig -Q 9 file.sif' will make it smoother.<br />
<br />
== Examples ==<br />
<br />
{| <br />
| width=1 height=1<br />
| {{l|Image:Perp-curve-gradient-3-ss1x1.png}}<br />
| this is the same as not using Super Sample at all<br />
|-<br />
| width=2 height=2<br />
| {{l|Image:Perp-curve-gradient-3-ss2x2.png}}<br />
| notice how there's only one intermediate color used to antialias in the very bottom right corner<br />
|-<br />
| width=3 height=3<br />
| {{l|Image:Perp-curve-gradient-3-ss3x3.png}}<br />
| now two intermediate colors are used, and the result is smoother<br />
|-<br />
| width=4 height=4<br />
| {{l|Image:Perp-curve-gradient-3-ss4x4.png}}<br />
| this looks good, but a 4x4 Super Sample layer increases the render time by a factor of 16<br />
|-<br />
| width=1 height=4<br />
| {{l|Image:Perp-curve-gradient-3-ss1x4.png}}<br />
| vertical lines are jagged, horizontal lines are smooth<br />
|-<br />
| width=4 height=1<br />
| {{l|Image:Perp-curve-gradient-3-ss4x1.png}}<br />
| vertical lines are smooth, horizontal lines are jagged<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Stroboscope_Layer&diff=17297Stroboscope Layer2013-02-18T16:45:37Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Stroboscope Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_other_stroboscope_icon.png|64px}}<br />
<br />
Icon is outdated!<br />
<br />
== About Stroboscope Layers==<br />
<br />
The stroboscope layer shows the layers under it at regular intervals and then freezes them for the remainder of the interval interval. It is similar to decreasing the frame rate of an animation while preserving its length. It has a single parameter called "Frequency" (in times per second), which determines how often samples are taken. A frequency of exactly the frames per second of your project will not affect your animation, while smaller frequencies will appear as if you had lowered the frame rate to that amount.<br />
<br />
<br />
==Parameters of Stroboscope Layers==<br />
<br />
The parameters of the stroboscope layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} Z Depth<br />
||0.000000u<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_real_icon.png|16px}} Frequency<br />
||2.000000u<br />
||real<br />
<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17296Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T16:38:12Z<p>Genete: Done the previous ones and assigned Stroboscope Layer, Super Sample Layer, Switching Scenes, Text Layer, Time Loop Layer</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Multiplane Camera/ru]]<br />
<genete><br />
* [[Stroboscope Layer]]<genete><br />
* [[Super Sample Layer]]<genete><br />
* [[Switching Scenes]]<genete><br />
* [[Text Layer]] <genete><br />
* [[Time Loop Layer]]<genete><br />
* [[Toolbox File Palette]]<br />
* [[Tracking Curves]]<br />
* [[Translate Layer]]<br />
* [[ValueNode]]<br />
* [[Warp Layer]]<br />
* [[Waypoint Dialog]]<br />
* [[Winding Style Parameter]]<br />
* [[Window Manager Hints]]<br />
* [[XOR Pattern Layer]]</div>Genetehttps://wiki.synfig.org/index.php?title=Simple_Circle_Layer&diff=17295Simple Circle Layer2013-02-18T16:36:28Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Simple Circle Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_geometry_simple_circle_icon.png|64px}}<br />
<br />
Icon is outdated!<br />
<br />
== About Simple Circle Layers==<br />
<br />
FIXMM!!!<br />
<br />
<br />
==Parameters of Simple Circle Layers==<br />
<br />
The parameters of the simple circle layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_real_icon.png|16px}} {{l|Amount Parameter|Amount}}<br />
||1.000000<br />
||real<br />
<br />
|-style="background:#"<br />
||{{l|Image:type_integer_icon.png|16px}} {{l|Blend Method|Blend Method}}<br />
||Composite<br />
||integer<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_color_icon.png|16px}} {{l|Colors Dialog|Color}}<br />
||<br />
{| style="width:95%; height:16px; background:black; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} Radius<br />
||0.500000u<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_real_icon.png|16px}} Feather<br />
||0.000000u<br />
||real<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_real_icon.png|16px}} Origin<br />
||0.000000u,0.00000u<br />
||real<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_bool_icon.png|16px}} Invert<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
<br />
|-style="background:#"<br />
||{{l|Image:Type_integer_icon.png|16px}} Falloff<br />
||Cosine<br />
||integer<br />
<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Side_Tabs&diff=17294Side Tabs2013-02-18T16:36:25Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|NewTerminology}}<br />
Images are outdated!<br />
{{l|Image:Side_Tabs_In_Vertical_Dock.png}} {{l|Image:Side_Tabs_In_Horizontal_Dock.png}}</div>Genetehttps://wiki.synfig.org/index.php?title=Rotate_Layer&diff=17293Rotate Layer2013-02-18T16:36:23Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Rotate Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_transform_rotate_icon.png|64px}}<br />
<br />
== About Rotate Layers==<br />
<br />
FIXME!!!<br />
<br />
<br />
==Parameters of Rotate Layers==<br />
<br />
The parameters of the rotate layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-style="background:#"<br />
||{{l|Image:Type_vector_icon.png|16px}} Origin<br />
||0.000000u,0.000000u<br />
||vector<br />
<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Type_angle_icon.png|16px}} Amount<br />
||0.00<br />
||angle<br />
<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Reference&diff=17292Reference2013-02-18T16:34:13Z<p>Genete: Moved to be a redirect</p>
<hr />
<div>#REDIRECT [[Category:Reference]]</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17291Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T16:30:30Z<p>Genete: Inside Out Layer done assigned Multiplane Camera/ru, Reference, Rotate Layer, Side Tabs, Simple Circle Layer</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Multiplane Camera/ru]]<genete><br />
* [[Reference]]<genete><br />
* [[Rotate Layer]]<genete><br />
* [[Side Tabs]]<genete><br />
* [[Simple Circle Layer]]<genete><br />
* [[Stroboscope Layer]]<br />
* [[Super Sample Layer]]<br />
* [[Switching Scenes]]<br />
* [[Text Layer]] <br />
* [[Time Loop Layer]]<br />
* [[Toolbox File Palette]]<br />
* [[Tracking Curves]]<br />
* [[Translate Layer]]<br />
* [[ValueNode]]<br />
* [[Warp Layer]]<br />
* [[Waypoint Dialog]]<br />
* [[Winding Style Parameter]]<br />
* [[Window Manager Hints]]<br />
* [[XOR Pattern Layer]]</div>Genetehttps://wiki.synfig.org/index.php?title=Inside_Out_Layer&diff=17290Inside Out Layer2013-02-18T16:29:04Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Inside Out Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
[[File:Layer distortion insideout icon.png|65px]]<br />
<br />
== About Inside Out Layer ==<br />
<br />
FIXME!!!<br />
<br />
A short description of the layer can be found here: {{l|Layer#Inside Out}}<br />
<br />
<br />
<br />
== Parameters of the Import Image Layers ==<br />
<br />
Parameters of the Import image layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-<br />
|-style="background:#"<br />
||{{l|Image:Vector_icon.png|16px}}Origin<br />
||0.000000pt,0.000000pt<br />
||vector<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17289Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T16:28:32Z<p>Genete: Done with the previous assigned Inside Out Layer</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Inside Out Layer]]<genete><br />
* [[Multiplane Camera/ru]]<br />
* [[Reference]]<br />
* [[Rotate Layer]]<br />
* [[Side Tabs]]<br />
* [[Simple Circle Layer]]<br />
* [[Stroboscope Layer]]<br />
* [[Super Sample Layer]]<br />
* [[Switching Scenes]]<br />
* [[Text Layer]] <br />
* [[Time Loop Layer]]<br />
* [[Toolbox File Palette]]<br />
* [[Tracking Curves]]<br />
* [[Translate Layer]]<br />
* [[ValueNode]]<br />
* [[Warp Layer]]<br />
* [[Waypoint Dialog]]<br />
* [[Winding Style Parameter]]<br />
* [[Window Manager Hints]]<br />
* [[XOR Pattern Layer]]</div>Genetehttps://wiki.synfig.org/index.php?title=Import_Image_Layer&diff=17288Import Image Layer2013-02-18T16:27:30Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Import Image Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
== About Import Image Layer ==<br />
{{l|Image:Layer_other_importimage_icon.png|64px}}<br />
<br />
FIXME!!!<br />
<br />
A short description of the layer can be found here: {{l|Layer#Import Image}}<br />
<br />
<br />
<br />
== Parameters of the Import Image Layers ==<br />
<br />
Parameters of the Import image layers are:<br />
<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:#silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-<br />
||{{l|Image:Real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Real_icon.png|16px}} {{l|Amount Parameter|Amount}}<br />
||1.000000<br />
||real<br />
|-<br />
||{{l|Image:Integer_icon.png|16px}} {{l|Blend Method|Blend Method}}<br />
||Composite<br />
||integer<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}}Top-Left<br />
||-0.500000pt,0.500000pt<br />
||vector<br />
|-style=""<br />
||{{l|Image:Vector_icon.png|16px}}Bottom-Right<br />
||0.500000pt,-0.500000pt<br />
||vector<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Integer_icon.png|16px}} {{l|Blur Layer|Interpolation}}<br />
||Linear(Static)<br />
||integer<br />
|-<br />
|-style=""<br />
||{{l|Image:Real_icon.png|16px}}Gamma Adjustment<br />
||1.000000<br />
||real<br />
|-style="background:#eeeeee"<br />
||{{l|Image:String_icon.png|16px}} Filename<br />
||<br />
||string<br />
|-style="background:"<br />
||{{l|Image:Time_icon.png|16px}}Time Offset<br />
||0f<br />
||time<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Image_Dimensions&diff=17287Image Dimensions2013-02-18T16:27:27Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|NewTerminology}}<br />
<div style="background-color:#DDFFDD; border:thin solid green; padding:1em"><br />
'''Disclaimer:''' This page's content is not official and not guaranteed to be free of mistakes. At the moment, it's even only a sum of personal thoughts to cast a bit of light onto synfig's image dimensions handling.</div><br />
<br />
==Describing the fields of the Canvas Properties Dialog==<br />
The user access the image dimensions in the {{l|Canvas Properties Dialog}}.<br />
===The ''Other'' tab===<br />
[[File:Canvas-properties-other.png]]<br />
<br />
Here some properties can simply be locked (such that they can't be changed) and linked (so that changes in one entry simultaneously change other entries as well).<br />
<br />
===The ''Image'' tab===<br />
<br />
[[File:Canvas-properties-image.png]]<br />
<br />
Obviously here the image dimensions can be set. There seem to be basically three groups of fields to edit:<br />
<br />
;The on-screen size(?): The fields ''Width'' and ''Height'' tell synfigstudio how many pixels the image shall cover at a zoom level of 100%.<br />
<br />
;The physical size: The physical width and height should tell how big the image is on some physical media. That could be when printing out images on paper, or maybe even on transparencies or film. Not all file formats can save this on exporting/rendering images.<br />
<br />
;The mysterious ''Image Area'': Given as two points (upper-left and lower-right corner) which also define the image span (Pythagoras: <font style="vertical-align:10%;font-size:8pt"><math>\scriptstyle\text{span}=\sqrt{\Delta x^2 + \Delta y^2}</math></font>). The unit seems to be not pixels but ''unit''s, which are at {{l|Unit System|60 pixels each}}. If the ratio of the image size and image area dimensions are off, for example circles will appear as an ellipse (see image). These settings seem to influence how large one ''Image Size'' pixel is being rendered. This might be useful when one has to deal with non-square output pixels.<br />
<br />
==Effects of the Image Area==<br />
{{l|image:Non_square_pixels.png|thumb|300px|Note the different scales at the rulers. Although the image is clearly 400x300 pixels big on screen, the rulers say it is only 400x200, which is what the ''Image Area'' values say.}}<br />
{{l|Image:Non_square.gif|frame|left|Note how the rectangle becomes a square and an elongated rectangle again as it rotates. Source:{{l|Image:Non square.sifz|Source file}} }}<br />
<br clear="all" /><br />
<br />
Somehow the image area setting seems to be saved when copy&pasting between image, see also bug [http://sourceforge.net/tracker/index.php?func=detail&aid=2116947&group_id=144022&atid=757416 #2116947]. <br />
<br />
==Possible intended effects of out-of-ratio image areas==<br />
As mentioned above, different ratios might be needed when then output needs to be specified in pixels, but those pixels are not squares. That might happen for several kinds of media, such as videos encoded in some PAL formats or for dvds. For further reading, look at [http://en.wikipedia.org/wiki/Pixel_aspect_ratio Wikipedia].<br />
<br />
Still, it is probably consensus that the image, as shown on screen while editing should look as closely as possible like when viewed by the final audience. So, while specifying a different output resolution at ''rendering'' time may well be wanted, synfigstudio should (for the majority of monitors) show square pixels, i.e. circles should stay circles.<br />
<br />
==Feature wishlist to simplify working across documents==<br />
<br />
== See also ==<br />
<br />
[http://www.mail-archive.com/synfig-devl@lists.sourceforge.net/msg01514.html Explanation by dooglus] on the synfig-dev mailing list.</div>Genetehttps://wiki.synfig.org/index.php?title=Halftone_3_Layer&diff=17286Halftone 3 Layer2013-02-18T16:27:24Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Halftone 3 Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_filter_halftone3_icon.png|64px}}<br />
<br />
== About Halftone 3 Layer ==<br />
<br />
The Halftone 3 Layer is... [FIXME]<br />
<br />
== Parameters of Halftone 3 Layer ==<br />
<br />
The parameters of the Halftone 3 Layer are:<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-<br />
||{{l|Image:Real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Real_icon.png|16px}} {{l|Amount Parameter|Amount}}<br />
||1.000000<br />
||real<br />
|-<br />
||{{l|Image:Integer_icon.png|16px}} {{l|Blend Method|Blend Method}}<br />
||Composite<br />
||integer<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Mask Size<br />
||0.000000pt,0.000000pt<br />
||vector<br />
|-<br />
||{{l|Image:Integer_icon.png|16px}} Type<br />
||Symmetric<br />
||integer<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Bool_icon.png|16px}}Subtractive Flag<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
|-<br />
||{{l|Image:Color_icon.png|16px}} Chan0 Color<br />
||<br />
{| style="width:95%; height:16px; background:blue; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Chan0 Mask Origin<br />
||59.99999pt,59.99999pt<br />
||vector<br />
|-<br />
||{{l|Image:Angle_icon.png|16px}} Chan0 Mask Angle<br />
||0.00 DEG<br />
||angle<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Color_icon.png|16px}} Chan1 Color<br />
||<br />
{| style="width:95%; height:16px; background:red; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
|-<br />
||{{l|Image:Vector_icon.png|16px}} Chan1 Mask Origin<br />
||59.99999pt,59.99999pt<br />
||vector<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Angle_icon.png|16px}} Chan1 Mask Angle<br />
||0.00 DEG<br />
||angle<br />
|-<br />
||{{l|Image:Color_icon.png|16px}} Chan2 Color<br />
||<br />
{| style="width:95%; height:16px; background:yellow; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Chan2 Mask Origin<br />
||59.99999pt,59.99999pt<br />
||vector<br />
|-<br />
||{{l|Image:Angle_icon.png|16px}} Chan2 Mask Angle<br />
||0.00 DEG<br />
||angle<br />
|}<br />
<br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>Genetehttps://wiki.synfig.org/index.php?title=Halftone_2_Layer&diff=17285Halftone 2 Layer2013-02-18T16:27:22Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Halftone 2 Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_filter_halftone2_icon.png|64px}}<br />
<br />
== About Halftone 2 Layer ==<br />
<br />
The Halftone 2 Layer is... [FIXME]<br />
<br />
== Parameters of Halftone 2 Layer ==<br />
The parameters of the Halftone 2 Layer are:<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-<br />
||{{l|Image:Real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Real_icon.png|16px}} {{l|Amount Parameter|Amount}}<br />
||1.000000<br />
||real<br />
|-<br />
||{{l|Image:Integer_icon.png|16px}} {{l|Blend Method|Blend Method}}<br />
||Composite<br />
||integer<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Mask Origin<br />
||0.000000pt,0.000000pt<br />
||vector<br />
|-<br />
||{{l|Image:Angle_icon.png|16px}} Mask Angle<br />
||0.00 DEG<br />
||angle<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Mask Size<br />
||59.99999pt,59.99999pt<br />
||vector<br />
|-<br />
||{{l|Image:Color_icon.png|16px}} Light Color<br />
||<br />
{| style="width:95%; height:16px; background:white; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Color_icon.png|16px}} Dark Color<br />
||<br />
{| style="width:95%; height:16px; background:black; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
|-<br />
||{{l|Image:Integer_icon.png|16px}} Type<br />
||Symmetric<br />
||integer<br />
|}<br />
<br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>Genetehttps://wiki.synfig.org/index.php?title=Focus_Point&diff=17284Focus Point2013-02-18T16:27:18Z<p>Genete: Updated Terminology</p>
<hr />
<div><!--Categories--><br />
{{Category|Parameters}}<br />
{{Category|NewTerminology}}<br />
The "Focus Point" parameter (added in SVN r2290, not yet released) is present only in the {{l|Group Layer}} layer. It has a Vector value. It defines which point in the grouped layers will stay still as the Group layer's {{l|Zoom Parameter}} changes.<br />
<br />
The Focus Point is relative to the Group layer's {{l|Origin Parameter}} and defaults to (0,0) so its handle will be hidden behind the green Origin handle initially. Its handle can be seen by turning the Origin handles off temporarily (by hitting ALT-1) or by editing its value to something small by non-zero in the Parameters Panel.<br />
<br />
It's best to edit the Focus Point parameter while the Group's Zoom is set to 0. Otherwise you'll be seeing a scaled version of the contents.</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17283Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T16:22:19Z<p>Genete: Filled Rectangle Layer done assigned Focus Point, Halftone 2 Layer, Halftone 3 Layer, Image Dimensions and Import Image Layer</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Focus Point]]<genete><br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Halftone 2 Layer]]<genete><br />
* [[Halftone 3 Layer]]<genete><br />
* [[Image Dimensions]]<genete><br />
* [[Import Image Layer]]<genete><br />
* [[Inside Out Layer]]<br />
* [[Multiplane Camera/ru]]<br />
* [[Reference]]<br />
* [[Rotate Layer]]<br />
* [[Side Tabs]]<br />
* [[Simple Circle Layer]]<br />
* [[Stroboscope Layer]]<br />
* [[Super Sample Layer]]<br />
* [[Switching Scenes]]<br />
* [[Text Layer]] <br />
* [[Time Loop Layer]]<br />
* [[Toolbox File Palette]]<br />
* [[Tracking Curves]]<br />
* [[Translate Layer]]<br />
* [[ValueNode]]<br />
* [[Warp Layer]]<br />
* [[Waypoint Dialog]]<br />
* [[Winding Style Parameter]]<br />
* [[Window Manager Hints]]<br />
* [[XOR Pattern Layer]]</div>Genetehttps://wiki.synfig.org/index.php?title=Filled_Rectangle_Layer&diff=17282Filled Rectangle Layer2013-02-18T16:20:54Z<p>Genete: Updated Terminology</p>
<hr />
<div><!-- Page info --><br />
{{Title|Filled Rectangle Layer}}<br />
{{Category|Layers}}<br />
{{Category|NewTerminology}}<br />
<!-- Page info end --><br />
<br />
{{l|Image:Layer_example_filledrectangle_icon.png|64px}}<br />
<br />
This page hasn't been written yet. Please help.<br />
<br />
== About Filled Rectangle Layer ==<br />
<br />
The 'Filled Rectangle' layer is a more featured rectangle layer.<br />
<br />
== Parameters of Filled Rectangle Layer ==<br />
<br />
The parameters of the Filled Rectangle Layer are:<br />
{|border="0" align="left" style="border-collapse" cellpadding="3" cellspacing="0" <br />
|-style="background:silver"<br />
|'''Name'''||'''Value'''||'''Type''' <br />
|-<br />
||{{l|Image:Real_icon.png|16px}} {{l|Z Depth Parameter|Z Depth}}<br />
||0.000000<br />
||real<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Real_icon.png|16px}} {{l|Amount Parameter|Amount}}<br />
||1.000000<br />
||real<br />
|-<br />
||{{l|Image:Integer_icon.png|16px}} {{l|Blend Method|Blend Method}}<br />
||Composite<br />
||integer<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Color_icon.png|16px}} Color<br />
||<br />
{| style="width:95%; height:16px; background:black; color:black" border="1"<br />
|- <br />
|}<br />
||color<br />
|-<br />
||{{l|Image:Vector_icon.png|16px}} Point 1<br />
||0.000000pt,0.000000pt<br />
||vector<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Vector_icon.png|16px}} Point 2<br />
||59.99999pt,59.99999pt<br />
||vector<br />
|-<br />
||{{l|Image:Real_icon.png|16px}} Feather X<br />
||0.000000<br />
||real<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Real_icon.png|16px}} Feather Y<br />
||0.000000<br />
||real<br />
|-<br />
||{{l|Image:Real_icon.png|16px}} Bevel<br />
||0.000000<br />
||real<br />
|-style="background:#eeeeee"<br />
||{{l|Image:Bool_icon.png|16px}} Keep Bevel Circurlar<br />
||<br />
{| style="width:16px; height:16px" border="1"<br />
|- <br />
|}<br />
||bool<br />
|}<br />
<br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17281Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T16:20:21Z<p>Genete: Feather Parameter done assigned Filled Rectangle Layer</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Filled Rectangle Layer]]<genete><br />
* [[Focus Point]]<br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Halftone 2 Layer]]<br />
* [[Halftone 3 Layer]]<br />
* [[Image Dimensions]]<br />
* [[Import Image Layer]]<br />
* [[Inside Out Layer]]<br />
* [[Multiplane Camera/ru]]<br />
* [[Reference]]<br />
* [[Rotate Layer]]<br />
* [[Side Tabs]]<br />
* [[Simple Circle Layer]]<br />
* [[Stroboscope Layer]]<br />
* [[Super Sample Layer]]<br />
* [[Switching Scenes]]<br />
* [[Text Layer]] <br />
* [[Time Loop Layer]]<br />
* [[Toolbox File Palette]]<br />
* [[Tracking Curves]]<br />
* [[Translate Layer]]<br />
* [[ValueNode]]<br />
* [[Warp Layer]]<br />
* [[Waypoint Dialog]]<br />
* [[Winding Style Parameter]]<br />
* [[Window Manager Hints]]<br />
* [[XOR Pattern Layer]]</div>Genetehttps://wiki.synfig.org/index.php?title=Feather_Parameter&diff=17280Feather Parameter2013-02-18T16:19:33Z<p>Genete: Updated Terminology</p>
<hr />
<div><!--Categories--><br />
{{Category|Parameters}}<br />
{{Category|NewTerminology}}<br />
==About the Feather Concept==<br />
<br />
Feather is a float value in points (or whatever unit you have defined in File > {{l|Setup Dialog|Setup}} > Misc > {{l|Unit System}}) that represents the width of the area that is going to be dissolved at the edge. Feather is the ''light horny waterproof structure forming the external covering of birds''. See [http://www.wordreference.com/definition/feather English Feather definition].<br />
<br />
The Feather parameter is an standard parameter for the following types of layers:<br />
<br />
* {{l|Outline Layer}}<br />
* {{l|Region Layer}}<br />
* {{l|Circle Layer}}<br />
* {{l|Polygon Layer}}<br />
* {{l|Star Layer}}<br />
<br />
Strangely {{l|Rectangle Layer}} doesn't have the Feather parameter.<br />
<br />
When you apply a Feather to any of those layers, then the edge of the shape becomes dissolved and spread out and shrunk the amount that the Feather value indicates.<br />
{|<br />
|{{l|Image:Circle Feather zero.png}} || {{l|Image:Circle Feather 20.png}}<br />
|-<br />
|Circle with Feather set to 0 points|| |Circle with Feather set to 20 points<br />
|}<br />
<br />
== Feather's Complementary Parameters ==<br />
<br />
There is another parameter that works together with the Feather parameter, and which specifies the type of feathering to be used. On Circle layers the parameter is called ''Fall Off'' and for the other featherable layers it is called ''Type of Feather''.<br />
<br />
=== Type of Feather===<br />
This complementary parameter can be set in {{l|Outline Layer}}, {{l|Region Layer}}, {{l|Polygon Layer}} and {{l|Star Layer}}. All the example images below have the same amount of Feather (set to 20 points).<br />
{|<br />
| {{l|Image:Star Feather Fast Gaussian Blur.png}}<br />
| {{l|Image:Star Feather Gaussian Blur.png}}<br />
| {{l|Image:Star Feather Disc Blur.png}}<br />
|-<br />
| Fast Gaussian Blur<br />
| Gaussian Blur<br />
| Disc Blur<br />
|-<br />
| {{l|Image:Star Feather Box Blur.png}}<br />
| {{l|Image:Star Feather Cross-Hatch Blur.png}}<br />
|-<br />
| Box Blur<br />
| Cross-Hatch Blur<br />
|}<br />
<br />
===Fall Off ===<br />
That's the type of feather for the {{l|Circle Layer}}. All the example images below have the same amount of Feather (set to 20 points).<br />
{|<br />
| {{l|Image:Circle Feather 20.png}}<br />
| {{l|Image:Circle Feather Square.png}}<br />
| {{l|Image:Circle Feather Linear.png}}<br />
|-<br />
| Square Root<br />
| Square<br />
| Linear<br />
|-<br />
| {{l|Image:Circle Feather Sigmond.png}}<br />
| {{l|Image:Circle Feather Cosine.png}}<br />
|-<br />
| Sigmond<br />
| Cosine<br />
|}</div>Genetehttps://wiki.synfig.org/index.php?title=Dev:Sprints/2013-01-07_Reworked_Terminology&diff=17279Dev:Sprints/2013-01-07 Reworked Terminology2013-02-18T16:17:05Z<p>Genete: Encapsulate done assigned Feather Parameter</p>
<hr />
<div>* [[Doc:Brushes]]<br />
* [[Comments]]<br />
* [[Constant]]<br />
* [[Curve Warp Layer]]<br />
* [[Feather Parameter]]<genete><br />
* [[Filled Rectangle Layer]]<br />
* [[Focus Point]]<br />
* [[Following a BLine (the old way)]] <--- [http://www.synfig.org/forums/viewtopic.php?f=1&t=4056&start=60#p17924 to delete]<br />
* [[Halftone 2 Layer]]<br />
* [[Halftone 3 Layer]]<br />
* [[Image Dimensions]]<br />
* [[Import Image Layer]]<br />
* [[Inside Out Layer]]<br />
* [[Multiplane Camera/ru]]<br />
* [[Reference]]<br />
* [[Rotate Layer]]<br />
* [[Side Tabs]]<br />
* [[Simple Circle Layer]]<br />
* [[Stroboscope Layer]]<br />
* [[Super Sample Layer]]<br />
* [[Switching Scenes]]<br />
* [[Text Layer]] <br />
* [[Time Loop Layer]]<br />
* [[Toolbox File Palette]]<br />
* [[Tracking Curves]]<br />
* [[Translate Layer]]<br />
* [[ValueNode]]<br />
* [[Warp Layer]]<br />
* [[Waypoint Dialog]]<br />
* [[Winding Style Parameter]]<br />
* [[Window Manager Hints]]<br />
* [[XOR Pattern Layer]]</div>Genetehttps://wiki.synfig.org/index.php?title=Group&diff=17278Group2013-02-18T16:16:22Z<p>Genete: Updated Terminology</p>
<hr />
<div>{{Category|Glossary}}<br />
{{Category|NewTerminology}}<br />
{{l|Image:Encapsulate_icon.png|64px}}<br />
<br />
Icon is outdated!<br />
<br />
;;'''Location:'''<br />
: Layers Panel > Context-menu > Group<br />
: Canvas menu > Layers > Group<br />
; '''Function:'''<br />
: Groups the currently selected layers within a new {{l|Group Layer}} layer called {{Literal|Group}}.<br />
; Typical usage:<br />
: Effect layers within this layer are applied only to other layers inside it. Then, the resulting pixel data is composited with the remaining layers according to the {{l|Group Layer|Group}} layer's {{l|Blend Method}}</div>Genete