gruff 0.28.0-java → 0.30.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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +6 -0
  3. data/.github/workflows/ci.yml +19 -26
  4. data/.rubocop.yml +15 -0
  5. data/.rubocop_todo.yml +11 -0
  6. data/CHANGELOG.md +9 -0
  7. data/Gemfile +2 -0
  8. data/gruff.gemspec +1 -0
  9. data/init.rb +1 -0
  10. data/lib/gruff/accumulator_bar.rb +1 -0
  11. data/lib/gruff/area.rb +2 -0
  12. data/lib/gruff/bar.rb +5 -0
  13. data/lib/gruff/base.rb +59 -2
  14. data/lib/gruff/bezier.rb +1 -0
  15. data/lib/gruff/box.rb +8 -0
  16. data/lib/gruff/bubble.rb +4 -0
  17. data/lib/gruff/bullet.rb +4 -0
  18. data/lib/gruff/candlestick.rb +20 -8
  19. data/lib/gruff/dot.rb +4 -0
  20. data/lib/gruff/font.rb +2 -0
  21. data/lib/gruff/helper/bar_value_label.rb +2 -0
  22. data/lib/gruff/helper/stacked_mixin.rb +1 -0
  23. data/lib/gruff/histogram.rb +3 -0
  24. data/lib/gruff/line.rb +29 -1
  25. data/lib/gruff/mini/bar.rb +4 -0
  26. data/lib/gruff/mini/legend.rb +15 -3
  27. data/lib/gruff/mini/pie.rb +4 -0
  28. data/lib/gruff/mini/side_bar.rb +4 -0
  29. data/lib/gruff/net.rb +7 -1
  30. data/lib/gruff/patch/rmagick.rb +11 -0
  31. data/lib/gruff/patch/string.rb +3 -0
  32. data/lib/gruff/pie.rb +8 -0
  33. data/lib/gruff/renderer/bezier.rb +1 -0
  34. data/lib/gruff/renderer/circle.rb +1 -0
  35. data/lib/gruff/renderer/dash_line.rb +1 -0
  36. data/lib/gruff/renderer/dot.rb +13 -0
  37. data/lib/gruff/renderer/ellipse.rb +1 -0
  38. data/lib/gruff/renderer/line.rb +7 -0
  39. data/lib/gruff/renderer/polygon.rb +2 -0
  40. data/lib/gruff/renderer/polyline.rb +1 -0
  41. data/lib/gruff/renderer/rectangle.rb +1 -0
  42. data/lib/gruff/renderer/renderer.rb +26 -3
  43. data/lib/gruff/renderer/text.rb +5 -1
  44. data/lib/gruff/scatter.rb +17 -0
  45. data/lib/gruff/side_bar.rb +9 -0
  46. data/lib/gruff/side_stacked_bar.rb +3 -0
  47. data/lib/gruff/spider.rb +26 -2
  48. data/lib/gruff/stacked_area.rb +5 -0
  49. data/lib/gruff/stacked_bar.rb +5 -0
  50. data/lib/gruff/store/basic_data.rb +4 -0
  51. data/lib/gruff/store/store.rb +8 -0
  52. data/lib/gruff/store/xy_data.rb +2 -0
  53. data/lib/gruff/store/xy_pointsizes_data.rb +2 -0
  54. data/lib/gruff/version.rb +1 -1
  55. data/lib/gruff.rb +2 -0
  56. data/sig/generated/gruff/accumulator_bar.rbs +2 -1
  57. data/sig/generated/gruff/area.rbs +4 -2
  58. data/sig/generated/gruff/bar.rbs +10 -5
  59. data/sig/generated/gruff/base.rbs +113 -53
  60. data/sig/generated/gruff/bezier.rbs +2 -1
  61. data/sig/generated/gruff/box.rbs +13 -5
  62. data/sig/generated/gruff/bubble.rbs +8 -4
  63. data/sig/generated/gruff/bullet.rbs +8 -4
  64. data/sig/generated/gruff/candlestick.rbs +26 -14
  65. data/sig/generated/gruff/dot.rbs +8 -4
  66. data/sig/generated/gruff/font.rbs +3 -1
  67. data/sig/generated/gruff/helper/bar_value_label.rbs +4 -2
  68. data/sig/generated/gruff/helper/stacked_mixin.rbs +2 -1
  69. data/sig/generated/gruff/histogram.rbs +6 -3
  70. data/sig/generated/gruff/line.rbs +44 -16
  71. data/sig/generated/gruff/mini/bar.rbs +27 -0
  72. data/sig/generated/gruff/mini/legend.rbs +36 -0
  73. data/sig/generated/gruff/mini/pie.rbs +26 -0
  74. data/sig/generated/gruff/mini/side_bar.rbs +34 -0
  75. data/sig/generated/gruff/net.rbs +12 -6
  76. data/sig/generated/gruff/patch/rmagick.rbs +25 -0
  77. data/sig/generated/gruff/patch/string.rbs +11 -0
  78. data/sig/generated/gruff/pie.rbs +15 -7
  79. data/sig/generated/gruff/renderer/bezier.rbs +2 -1
  80. data/sig/generated/gruff/renderer/circle.rbs +2 -1
  81. data/sig/generated/gruff/renderer/dash_line.rbs +2 -1
  82. data/sig/generated/gruff/renderer/dot.rbs +17 -4
  83. data/sig/generated/gruff/renderer/ellipse.rbs +2 -1
  84. data/sig/generated/gruff/renderer/line.rbs +9 -2
  85. data/sig/generated/gruff/renderer/polygon.rbs +17 -0
  86. data/sig/generated/gruff/renderer/polyline.rbs +2 -1
  87. data/sig/generated/gruff/renderer/rectangle.rbs +2 -1
  88. data/sig/generated/gruff/renderer/renderer.rbs +31 -8
  89. data/sig/generated/gruff/renderer/text.rbs +7 -3
  90. data/sig/generated/gruff/scatter.rbs +30 -13
  91. data/sig/generated/gruff/side_bar.rbs +15 -6
  92. data/sig/generated/gruff/side_stacked_bar.rbs +6 -3
  93. data/sig/generated/gruff/spider.rbs +35 -11
  94. data/sig/generated/gruff/stacked_area.rbs +9 -4
  95. data/sig/generated/gruff/stacked_bar.rbs +10 -5
  96. data/sig/generated/gruff/store/basic_data.rbs +8 -4
  97. data/sig/generated/gruff/store/store.rbs +12 -4
  98. data/sig/generated/gruff/store/xy_data.rbs +4 -2
  99. data/sig/generated/gruff/store/xy_pointsizes_data.rbs +4 -2
  100. data/sig/generated/gruff.rbs +3 -1
  101. metadata +12 -3
data/lib/gruff/bezier.rb CHANGED
@@ -23,6 +23,7 @@
23
23
  class Gruff::Bezier < Gruff::Base
24
24
  private
25
25
 
26
+ # @rbs return: void
26
27
  def draw_graph
27
28
  x_increment = (@graph_width / (column_count - 1)).to_f
28
29
 
data/lib/gruff/box.rb CHANGED
@@ -26,6 +26,7 @@ class Gruff::Box < Gruff::Base
26
26
  # Default value is +0.8+.
27
27
  #
28
28
  # @rbs space_percent: Float | Integer
29
+ # @rbs return: void
29
30
  def spacing_factor=(space_percent)
30
31
  raise ArgumentError, 'spacing_factor must be between 0.00 and 1.00' if (space_percent < 0) || (space_percent > 1)
31
32
 
@@ -34,6 +35,7 @@ class Gruff::Box < Gruff::Base
34
35
 
35
36
  private
36
37
 
38
+ # @rbs return: void
37
39
  def initialize_attributes
38
40
  super
39
41
  @fill_opacity = 0.2
@@ -41,6 +43,7 @@ private
41
43
  @spacing_factor = 0.8
42
44
  end
43
45
 
46
+ # @rbs return: void
44
47
  def draw_graph
45
48
  # Setup the BarConversion Object
46
49
  conversion = Gruff::BarConversion.new(
@@ -93,6 +96,7 @@ private
93
96
  end
94
97
  end
95
98
 
99
+ # @rbs return: Array[Gruff::Box::BoxData]
96
100
  def normalized_boxes
97
101
  @normalized_boxes ||= store.norm_data.map { |data| Gruff::Box::BoxData.new(data.label, data.points, data.color) }
98
102
  end
@@ -113,6 +117,10 @@ private
113
117
  attr_accessor :points #: Array[Float | Integer]
114
118
  attr_accessor :color #: String
115
119
 
120
+ # @rbs label: String
121
+ # @rbs points: Array[Float | Integer]
122
+ # @rbs color: String
123
+ # @rbs return: void
116
124
  def initialize(label, points, color)
117
125
  @label = label
118
126
  @points = points.compact.sort
data/lib/gruff/bubble.rb CHANGED
@@ -60,6 +60,7 @@ class Gruff::Bubble < Gruff::Scatter
60
60
  # @rbs y_data_points: Array[nil | Float | Integer] | nil
61
61
  # @rbs point_sizes: Array[nil | Float | Integer] | nil
62
62
  # @rbs color: String
63
+ # @rbs return: void
63
64
  def data(name, x_data_points = [], y_data_points = [], point_sizes = [], color = nil)
64
65
  # make sure it's an array
65
66
  x_data_points = Array(x_data_points)
@@ -78,10 +79,12 @@ class Gruff::Bubble < Gruff::Scatter
78
79
 
79
80
  private
80
81
 
82
+ # @rbs return: void
81
83
  def initialize_store
82
84
  @store = Gruff::Store.new(Gruff::Store::XYPointsizeData)
83
85
  end
84
86
 
87
+ # @rbs return: void
85
88
  def initialize_attributes
86
89
  super
87
90
 
@@ -89,6 +92,7 @@ private
89
92
  @stroke_width = 1.0
90
93
  end
91
94
 
95
+ # @rbs return: void
92
96
  def draw_graph
93
97
  store.norm_data.each do |data_row|
94
98
  data_row.coordinate_and_pointsizes.each do |x_value, y_value, point_size|
data/lib/gruff/bullet.rb CHANGED
@@ -31,6 +31,7 @@ class Gruff::Bullet < Gruff::Base
31
31
  self.theme = Gruff::Themes::GREYSCALE
32
32
  end
33
33
 
34
+ # @rbs return: void
34
35
  def initialize_attributes
35
36
  super
36
37
 
@@ -42,6 +43,7 @@ class Gruff::Bullet < Gruff::Base
42
43
  # @rbs value: Float | Integer
43
44
  # @rbs maximum_value: Float | Integer
44
45
  # @rbs options: Hash[Symbol, Float | Integer]
46
+ # @rbs return: void
45
47
  def data(value, maximum_value, options = {})
46
48
  @value = value.to_f
47
49
  self.maximum_value = maximum_value.to_f
@@ -49,6 +51,7 @@ class Gruff::Bullet < Gruff::Base
49
51
  @options.map { |k, v| @options[k] = v.to_f if v.respond_to?(:to_f) }
50
52
  end
51
53
 
54
+ # @rbs return: void
52
55
  def draw
53
56
  # TODO: Left label
54
57
  # TODO Bottom labels and markers
@@ -95,6 +98,7 @@ class Gruff::Bullet < Gruff::Base
95
98
 
96
99
  private
97
100
 
101
+ # @rbs return: void
98
102
  def draw_title
99
103
  return if hide_title?
100
104
 
@@ -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(
@@ -81,7 +87,7 @@ private
81
87
  minimum_value: minimum_value, maximum_value: maximum_value, spread: @spread
82
88
  )
83
89
 
84
- width = (@graph_width - calculate_spacing) / column_count
90
+ width = @graph_width / calculate_spacing
85
91
  bar_width = width * @spacing_factor
86
92
  padding = width - bar_width
87
93
 
@@ -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
@@ -115,9 +122,9 @@ private
115
122
  normalized_candlesticks.size
116
123
  end
117
124
 
118
- # @rbs return: Integer
125
+ # @rbs return: Float
119
126
  def calculate_spacing
120
- column_count - 1
127
+ column_count.to_f
121
128
  end
122
129
 
123
130
  # @rbs return: bool
@@ -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
@@ -229,9 +247,9 @@ private
229
247
 
230
248
  stroke_width = @line_width || clip_value_if_greater_than(@columns / (store.norm_data.first.y_points.size * 4.0), 5.0)
231
249
  circle_radius = @dot_radius || clip_value_if_greater_than(@columns / (store.norm_data.first.y_points.size * 2.5), 5.0)
232
- prev_x = prev_y = nil
233
250
 
234
251
  store.norm_data.each do |data_row|
252
+ prev_x = prev_y = nil
235
253
  data_row.coordinates.each_with_index do |(x_data, y_data), index|
236
254
  new_x = begin
237
255
  if x_data.nil?
@@ -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