gruff 0.30.0 → 0.31.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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +24 -0
  3. data/.rubocop.yml +4 -0
  4. data/.rubocop_todo.yml +0 -6
  5. data/CHANGELOG.md +4 -0
  6. data/lib/gruff/accumulator_bar.rb +1 -0
  7. data/lib/gruff/area.rb +2 -0
  8. data/lib/gruff/bar.rb +5 -0
  9. data/lib/gruff/base.rb +59 -2
  10. data/lib/gruff/bezier.rb +1 -0
  11. data/lib/gruff/box.rb +8 -0
  12. data/lib/gruff/bubble.rb +4 -0
  13. data/lib/gruff/bullet.rb +4 -0
  14. data/lib/gruff/candlestick.rb +17 -5
  15. data/lib/gruff/dot.rb +4 -0
  16. data/lib/gruff/font.rb +2 -0
  17. data/lib/gruff/helper/bar_value_label.rb +2 -0
  18. data/lib/gruff/helper/stacked_mixin.rb +1 -0
  19. data/lib/gruff/histogram.rb +3 -0
  20. data/lib/gruff/line.rb +28 -0
  21. data/lib/gruff/mini/bar.rb +3 -0
  22. data/lib/gruff/mini/legend.rb +13 -2
  23. data/lib/gruff/mini/pie.rb +3 -0
  24. data/lib/gruff/mini/side_bar.rb +3 -0
  25. data/lib/gruff/net.rb +6 -0
  26. data/lib/gruff/patch/rmagick.rb +10 -0
  27. data/lib/gruff/patch/string.rb +2 -0
  28. data/lib/gruff/pie.rb +8 -0
  29. data/lib/gruff/renderer/bezier.rb +1 -0
  30. data/lib/gruff/renderer/circle.rb +1 -0
  31. data/lib/gruff/renderer/dash_line.rb +1 -0
  32. data/lib/gruff/renderer/dot.rb +13 -0
  33. data/lib/gruff/renderer/ellipse.rb +1 -0
  34. data/lib/gruff/renderer/line.rb +7 -0
  35. data/lib/gruff/renderer/polygon.rb +1 -0
  36. data/lib/gruff/renderer/polyline.rb +1 -0
  37. data/lib/gruff/renderer/rectangle.rb +1 -0
  38. data/lib/gruff/renderer/renderer.rb +26 -3
  39. data/lib/gruff/renderer/text.rb +5 -1
  40. data/lib/gruff/scatter.rb +17 -0
  41. data/lib/gruff/side_bar.rb +9 -0
  42. data/lib/gruff/side_stacked_bar.rb +3 -0
  43. data/lib/gruff/spider.rb +26 -2
  44. data/lib/gruff/stacked_area.rb +5 -0
  45. data/lib/gruff/stacked_bar.rb +5 -0
  46. data/lib/gruff/store/basic_data.rb +4 -0
  47. data/lib/gruff/store/store.rb +8 -0
  48. data/lib/gruff/store/xy_data.rb +2 -0
  49. data/lib/gruff/store/xy_pointsizes_data.rb +2 -0
  50. data/lib/gruff/version.rb +1 -1
  51. data/lib/gruff.rb +2 -0
  52. data/sig/generated/gruff/accumulator_bar.rbs +2 -1
  53. data/sig/generated/gruff/area.rbs +4 -2
  54. data/sig/generated/gruff/bar.rbs +10 -5
  55. data/sig/generated/gruff/base.rbs +113 -53
  56. data/sig/generated/gruff/bezier.rbs +2 -1
  57. data/sig/generated/gruff/box.rbs +13 -5
  58. data/sig/generated/gruff/bubble.rbs +8 -4
  59. data/sig/generated/gruff/bullet.rbs +8 -4
  60. data/sig/generated/gruff/candlestick.rbs +24 -12
  61. data/sig/generated/gruff/dot.rbs +8 -4
  62. data/sig/generated/gruff/font.rbs +3 -1
  63. data/sig/generated/gruff/helper/bar_value_label.rbs +4 -2
  64. data/sig/generated/gruff/helper/stacked_mixin.rbs +2 -1
  65. data/sig/generated/gruff/histogram.rbs +6 -3
  66. data/sig/generated/gruff/line.rbs +44 -16
  67. data/sig/generated/gruff/mini/bar.rbs +6 -3
  68. data/sig/generated/gruff/mini/legend.rbs +20 -10
  69. data/sig/generated/gruff/mini/pie.rbs +6 -3
  70. data/sig/generated/gruff/mini/side_bar.rbs +6 -3
  71. data/sig/generated/gruff/net.rbs +12 -6
  72. data/sig/generated/gruff/patch/rmagick.rbs +12 -2
  73. data/sig/generated/gruff/patch/string.rbs +3 -1
  74. data/sig/generated/gruff/pie.rbs +15 -7
  75. data/sig/generated/gruff/renderer/bezier.rbs +2 -1
  76. data/sig/generated/gruff/renderer/circle.rbs +2 -1
  77. data/sig/generated/gruff/renderer/dash_line.rbs +2 -1
  78. data/sig/generated/gruff/renderer/dot.rbs +17 -4
  79. data/sig/generated/gruff/renderer/ellipse.rbs +2 -1
  80. data/sig/generated/gruff/renderer/line.rbs +9 -2
  81. data/sig/generated/gruff/renderer/polygon.rbs +2 -1
  82. data/sig/generated/gruff/renderer/polyline.rbs +2 -1
  83. data/sig/generated/gruff/renderer/rectangle.rbs +2 -1
  84. data/sig/generated/gruff/renderer/renderer.rbs +31 -8
  85. data/sig/generated/gruff/renderer/text.rbs +7 -3
  86. data/sig/generated/gruff/scatter.rbs +30 -13
  87. data/sig/generated/gruff/side_bar.rbs +15 -6
  88. data/sig/generated/gruff/side_stacked_bar.rbs +6 -3
  89. data/sig/generated/gruff/spider.rbs +35 -11
  90. data/sig/generated/gruff/stacked_area.rbs +9 -4
  91. data/sig/generated/gruff/stacked_bar.rbs +10 -5
  92. data/sig/generated/gruff/store/basic_data.rbs +8 -4
  93. data/sig/generated/gruff/store/store.rbs +12 -4
  94. data/sig/generated/gruff/store/xy_data.rbs +4 -2
  95. data/sig/generated/gruff/store/xy_pointsizes_data.rbs +4 -2
  96. data/sig/generated/gruff.rbs +3 -1
  97. metadata +3 -2
@@ -36,6 +36,7 @@ class Gruff::Candlestick < Gruff::Base
36
36
  # Default value is +0.9+.
37
37
  #
38
38
  # @rbs space_percent: Float | Integer
39
+ # @rbs return: void
39
40
  def spacing_factor=(space_percent)
40
41
  raise ArgumentError, 'spacing_factor must be between 0.00 and 1.00' if (space_percent < 0) || (space_percent > 1)
41
42
 
@@ -43,11 +44,13 @@ class Gruff::Candlestick < Gruff::Base
43
44
  end
44
45
 
45
46
  # The sort feature is not supported in this graph.
47
+ # @rbs return: void
46
48
  def sort=(_value)
47
49
  raise 'Not support #sort= in Gruff::Candlestick'
48
50
  end
49
51
 
50
52
  # The sort feature is not supported in this graph.
53
+ # @rbs return: void
51
54
  def sorted_drawing=(_value)
52
55
  raise 'Not support #sorted_drawing= in Gruff::Candlestick'
53
56
  end
@@ -56,12 +59,14 @@ class Gruff::Candlestick < Gruff::Base
56
59
  # @rbs high: Float | Integer
57
60
  # @rbs open: Float | Integer
58
61
  # @rbs close: Float | Integer
62
+ # @rbs return: void
59
63
  def data(low:, high:, open:, close:)
60
64
  super('', [low, high, open, close])
61
65
  end
62
66
 
63
67
  private
64
68
 
69
+ # @rbs return: void
65
70
  def initialize_attributes
66
71
  super
67
72
  @show_vertical_markers = false
@@ -74,6 +79,7 @@ private
74
79
  @hide_legend = true
75
80
  end
76
81
 
82
+ # @rbs return: void
77
83
  def draw_graph
78
84
  # Setup the BarConversion Object
79
85
  conversion = Gruff::BarConversion.new(
@@ -106,6 +112,7 @@ private
106
112
  end
107
113
  end
108
114
 
115
+ # @rbs return: Array[Gruff::Candlestick::CandlestickData]
109
116
  def normalized_candlesticks
110
117
  @normalized_candlesticks ||= store.norm_data.map { |data| Gruff::Candlestick::CandlestickData.new(*data.points) } # steep:ignore
111
118
  end
@@ -127,11 +134,16 @@ private
127
134
 
128
135
  # @private
129
136
  class CandlestickData
130
- attr_accessor :low
131
- attr_accessor :high
132
- attr_accessor :open
133
- attr_accessor :close
134
-
137
+ attr_accessor :low #: Float | Integer
138
+ attr_accessor :high #: Float | Integer
139
+ attr_accessor :open #: Float | Integer
140
+ attr_accessor :close #: Float | Integer
141
+
142
+ # @rbs low: Float | Integer
143
+ # @rbs high: Float | Integer
144
+ # @rbs open: Float | Integer
145
+ # @rbs close: Float | Integer
146
+ # @rbs return: void
135
147
  def initialize(low, high, open, close)
136
148
  @low = low.to_f
137
149
  @high = high.to_f
data/lib/gruff/dot.rb CHANGED
@@ -29,6 +29,7 @@ class Gruff::Dot < Gruff::Base
29
29
 
30
30
  private
31
31
 
32
+ # @rbs return: void
32
33
  def initialize_attributes
33
34
  super
34
35
  @hide_labels = false
@@ -49,6 +50,7 @@ private
49
50
  @hide_line_markers && @x_axis_label.nil? && @legend_at_bottom == false
50
51
  end
51
52
 
53
+ # @rbs return: void
52
54
  def draw_graph
53
55
  # Setup spacing.
54
56
  #
@@ -76,6 +78,7 @@ private
76
78
  end
77
79
 
78
80
  # Instead of base class version, draws vertical background lines and label
81
+ # @rbs return: void
79
82
  def draw_line_markers
80
83
  return if @hide_line_markers
81
84
 
@@ -98,6 +101,7 @@ private
98
101
 
99
102
  # @rbs y_offset: Float | Integer
100
103
  # @rbs index: Integer
104
+ # @rbs return: void
101
105
  def draw_label(y_offset, index)
102
106
  draw_unique_label(index) do
103
107
  draw_label_at(@graph_left - @label_margin, 1.0, 0.0, y_offset, @labels[index], gravity: Magick::EastGravity)
data/lib/gruff/font.rb CHANGED
@@ -26,6 +26,7 @@ class Gruff::Font
26
26
  # @rbs size: Float | Integer
27
27
  # @rbs bold: bool
28
28
  # @rbs color: String
29
+ # @rbs return: void
29
30
  def initialize(path: nil, size: 20.0, bold: false, color: 'white')
30
31
  @path = path
31
32
  @bold = bold
@@ -36,6 +37,7 @@ class Gruff::Font
36
37
  # Get font weight.
37
38
  # @return [Magick::WeightType] font weight
38
39
  # TODO: type annotation of return value
40
+ # @rbs return: untyped
39
41
  def weight
40
42
  @bold ? Magick::BoldWeight : Magick::NormalWeight
41
43
  end
@@ -45,6 +45,7 @@ module Gruff::BarValueLabel
45
45
  # @rbs format: nil | String | Proc
46
46
  # @rbs proc_text_metrics: Proc
47
47
  # @rbs yields: (Float | Integer, Float | Integer, String, Float, Float) -> void
48
+ # @rbs return: void
48
49
  def prepare_rendering(format, proc_text_metrics)
49
50
  left_x, left_y, _right_x, _right_y = @coordinate
50
51
  val, metrics = Gruff::BarValueLabel.metrics(@value, format, proc_text_metrics)
@@ -59,6 +60,7 @@ module Gruff::BarValueLabel
59
60
  # @rbs format: nil | String | Proc
60
61
  # @rbs proc_text_metrics: Proc
61
62
  # @rbs yields: (Float | Integer, Float | Integer, String, Float, Float) -> void
63
+ # @rbs return: void
62
64
  def prepare_rendering(format, proc_text_metrics)
63
65
  left_x, left_y, right_x, _right_y = @coordinate
64
66
  val, metrics = Gruff::BarValueLabel.metrics(@value, format, proc_text_metrics)
@@ -7,6 +7,7 @@ module Gruff::Base::StackedMixin
7
7
  # Used by StackedBar and child classes.
8
8
  #
9
9
  # tsal: moved from Base 03 FEB 2007
10
+ # @rbs return: void
10
11
  def calculate_maximum_by_stack
11
12
  # steep:ignore:start
12
13
  # Get sum of each stack
@@ -35,12 +35,14 @@ class Gruff::Histogram < Gruff::Bar
35
35
  # @rbs name: String | Symbol
36
36
  # @rbs data_points: Array[Float | Integer] | nil
37
37
  # @rbs color: String
38
+ # @rbs return: void
38
39
  def data(name, data_points = [], color = nil)
39
40
  @data << [name, Array(data_points), color]
40
41
  end
41
42
 
42
43
  private
43
44
 
45
+ # @rbs return: void
44
46
  def initialize_attributes
45
47
  super
46
48
  @bin_width = 10
@@ -48,6 +50,7 @@ private
48
50
  @maximum_bin = nil
49
51
  end
50
52
 
53
+ # @rbs return: void
51
54
  def setup_data
52
55
  @data.each do |(name, data_points, color)|
53
56
  if data_points.empty?
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
@@ -18,6 +18,7 @@ private
18
18
 
19
19
  include Gruff::Mini::Legend
20
20
 
21
+ # @rbs return: void
21
22
  def initialize_attributes
22
23
  super
23
24
 
@@ -31,11 +32,13 @@ private
31
32
  @minimum_value = 0.0
32
33
  end
33
34
 
35
+ # @rbs return: void
34
36
  def setup_data
35
37
  expand_canvas_for_vertical_legend # steep:ignore
36
38
  super
37
39
  end
38
40
 
41
+ # @rbs return: void
39
42
  def draw_graph
40
43
  super
41
44
  draw_vertical_legend # steep:ignore
@@ -4,8 +4,10 @@
4
4
  # A module to handle the small legend.
5
5
  # @private
6
6
  module Gruff::Mini::Legend
7
- attr_accessor :hide_mini_legend, :legend_position
7
+ attr_accessor :hide_mini_legend #: bool
8
+ attr_accessor :legend_position #: Symbol
8
9
 
10
+ # @rbs return: void
9
11
  def initialize(*)
10
12
  @hide_mini_legend = false
11
13
  @legend_position = nil
@@ -13,6 +15,7 @@ module Gruff::Mini::Legend
13
15
  end
14
16
 
15
17
  # The canvas needs to be bigger so we can put the legend beneath it.
18
+ # @rbs return: Gruff::Renderer
16
19
  def expand_canvas_for_vertical_legend
17
20
  # steep:ignore:start
18
21
 
@@ -39,10 +42,12 @@ module Gruff::Mini::Legend
39
42
  # steep:ignore:end
40
43
  end
41
44
 
45
+ # @rbs return: Float
42
46
  def calculate_line_height
43
47
  calculate_caps_height(@legend_font) * 1.7 # steep:ignore
44
48
  end
45
49
 
50
+ # @rbs return: Float
46
51
  def calculate_legend_width
47
52
  # steep:ignore:start
48
53
  width = @legend_labels.map { |label| calculate_width(@legend_font, label) }.max
@@ -51,6 +56,7 @@ module Gruff::Mini::Legend
51
56
  end
52
57
 
53
58
  # Draw the legend beneath the existing graph.
59
+ # @rbs return: void
54
60
  def draw_vertical_legend
55
61
  # steep:ignore:start
56
62
  return if @hide_mini_legend
@@ -88,6 +94,9 @@ module Gruff::Mini::Legend
88
94
  end
89
95
 
90
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
91
100
  def truncate_legend_label(label, x_offset)
92
101
  # steep:ignore:start
93
102
  truncated_label = label.to_s
@@ -102,7 +111,9 @@ module Gruff::Mini::Legend
102
111
  # steep:ignore:end
103
112
  end
104
113
 
114
+ # @rbs value: Float | Integer
115
+ # @rbs return: Float
105
116
  def scale(value)
106
- value * @scale
117
+ (value.to_f * @scale).to_f
107
118
  end
108
119
  end
@@ -17,6 +17,7 @@ private
17
17
 
18
18
  include Gruff::Mini::Legend
19
19
 
20
+ # @rbs return: void
20
21
  def initialize_attributes
21
22
  super
22
23
 
@@ -28,11 +29,13 @@ private
28
29
  @legend_font.size = 50.0
29
30
  end
30
31
 
32
+ # @rbs return: void
31
33
  def setup_data
32
34
  expand_canvas_for_vertical_legend # steep:ignore
33
35
  super
34
36
  end
35
37
 
38
+ # @rbs return: void
36
39
  def draw_graph
37
40
  super
38
41
  draw_vertical_legend # steep:ignore
@@ -25,6 +25,7 @@ private
25
25
 
26
26
  include Gruff::Mini::Legend
27
27
 
28
+ # @rbs return: void
28
29
  def initialize_attributes
29
30
  super
30
31
  @hide_legend = true
@@ -35,11 +36,13 @@ private
35
36
  @legend_font.size = 50.0
36
37
  end
37
38
 
39
+ # @rbs return: void
38
40
  def setup_data
39
41
  expand_canvas_for_vertical_legend # steep:ignore
40
42
  super
41
43
  end
42
44
 
45
+ # @rbs return: void
43
46
  def draw_graph
44
47
  super
45
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,6 +98,7 @@ 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
 
@@ -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
@@ -7,6 +7,14 @@ module Magick
7
7
  module GruffAnnotate
8
8
  refine Draw do
9
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
10
18
  def annotate_scaled(img, width, height, x, y, text, scale)
11
19
  scaled_width = [(width * scale), 1].max
12
20
  scaled_height = [(height * scale), 1].max
@@ -23,6 +31,8 @@ module Magick
23
31
  # FIXME(uwe): We should NOT need to implement this method.
24
32
  # Remove this method as soon as RMagick4J Issue #16 is fixed.
25
33
  # https://github.com/Serabe/RMagick4J/issues/16
34
+ # @rbs fill: String | Symbol
35
+ # @rbs return: void
26
36
  def fill=(fill)
27
37
  fill = { white: '#FFFFFF' }[fill.to_sym] || fill
28
38
  @draw.fill = Magick4J.ColorDatabase.query_default(fill)
@@ -8,6 +8,8 @@ module String::GruffCommify
8
8
 
9
9
  refine String do
10
10
  # Taken from http://codesnippets.joyent.com/posts/show/330
11
+ # @rbs delimiter: String
12
+ # @rbs return: String
11
13
  def commify(delimiter = THOUSAND_SEPARATOR)
12
14
  gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}") # steep:ignore
13
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
@@ -17,6 +17,7 @@ module Gruff
17
17
  end
18
18
 
19
19
  # @rbs points: Array[Float | Integer]
20
+ # @rbs return: void
20
21
  def render(points)
21
22
  @renderer.draw.push
22
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)