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