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/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
data/lib/gruff/scatter.rb CHANGED
@@ -31,6 +31,8 @@ class Gruff::Scatter < Gruff::Base
31
31
 
32
32
  # Allow enabling vertical lines. When you have a lot of data, they can work great.
33
33
  # @deprecated Please use {#show_vertical_markers=} instead.
34
+ # @rbs value: bool
35
+ # @rbs return: void
34
36
  def enable_vertical_line_markers=(value)
35
37
  warn '#enable_vertical_line_markers= is deprecated. Please use `show_vertical_markers` attribute instead'
36
38
  @show_vertical_markers = value
@@ -38,12 +40,16 @@ class Gruff::Scatter < Gruff::Base
38
40
 
39
41
  # Allow using vertical labels in the X axis.
40
42
  # @deprecated Please use {Gruff::Base#label_rotation=} instead.
43
+ # @rbs _value: untyped
44
+ # @rbs return: void
41
45
  def use_vertical_x_labels=(_value)
42
46
  warn '#use_vertical_x_labels= is deprecated. It is no longer effective. Please use `#label_rotation=` instead'
43
47
  end
44
48
 
45
49
  # Allow using vertical labels in the X axis (and setting the label margin).
46
50
  # @deprecated
51
+ # @rbs _value: untyped
52
+ # @rbs return: void
47
53
  def x_label_margin=(_value)
48
54
  warn '#x_label_margin= is deprecated. It is no longer effective.'
49
55
  end
@@ -51,6 +57,8 @@ class Gruff::Scatter < Gruff::Base
51
57
  # Allow disabling the significant rounding when labeling the X axis.
52
58
  # This is useful when working with a small range of high values (for example, a date range of months, while seconds as units).
53
59
  # @deprecated
60
+ # @rbs _value: untyped
61
+ # @rbs return: void
54
62
  def disable_significant_rounding_x_axis=(_value)
55
63
  warn '#disable_significant_rounding_x_axis= is deprecated. It is no longer effective.'
56
64
  end
@@ -93,6 +101,7 @@ class Gruff::Scatter < Gruff::Base
93
101
  # @rbs x_data_points: Array[nil | Float | Integer] | nil
94
102
  # @rbs y_data_points: Array[nil | Float | Integer] | nil
95
103
  # @rbs color: String
104
+ # @rbs return: void
96
105
  def data(name, x_data_points = [], y_data_points = [], color = nil)
97
106
  # make sure it's an array
98
107
  x_data_points = Array(x_data_points)
@@ -111,10 +120,12 @@ class Gruff::Scatter < Gruff::Base
111
120
 
112
121
  private
113
122
 
123
+ # @rbs return: void
114
124
  def initialize_store
115
125
  @store = Gruff::Store.new(Gruff::Store::XYData)
116
126
  end
117
127
 
128
+ # @rbs return: void
118
129
  def initialize_attributes
119
130
  super
120
131
 
@@ -125,11 +136,13 @@ private
125
136
  @stroke_width = nil
126
137
  end
127
138
 
139
+ # @rbs return: void
128
140
  def setup_drawing
129
141
  @center_labels_over_point = false
130
142
  super
131
143
  end
132
144
 
145
+ # @rbs return: void
133
146
  def setup_data
134
147
  # TODO: Need to get x-axis labels working. Current behavior will be to not allow.
135
148
  @labels = {}
@@ -147,6 +160,7 @@ private
147
160
  super
148
161
  end
149
162
 
163
+ # @rbs return: void
150
164
  def draw_graph
151
165
  stroke_width = @stroke_width || clip_value_if_greater_than(@columns / (store.norm_data.first.x_points.size * 4.0), 5.0)
152
166
  circle_radius = @circle_radius || clip_value_if_greater_than(@columns / (store.norm_data.first.x_points.size * 2.5), 5.0)
@@ -163,18 +177,21 @@ private
163
177
  end
164
178
  end
165
179
 
180
+ # @rbs return: void
166
181
  def calculate_spread
167
182
  super
168
183
  @x_spread = @maximum_x_value.to_f - @minimum_x_value.to_f
169
184
  @x_spread = @x_spread > 0 ? @x_spread : 1.0
170
185
  end
171
186
 
187
+ # @rbs return: void
172
188
  def normalize
173
189
  return unless data_given?
174
190
 
175
191
  store.normalize(minimum_x: @minimum_x_value, spread_x: @x_spread, minimum_y: minimum_value, spread_y: @spread)
176
192
  end
177
193
 
194
+ # @rbs return: void
178
195
  def draw_line_markers
179
196
  # do all of the stuff for the horizontal lines on the y-axis
180
197
  super
@@ -55,12 +55,15 @@ class Gruff::SideBar < Gruff::Base
55
55
 
56
56
  # With Side Bars use the data label for the marker value to the left of the bar.
57
57
  # @deprecated
58
+ # @rbs _value: untyped
59
+ # @rbs return: void
58
60
  def use_data_label=(_value)
59
61
  warn '#use_data_label is deprecated. It is no longer effective.'
60
62
  end
61
63
 
62
64
  private
63
65
 
66
+ # @rbs return: void
64
67
  def initialize_attributes
65
68
  super
66
69
  @bar_spacing = 0.9
@@ -85,6 +88,7 @@ private
85
88
  @hide_line_markers && @x_axis_label.nil? && @legend_at_bottom == false
86
89
  end
87
90
 
91
+ # @rbs return: void
88
92
  def setup_graph_measurements
89
93
  super
90
94
  return if @hide_line_markers
@@ -105,6 +109,7 @@ private
105
109
  end
106
110
  end
107
111
 
112
+ # @rbs return: void
108
113
  def draw_graph
109
114
  # Setup spacing.
110
115
  #
@@ -148,6 +153,7 @@ private
148
153
  end
149
154
 
150
155
  # Instead of base class version, draws vertical background lines and label
156
+ # @rbs return: void
151
157
  def draw_line_markers
152
158
  return if @hide_line_markers
153
159
 
@@ -176,6 +182,9 @@ private
176
182
  ##
177
183
  # Draw on the Y axis instead of the X
178
184
 
185
+ # @rbs y_offset: Float | Integer
186
+ # @rbs index: Integer
187
+ # @rbs return: void
179
188
  def draw_label(y_offset, index)
180
189
  draw_unique_label(index) do
181
190
  draw_label_at(@graph_left - @label_margin, 1.0, 0.0, y_offset, @labels[index], gravity: Magick::EastGravity)
@@ -52,6 +52,7 @@ class Gruff::SideStackedBar < Gruff::SideBar
52
52
 
53
53
  private
54
54
 
55
+ # @rbs return: void
55
56
  def initialize_attributes
56
57
  super
57
58
  @bar_spacing = 0.9
@@ -62,11 +63,13 @@ private
62
63
  @minimum_value = 0.0
63
64
  end
64
65
 
66
+ # @rbs return: void
65
67
  def setup_data
66
68
  calculate_maximum_by_stack
67
69
  super
68
70
  end
69
71
 
72
+ # @rbs return: void
70
73
  def draw_graph
71
74
  # Setup spacing.
72
75
  #
data/lib/gruff/spider.rb CHANGED
@@ -30,12 +30,14 @@ class Gruff::Spider < Gruff::Base
30
30
  end
31
31
 
32
32
  # @rbs value: bool
33
+ # @rbs return: void
33
34
  def hide_text=(value)
34
35
  @hide_title = @hide_text = value
35
36
  end
36
37
 
37
38
  private
38
39
 
40
+ # @rbs return: void
39
41
  def initialize_attributes
40
42
  super
41
43
  @hide_legend = true
@@ -48,11 +50,13 @@ private
48
50
  @hide_line_markers.freeze
49
51
  end
50
52
 
53
+ # @rbs return: void
51
54
  def setup_drawing
52
55
  @center_labels_over_point = false
53
56
  super
54
57
  end
55
58
 
59
+ # @rbs return: void
56
60
  def setup_graph_measurements
57
61
  super
58
62
 
@@ -65,12 +69,14 @@ private
65
69
  @graph_height = @graph_bottom - @graph_top
66
70
  end
67
71
 
72
+ # @rbs return: void
68
73
  def setup_data
69
74
  raise(Gruff::IncorrectNumberOfDatasetsException, 'Requires 3 or more data sets') if store.length < 3
70
75
 
71
76
  super
72
77
  end
73
78
 
79
+ # @rbs return: void
74
80
  def draw_graph
75
81
  # Setup basic positioning
76
82
  radius = @graph_height / 2.0
@@ -88,11 +94,18 @@ private
88
94
  draw_polygon(center_x, center_y, additive_angle)
89
95
  end
90
96
 
91
- # @rbs value: nil | Float | Integer
97
+ # @rbs value: Float | Integer
98
+ # @rbs return: Float
92
99
  def normalize_points(value)
93
- value.to_f * @unit_length
100
+ (value.to_f * @unit_length).to_f
94
101
  end
95
102
 
103
+ # @rbs center_x: Float | Integer
104
+ # @rbs center_y: Float | Integer
105
+ # @rbs angle: Float | Integer
106
+ # @rbs radius: Float | Integer
107
+ # @rbs amount: Float | Integer
108
+ # @rbs return: void
96
109
  def draw_label(center_x, center_y, angle, radius, amount)
97
110
  degree = rad2deg(angle)
98
111
  metrics = text_metrics(@marker_font, amount)
@@ -118,6 +131,12 @@ private
118
131
  draw_label_at(metrics.width, metrics.height, x, y, amount, gravity: Magick::CenterGravity)
119
132
  end
120
133
 
134
+ # @rbs center_x: Float | Integer
135
+ # @rbs center_y: Float | Integer
136
+ # @rbs radius: Float | Integer
137
+ # @rbs additive_angle: Float | Integer
138
+ # @rbs line_color: String | nil
139
+ # @rbs return: void
121
140
  def draw_axes(center_x, center_y, radius, additive_angle, line_color = nil)
122
141
  return if @hide_axes
123
142
 
@@ -136,6 +155,11 @@ private
136
155
  end
137
156
  end
138
157
 
158
+ # @rbs center_x: Float | Integer
159
+ # @rbs center_y: Float | Integer
160
+ # @rbs additive_angle: Float | Integer
161
+ # @rbs color: String | nil
162
+ # @rbs return: void
139
163
  def draw_polygon(center_x, center_y, additive_angle, color = nil)
140
164
  points = []
141
165
  current_angle = deg2rad(@rotation)
@@ -18,22 +18,27 @@ class Gruff::StackedArea < Gruff::Base
18
18
  include Gruff::Base::StackedMixin
19
19
 
20
20
  # @deprecated
21
+ # @rbs _value: untyped
22
+ # @rbs return: void
21
23
  def last_series_goes_on_bottom=(_value)
22
24
  warn '#last_series_goes_on_bottom is deprecated. It is no longer effective.'
23
25
  end
24
26
 
25
27
  private
26
28
 
29
+ # @rbs return: void
27
30
  def initialize_attributes
28
31
  super
29
32
  @minimum_value = 0.0
30
33
  end
31
34
 
35
+ # @rbs return: void
32
36
  def setup_data
33
37
  calculate_maximum_by_stack
34
38
  super
35
39
  end
36
40
 
41
+ # @rbs return: void
37
42
  def draw_graph
38
43
  x_increment = (@graph_width / (column_count - 1)).to_f
39
44
 
@@ -36,6 +36,7 @@ class Gruff::StackedBar < Gruff::Base
36
36
 
37
37
  private
38
38
 
39
+ # @rbs return: void
39
40
  def initialize_attributes
40
41
  super
41
42
  @bar_spacing = 0.9
@@ -46,6 +47,7 @@ private
46
47
  @minimum_value = 0.0
47
48
  end
48
49
 
50
+ # @rbs return: void
49
51
  def setup_drawing
50
52
  # Labels will be centered over the left of the bar if
51
53
  # there are more labels than columns. This is basically the same
@@ -55,11 +57,13 @@ private
55
57
  super
56
58
  end
57
59
 
60
+ # @rbs return: void
58
61
  def setup_data
59
62
  calculate_maximum_by_stack
60
63
  super
61
64
  end
62
65
 
66
+ # @rbs return: void
63
67
  def setup_graph_measurements
64
68
  super
65
69
  return if @hide_line_markers
@@ -75,6 +79,7 @@ private
75
79
  end
76
80
 
77
81
  # Draws a bar graph, but multiple sets are stacked on top of each other.
82
+ # @rbs return: void
78
83
  def draw_graph
79
84
  # Setup spacing.
80
85
  #
@@ -13,6 +13,7 @@ module Gruff
13
13
  # @rbs label: String | Symbol
14
14
  # @rbs points: Array[nil | Float | Integer] | nil
15
15
  # @rbs color: String
16
+ # @rbs return: void
16
17
  def initialize(label, points, color)
17
18
  @label = label.to_s
18
19
  @points = Array(points)
@@ -21,14 +22,17 @@ module Gruff
21
22
 
22
23
  alias x_points points
23
24
 
25
+ # @rbs return: void
24
26
  def y_points
25
27
  raise NotImplementedError, 'x_points is not implemented for BasicData'
26
28
  end
27
29
 
30
+ # @rbs return: void
28
31
  def coordinates
29
32
  raise NotImplementedError, 'This method is not implemented for BasicData'
30
33
  end
31
34
 
35
+ # @rbs return: void
32
36
  def coordinate_and_pointsizes
33
37
  raise NotImplementedError, 'This method is not implemented for BasicData'
34
38
  end
@@ -7,12 +7,15 @@ module Gruff
7
7
  class Store
8
8
  attr_reader :data #: Array[Gruff::Store::BasicData | Gruff::Store::XYData | Gruff::Store::XYPointsizeData]
9
9
 
10
+ # @rbs data_class: untyped
10
11
  # @rbs return: void
11
12
  def initialize(data_class)
12
13
  @data_class = data_class
13
14
  @data = []
14
15
  end
15
16
 
17
+ # @rbs *args: untyped
18
+ # @rbs return: void
16
19
  def add(*args)
17
20
  @data << @data_class.new(*args)
18
21
  end
@@ -22,6 +25,8 @@ module Gruff
22
25
  @norm_data || []
23
26
  end
24
27
 
28
+ # @rbs **keywords: untyped
29
+ # @rbs return: untyped
25
30
  def normalize(**keywords)
26
31
  @norm_data = @data.map { |data_row| data_row.normalize(**keywords) } # steep:ignore
27
32
  end
@@ -63,10 +68,12 @@ module Gruff
63
68
  @max_x ||= @data.filter_map(&:max_x).max
64
69
  end
65
70
 
71
+ # @rbs return: void
66
72
  def sort_data!
67
73
  @data = @data.sort_by { |a| -a.points.sum(&:to_f) }
68
74
  end
69
75
 
76
+ # @rbs return: void
70
77
  def sort_norm_data!
71
78
  @norm_data = @norm_data.sort_by { |a| -a.points.sum(&:to_f) }
72
79
  end
@@ -77,6 +84,7 @@ module Gruff
77
84
  end
78
85
 
79
86
  # @rbs colors: Array[String]
87
+ # @rbs return: void
80
88
  def change_colors(colors)
81
89
  index = 0
82
90
  @data.each do |data_row|