module Magick class RVG # Transforms is an Array with a deep_copy method. # During unit-testing it also has a deep_equal method. # @private class Transforms < Array[untyped] def deep_copy: (?untyped? _h) -> Transforms end # Transformations are operations on the coordinate system. # All the transformations defined within a container (an RVG object # or a group) are applied before drawing any shapes or text. # All transformations are applied in the order they were # defined. Note: This means that # g.translate(10,20).scale(2) # is not the same as # g.scale(2).translate(10,20) module Transformable @transforms: Transforms private # Apply transforms in the same order they were specified! def add_transform_primitives: (Utility::GraphicContext gc) -> void public # Applies the transformation matrix [sx, rx, ry, sy, tx, ty] def matrix: (magick_real sx, magick_real rx, magick_real ry, magick_real sy, magick_real tx, magick_real ty) -> self | (magick_real sx, magick_real rx, magick_real ry, magick_real sy, magick_real tx, magick_real ty) { (self) -> void } -> self # Add tx to all x-coordinates and ty # to all y-coordinates. If ty is omitted it defaults # to tx. def translate: (magick_real tx, ?magick_real? ty) -> self | (magick_real tx, ?magick_real? ty) { (self) -> void } -> self # Multiply the x-coordinates by sx and the y-coordinates # by sy. If sy is omitted it defaults to sx. def scale: (magick_real sx, ?magick_real? sy) -> self | (magick_real sx, ?magick_real? sy) { (self) -> void } -> self # This method can take either of two argument lists: # [rotate(angle)] rotate by angle degrees # [rotate(angle, cx, cy)] rotate by angle degrees about # the point [cx, cy]. def rotate: (magick_real angle, *magick_real args) -> self | (magick_real angle, *magick_real args) { (self) -> void } -> self # Skew the X-axis by angle degrees. def skewX: (magick_real angle) -> self | (magick_real angle) { (self) -> void } -> self # Skew the Y-axis by angle degrees. def skewY: (magick_real angle) -> self | (magick_real angle) { (self) -> void } -> self end end end