Index: doc/user/09_appendix/action_details.html =================================================================== --- doc/user/09_appendix/action_details.html (revision 36586) +++ doc/user/09_appendix/action_details.html (revision 36587) @@ -1286,6 +1286,67 @@ Note that the location of the subcircuit will be symmetric about the cursor location; i.e. if the part you are pointing at will still be at the same spot once the subcircuit is on the other side. When flipping multiple subcircuits, this retains their positions relative to each other, not their absolute positions on the board. +

FontXform

+
+

+ +
Syntax summary: +FontXform(xform1, params..., [xform2, params...], ...) +
Help text: +Transform font graphics in fontmode (FontEdit) +
Registered by: +fontmode plugin +
+

+Transform all glyphs of the current font while in fontmode (FontEdit()). +

+ The action sets up a 2d transformation matrix, initially an ident matrix, then applies each transformation from the arguments to this matrix. Finally it iterates through all glyphs and transforms drawing objects using this matrix. The origin of the transformation is the origin of the glyph cell, which is the top left corner (the top left grid crossing). +

+ Transformation arguments: + + + + + + + + + + +
+ arg + + description +
+ move dx dy + + translate coordinates by dx;dy coords +
+ shear sx sy + + shear coordinates by a factor of sx;sy (floating point numbers in decimal format); arc angles are not changed, only center point is moved +
+ scale sx sy + + scale coordinates by a factor of sx;sy (floating point numbers in decimal format); arc radius is not scaled, only centerpoint is moved +
+ +

+ Example: +

+ FontXform(move, 0, 54mil,   shear, -0.15, 0,   move, 0, -54mil) 
+
+ +

+ This first moves each glyph 54 mil up, then shears them by 15% to the right then moves them back down 54 mil. The move is used to transform the base coordinate of the shear to the baseline of the font. But it really works the other way around: transformations always use the top left corner as as origin, but if glyph data is moved up, above cell top, it's the same as if we moved the transformation down by the same amount. +

+ + +Note: + + because transfomrations are applied to a matrix first, they need to be specified in reverse order. In the above example the last move is the one that moves everything up (negative y). +

+

FreeRotateBuffer

Index: doc/user/09_appendix/action_reference.html =================================================================== --- doc/user/09_appendix/action_reference.html (revision 36586) +++ doc/user/09_appendix/action_reference.html (revision 36587) @@ -13,7 +13,7 @@ @@ -27,6 +27,7 @@ + @@ -160,8 +161,10 @@ - + + + Index: doc/user/09_appendix/action_src/fontxform.html =================================================================== --- doc/user/09_appendix/action_src/fontxform.html (nonexistent) +++ doc/user/09_appendix/action_src/fontxform.html (revision 36587) @@ -0,0 +1,31 @@ +Transform all glyphs of the current font while in fontmode (FontEdit()). +

+The action sets up a 2d transformation matrix, initially an ident matrix, then +applies each transformation from the arguments to this matrix. Finally it +iterates through all glyphs and transforms drawing objects using this matrix. +The origin of the transformation is the origin of the glyph cell, which is +the top left corner (the top left grid crossing). +

+Transformation arguments: +

-This is pcb-rnd 3.0.5-dev (svn r36326) an interactive printed circuit board editor from the Ringdove EDA suite compiled using librnd version 3.2.0-dev , Revision: 36430 +This is pcb-rnd 3.0.6-dev (svn r36456) an interactive printed circuit board editor from the Ringdove EDA suite compiled using librnd version 3.2.0 , Revision: 36586
Action Description Syntax Plugin
AboutPresent the about boxAbout()dialogs plugin
AnyLoad (RND)Load "anything" from path (or offer a file selectio dialog if no path specified)AnyLoad([path])
ApplyPenSet properties of the selected object or object under the cursor to match current drawing style ("pen"), e.g. thickness, clearance.ApplyPen([selected|object])
ApplyVendorApplies the currently loaded vendor drill table to the current design.ApplyVendor()vendor drill mapping
Arc2LinesConvert arc(s) into lines using approximation. If linelen is specified, resulting line segment length will not exceed that value.Arc2Lines(object|selected, [linelen])act_draw
ArcNewCreate a pcb arc segment on a layer. For now data must be "pcb". Returns the idpath of the new object or 0 on error.ArcNew([noundo,] data, layer, centx, centy, radiusx, radiusy, start_ang, delta_ang, thickness, clearance, flags)act_draw
asmInteractive assembly assistantasm()asm plugin
AtomicSave or restore the undo serial number.Atomic(Save|Restore|Close|Block)
FlagEditChange the layer binding.FlagEdit(object)dialogs plugin
FlipFlip a subcircuit to the opposite side of the board.Flip(Object|Selected)
FontEditConvert the current font to a PCB for editing.FontEdit()fontmode plugin
FontSaveConvert the current PCB back to a font.FontSave()fontmode plugin
FontNormalizeNormalie all glyphs (top-left justify)FontNormalize()fontmode plugin
FontSaveConvert the current PCB back to a font.FontSave([filename])fontmode plugin
FontselOpen the font selection dialogFontsel()dialogs plugin
FontXformTransform font graphics in fontmode (FontEdit)FontXform(xform1, params..., [xform2, params...], ...)fontmode plugin
forcecolorchange selected objects' color to #RRGGBB, reset if does not start with '#'forcecolor(#RRGGBB)diag plugin
formula_bisectFind the value for exactly one of the arguments that produces the expected result. One argument must be a string with type:min:max:precision, the rest of the arguments and res must be numeric.formula_bisect(action, res, args)lib_formula plugin
fpasExecute a script one-liner using a specific languageOneliner(lang, script)script plugin
+
arg description +
move dx dy translate coordinates by dx;dy coords +
shear sx sy shear coordinates by a factor of sx;sy (floating point numbers in decimal format); arc angles are not changed, only center point is moved +
scale sx sy scale coordinates by a factor of sx;sy (floating point numbers in decimal format); arc radius is not scaled, only centerpoint is moved +
+

+Example: +

+FontXform(move, 0, 54mil,   shear, -0.15, 0,   move, 0, -54mil)
+
+

+This first moves each glyph 54 mil up, then shears them by 15% to the right +then moves them back down 54 mil. The move is used to transform the base +coordinate of the shear to the baseline of the font. But it really works +the other way around: transformations always use the top left corner as +as origin, but if glyph data is moved up, above cell top, it's the same +as if we moved the transformation down by the same amount. +

+Note: because transfomrations are applied to a matrix first, they +need to be specified in reverse order. In the above example the last +move is the one that moves everything up (negative y).