SVGTransform
Part of wslib
The SVGTransform object holds transformation data. It can be added to every SVGObject, in the transfom slot.
In the SVG file format the 'transform' element has a bit unusual form. It contains a string with pseudo code. For example:
"translate( 20, 10 ) scale( 1.5 ) rotate( 45, 0, 0 )"
this would convert into GUI.pen functions as follows:
SVGTransform( "translate( 20, 10 ) scale( 1.5 ) rotate( 45, 0, 0 )" ).asGUICode;
/* result:
GUI.pen.translate( 20, 10 );
GUI.pen.scale( 1.5, 1.5 );
GUI.pen.rotate( 0.7853981633974483, 0, 0 );
*/
All SVGObjects convert 'transform' argument internally to SVGTransform:
(
SVGRect( 0, 0, 100, 100,
strokeColor: "green",
transform: "translate(100, 10) scale(0.5, 2.5) rotate(12.7, 0, 0)" ).plot;
)
instance variables
string
The SVG transform element formatted string
dict
an array with sub-arrays, parsed from the string in the following format:
[ \type, [ ... arguments ] ]
SVGTransform( "translate( 20, 10 ) scale( 1.5 ) rotate( 45, 0, 0 )" ).dict;
SVGTransform( [[ \translate, [ 20, 10 ]], [\scale, [ 1.5 ]], [\rotate, [ 45, 0, 0 ]]] ).string;
creation
SVGTransform ( string )
string : can also be an array in the dict format
instance methods
string_ ( newString )
set the string and updates the dict accordingly
dict_ ( newDict )
set the dict and updates the string accordingly
addToString
concatenates a string to the existing string (updates the dict accordingly)
addToDict
adds an element to the existing dict (updates the string accordingly)
asPenFunction
returns a function for drawing
asGUICode ( penClass )
returns GUI.pen style code as a string