rmagick 5.4.4 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/ImageMagick6/devcontainer.json +1 -1
  3. data/.devcontainer/devcontainer.json +1 -1
  4. data/.github/workflows/ci.yml +41 -31
  5. data/.gitignore +1 -0
  6. data/.rubocop.yml +36 -9
  7. data/.rubocop_todo.yml +369 -187
  8. data/CHANGELOG.md +77 -0
  9. data/Gemfile +14 -0
  10. data/README.md +3 -3
  11. data/Rakefile +12 -1
  12. data/before_install_linux.sh +1 -11
  13. data/before_install_osx.sh +5 -7
  14. data/ext/RMagick/extconf.rb +58 -68
  15. data/ext/RMagick/rmagick.h +7 -12
  16. data/ext/RMagick/rmdraw.cpp +10 -20
  17. data/ext/RMagick/rmfill.cpp +4 -4
  18. data/ext/RMagick/rmilist.cpp +10 -2
  19. data/ext/RMagick/rmimage.cpp +342 -344
  20. data/ext/RMagick/rminfo.cpp +22 -21
  21. data/ext/RMagick/rmkinfo.cpp +5 -18
  22. data/ext/RMagick/rmmain.cpp +42 -91
  23. data/ext/RMagick/rmmontage.cpp +5 -5
  24. data/ext/RMagick/rmpixel.cpp +3 -3
  25. data/ext/RMagick/rmutil.cpp +58 -89
  26. data/lib/rmagick/version.rb +3 -3
  27. data/lib/rmagick.rb +1 -1
  28. data/lib/rmagick_internal.rb +111 -103
  29. data/lib/rvg/container.rb +3 -3
  30. data/lib/rvg/embellishable.rb +7 -3
  31. data/lib/rvg/misc.rb +15 -15
  32. data/lib/rvg/rvg.rb +6 -6
  33. data/lib/rvg/stretchable.rb +2 -2
  34. data/lib/rvg/stylable.rb +2 -2
  35. data/lib/rvg/transformable.rb +1 -1
  36. data/lib/rvg/units.rb +1 -0
  37. data/rmagick.gemspec +2 -15
  38. data/sig/rmagick/_draw_common_methods.rbs +64 -0
  39. data/sig/rmagick/_image_common_methods.rbs +387 -0
  40. data/sig/rmagick/draw.rbs +38 -0
  41. data/sig/rmagick/draw_attribute.rbs +28 -0
  42. data/sig/rmagick/enum.rbs +820 -0
  43. data/sig/rmagick/error.rbs +11 -0
  44. data/sig/rmagick/fill.rbs +21 -0
  45. data/sig/rmagick/geometry.rbs +14 -0
  46. data/sig/rmagick/image.rbs +196 -0
  47. data/sig/rmagick/image_list.rbs +183 -0
  48. data/sig/rmagick/iptc.rbs +101 -0
  49. data/sig/rmagick/kernel_info.rbs +12 -0
  50. data/sig/rmagick/optional_method_arguments.rbs +10 -0
  51. data/sig/rmagick/pixel.rbs +46 -0
  52. data/sig/rmagick/struct.rbs +90 -0
  53. data/sig/rmagick.rbs +43 -0
  54. data/sig/rvg/clippath.rbs +34 -0
  55. data/sig/rvg/container.rbs +78 -0
  56. data/sig/rvg/deep_equal.rbs +48 -0
  57. data/sig/rvg/describable.rbs +30 -0
  58. data/sig/rvg/embellishable.rbs +226 -0
  59. data/sig/rvg/misc.rbs +145 -0
  60. data/sig/rvg/paint.rbs +55 -0
  61. data/sig/rvg/pathdata.rbs +77 -0
  62. data/sig/rvg/rvg.rbs +125 -0
  63. data/sig/rvg/stretchable.rbs +56 -0
  64. data/sig/rvg/stylable.rbs +66 -0
  65. data/sig/rvg/text.rbs +118 -0
  66. data/sig/rvg/transformable.rbs +59 -0
  67. data/sig/rvg/units.rbs +33 -0
  68. metadata +38 -134
@@ -0,0 +1,77 @@
1
+ module Magick
2
+ class RVG
3
+ # The PathData class provides an object-oriented way to produce an SVG
4
+ # path. Each of the methods corresponds to a path command. Construct a
5
+ # path by calling one or more methods. The path object can be passed
6
+ # as an argument to the RVG::ShapeConstructors#path method.
7
+ class PathData
8
+ @path: String
9
+
10
+ private
11
+
12
+ def add_points: (Integer req, *magick_real coords) -> void
13
+
14
+ public
15
+
16
+ # Construct an empty path
17
+ def initialize: () -> void
18
+
19
+ # Convert the path to its string equivalent.
20
+ def to_s: () -> String
21
+
22
+ # @private
23
+ def deep_copy: (?untyped? _h) -> String
24
+
25
+ # Add a <tt>moveto</tt> command. If <tt>abs</tt> is
26
+ # <tt>true</tt> the coordinates are absolute, otherwise
27
+ # the coordinates are relative.
28
+ def moveto: (bool abs, magick_real x, magick_real y, *magick_real coords) -> void
29
+
30
+ # Add a <tt>closepath</tt> command. The <tt>abs</tt> argument
31
+ # is ignored.
32
+ def closepath: (?bool _abs) -> void
33
+
34
+ # Add a <tt>lineto</tt> command. Any number of x,y coordinate
35
+ # pairs may be specified. If <tt>abs</tt> is
36
+ # <tt>true</tt> the coordinates are absolute, otherwise
37
+ # the coordinates are relative.
38
+ def lineto: (bool abs, magick_real x, magick_real y, *magick_real coords) -> void
39
+
40
+ # Add a <tt>horizontal lineto</tt> command. If <tt>abs</tt> is
41
+ # <tt>true</tt> the coordinates are absolute, otherwise
42
+ # the coordinates are relative.
43
+ def hlineto: (bool abs, magick_real x) -> void
44
+
45
+ # Add a <tt>vertical lineto</tt> command. If <tt>abs</tt> is
46
+ # <tt>true</tt> the coordinates are absolute, otherwise
47
+ # the coordinates are relative.
48
+ def vlineto: (bool abs, magick_real y) -> void
49
+
50
+ # Add a <tt>curveto</tt> (<em>cubic Bezier</em>) command.
51
+ # If <tt>abs</tt> is
52
+ # <tt>true</tt> the coordinates are absolute, otherwise
53
+ # the coordinates are relative.
54
+ def curveto: (bool abs, magick_real x1, magick_real y1, magick_real x2, magick_real y2, magick_real x, magick_real y, *magick_real coords) -> void
55
+
56
+ # Add a <tt>smooth curveto</tt> (<em>cubic Bezier</em>) command.
57
+ # If <tt>abs</tt> is
58
+ # <tt>true</tt> the coordinates are absolute, otherwise
59
+ # the coordinates are relative.
60
+ def smooth_curveto: (bool abs, magick_real x2, magick_real y2, magick_real x, magick_real y, *magick_real coords) -> void
61
+
62
+ # Add a <tt>quadratic Bezier curveto</tt> command.
63
+ # If <tt>abs</tt> is
64
+ # <tt>true</tt> the coordinates are absolute, otherwise
65
+ # the coordinates are relative.
66
+ def quadratic_curveto: (bool abs, magick_real x1, magick_real y1, magick_real x, magick_real y, *magick_real coords) -> void
67
+
68
+ # Add a <tt>smooth quadratic Bezier curveto</tt> command.
69
+ # If <tt>abs</tt> is
70
+ # <tt>true</tt> the coordinates are absolute, otherwise
71
+ # the coordinates are relative.
72
+ def smooth_quadratic_curveto: (bool abs, magick_real x, magick_real y, *magick_real coords) -> void
73
+
74
+ def arc: (bool abs, magick_real rx, magick_real ry, magick_real x_axis_rotation, magick_real large_arc_flag, magick_real sweep_flag, magick_real x, magick_real y) -> void
75
+ end
76
+ end
77
+ end
data/sig/rvg/rvg.rbs ADDED
@@ -0,0 +1,125 @@
1
+ module Magick
2
+ class RVG
3
+ @background_image: untyped
4
+ @background_pattern: untyped
5
+ @background_position: untyped
6
+ @background_fill: untyped
7
+ @background_fill_opacity: untyped
8
+ @width: untyped
9
+ @height: untyped
10
+ @content: Content
11
+ @canvas: Magick::Image
12
+ @desc: untyped
13
+ @title: untyped
14
+ @metadata: untyped
15
+ @x: untyped
16
+ @y: untyped
17
+ @nested: untyped
18
+
19
+ include Stylable
20
+ include Transformable
21
+ include Stretchable
22
+ include Embellishable
23
+ include Describable
24
+ include Duplicatable
25
+
26
+ interface _Duplicatable
27
+ def deep_copy: (?Hash[untyped, untyped] h) -> self
28
+ end
29
+
30
+ # The background image specified by background_image=
31
+ attr_reader background_image: Magick::Image
32
+
33
+ # The background image layout specified by background_position=
34
+ attr_reader background_position: Symbol
35
+
36
+ # The background fill color specified by background_fill=
37
+ attr_reader background_fill: Magick::Pixel
38
+
39
+ # The background fill color opacity specified by background_fill_opacity=
40
+ attr_reader background_fill_opacity: Float
41
+
42
+ # The image after drawing has completed
43
+ attr_reader canvas: Magick::Image
44
+
45
+ # For embedded RVG objects, the x-axis coordinate of the upper-left corner
46
+ attr_reader x: Float
47
+
48
+ # For embedded RVG objects, the x-axis coordinate of the upper-left corner
49
+ attr_reader y: Float
50
+
51
+ attr_reader width: Float
52
+
53
+ attr_reader height: Float
54
+
55
+ private
56
+
57
+ def bgfill: () -> Magick::Pixel
58
+ def new_canvas: () -> Magick::Image
59
+
60
+ public
61
+
62
+
63
+ # Sets an image to use as the canvas background. See background_position= for layout options.
64
+ def background_image=: (Magick::Image? bg_image) -> Magick::Image?
65
+
66
+ # Sets an object to use to fill the canvas background.
67
+ # The object must have a <tt>fill</tt> method. See the <b>Fill Classes</b>
68
+ # section in the RMagick doc for more information.
69
+ def background_pattern=: (magick_fill filler) -> magick_fill
70
+
71
+ # How to position the background image on the canvas. One of the following symbols:
72
+ # [:scaled] Scale the image to the canvas width and height.
73
+ # [:tiled] Tile the image across the canvas.
74
+ # [:fit] Scale the image to fit within the canvas while retaining the
75
+ # image proportions. Center the image on the canvas. Color any part of
76
+ # the canvas not covered by the image with the background color.
77
+ def background_position=: (interned pos) -> Symbol
78
+
79
+ # Sets the canvas background color. Either a Magick::Pixel or a color name.
80
+ # The default fill is "none", that is, transparent black.
81
+ def background_fill=: (magick_color color) -> Magick::Pixel
82
+
83
+ # Opacity of the background fill color, a number between 0.0 (transparent) and
84
+ # 1.0 (opaque). The default is 1.0 when the background_fill= attribute has been set.
85
+ def background_fill_opacity=: (magick_real opacity) -> magick_real
86
+
87
+ # Draw a +width+ x +height+ image. The image is specified by calling
88
+ # one or more drawing methods on the RVG object.
89
+ # You can group the drawing method calls in the optional associated block.
90
+ # The +x+ and +y+ arguments have no meaning for the outermost RVG object.
91
+ # On nested RVG objects [+x+, +y+] is the coordinate of the upper-left
92
+ # corner in the containing canvas on which the nested RVG object is placed.
93
+ #
94
+ # Drawing occurs on a +canvas+ created by the #draw method. By default the
95
+ # canvas is transparent. You can specify a different canvas with the
96
+ # #background_fill= or #background_image= methods.
97
+ #
98
+ # RVG objects are _containers_. That is, styles and transforms defined
99
+ # on the object are used by contained objects such as shapes, text, and
100
+ # groups unless overridden by an inner container or the object itself.
101
+ def initialize: (?magick_real? width, ?magick_real? height) -> void
102
+ | (?magick_real? width, ?magick_real? height) { (RVG) -> void } -> void
103
+
104
+ # Construct a canvas or reuse an existing canvas.
105
+ # Execute drawing commands. Return the canvas.
106
+ def draw: () -> Magick::Image
107
+
108
+ # Accept #use arguments. Use (x,y) to generate an additional translate.
109
+ # Override @width and @height if new values are supplied.
110
+ # @private
111
+ def ref: (Integer | Float x, Integer | Float y, Integer | Float rw, Integer | Float rh) -> void
112
+
113
+ # Used by Magick::Embellishable.rvg to set non-0 x- and y-coordinates
114
+ # @private
115
+ def corner: (magick_real x, magick_real y) -> void
116
+
117
+ # Primitives for the outermost RVG object
118
+ # @private
119
+ def add_outermost_primitives: (Utility::GraphicContext gc) -> self
120
+
121
+ # Primitives for nested RVG objects
122
+ # @private
123
+ def add_primitives: (Utility::GraphicContext gc) -> void
124
+ end
125
+ end
@@ -0,0 +1,56 @@
1
+ module Magick
2
+ class RVG
3
+ module PreserveAspectRatio
4
+ @align: String
5
+ @meet_or_slice: String
6
+
7
+ # -
8
+ # Included in Stretchable module and Image class
9
+ # +
10
+ # Specifies how the image within a viewport should be scaled.
11
+ # [+align+] a combination of 'xMin', 'xMid', or 'xMax', followed by
12
+ # 'YMin', 'YMid', or 'YMax'
13
+ # [+meet_or_slice+] one of 'meet' or 'slice'
14
+ def preserve_aspect_ratio: (interned align, ?interned meet_or_slice) -> self
15
+ | (interned align, ?interned meet_or_slice) { (self) -> void } -> self
16
+ end
17
+
18
+ # The methods in this module describe the user-coordinate space.
19
+ # RVG and Pattern objects are stretchable.
20
+ module Stretchable
21
+ @vbx_width: Float
22
+ @vbx_height: Float
23
+ @vbx_x: Float
24
+ @vbx_y: Float
25
+ @meet_or_slice: String
26
+ @align: String
27
+
28
+ include PreserveAspectRatio
29
+
30
+ private
31
+
32
+ # Scale to fit
33
+ def set_viewbox_none: (Integer | Float width, Integer | Float height) -> [Integer | Float, Integer | Float]
34
+
35
+ # Use align attribute to compute x- and y-offset from viewport's upper-left corner.
36
+ def align_to_viewport: (Integer | Float width, Integer | Float height, Integer | Float sx, Integer | Float sy) -> [(Integer | Float)?, (Integer | Float)?]
37
+
38
+ # Scale to smaller viewbox dimension
39
+ def set_viewbox_meet: (Integer | Float width, Integer | Float height) -> [(Integer | Float)?, (Integer | Float)?]
40
+
41
+ # Scale to larger viewbox dimension
42
+ def set_viewbox_slice: (Integer | Float width, Integer | Float height) -> [(Integer | Float)?, (Integer | Float)?]
43
+
44
+ # Establish the viewbox as necessary
45
+ def add_viewbox_primitives: (Integer | Float width, Integer | Float height, Utility::GraphicContext gc) -> void
46
+
47
+ public
48
+
49
+ # Describe a user coordinate system to be imposed on the viewbox.
50
+ # The arguments must be numbers and the +width+ and +height+
51
+ # arguments must be positive.
52
+ def viewbox: (magick_real x, magick_real y, magick_real width, magick_real height) -> self
53
+ | (magick_real x, magick_real y, magick_real width, magick_real height) { (self) -> void } -> self
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,66 @@
1
+ module Magick
2
+ class RVG
3
+ # Styles is a Struct class with a couple of extra methods
4
+ class Styles < Struct[untyped]
5
+ def set: (Hash[Symbol, untyped] styles) -> self
6
+
7
+ # Iterate over the style names. Yield for each style that has a value.
8
+ def each_value: () { (Symbol, untyped) -> void } -> void
9
+
10
+ # The "usual" deep_copy method doesn't copy a Struct correctly.
11
+ def deep_copy: (?untyped? _h) -> Styles
12
+
13
+ def self.new: (*untyped obj) -> Styles
14
+ end
15
+
16
+ # This module is mixed into classes that can have styles.
17
+ module Stylable
18
+ @styles: Styles
19
+
20
+ private
21
+
22
+ # For each style that has a value, add a style primitive to the gc.
23
+ # Use splat to splat out Array arguments such as stroke_dasharray.
24
+ def add_style_primitives: (Utility::GraphicContext gc) -> void
25
+
26
+ public
27
+
28
+ # This method can be used with any RVG, Group, Use, Text, or
29
+ # shape object. The argument is a hash. The style names are
30
+ # the hash keys. The style names and values are:
31
+ # [:baseline_shift] modify the text baseline
32
+ # [:clip_path] clipping path defined by clip_path
33
+ # [:clip_rule] 'evenodd' or 'nozero'
34
+ # [:fill] color name
35
+ # [:fill_opacity] the fill opacity, 0.0<=N<=1.0
36
+ # [:fill_rule] 'evenodd' or 'nozero'
37
+ # [:font] font name or font file name
38
+ # [:font_family] font family name, ex. 'serif'
39
+ # [:font_size] font size in points
40
+ # [:font_stretch] 'normal','ultra_condensed','extra_condensed',
41
+ # 'condensed','semi_condensed','semi_expanded',
42
+ # 'expanded','extra_expanded','ultra_expanded'
43
+ # [:font_style] 'normal','italic','oblique'
44
+ # [:font_weight] 'normal','bold','bolder','lighter', or
45
+ # a multiple of 100 between 100 and 900.
46
+ # [:glyph_orientation_horizontal] 0, 90, 180, 270
47
+ # [:glyph_orientation_vertical] 0, 90, 180, 270
48
+ # [:letter_spacing] modify the spacing between letters
49
+ # [:opacity] both fill and stroke opacity, 0.0<=N<=1.0
50
+ # [:stroke] color name
51
+ # [:stroke_dasharray] dash pattern (Array)
52
+ # [:stroke_dashoffset] initial distance into dash pattern
53
+ # [:stroke_linecap] 'butt', 'round', 'square'
54
+ # [:stroke_linejoin] 'miter', 'round', 'bevel'
55
+ # [:stroke_miterlimit] miter length constraint
56
+ # [:stroke_opacity] the stroke opacity, 0.0<=N<=1.0
57
+ # [:stroke_width] stroke width
58
+ # [:text_anchor] 'start','middle','end'
59
+ # [:text_decoration] 'none','underline','overline','line_through'
60
+ # [:word_spacing] modify the spacing between words
61
+ # [:writing_mode] 'lr-tb', 'lr', 'rt-tb', 'rl', 'tb-rl', 'tb'
62
+ def styles: (Hash[Symbol, untyped] styles) -> self
63
+ | (Hash[Symbol, untyped] styles) { (self) -> void } -> self
64
+ end
65
+ end
66
+ end
data/sig/rvg/text.rbs ADDED
@@ -0,0 +1,118 @@
1
+ # -
2
+ # $Id: text.rb,v 1.7 2009/02/28 23:52:28 rmagick Exp $
3
+ # Copyright (C) 2009 Timothy P. Hunter
4
+ # +
5
+ # Text-related classes
6
+ module Magick
7
+ class RVG
8
+ # Base class for Tspan, Tref and Text.
9
+ class TextBase
10
+ @text: String?
11
+ @dx: Integer | Float
12
+ @rotation: Integer | Float
13
+ @tspans: Content
14
+ @dy: Integer | Float
15
+
16
+ include Stylable
17
+ include Duplicatable
18
+
19
+ def initialize: (interned? text) -> void
20
+ | (interned? text) { (self) -> void } -> void
21
+
22
+ # Create a new text chunk. Each chunk can have its own initial position and styles.
23
+ # If <tt>x</tt> and <tt>y</tt> are omitted the text starts at the current text
24
+ # position.
25
+ def tspan: (interned text, ?magick_real? x, ?magick_real? y) -> Tspan
26
+ | (interned text, ?magick_real? x, ?magick_real? y) { (self) -> void } -> Tspan
27
+
28
+ # Add <tt>x</tt> and <tt>y</tt> to the current text position.
29
+ def d: (magick_real x, ?magick_real y) -> self
30
+ | (magick_real x, ?magick_real y) { (self) -> void } -> self
31
+
32
+ # Rotate the text about the current text position.
33
+ def rotate: (magick_real degrees) -> self
34
+ | (magick_real degrees) { (self) -> void } -> self
35
+
36
+ # We do our own transformations.
37
+ # @private
38
+ def add_primitives: (Utility::GraphicContext gc) -> void
39
+ end
40
+
41
+ # Tspan and Tref shared methods - read/update @cx, @cy in parent Text object.
42
+ # @private
43
+ module TextLink
44
+ def add_primitives: (Utility::GraphicContext gc) -> void
45
+ def cx: () -> Float
46
+ def cy: () -> Float
47
+ def cx=: (magick_real x) -> magick_real
48
+ def cy=: (magick_real y) -> magick_real
49
+ end
50
+
51
+ # @private
52
+ class Tref < TextBase
53
+ @x: Float
54
+ @y: Float
55
+ @parent: TextBase
56
+
57
+ include TextLink
58
+
59
+ def initialize: (TextBase obj, magick_real x, magick_real y, TextBase parent) -> void
60
+ end
61
+
62
+ # @private
63
+ class Tspan < TextBase
64
+ @x: Float
65
+ @y: Float
66
+
67
+ include TextLink
68
+
69
+ attr_accessor parent: TextBase
70
+
71
+ # Define a text segment starting at (<tt>x</tt>, <tt>y</tt>).
72
+ # If <tt>x</tt> and <tt>y</tt> are omitted the segment starts
73
+ # at the current text position.
74
+ #
75
+ # Tspan objects can contain Tspan objects.
76
+ def initialize: (?interned? text, ?magick_real? x, ?magick_real? y) -> void
77
+ | (?interned? text, ?magick_real? x, ?magick_real? y) { (Tspan) -> void } -> void
78
+ end
79
+
80
+ class Text < TextBase
81
+ @cx: Float
82
+ @cy: Float
83
+
84
+ # @private
85
+ attr_accessor cx: Float
86
+
87
+ # @private
88
+ attr_accessor cy: Float
89
+
90
+ # Define a text string starting at [<tt>x</tt>, <tt>y</tt>].
91
+ # Use the RVG::TextConstructors#text method to create Text objects in a container.
92
+ #
93
+ # container.text(100, 100, "Simple text").styles(:font=>'Arial')
94
+ #
95
+ # Text objects can contain Tspan objects.
96
+ #
97
+ # container.text(100, 100).styles(:font=>'Arial') do |t|
98
+ # t.tspan("Red text").styles(:fill=>'red')
99
+ # t.tspan("Blue text").styles(:fill=>'blue')
100
+ # end
101
+ def initialize: (?magick_real x, ?magick_real y, ?interned? text) -> void
102
+ | (?magick_real x, ?magick_real y, ?interned? text) { (Text) -> void } -> void
103
+
104
+ # Reference a Tspan object. <tt>x</tt> and <tt>y</tt> are just
105
+ # like <tt>x</tt> and <tt>y</tt> in RVG::TextBase#tspan
106
+ def tref: (TextBase obj, ?magick_real? x, ?magick_real? y) -> Tref
107
+ end
108
+
109
+ # Methods that construct text objects within a container
110
+ module TextConstructors
111
+ # Draw a text string at (<tt>x</tt>,<tt>y</tt>). The string can
112
+ # be omitted. Optionally, define text chunks within the associated
113
+ # block.
114
+ def text: (?magick_real x, ?magick_real y, ?interned? text) -> Text
115
+ | (?magick_real x, ?magick_real y, ?interned? text) { (Text) -> void } -> Text
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,59 @@
1
+ module Magick
2
+ class RVG
3
+ # Transforms is an Array with a deep_copy method.
4
+ # During unit-testing it also has a deep_equal method.
5
+ # @private
6
+ class Transforms < Array[untyped]
7
+ def deep_copy: (?untyped? _h) -> Transforms
8
+ end
9
+
10
+ # Transformations are operations on the coordinate system.
11
+ # All the transformations defined within a container (an RVG object
12
+ # or a group) are applied before drawing any shapes or text.
13
+ # All transformations are applied in the order they were
14
+ # defined. <em>Note:</em> This means that
15
+ # g.translate(10,20).scale(2)
16
+ # is not the same as
17
+ # g.scale(2).translate(10,20)
18
+ module Transformable
19
+ @transforms: Transforms
20
+
21
+ private
22
+
23
+ # Apply transforms in the same order they were specified!
24
+ def add_transform_primitives: (Utility::GraphicContext gc) -> void
25
+
26
+ public
27
+
28
+ # Applies the transformation matrix [sx, rx, ry, sy, tx, ty]
29
+ def matrix: (magick_real sx, magick_real rx, magick_real ry, magick_real sy, magick_real tx, magick_real ty) -> self
30
+ | (magick_real sx, magick_real rx, magick_real ry, magick_real sy, magick_real tx, magick_real ty) { (self) -> void } -> self
31
+
32
+ # Add <tt>tx</tt> to all x-coordinates and <tt>ty</tt>
33
+ # to all y-coordinates. If <tt>ty</tt> is omitted it defaults
34
+ # to <tt>tx</tt>.
35
+ def translate: (magick_real tx, ?magick_real? ty) -> self
36
+ | (magick_real tx, ?magick_real? ty) { (self) -> void } -> self
37
+
38
+ # Multiply the x-coordinates by <tt>sx</tt> and the y-coordinates
39
+ # by <tt>sy</tt>. If <tt>sy</tt> is omitted it defaults to <tt>sx</tt>.
40
+ def scale: (magick_real sx, ?magick_real? sy) -> self
41
+ | (magick_real sx, ?magick_real? sy) { (self) -> void } -> self
42
+
43
+ # This method can take either of two argument lists:
44
+ # [rotate(angle)] rotate by <tt>angle</tt> degrees
45
+ # [rotate(angle, cx, cy)] rotate by <tt>angle</tt> degrees about
46
+ # the point [<tt>cx</tt>, <tt>cy</tt>].
47
+ def rotate: (magick_real angle, *magick_real args) -> self
48
+ | (magick_real angle, *magick_real args) { (self) -> void } -> self
49
+
50
+ # Skew the X-axis by <tt>angle</tt> degrees.
51
+ def skewX: (magick_real angle) -> self
52
+ | (magick_real angle) { (self) -> void } -> self
53
+
54
+ # Skew the Y-axis by <tt>angle</tt> degrees.
55
+ def skewY: (magick_real angle) -> self
56
+ | (magick_real angle) { (self) -> void } -> self
57
+ end
58
+ end
59
+ end
data/sig/rvg/units.rbs ADDED
@@ -0,0 +1,33 @@
1
+ module Magick
2
+ class RVG
3
+ attr_reader self.dpi: Float
4
+
5
+ def self.dpi=: (magick_real n) -> Float
6
+ end
7
+ end
8
+
9
+ class Float
10
+ attr_reader px: Float
11
+ attr_reader in: Float
12
+ attr_reader mm: Float
13
+ attr_reader cm: Float
14
+ attr_reader pt: Float
15
+ attr_reader pc: Float
16
+ def pct: (Magick::magick_real of) -> Float
17
+ attr_reader deg: Float
18
+ attr_reader rad: Float
19
+ attr_reader grad: Float
20
+ end
21
+
22
+ class Integer
23
+ attr_reader px: Integer
24
+ attr_reader in: Float
25
+ attr_reader mm: Float
26
+ attr_reader cm: Float
27
+ attr_reader pt: Float
28
+ attr_reader pc: Float
29
+ def pct: (Magick::magick_real of) -> Float
30
+ attr_reader deg: Integer
31
+ attr_reader rad: Float
32
+ attr_reader grad: Float
33
+ end