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/base.rb CHANGED
@@ -154,6 +154,7 @@ module Gruff
154
154
  self.theme = Themes::KEYNOTE
155
155
  end
156
156
 
157
+ # @rbs return: void
157
158
  def initialize_graph_scale
158
159
  @raw_columns = DEFAULT_TARGET_WIDTH
159
160
  @raw_rows = DEFAULT_TARGET_WIDTH * (@rows / @columns)
@@ -165,6 +166,7 @@ module Gruff
165
166
  end
166
167
  protected :initialize_graph_scale
167
168
 
169
+ # @rbs return: void
168
170
  def initialize_store
169
171
  @store = Gruff::Store.new(Gruff::Store::BasicData)
170
172
  end
@@ -176,6 +178,8 @@ module Gruff
176
178
  #
177
179
  # This makes it possible to set defaults in a subclass but still allow
178
180
  # developers to change this values in their program.
181
+ #
182
+ # @rbs return: void
179
183
  def initialize_attributes
180
184
  @marker_count = nil
181
185
  @maximum_value = @minimum_value = nil
@@ -228,6 +232,7 @@ module Gruff
228
232
  # g = Gruff::Bar.new
229
233
  # g.labels = ['2005', nil, nil, '2006', nil, nil, '2007', nil, nil, '2008'] # same labels for columns
230
234
  #
235
+ # @rbs return: void
231
236
  def labels=(labels)
232
237
  if labels.is_a?(Array)
233
238
  labels = labels.each_with_index.with_object({}) do |(label, index), hash|
@@ -243,6 +248,7 @@ module Gruff
243
248
  #
244
249
  # @param rotation [Numeric] the rotation.
245
250
  # @rbs rotation: Float | Integer
251
+ # @rbs return: void
246
252
  def label_rotation=(rotation)
247
253
  raise ArgumentError, 'rotation must be between 0.0 and 45.0 or between 0.0 and -45.0' if rotation > 45.0 || rotation < -45.0
248
254
 
@@ -251,6 +257,7 @@ module Gruff
251
257
 
252
258
  # Height of staggering between labels.
253
259
  # @deprecated
260
+ # @rbs return: void
254
261
  def label_stagger_height=(_value)
255
262
  warn '#label_stagger_height= is deprecated. It is no longer effective.'
256
263
  end
@@ -269,6 +276,7 @@ module Gruff
269
276
  # g = Gruff::Bar.new
270
277
  # g.title = ['The first line of title', 'The second line of title']
271
278
  #
279
+ # @rbs return: void
272
280
  def title=(title)
273
281
  if title.is_a?(Array)
274
282
  title = title.join("\n")
@@ -281,6 +289,7 @@ module Gruff
281
289
  #
282
290
  # @param margin [Numeric] The margin size.
283
291
  # @rbs margin: Float | Integer
292
+ # @rbs return: void
284
293
  def margins=(margin)
285
294
  @top_margin = @left_margin = @right_margin = @bottom_margin = margin
286
295
  end
@@ -289,6 +298,7 @@ module Gruff
289
298
  #
290
299
  # @param font_path [String] The path to font.
291
300
  # @rbs font_path: String
301
+ # @rbs return: void
292
302
  def font=(font_path)
293
303
  @title_font.path = font_path unless @title_font.path
294
304
  @marker_font.path = font_path
@@ -300,6 +310,7 @@ module Gruff
300
310
  #
301
311
  # @param font_path [String] The path to font.
302
312
  # @rbs font_path: String
313
+ # @rbs return: void
303
314
  def title_font=(font_path)
304
315
  @title_font.path = font_path
305
316
  end
@@ -308,6 +319,7 @@ module Gruff
308
319
  #
309
320
  # @param value [Numeric] title font size
310
321
  # @rbs value: Float | Integer
322
+ # @rbs return: void
311
323
  def title_font_size=(value)
312
324
  @title_font.size = value
313
325
  end
@@ -316,6 +328,7 @@ module Gruff
316
328
  #
317
329
  # @param value [Numeric] marker font size
318
330
  # @rbs value: Float | Integer
331
+ # @rbs return: void
319
332
  def marker_font_size=(value)
320
333
  @marker_font.size = value
321
334
  end
@@ -327,6 +340,7 @@ module Gruff
327
340
  #
328
341
  # @param value [Numeric] legend font size
329
342
  # @rbs value: Float | Integer
343
+ # @rbs return: void
330
344
  def legend_font_size=(value)
331
345
  @legend_font.size = value
332
346
  end
@@ -335,6 +349,7 @@ module Gruff
335
349
  #
336
350
  # @param value [Numeric] no data font size
337
351
  # @rbs value: Float | Integer
352
+ # @rbs return: void
338
353
  def no_data_font_size=(value)
339
354
  @no_data_font.size = value
340
355
  end
@@ -343,6 +358,7 @@ module Gruff
343
358
  #
344
359
  # @param value [Boolean] specifies whether to draw the title bolded or not.
345
360
  # @rbs value: bool
361
+ # @rbs return: void
346
362
  def bold_title=(value)
347
363
  @title_font.bold = value
348
364
  end
@@ -351,6 +367,7 @@ module Gruff
351
367
  #
352
368
  # @param value [String] color
353
369
  # @rbs value: String
370
+ # @rbs return: void
354
371
  def font_color=(value)
355
372
  @title_font.color = value
356
373
  @marker_font.color = value
@@ -365,6 +382,7 @@ module Gruff
365
382
  #
366
383
  # @example
367
384
  # add_color('#c0e9d3')
385
+ # @rbs return: void
368
386
  def add_color(colorname)
369
387
  @colors << colorname
370
388
  end
@@ -385,6 +403,7 @@ module Gruff
385
403
  #
386
404
  # @example
387
405
  # replace_colors ['#cc99cc', '#d9e043', '#34d8a2']
406
+ # @rbs return: void
388
407
  def replace_colors(color_list = [])
389
408
  @colors = color_list
390
409
  end
@@ -393,6 +412,7 @@ module Gruff
393
412
  #
394
413
  # @param value [Boolean] Specify whether to make background transparent.
395
414
  # @rbs value: bool
415
+ # @rbs return: void
396
416
  def transparent_background=(value)
397
417
  @renderer.transparent_background(@columns, @rows) if value
398
418
  end
@@ -428,6 +448,7 @@ module Gruff
428
448
  #
429
449
  # @param options [Hash] The optional setting for theme
430
450
  # @rbs options: Hash[Symbol, untyped]
451
+ # @rbs return: void
431
452
  def theme=(options)
432
453
  reset_themes
433
454
 
@@ -451,31 +472,37 @@ module Gruff
451
472
  end
452
473
 
453
474
  # Apply Apple's keynote theme.
475
+ # @rbs return: void
454
476
  def theme_keynote
455
477
  self.theme = Themes::KEYNOTE
456
478
  end
457
479
 
458
480
  # Apply 37signals theme.
481
+ # @rbs return: void
459
482
  def theme_37signals
460
483
  self.theme = Themes::THIRTYSEVEN_SIGNALS
461
484
  end
462
485
 
463
486
  # Apply Rails theme.
487
+ # @rbs return: void
464
488
  def theme_rails_keynote
465
489
  self.theme = Themes::RAILS_KEYNOTE
466
490
  end
467
491
 
468
492
  # Apply Odeo theme.
493
+ # @rbs return: void
469
494
  def theme_odeo
470
495
  self.theme = Themes::ODEO
471
496
  end
472
497
 
473
498
  # Apply pastel theme.
499
+ # @rbs return: void
474
500
  def theme_pastel
475
501
  self.theme = Themes::PASTEL
476
502
  end
477
503
 
478
504
  # Apply greyscale theme.
505
+ # @rbs return: void
479
506
  def theme_greyscale
480
507
  self.theme = Themes::GREYSCALE
481
508
  end
@@ -503,6 +530,7 @@ module Gruff
503
530
  #
504
531
  # @example
505
532
  # data("Bart S.", [95, 45, 78, 89, 88, 76], '#ffcc00')
533
+ # @rbs return: void
506
534
  def data(name, data_points = [], color = nil)
507
535
  store.add(name, data_points, color)
508
536
  end
@@ -540,6 +568,7 @@ module Gruff
540
568
  #
541
569
  # @example
542
570
  # write('graphs/my_pretty_graph.png')
571
+ # @rbs return: void
543
572
  def write(file_name = 'graph.png')
544
573
  to_image.write(file_name)
545
574
  end
@@ -561,6 +590,7 @@ module Gruff
561
590
  # image = image.resize(400, 300).quantize(128, Magick::RGBColorspace)
562
591
  # image.write('test.png')
563
592
  #
593
+ # @rbs return: untyped
564
594
  def to_image(format = 'PNG')
565
595
  @to_image ||= begin
566
596
  draw
@@ -587,6 +617,7 @@ module Gruff
587
617
  end
588
618
 
589
619
  # Draw a graph.
620
+ # @rbs return: void
590
621
  def draw
591
622
  setup_data
592
623
 
@@ -610,6 +641,7 @@ module Gruff
610
641
  attr_reader :renderer #: Gruff::Renderer
611
642
 
612
643
  # Perform data manipulation before calculating chart measurements
644
+ # @rbs return: void
613
645
  def setup_data
614
646
  if @y_axis_increment && !@hide_line_markers
615
647
  self.maximum_value = [@y_axis_increment, maximum_value, (maximum_value / @y_axis_increment).round * @y_axis_increment].max
@@ -624,6 +656,7 @@ module Gruff
624
656
  # * line markers
625
657
  # * legend
626
658
  # * title
659
+ # @rbs return: void
627
660
  def setup_drawing
628
661
  calculate_spread
629
662
  calculate_increment
@@ -666,10 +699,12 @@ module Gruff
666
699
 
667
700
  # Make copy of data with values scaled between 0-100
668
701
  # @rbs return: Array[Gruff::Store::BasicData | Gruff::Store::XYData | Gruff::Store::XYPointsizeData]
702
+ # @rbs return: void
669
703
  def normalize
670
704
  store.normalize(minimum: minimum_value, spread: @spread)
671
705
  end
672
706
 
707
+ # @rbs return: Float
673
708
  def calculate_spread
674
709
  @spread = maximum_value.to_f - minimum_value.to_f
675
710
  @spread = @spread > 0 ? @spread : 1.0
@@ -698,6 +733,7 @@ module Gruff
698
733
  ##
699
734
  # Calculates size of drawable area, general font dimensions, etc.
700
735
 
736
+ # @rbs return: void
701
737
  def setup_graph_measurements
702
738
  @graph_right = setup_right_margin
703
739
  @graph_left = setup_left_margin
@@ -709,6 +745,7 @@ module Gruff
709
745
  end
710
746
 
711
747
  # Draw the optional labels for the x axis and y axis.
748
+ # @rbs return: void
712
749
  def draw_axis_labels
713
750
  if @x_axis_label
714
751
  # X Axis
@@ -728,6 +765,7 @@ module Gruff
728
765
  end
729
766
 
730
767
  # Draws horizontal background lines and labels
768
+ # @rbs return: void
731
769
  def draw_line_markers
732
770
  return if @hide_line_markers
733
771
 
@@ -747,11 +785,16 @@ module Gruff
747
785
  end
748
786
  end
749
787
 
788
+ # @rbs y: Float | Integer
789
+ # @rbs return: void
750
790
  def draw_marker_horizontal_line(y)
751
791
  Gruff::Renderer::Line.new(renderer, color: @marker_color).render(@graph_left, y, @graph_right, y)
752
792
  Gruff::Renderer::Line.new(renderer, color: @marker_shadow_color).render(@graph_left, y + 1, @graph_right, y + 1) if @marker_shadow_color
753
793
  end
754
794
 
795
+ # @rbs x: Float | Integer
796
+ # @rbs tick_mark_mode: bool
797
+ # @rbs return: void
755
798
  def draw_marker_vertical_line(x, tick_mark_mode: false)
756
799
  if tick_mark_mode
757
800
  Gruff::Renderer::Line.new(renderer, color: @marker_color).render(x, @graph_bottom, x, @graph_bottom + 5)
@@ -775,6 +818,7 @@ module Gruff
775
818
 
776
819
  # Draws a legend with the names of the datasets matched
777
820
  # to the colors used to draw them.
821
+ # @rbs return: void
778
822
  def draw_legend
779
823
  return if @hide_legend
780
824
 
@@ -824,6 +868,7 @@ module Gruff
824
868
  end
825
869
 
826
870
  # Draws a title on the graph.
871
+ # @rbs return: void
827
872
  def draw_title
828
873
  return if hide_title?
829
874
 
@@ -842,6 +887,7 @@ module Gruff
842
887
  # @rbs index: Integer
843
888
  # @rbs gravity: untyped
844
889
  # @rbs &: () -> void
890
+ # @rbs return: void
845
891
  def draw_label(x, index, gravity = Magick::NorthGravity, &block)
846
892
  draw_unique_label(index) do
847
893
  if x.between?(@graph_left, @graph_right)
@@ -856,6 +902,7 @@ module Gruff
856
902
 
857
903
  # @rbs index: Integer
858
904
  # @rbs yields: () -> void
905
+ # @rbs return: void
859
906
  def draw_unique_label(index)
860
907
  return if hide_labels?
861
908
 
@@ -873,6 +920,7 @@ module Gruff
873
920
  # @rbs text: String | _ToS
874
921
  # @rbs gravity: untyped
875
922
  # @rbs rotation: Float | Integer
923
+ # @rbs return: void
876
924
  def draw_label_at(width, height, x, y, text, gravity: Magick::NorthGravity, rotation: 0)
877
925
  label_text = truncate_label_text(text)
878
926
  text_renderer = Gruff::Renderer::Text.new(renderer, label_text, font: @marker_font, rotation: rotation)
@@ -887,6 +935,7 @@ module Gruff
887
935
  # @rbs y_offset: Float | Integer
888
936
  # @rbs data_point: String | _ToS
889
937
  # @rbs gravity: untyped
938
+ # @rbs return: void
890
939
  def draw_value_label(width, height, x_offset, y_offset, data_point, gravity: Magick::CenterGravity)
891
940
  return if @hide_line_markers
892
941
 
@@ -894,17 +943,20 @@ module Gruff
894
943
  end
895
944
 
896
945
  # Shows an error message because you have no data.
946
+ # @rbs return: void
897
947
  def draw_no_data
898
948
  font = @no_data_font
899
949
  text_renderer = Gruff::Renderer::Text.new(renderer, @no_data_message, font: font)
900
950
  text_renderer.render(@raw_columns, @raw_rows, 0, 0, Magick::CenterGravity)
901
951
  end
902
952
 
953
+ # @rbs return: void
903
954
  def draw_graph
904
955
  raise 'Should implement this method at inherited class.'
905
956
  end
906
957
 
907
958
  # Resets everything to defaults (except data).
959
+ # @rbs return: void
908
960
  def reset_themes
909
961
  @theme_options = {}
910
962
  end
@@ -945,17 +997,20 @@ module Gruff
945
997
  end
946
998
 
947
999
  # Sort with largest overall summed value at front of array.
1000
+ # @rbs return: void
948
1001
  def sort_data
949
1002
  store.sort_data!
950
1003
  end
951
1004
 
952
1005
  # Set the color for each data set unless it was given in the data(...) call.
1006
+ # @rbs return: void
953
1007
  def set_colors
954
1008
  store.change_colors(@colors)
955
1009
  end
956
1010
 
957
1011
  # Sort with largest overall summed value at front of array so it shows up
958
1012
  # correctly in the drawn graph.
1013
+ # @rbs return: void
959
1014
  def sort_norm_data
960
1015
  store.sort_norm_data!
961
1016
  end
@@ -1156,7 +1211,9 @@ module Gruff
1156
1211
  end
1157
1212
  end
1158
1213
 
1159
- # TODO: RBS signature
1214
+ # @rbs legend_labels: Array[String]
1215
+ # @rbs legend_square_width: Float | Integer
1216
+ # @rbs return: Array[Array[Float | Integer]]
1160
1217
  def calculate_legend_label_widths_for_each_line(legend_labels, legend_square_width)
1161
1218
  label_widths = [[]]
1162
1219
  label_lines = [[]]
@@ -1179,7 +1236,7 @@ module Gruff
1179
1236
  label_widths.map(&:sum).zip(label_lines)
1180
1237
  end
1181
1238
 
1182
- # TODO: RBS signature
1239
+ # @rbs return: Float
1183
1240
  def calculate_legend_height
1184
1241
  return 0.0 if @hide_legend
1185
1242
 
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?