gruff 0.29.0-java → 0.31.0-java

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +6 -0
  3. data/.github/workflows/ci.yml +19 -26
  4. data/.github/workflows/release.yml +24 -0
  5. data/.rubocop.yml +15 -0
  6. data/.rubocop_todo.yml +11 -0
  7. data/CHANGELOG.md +9 -0
  8. data/Gemfile +2 -0
  9. data/gruff.gemspec +1 -0
  10. data/init.rb +1 -0
  11. data/lib/gruff/accumulator_bar.rb +1 -0
  12. data/lib/gruff/area.rb +2 -0
  13. data/lib/gruff/bar.rb +5 -0
  14. data/lib/gruff/base.rb +59 -2
  15. data/lib/gruff/bezier.rb +1 -0
  16. data/lib/gruff/box.rb +8 -0
  17. data/lib/gruff/bubble.rb +4 -0
  18. data/lib/gruff/bullet.rb +4 -0
  19. data/lib/gruff/candlestick.rb +20 -8
  20. data/lib/gruff/dot.rb +4 -0
  21. data/lib/gruff/font.rb +2 -0
  22. data/lib/gruff/helper/bar_value_label.rb +2 -0
  23. data/lib/gruff/helper/stacked_mixin.rb +1 -0
  24. data/lib/gruff/histogram.rb +3 -0
  25. data/lib/gruff/line.rb +28 -0
  26. data/lib/gruff/mini/bar.rb +4 -0
  27. data/lib/gruff/mini/legend.rb +15 -3
  28. data/lib/gruff/mini/pie.rb +4 -0
  29. data/lib/gruff/mini/side_bar.rb +4 -0
  30. data/lib/gruff/net.rb +7 -1
  31. data/lib/gruff/patch/rmagick.rb +11 -0
  32. data/lib/gruff/patch/string.rb +3 -0
  33. data/lib/gruff/pie.rb +8 -0
  34. data/lib/gruff/renderer/bezier.rb +1 -0
  35. data/lib/gruff/renderer/circle.rb +1 -0
  36. data/lib/gruff/renderer/dash_line.rb +1 -0
  37. data/lib/gruff/renderer/dot.rb +13 -0
  38. data/lib/gruff/renderer/ellipse.rb +1 -0
  39. data/lib/gruff/renderer/line.rb +7 -0
  40. data/lib/gruff/renderer/polygon.rb +2 -0
  41. data/lib/gruff/renderer/polyline.rb +1 -0
  42. data/lib/gruff/renderer/rectangle.rb +1 -0
  43. data/lib/gruff/renderer/renderer.rb +26 -3
  44. data/lib/gruff/renderer/text.rb +5 -1
  45. data/lib/gruff/scatter.rb +17 -0
  46. data/lib/gruff/side_bar.rb +9 -0
  47. data/lib/gruff/side_stacked_bar.rb +3 -0
  48. data/lib/gruff/spider.rb +26 -2
  49. data/lib/gruff/stacked_area.rb +5 -0
  50. data/lib/gruff/stacked_bar.rb +5 -0
  51. data/lib/gruff/store/basic_data.rb +4 -0
  52. data/lib/gruff/store/store.rb +8 -0
  53. data/lib/gruff/store/xy_data.rb +2 -0
  54. data/lib/gruff/store/xy_pointsizes_data.rb +2 -0
  55. data/lib/gruff/version.rb +1 -1
  56. data/lib/gruff.rb +2 -0
  57. data/sig/generated/gruff/accumulator_bar.rbs +2 -1
  58. data/sig/generated/gruff/area.rbs +4 -2
  59. data/sig/generated/gruff/bar.rbs +10 -5
  60. data/sig/generated/gruff/base.rbs +113 -53
  61. data/sig/generated/gruff/bezier.rbs +2 -1
  62. data/sig/generated/gruff/box.rbs +13 -5
  63. data/sig/generated/gruff/bubble.rbs +8 -4
  64. data/sig/generated/gruff/bullet.rbs +8 -4
  65. data/sig/generated/gruff/candlestick.rbs +26 -14
  66. data/sig/generated/gruff/dot.rbs +8 -4
  67. data/sig/generated/gruff/font.rbs +3 -1
  68. data/sig/generated/gruff/helper/bar_value_label.rbs +4 -2
  69. data/sig/generated/gruff/helper/stacked_mixin.rbs +2 -1
  70. data/sig/generated/gruff/histogram.rbs +6 -3
  71. data/sig/generated/gruff/line.rbs +44 -16
  72. data/sig/generated/gruff/mini/bar.rbs +27 -0
  73. data/sig/generated/gruff/mini/legend.rbs +36 -0
  74. data/sig/generated/gruff/mini/pie.rbs +26 -0
  75. data/sig/generated/gruff/mini/side_bar.rbs +34 -0
  76. data/sig/generated/gruff/net.rbs +12 -6
  77. data/sig/generated/gruff/patch/rmagick.rbs +25 -0
  78. data/sig/generated/gruff/patch/string.rbs +11 -0
  79. data/sig/generated/gruff/pie.rbs +15 -7
  80. data/sig/generated/gruff/renderer/bezier.rbs +2 -1
  81. data/sig/generated/gruff/renderer/circle.rbs +2 -1
  82. data/sig/generated/gruff/renderer/dash_line.rbs +2 -1
  83. data/sig/generated/gruff/renderer/dot.rbs +17 -4
  84. data/sig/generated/gruff/renderer/ellipse.rbs +2 -1
  85. data/sig/generated/gruff/renderer/line.rbs +9 -2
  86. data/sig/generated/gruff/renderer/polygon.rbs +17 -0
  87. data/sig/generated/gruff/renderer/polyline.rbs +2 -1
  88. data/sig/generated/gruff/renderer/rectangle.rbs +2 -1
  89. data/sig/generated/gruff/renderer/renderer.rbs +31 -8
  90. data/sig/generated/gruff/renderer/text.rbs +7 -3
  91. data/sig/generated/gruff/scatter.rbs +30 -13
  92. data/sig/generated/gruff/side_bar.rbs +15 -6
  93. data/sig/generated/gruff/side_stacked_bar.rbs +6 -3
  94. data/sig/generated/gruff/spider.rbs +35 -11
  95. data/sig/generated/gruff/stacked_area.rbs +9 -4
  96. data/sig/generated/gruff/stacked_bar.rbs +10 -5
  97. data/sig/generated/gruff/store/basic_data.rbs +8 -4
  98. data/sig/generated/gruff/store/store.rbs +12 -4
  99. data/sig/generated/gruff/store/xy_data.rbs +4 -2
  100. data/sig/generated/gruff/store/xy_pointsizes_data.rbs +4 -2
  101. data/sig/generated/gruff.rbs +3 -1
  102. metadata +13 -3
data/lib/gruff/line.rb CHANGED
@@ -51,6 +51,7 @@ class Gruff::Line < Gruff::Base
51
51
  #
52
52
  # The preferred way is to call {#hide_dots=} or {#hide_lines=} instead.
53
53
  #
54
+ # @rbs *args: untyped
54
55
  # @rbs return: void
55
56
  def initialize(*args)
56
57
  raise ArgumentError, 'Wrong number of arguments' if args.length > 2
@@ -74,6 +75,7 @@ class Gruff::Line < Gruff::Base
74
75
  # Set a value for a baseline reference line..
75
76
  #
76
77
  # @rbs new_value: Float | Integer
78
+ # @rbs return: Float | Integer
77
79
  def baseline_value=(new_value)
78
80
  @reference_lines[:baseline] ||= {}
79
81
  @reference_lines[:baseline][:value] = new_value
@@ -87,6 +89,7 @@ class Gruff::Line < Gruff::Base
87
89
  end
88
90
 
89
91
  # @rbs new_value: Float | Integer
92
+ # @rbs return: Float | Integer
90
93
  def baseline_color=(new_value)
91
94
  @reference_lines[:baseline] ||= {}
92
95
  @reference_lines[:baseline][:color] = new_value
@@ -115,6 +118,7 @@ class Gruff::Line < Gruff::Base
115
118
  #
116
119
  # @example
117
120
  # data("Bart S.", [95, 45, 78, 89, 88, 76], '#ffcc00')
121
+ # @rbs return: void
118
122
  def data(name, data_points = [], color = nil)
119
123
  store.add(name, nil, data_points, color)
120
124
  end
@@ -158,6 +162,7 @@ class Gruff::Line < Gruff::Base
158
162
  # @rbs x_data_points: Array[nil | Float | Integer] | Array[[nil | Float | Integer, nil | Float | Integer]] | nil
159
163
  # @rbs y_data_points: Array[nil | Float | Integer] | nil | String
160
164
  # @rbs color: String
165
+ # @rbs return: void
161
166
  def dataxy(name, x_data_points = [], y_data_points = [], color = nil)
162
167
  # make sure it's an array
163
168
  x_data_points = Array(x_data_points)
@@ -179,10 +184,12 @@ class Gruff::Line < Gruff::Base
179
184
 
180
185
  private
181
186
 
187
+ # @rbs return: void
182
188
  def initialize_store
183
189
  @store = Gruff::Store.new(Gruff::Store::XYData)
184
190
  end
185
191
 
192
+ # @rbs return: void
186
193
  def initialize_attributes
187
194
  super
188
195
  @reference_lines = {}
@@ -201,22 +208,33 @@ private
201
208
  @show_vertical_markers = false
202
209
  end
203
210
 
211
+ # @rbs reference_line: Hash[Symbol, untyped]
212
+ # @rbs left: Float | Integer
213
+ # @rbs right: Float | Integer
214
+ # @rbs top: Float | Integer
215
+ # @rbs bottom: Float | Integer
216
+ # @rbs return: void
204
217
  def draw_reference_line(reference_line, left, right, top, bottom)
205
218
  color = reference_line[:color] || @reference_line_default_color
206
219
  width = reference_line[:width] || @reference_line_default_width
207
220
  Gruff::Renderer::DashLine.new(renderer, color: color, width: width).render(left, top, right, bottom)
208
221
  end
209
222
 
223
+ # @rbs reference_line: Hash[Symbol, untyped]
224
+ # @rbs return: void
210
225
  def draw_horizontal_reference_line(reference_line)
211
226
  level = @graph_top + (@graph_height - (reference_line[:norm_value] * @graph_height))
212
227
  draw_reference_line(reference_line, @graph_left, @graph_left + @graph_width, level, level)
213
228
  end
214
229
 
230
+ # @rbs reference_line: Hash[Symbol, untyped]
231
+ # @rbs return: void
215
232
  def draw_vertical_reference_line(reference_line)
216
233
  index = @graph_left + (@x_increment * reference_line[:index])
217
234
  draw_reference_line(reference_line, index, index, @graph_top, @graph_top + @graph_height)
218
235
  end
219
236
 
237
+ # @rbs return: void
220
238
  def draw_graph
221
239
  # Check to see if more than one datapoint was given. NaN can result otherwise.
222
240
  @x_increment = column_count > 1 ? @graph_width / (column_count - 1) : @graph_width
@@ -268,6 +286,7 @@ private
268
286
  end
269
287
  end
270
288
 
289
+ # @rbs return: void
271
290
  def setup_data
272
291
  # Update the global min/max values for the x data
273
292
  @maximum_x_value = (@maximum_x_value || store.max_x).to_f
@@ -290,11 +309,13 @@ private
290
309
  super
291
310
  end
292
311
 
312
+ # @rbs return: void
293
313
  def setup_drawing
294
314
  @marker_x_count ||= column_count - 1
295
315
  super
296
316
  end
297
317
 
318
+ # @rbs return: void
298
319
  def normalize
299
320
  return unless data_given?
300
321
 
@@ -309,6 +330,7 @@ private
309
330
  end
310
331
  end
311
332
 
333
+ # @rbs return: void
312
334
  def draw_line_markers
313
335
  # do all of the stuff for the horizontal lines on the y-axis
314
336
  super
@@ -320,6 +342,10 @@ private
320
342
  end
321
343
  end
322
344
 
345
+ # @rbs x_data: Float | Integer | nil
346
+ # @rbs new_x: Float | Integer
347
+ # @rbs index: Integer
348
+ # @rbs return: void
323
349
  def draw_label_for_x_data(x_data, new_x, index)
324
350
  if x_data.nil?
325
351
  draw_label(new_x, index)
@@ -330,6 +356,8 @@ private
330
356
  end
331
357
  end
332
358
 
359
+ # @rbs data_row: Gruff::Store::XYData
360
+ # @rbs return: bool
333
361
  def contains_one_point_only?(data_row)
334
362
  data_row.y_points.compact.count == 1
335
363
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rbs_inline: enabled
2
3
 
3
4
  #
4
5
  # Makes a small bar graph suitable for display at 200px or even smaller.
@@ -17,6 +18,7 @@ private
17
18
 
18
19
  include Gruff::Mini::Legend
19
20
 
21
+ # @rbs return: void
20
22
  def initialize_attributes
21
23
  super
22
24
 
@@ -30,11 +32,13 @@ private
30
32
  @minimum_value = 0.0
31
33
  end
32
34
 
35
+ # @rbs return: void
33
36
  def setup_data
34
37
  expand_canvas_for_vertical_legend # steep:ignore
35
38
  super
36
39
  end
37
40
 
41
+ # @rbs return: void
38
42
  def draw_graph
39
43
  super
40
44
  draw_vertical_legend # steep:ignore
@@ -1,10 +1,13 @@
1
1
  # frozen_string_literal: true
2
+ # rbs_inline: enabled
2
3
 
3
4
  # A module to handle the small legend.
4
5
  # @private
5
6
  module Gruff::Mini::Legend
6
- attr_accessor :hide_mini_legend, :legend_position
7
+ attr_accessor :hide_mini_legend #: bool
8
+ attr_accessor :legend_position #: Symbol
7
9
 
10
+ # @rbs return: void
8
11
  def initialize(*)
9
12
  @hide_mini_legend = false
10
13
  @legend_position = nil
@@ -12,6 +15,7 @@ module Gruff::Mini::Legend
12
15
  end
13
16
 
14
17
  # The canvas needs to be bigger so we can put the legend beneath it.
18
+ # @rbs return: Gruff::Renderer
15
19
  def expand_canvas_for_vertical_legend
16
20
  # steep:ignore:start
17
21
 
@@ -38,10 +42,12 @@ module Gruff::Mini::Legend
38
42
  # steep:ignore:end
39
43
  end
40
44
 
45
+ # @rbs return: Float
41
46
  def calculate_line_height
42
47
  calculate_caps_height(@legend_font) * 1.7 # steep:ignore
43
48
  end
44
49
 
50
+ # @rbs return: Float
45
51
  def calculate_legend_width
46
52
  # steep:ignore:start
47
53
  width = @legend_labels.map { |label| calculate_width(@legend_font, label) }.max
@@ -50,6 +56,7 @@ module Gruff::Mini::Legend
50
56
  end
51
57
 
52
58
  # Draw the legend beneath the existing graph.
59
+ # @rbs return: void
53
60
  def draw_vertical_legend
54
61
  # steep:ignore:start
55
62
  return if @hide_mini_legend
@@ -87,6 +94,9 @@ module Gruff::Mini::Legend
87
94
  end
88
95
 
89
96
  # Shorten long labels so they will fit on the canvas.
97
+ # @rbs label: String | Symbol
98
+ # @rbs x_offset: Float | Integer
99
+ # @rbs return: String
90
100
  def truncate_legend_label(label, x_offset)
91
101
  # steep:ignore:start
92
102
  truncated_label = label.to_s
@@ -95,13 +105,15 @@ module Gruff::Mini::Legend
95
105
  font.size = scale(font.size)
96
106
  max_width = @columns - scale(x_offset) - @right_margin
97
107
  while calculate_width(font, "#{truncated_label}...") > max_width && truncated_label.length > 1
98
- truncated_label = truncated_label[0..truncated_label.length - 2]
108
+ truncated_label = truncated_label[0..(truncated_label.length - 2)]
99
109
  end
100
110
  truncated_label + (truncated_label.length < label.to_s.length ? '...' : '')
101
111
  # steep:ignore:end
102
112
  end
103
113
 
114
+ # @rbs value: Float | Integer
115
+ # @rbs return: Float
104
116
  def scale(value)
105
- value * @scale
117
+ (value.to_f * @scale).to_f
106
118
  end
107
119
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rbs_inline: enabled
2
3
 
3
4
  #
4
5
  # Makes a small pie graph suitable for display at 200px or even smaller.
@@ -16,6 +17,7 @@ private
16
17
 
17
18
  include Gruff::Mini::Legend
18
19
 
20
+ # @rbs return: void
19
21
  def initialize_attributes
20
22
  super
21
23
 
@@ -27,11 +29,13 @@ private
27
29
  @legend_font.size = 50.0
28
30
  end
29
31
 
32
+ # @rbs return: void
30
33
  def setup_data
31
34
  expand_canvas_for_vertical_legend # steep:ignore
32
35
  super
33
36
  end
34
37
 
38
+ # @rbs return: void
35
39
  def draw_graph
36
40
  super
37
41
  draw_vertical_legend # steep:ignore
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rbs_inline: enabled
2
3
 
3
4
  #
4
5
  # Makes a small side bar graph suitable for display at 200px or even smaller.
@@ -24,6 +25,7 @@ private
24
25
 
25
26
  include Gruff::Mini::Legend
26
27
 
28
+ # @rbs return: void
27
29
  def initialize_attributes
28
30
  super
29
31
  @hide_legend = true
@@ -34,11 +36,13 @@ private
34
36
  @legend_font.size = 50.0
35
37
  end
36
38
 
39
+ # @rbs return: void
37
40
  def setup_data
38
41
  expand_canvas_for_vertical_legend # steep:ignore
39
42
  super
40
43
  end
41
44
 
45
+ # @rbs return: void
42
46
  def draw_graph
43
47
  super
44
48
  draw_vertical_legend # steep:ignore
data/lib/gruff/net.rb CHANGED
@@ -34,6 +34,7 @@ class Gruff::Net < Gruff::Base
34
34
 
35
35
  private
36
36
 
37
+ # @rbs return: void
37
38
  def initialize_attributes
38
39
  super
39
40
 
@@ -45,11 +46,13 @@ private
45
46
  @marker_font.bold = true
46
47
  end
47
48
 
49
+ # @rbs return: void
48
50
  def setup_drawing
49
51
  @center_labels_over_point = false
50
52
  super
51
53
  end
52
54
 
55
+ # @rbs return: void
53
56
  def setup_graph_measurements
54
57
  super
55
58
 
@@ -60,6 +63,7 @@ private
60
63
  @center_y = @graph_top + (@graph_height / 2.0) + 10
61
64
  end
62
65
 
66
+ # @rbs return: void
63
67
  def draw_graph
64
68
  store.norm_data.each do |data_row|
65
69
  poly_points = []
@@ -94,11 +98,12 @@ private
94
98
  end
95
99
 
96
100
  # the lines connecting in the center, with the first line vertical
101
+ # @rbs return: void
97
102
  def draw_line_markers
98
103
  return if @hide_line_markers
99
104
 
100
105
  # Draw horizontal line markers and annotate with numbers
101
- (0..column_count - 1).each do |index|
106
+ (0..(column_count - 1)).each do |index|
102
107
  rad_pos = index * Math::PI * 2 / column_count
103
108
 
104
109
  Gruff::Renderer::Line.new(renderer, color: @marker_color)
@@ -114,6 +119,7 @@ private
114
119
  # @rbs angle: Float | Integer
115
120
  # @rbs radius: Float
116
121
  # @rbs amount: String | Integer
122
+ # @rbs return: void
117
123
  def draw_label(center_x, center_y, angle, radius, amount)
118
124
  x_offset = center_x # + 15 # The label points need to be tweaked slightly
119
125
  y_offset = center_y # + 0 # This one doesn't though
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rbs_inline: enabled
2
3
 
3
4
  # @private
4
5
  module Magick
@@ -6,6 +7,14 @@ module Magick
6
7
  module GruffAnnotate
7
8
  refine Draw do
8
9
  # Additional method to scale annotation text since Draw.scale doesn't.
10
+ # @rbs img: untyped
11
+ # @rbs width: Integer
12
+ # @rbs height: Integer
13
+ # @rbs x: Integer
14
+ # @rbs y: Integer
15
+ # @rbs text: String
16
+ # @rbs scale: Float
17
+ # @rbs return: void
9
18
  def annotate_scaled(img, width, height, x, y, text, scale)
10
19
  scaled_width = [(width * scale), 1].max
11
20
  scaled_height = [(height * scale), 1].max
@@ -22,6 +31,8 @@ module Magick
22
31
  # FIXME(uwe): We should NOT need to implement this method.
23
32
  # Remove this method as soon as RMagick4J Issue #16 is fixed.
24
33
  # https://github.com/Serabe/RMagick4J/issues/16
34
+ # @rbs fill: String | Symbol
35
+ # @rbs return: void
25
36
  def fill=(fill)
26
37
  fill = { white: '#FFFFFF' }[fill.to_sym] || fill
27
38
  @draw.fill = Magick4J.ColorDatabase.query_default(fill)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rbs_inline: enabled
2
3
 
3
4
  # @private
4
5
  module String::GruffCommify
@@ -7,6 +8,8 @@ module String::GruffCommify
7
8
 
8
9
  refine String do
9
10
  # Taken from http://codesnippets.joyent.com/posts/show/330
11
+ # @rbs delimiter: String
12
+ # @rbs return: String
10
13
  def commify(delimiter = THOUSAND_SEPARATOR)
11
14
  gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}") # steep:ignore
12
15
  end
data/lib/gruff/pie.rb CHANGED
@@ -41,6 +41,8 @@ class Gruff::Pie < Gruff::Base
41
41
  # Can be used to make the pie start cutting slices at the top (-90.0)
42
42
  # or at another angle. Default is +-90.0+, which starts at 3 o'clock.
43
43
  # @deprecated Please use {#start_degree=} instead.
44
+ # @rbs value: Float | Integer
45
+ # @rbs return: void
44
46
  def zero_degree=(value)
45
47
  warn '#zero_degree= is deprecated. Please use `start_degree` attribute instead'
46
48
  @start_degree = value
@@ -48,6 +50,7 @@ class Gruff::Pie < Gruff::Base
48
50
 
49
51
  private
50
52
 
53
+ # @rbs return: void
51
54
  def initialize_attributes
52
55
  super
53
56
  @start_degree = -90.0
@@ -63,11 +66,13 @@ private
63
66
  @label_formatting = ->(value, percentage) { @show_values_as_labels ? value.to_s : "#{percentage}%" }
64
67
  end
65
68
 
69
+ # @rbs return: void
66
70
  def setup_drawing
67
71
  @center_labels_over_point = false
68
72
  super
69
73
  end
70
74
 
75
+ # @rbs return: void
71
76
  def draw_graph
72
77
  slices.each do |slice|
73
78
  if slice.value > 0
@@ -79,6 +84,7 @@ private
79
84
  end
80
85
  end
81
86
 
87
+ # @rbs return: Array[Gruff::Pie::PieSlice]
82
88
  def slices
83
89
  @slices ||= begin
84
90
  slices = store.data.map { |data| Gruff::Pie::PieSlice.new(data.label, data.points.first, data.color) }
@@ -93,6 +99,7 @@ private
93
99
  # General Helper Methods
94
100
 
95
101
  # @rbs degrees: Float | Integer
102
+ # @rbs return: void
96
103
  def update_chart_degrees_with(degrees)
97
104
  @chart_degrees = chart_degrees + degrees
98
105
  end
@@ -150,6 +157,7 @@ private
150
157
  # Label-Related Methods
151
158
 
152
159
  # @rbs slice: Gruff::Pie::PieSlice
160
+ # @rbs return: void
153
161
  def process_label_for(slice)
154
162
  if slice.percentage >= @hide_labels_less_than
155
163
  x, y = label_coordinates_for slice
@@ -16,6 +16,7 @@ module Gruff
16
16
  end
17
17
 
18
18
  # @rbs points: Array[Float | Integer]
19
+ # @rbs return: void
19
20
  def render(points)
20
21
  @renderer.draw.push
21
22
  @renderer.draw.stroke_width(@width)
@@ -21,6 +21,7 @@ module Gruff
21
21
  # @rbs origin_y: Float | Integer
22
22
  # @rbs perim_x: Float | Integer
23
23
  # @rbs perim_y: Float | Integer
24
+ # @rbs return: void
24
25
  def render(origin_x, origin_y, perim_x, perim_y)
25
26
  @renderer.draw.push
26
27
  @renderer.draw.stroke_width(@width)
@@ -21,6 +21,7 @@ module Gruff
21
21
  # @rbs start_y: Float | Integer
22
22
  # @rbs end_x: Float | Integer
23
23
  # @rbs end_y: Float | Integer
24
+ # @rbs return: void
24
25
  def render(start_x, start_y, end_x, end_y)
25
26
  @renderer.draw.push
26
27
  @renderer.draw.stroke_color(@color)
@@ -22,6 +22,7 @@ module Gruff
22
22
  # @rbs new_x: Float | Integer
23
23
  # @rbs new_y: Float | Integer
24
24
  # @rbs radius: Float | Integer
25
+ # @rbs return: void
25
26
  def render(new_x, new_y, radius)
26
27
  @renderer.draw.push
27
28
  @renderer.draw.stroke_width(@width)
@@ -41,10 +42,18 @@ module Gruff
41
42
 
42
43
  private
43
44
 
45
+ # @rbs new_x: Float | Integer
46
+ # @rbs new_y: Float | Integer
47
+ # @rbs radius: Float | Integer
48
+ # @rbs return: void
44
49
  def circle(new_x, new_y, radius)
45
50
  @renderer.draw.circle(new_x, new_y, new_x - radius, new_y)
46
51
  end
47
52
 
53
+ # @rbs new_x: Float | Integer
54
+ # @rbs new_y: Float | Integer
55
+ # @rbs radius: Float | Integer
56
+ # @rbs return: void
48
57
  def square(new_x, new_y, radius)
49
58
  corner1 = new_x - radius
50
59
  corner2 = new_y - radius
@@ -53,6 +62,10 @@ module Gruff
53
62
  @renderer.draw.rectangle(corner1, corner2, corner3, corner4)
54
63
  end
55
64
 
65
+ # @rbs new_x: Float | Integer
66
+ # @rbs new_y: Float | Integer
67
+ # @rbs radius: Float | Integer
68
+ # @rbs return: void
56
69
  def diamond(new_x, new_y, radius)
57
70
  polygon = []
58
71
  polygon += [new_x - radius, new_y]
@@ -21,6 +21,7 @@ module Gruff
21
21
  # @rbs height: Float | Integer
22
22
  # @rbs arc_start: Float | Integer
23
23
  # @rbs arc_end: Float | Integer
24
+ # @rbs return: void
24
25
  def render(origin_x, origin_y, width, height, arc_start, arc_end)
25
26
  @renderer.draw.push
26
27
  @renderer.draw.stroke_width(@width)
@@ -21,12 +21,19 @@ module Gruff
21
21
  # @rbs start_y: Float | Integer
22
22
  # @rbs end_x: Float | Integer
23
23
  # @rbs end_y: Float | Integer
24
+ # @rbs return: void
24
25
  def render(start_x, start_y, end_x, end_y)
25
26
  render_line(start_x, start_y, end_x, end_y, @color)
26
27
  end
27
28
 
28
29
  private
29
30
 
31
+ # @rbs start_x: Float | Integer
32
+ # @rbs start_y: Float | Integer
33
+ # @rbs end_x: Float | Integer
34
+ # @rbs end_y: Float | Integer
35
+ # @rbs color: String
36
+ # @rbs return: void
30
37
  def render_line(start_x, start_y, end_x, end_y, color)
31
38
  # FIXME(uwe): Workaround for Issue #66
32
39
  # https://github.com/topfunky/gruff/issues/66
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # rbs_inline: enabled
2
3
 
3
4
  module Gruff
4
5
  # @private
@@ -16,6 +17,7 @@ module Gruff
16
17
  end
17
18
 
18
19
  # @rbs points: Array[Float | Integer]
20
+ # @rbs return: void
19
21
  def render(points)
20
22
  @renderer.draw.push
21
23
  @renderer.draw.stroke_width(@width)
@@ -18,6 +18,7 @@ module Gruff
18
18
  end
19
19
 
20
20
  # @rbs points: Array[Float | Integer]
21
+ # @rbs return: void
21
22
  def render(points)
22
23
  @renderer.draw.push
23
24
  @renderer.draw.stroke_linejoin(@linejoin)
@@ -21,6 +21,7 @@ module Gruff
21
21
  # @rbs upper_left_y: Float | Integer
22
22
  # @rbs lower_right_x: Float | Integer
23
23
  # @rbs lower_right_y: Float | Integer
24
+ # @rbs return: void
24
25
  def render(upper_left_x, upper_left_y, lower_right_x, lower_right_y)
25
26
  @renderer.draw.push
26
27
  @renderer.draw.stroke_width(@width)
@@ -6,9 +6,9 @@ module Gruff
6
6
  # @private
7
7
  class Renderer
8
8
  attr_accessor :text_renderers #: Array[Gruff::Renderer::Text]
9
- attr_reader :draw
10
- attr_reader :image
11
- attr_reader :scale #: real
9
+ attr_reader :draw #: untyped
10
+ attr_reader :image #: untyped
11
+ attr_reader :scale #: Float | Integer
12
12
 
13
13
  # @rbs columns: Integer
14
14
  # @rbs rows: Integer
@@ -24,6 +24,7 @@ module Gruff
24
24
  @image = background(columns, rows, scale, theme_options)
25
25
  end
26
26
 
27
+ # @rbs return: void
27
28
  def finish
28
29
  @draw.draw(@image)
29
30
 
@@ -34,12 +35,18 @@ module Gruff
34
35
 
35
36
  # @rbs columns: Integer
36
37
  # @rbs rows: Integer
38
+ # @rbs return: void
37
39
  def transparent_background(columns, rows)
38
40
  @image = render_transparent_background(columns, rows)
39
41
  end
40
42
 
41
43
  private
42
44
 
45
+ # @rbs columns: Integer
46
+ # @rbs rows: Integer
47
+ # @rbs scale: Float | Integer
48
+ # @rbs theme_options: ::Hash[Symbol, untyped]
49
+ # @rbs return: void
43
50
  def background(columns, rows, scale, theme_options)
44
51
  return image_background(scale, *theme_options[:background_image]) if theme_options[:background_image] # steep:ignore
45
52
 
@@ -54,6 +61,9 @@ module Gruff
54
61
  end
55
62
 
56
63
  # Use with a theme to use an image (800x600 original) background.
64
+ # @rbs scale: Float | Integer
65
+ # @rbs image_path: String
66
+ # @rbs return: untyped
57
67
  def image_background(scale, image_path)
58
68
  image = Magick::Image.read(image_path)
59
69
  if scale != 1.0
@@ -63,6 +73,10 @@ module Gruff
63
73
  end
64
74
 
65
75
  # Make a new image at the current size with a solid +color+.
76
+ # @rbs columns: Integer
77
+ # @rbs rows: Integer
78
+ # @rbs color: String
79
+ # @rbs return: void
66
80
  def solid_background(columns, rows, color)
67
81
  Magick::Image.new(columns, rows) do |img|
68
82
  img.background_color = color
@@ -70,6 +84,12 @@ module Gruff
70
84
  end
71
85
 
72
86
  # Use with a theme definition method to draw a gradated background.
87
+ # @rbs columns: Integer
88
+ # @rbs rows: Integer
89
+ # @rbs top_color: String
90
+ # @rbs bottom_color: String
91
+ # @rbs direct: Symbol
92
+ # @rbs return: void
73
93
  def gradated_background(columns, rows, top_color, bottom_color, direct = :top_bottom)
74
94
  gradient_fill = begin
75
95
  case direct
@@ -105,6 +125,9 @@ module Gruff
105
125
  end
106
126
 
107
127
  # Use with a theme to make a transparent background
128
+ # @rbs columns: Integer
129
+ # @rbs rows: Integer
130
+ # @rbs return: void
108
131
  def render_transparent_background(columns, rows)
109
132
  Magick::Image.new(columns, rows) do |img|
110
133
  img.background_color = 'transparent'
@@ -11,6 +11,7 @@ module Gruff
11
11
  # @rbs text: String
12
12
  # @rbs font: Gruff::Font
13
13
  # @rbs rotation: Float | Integer
14
+ # @rbs return: void
14
15
  def initialize(renderer, text, font:, rotation: nil)
15
16
  @renderer = renderer
16
17
  @text = text.to_s
@@ -19,13 +20,14 @@ module Gruff
19
20
  end
20
21
 
21
22
  attr_reader :width, :height, :x, :y #: Float | Integer
22
- attr_reader :gravity
23
+ attr_reader :gravity #: untyped
23
24
 
24
25
  # @rbs width: Float | Integer
25
26
  # @rbs height: Float | Integer
26
27
  # @rbs x: Float | Integer
27
28
  # @rbs y: Float | Integer
28
29
  # @rbs gravity: untyped
30
+ # @rbs return: void
29
31
  def add_to_render_queue(width, height, x, y, gravity = Magick::NorthGravity)
30
32
  @width = width
31
33
  @height = height
@@ -41,6 +43,7 @@ module Gruff
41
43
  # @rbs x: Float | Integer
42
44
  # @rbs y: Float | Integer
43
45
  # @rbs gravity: untyped
46
+ # @rbs return: void
44
47
  def render(width, height, x, y, gravity = Magick::NorthGravity)
45
48
  @renderer.draw.push
46
49
  @renderer.draw.rotation = @rotation if @rotation
@@ -58,6 +61,7 @@ module Gruff
58
61
  @renderer.draw.pop
59
62
  end
60
63
 
64
+ # @rbs return: untyped
61
65
  def metrics
62
66
  @renderer.draw.push
63
67
  @renderer.draw.font = @font.file_path