gruff 0.5.1-java → 0.10.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 (120) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +14 -0
  3. data/.github/ISSUE_TEMPLATE.md +18 -0
  4. data/.gitignore +3 -0
  5. data/.rubocop.yml +109 -0
  6. data/.rubocop_todo.yml +130 -0
  7. data/.travis.yml +24 -12
  8. data/.yardopts +1 -0
  9. data/{History.txt → CHANGELOG.md} +61 -25
  10. data/Gemfile +3 -7
  11. data/README.md +57 -25
  12. data/Rakefile +6 -201
  13. data/assets/plastik/blue.png +0 -0
  14. data/assets/plastik/green.png +0 -0
  15. data/assets/plastik/red.png +0 -0
  16. data/docker/Dockerfile +14 -0
  17. data/docker/build.sh +4 -0
  18. data/docker/launch.sh +4 -0
  19. data/gruff.gemspec +19 -14
  20. data/init.rb +2 -0
  21. data/lib/gruff.rb +26 -2
  22. data/lib/gruff/accumulator_bar.rb +18 -8
  23. data/lib/gruff/area.rb +33 -19
  24. data/lib/gruff/bar.rb +76 -45
  25. data/lib/gruff/base.rb +337 -613
  26. data/lib/gruff/bezier.rb +34 -19
  27. data/lib/gruff/bullet.rb +51 -62
  28. data/lib/gruff/dot.rb +38 -62
  29. data/lib/gruff/helper/bar_conversion.rb +47 -0
  30. data/lib/gruff/helper/bar_value_label_mixin.rb +30 -0
  31. data/lib/gruff/helper/stacked_mixin.rb +23 -0
  32. data/lib/gruff/histogram.rb +59 -0
  33. data/lib/gruff/line.rb +130 -150
  34. data/lib/gruff/mini/bar.rb +17 -10
  35. data/lib/gruff/mini/legend.rb +24 -36
  36. data/lib/gruff/mini/pie.rb +18 -12
  37. data/lib/gruff/mini/side_bar.rb +26 -12
  38. data/lib/gruff/net.rb +60 -84
  39. data/lib/gruff/patch/rmagick.rb +33 -0
  40. data/lib/gruff/patch/string.rb +10 -0
  41. data/lib/gruff/photo_bar.rb +27 -30
  42. data/lib/gruff/pie.rb +190 -93
  43. data/lib/gruff/renderer/bezier.rb +21 -0
  44. data/lib/gruff/renderer/circle.rb +21 -0
  45. data/lib/gruff/renderer/dash_line.rb +22 -0
  46. data/lib/gruff/renderer/dot.rb +39 -0
  47. data/lib/gruff/renderer/ellipse.rb +21 -0
  48. data/lib/gruff/renderer/line.rb +34 -0
  49. data/lib/gruff/renderer/polygon.rb +23 -0
  50. data/lib/gruff/renderer/polyline.rb +21 -0
  51. data/lib/gruff/renderer/rectangle.rb +19 -0
  52. data/lib/gruff/renderer/renderer.rb +127 -0
  53. data/lib/gruff/renderer/text.rb +42 -0
  54. data/lib/gruff/scatter.rb +156 -180
  55. data/lib/gruff/scene.rb +31 -41
  56. data/lib/gruff/side_bar.rb +77 -63
  57. data/lib/gruff/side_stacked_bar.rb +77 -60
  58. data/lib/gruff/spider.rb +37 -50
  59. data/lib/gruff/stacked_area.rb +32 -30
  60. data/lib/gruff/stacked_bar.rb +87 -49
  61. data/lib/gruff/store/base_data.rb +34 -0
  62. data/lib/gruff/store/custom_data.rb +34 -0
  63. data/lib/gruff/store/store.rb +80 -0
  64. data/lib/gruff/store/xy_data.rb +55 -0
  65. data/lib/gruff/themes.rb +32 -33
  66. data/lib/gruff/version.rb +3 -1
  67. metadata +88 -94
  68. data/Manifest.txt +0 -81
  69. data/RELEASE.md +0 -30
  70. data/assets/bubble.png +0 -0
  71. data/assets/city_scene/background/0000.png +0 -0
  72. data/assets/city_scene/background/0600.png +0 -0
  73. data/assets/city_scene/background/2000.png +0 -0
  74. data/assets/city_scene/clouds/cloudy.png +0 -0
  75. data/assets/city_scene/clouds/partly_cloudy.png +0 -0
  76. data/assets/city_scene/clouds/stormy.png +0 -0
  77. data/assets/city_scene/grass/default.png +0 -0
  78. data/assets/city_scene/haze/true.png +0 -0
  79. data/assets/city_scene/number_sample/1.png +0 -0
  80. data/assets/city_scene/number_sample/2.png +0 -0
  81. data/assets/city_scene/number_sample/default.png +0 -0
  82. data/assets/city_scene/sky/0000.png +0 -0
  83. data/assets/city_scene/sky/0200.png +0 -0
  84. data/assets/city_scene/sky/0400.png +0 -0
  85. data/assets/city_scene/sky/0600.png +0 -0
  86. data/assets/city_scene/sky/0800.png +0 -0
  87. data/assets/city_scene/sky/1000.png +0 -0
  88. data/assets/city_scene/sky/1200.png +0 -0
  89. data/assets/city_scene/sky/1400.png +0 -0
  90. data/assets/city_scene/sky/1500.png +0 -0
  91. data/assets/city_scene/sky/1700.png +0 -0
  92. data/assets/city_scene/sky/2000.png +0 -0
  93. data/assets/pc306715.jpg +0 -0
  94. data/lib/gruff/bar_conversion.rb +0 -46
  95. data/lib/gruff/deprecated.rb +0 -39
  96. data/lib/gruff/stacked_mixin.rb +0 -23
  97. data/test/gruff_test_case.rb +0 -154
  98. data/test/image_compare.rb +0 -58
  99. data/test/test_accumulator_bar.rb +0 -51
  100. data/test/test_area.rb +0 -134
  101. data/test/test_bar.rb +0 -505
  102. data/test/test_base.rb +0 -8
  103. data/test/test_bezier.rb +0 -33
  104. data/test/test_bullet.rb +0 -26
  105. data/test/test_dot.rb +0 -263
  106. data/test/test_legend.rb +0 -68
  107. data/test/test_line.rb +0 -657
  108. data/test/test_mini_bar.rb +0 -33
  109. data/test/test_mini_pie.rb +0 -25
  110. data/test/test_mini_side_bar.rb +0 -36
  111. data/test/test_net.rb +0 -231
  112. data/test/test_photo.rb +0 -41
  113. data/test/test_pie.rb +0 -154
  114. data/test/test_scatter.rb +0 -233
  115. data/test/test_scene.rb +0 -100
  116. data/test/test_side_bar.rb +0 -56
  117. data/test/test_sidestacked_bar.rb +0 -105
  118. data/test/test_spider.rb +0 -226
  119. data/test/test_stacked_area.rb +0 -52
  120. data/test/test_stacked_bar.rb +0 -52
@@ -1,26 +1,35 @@
1
- ##
1
+ # frozen_string_literal: true
2
+
2
3
  #
3
4
  # Makes a small bar graph suitable for display at 200px or even smaller.
4
5
  #
6
+ # Here's how to set up a Gruff::Mini::Bar.
7
+ #
8
+ # g = Gruff::Mini::Bar.new
9
+ # g.title = 'Mini Bar Graph'
10
+ # g.data :Art, [0, 5, 8, 15]
11
+ # g.data :Philosophy, [10, 3, 2, 8]
12
+ # g.data :Science, [2, 15, 8, 11]
13
+ # g.write('mini_bar.png')
14
+ #
5
15
  module Gruff
6
16
  module Mini
7
-
8
17
  class Bar < Gruff::Bar
9
-
10
18
  include Gruff::Mini::Legend
11
-
19
+
12
20
  def initialize_ivars
13
21
  super
14
-
22
+
15
23
  @hide_legend = true
16
24
  @hide_title = true
17
25
  @hide_line_numbers = true
18
26
 
19
27
  @marker_font_size = 50.0
20
- @minimum_value = 0.0
21
- @maximum_value = 0.0
22
28
  @legend_font_size = 60.0
29
+
30
+ @minimum_value = 0.0
23
31
  end
32
+ private :initialize_ivars
24
33
 
25
34
  def draw
26
35
  expand_canvas_for_vertical_legend
@@ -28,10 +37,8 @@ module Gruff
28
37
  super
29
38
 
30
39
  draw_vertical_legend
31
- @d.draw(@base_image)
40
+ Gruff::Renderer.finish
32
41
  end
33
-
34
42
  end
35
-
36
43
  end
37
44
  end
@@ -1,20 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gruff
2
4
  module Mini
3
5
  module Legend
4
-
5
6
  attr_accessor :hide_mini_legend, :legend_position
6
7
 
8
+ def initialize(*)
9
+ @hide_mini_legend = false
10
+ @legend_position = nil
11
+ super
12
+ end
13
+
7
14
  ##
8
15
  # The canvas needs to be bigger so we can put the legend beneath it.
9
16
 
10
17
  def expand_canvas_for_vertical_legend
11
18
  return if @hide_mini_legend
12
19
 
13
- @legend_labels = @data.collect {|item| item[Gruff::Base::DATA_LABEL_INDEX] }
20
+ @legend_labels = store.data.map(&:label)
14
21
 
15
- legend_height = scale_fontsize(
16
- @data.length * calculate_line_height +
17
- @top_margin + @bottom_margin)
22
+ legend_height = scale_fontsize(store.length * calculate_line_height + @top_margin + @bottom_margin)
18
23
 
19
24
  @original_rows = @raw_rows
20
25
  @original_columns = @raw_columns
@@ -24,9 +29,10 @@ module Gruff
24
29
  @rows = [@rows, legend_height].max
25
30
  @columns += calculate_legend_width + @left_margin
26
31
  else
27
- @rows += @data.length * calculate_caps_height(scale_fontsize(@legend_font_size)) * 1.7
32
+ @rows += store.length * calculate_caps_height(scale_fontsize(@legend_font_size)) * 1.7
28
33
  end
29
- render_background
34
+
35
+ Gruff::Renderer.setup(@columns, @rows, @font, @scale, @theme_options)
30
36
  end
31
37
 
32
38
  def calculate_line_height
@@ -35,7 +41,7 @@ module Gruff
35
41
 
36
42
  def calculate_legend_width
37
43
  width = @legend_labels.map { |label| calculate_width(@legend_font_size, label) }.max
38
- scale_fontsize(width + 40*1.7)
44
+ scale_fontsize(width + 40 * 1.7)
39
45
  end
40
46
 
41
47
  ##
@@ -45,14 +51,9 @@ module Gruff
45
51
  return if @hide_mini_legend
46
52
 
47
53
  legend_square_width = 40.0 # small square with color of this item
48
- legend_square_margin = 10.0
49
54
  @legend_left_margin = 100.0
50
55
  legend_top_margin = 40.0
51
56
 
52
- # May fix legend drawing problem at small sizes
53
- @d.font = @font if @font
54
- @d.pointsize = @legend_font_size
55
-
56
57
  case @legend_position
57
58
  when :right then
58
59
  current_x_offset = @original_columns + @left_margin
@@ -62,33 +63,21 @@ module Gruff
62
63
  current_y_offset = @original_rows + legend_top_margin
63
64
  end
64
65
 
65
- debug { @d.line 0.0, current_y_offset, @raw_columns, current_y_offset }
66
-
67
66
  @legend_labels.each_with_index do |legend_label, index|
68
-
69
67
  # Draw label
70
- @d.fill = @font_color
71
- @d.font = @font if @font
72
- @d.pointsize = scale_fontsize(@legend_font_size)
73
- @d.stroke = 'transparent'
74
- @d.font_weight = Magick::NormalWeight
75
- @d.gravity = Magick::WestGravity
76
- @d = @d.annotate_scaled( @base_image,
77
- @raw_columns, 1.0,
78
- current_x_offset + (legend_square_width * 1.7), current_y_offset,
79
- truncate_legend_label(legend_label), @scale)
68
+ label = truncate_legend_label(legend_label)
69
+ text_renderer = Gruff::Renderer::Text.new(label, font: @font, size: @legend_font_size, color: @font_color)
70
+ text_renderer.render(@raw_columns, 1.0, current_x_offset + (legend_square_width * 1.7), current_y_offset, Magick::WestGravity)
80
71
 
81
72
  # Now draw box with color of this dataset
82
- @d = @d.stroke 'transparent'
83
- @d = @d.fill @data[index][Gruff::Base::DATA_COLOR_INDEX]
84
- @d = @d.rectangle(current_x_offset,
85
- current_y_offset - legend_square_width / 2.0,
86
- current_x_offset + legend_square_width,
87
- current_y_offset + legend_square_width / 2.0)
73
+ rect_renderer = Gruff::Renderer::Rectangle.new(color: store.data[index].color)
74
+ rect_renderer.render(current_x_offset,
75
+ current_y_offset - legend_square_width / 2.0,
76
+ current_x_offset + legend_square_width,
77
+ current_y_offset + legend_square_width / 2.0)
88
78
 
89
79
  current_y_offset += calculate_line_height
90
80
  end
91
- @color_index = 0
92
81
  end
93
82
 
94
83
  ##
@@ -99,11 +88,10 @@ module Gruff
99
88
  def truncate_legend_label(label)
100
89
  truncated_label = label.to_s
101
90
  while calculate_width(scale_fontsize(@legend_font_size), truncated_label) > (@columns - @legend_left_margin - @right_margin) && (truncated_label.length > 1)
102
- truncated_label = truncated_label[0..truncated_label.length-2]
91
+ truncated_label = truncated_label[0..truncated_label.length - 2]
103
92
  end
104
- truncated_label + (truncated_label.length < label.to_s.length ? "..." : '')
93
+ truncated_label + (truncated_label.length < label.to_s.length ? '...' : '')
105
94
  end
106
-
107
95
  end
108
96
  end
109
97
  end
@@ -1,36 +1,42 @@
1
- ##
1
+ # frozen_string_literal: true
2
+
2
3
  #
3
4
  # Makes a small pie graph suitable for display at 200px or even smaller.
4
5
  #
6
+ # Here's how to set up a Gruff::Mini::Pie.
7
+ #
8
+ # g = Gruff::Mini::Pie.new
9
+ # g.title = "Visual Pie Graph Test"
10
+ # g.data 'Fries', 20
11
+ # g.data 'Hamburgers', 50
12
+ # g.write("mini_pie_keynote.png")
13
+ #
5
14
  module Gruff
6
15
  module Mini
7
-
8
16
  class Pie < Gruff::Pie
9
-
10
17
  include Gruff::Mini::Legend
11
18
 
12
19
  def initialize_ivars
13
20
  super
14
-
21
+
15
22
  @hide_legend = true
16
23
  @hide_title = true
17
24
  @hide_line_numbers = true
18
-
25
+
19
26
  @marker_font_size = 60.0
20
27
  @legend_font_size = 60.0
21
28
  end
29
+ private :initialize_ivars
22
30
 
23
31
  def draw
24
32
  expand_canvas_for_vertical_legend
25
-
33
+
26
34
  super
27
-
35
+
28
36
  draw_vertical_legend
29
-
30
- @d.draw(@base_image)
31
- end # def draw
32
37
 
33
- end # class Pie
34
-
38
+ Gruff::Renderer.finish
39
+ end
40
+ end
35
41
  end
36
42
  end
@@ -1,14 +1,29 @@
1
- ##
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Makes a small side bar graph suitable for display at 200px or even smaller.
5
+ #
6
+ # Here's how to set up a Gruff::Mini::SideBar.
2
7
  #
3
- # Makes a small pie graph suitable for display at 200px or even smaller.
8
+ # g = Gruff::Mini::SideBar.new
9
+ # g.title = 'SideBar Graph'
10
+ # g.labels = {
11
+ # 0 => '5/6',
12
+ # 1 => '5/15',
13
+ # 2 => '5/24',
14
+ # 3 => '5/30',
15
+ # }
16
+ # g.group_spacing = 20
17
+ # g.data :Art, [0, 5, 8, 15]
18
+ # g.data :Philosophy, [10, 3, 2, 8]
19
+ # g.data :Science, [2, 15, 8, 11]
20
+ # g.write('mini_sidebar.png')
4
21
  #
5
22
  module Gruff
6
23
  module Mini
7
-
8
24
  class SideBar < Gruff::SideBar
9
-
10
25
  include Gruff::Mini::Legend
11
-
26
+
12
27
  def initialize_ivars
13
28
  super
14
29
  @hide_legend = true
@@ -18,18 +33,17 @@ module Gruff
18
33
  @marker_font_size = 50.0
19
34
  @legend_font_size = 50.0
20
35
  end
21
-
36
+ private :initialize_ivars
37
+
22
38
  def draw
23
39
  expand_canvas_for_vertical_legend
24
-
40
+
25
41
  super
26
-
42
+
27
43
  draw_vertical_legend
28
-
29
- @d.draw(@base_image)
44
+
45
+ Gruff::Renderer.finish
30
46
  end
31
-
32
47
  end
33
-
34
48
  end
35
49
  end
@@ -1,138 +1,114 @@
1
- require File.dirname(__FILE__) + '/base'
2
-
3
- # Experimental!!! See also the Spider graph.
1
+ # frozen_string_literal: true
2
+
3
+ require 'gruff/base'
4
+
5
+ # See also the Spider graph.
6
+ #
7
+ # Here's how to make a Gruff::Net.
8
+ #
9
+ # g = Gruff::Net.new
10
+ # g.title = "Net Graph"
11
+ # g.labels = {
12
+ # 0 => '5/6',
13
+ # 1 => '5/15',
14
+ # 2 => '5/24',
15
+ # 3 => '5/30',
16
+ # 4 => '6/4',
17
+ # 5 => '6/12',
18
+ # 6 => '6/21',
19
+ # 7 => '6/28'
20
+ # }
21
+ # g.line_width = 3
22
+ # g.dot_radius = 4
23
+ # g.data :Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]
24
+ # g.data :Julie, [22, 29, 35, 38, 36, 40, 46, 57]
25
+ # g.write("net.png")
26
+ #
4
27
  class Gruff::Net < Gruff::Base
5
-
6
28
  # Hide parts of the graph to fit more datapoints, or for a different appearance.
7
29
  attr_accessor :hide_dots
8
30
 
9
- # Dimensions of lines and dots; calculated based on dataset size if left unspecified
31
+ # Dimensions of lines and dots; calculated based on dataset size if left unspecified.
10
32
  attr_accessor :line_width
11
33
  attr_accessor :dot_radius
12
34
 
13
- def initialize(*args)
35
+ def initialize_ivars
14
36
  super
15
37
 
16
38
  @hide_dots = false
17
39
  @hide_line_numbers = true
18
40
  @sorted_drawing = true
19
41
  end
42
+ private :initialize_ivars
20
43
 
21
44
  def draw
22
45
  super
23
46
 
24
- return unless @has_data
25
-
26
- @radius = @graph_height / 2.0
27
- @center_x = @graph_left + (@graph_width / 2.0)
28
- @center_y = @graph_top + (@graph_height / 2.0) - 10 # Move graph up a bit
29
-
30
- @x_increment = @graph_width / (@column_count - 1).to_f
31
- circle_radius = dot_radius ||
32
- clip_value_if_greater_than(@columns / (@norm_data.first[DATA_VALUES_INDEX].size * 2.5), 5.0)
33
-
34
- @d = @d.stroke_opacity 1.0
35
- @d = @d.stroke_width line_width ||
36
- clip_value_if_greater_than(@columns / (@norm_data.first[DATA_VALUES_INDEX].size * 4), 5.0)
37
-
38
- if defined?(@norm_baseline)
39
- level = @graph_top + (@graph_height - @norm_baseline * @graph_height)
40
- @d = @d.push
41
- @d.stroke_color @baseline_color
42
- @d.fill_opacity 0.0
43
- @d.stroke_dasharray(10, 20)
44
- @d.stroke_width 5
45
- @d.line(@graph_left, level, @graph_left + @graph_width, level)
46
- @d = @d.pop
47
- end
47
+ return unless data_given?
48
48
 
49
- @norm_data.each do |data_row|
50
- @d = @d.stroke data_row[DATA_COLOR_INDEX]
51
- @d = @d.fill data_row[DATA_COLOR_INDEX]
49
+ stroke_width = line_width || clip_value_if_greater_than(@columns / (store.norm_data.first.points.size * 4), 5.0)
50
+ circle_radius = dot_radius || clip_value_if_greater_than(@columns / (store.norm_data.first.points.size * 2.5), 5.0)
52
51
 
53
- data_row[DATA_VALUES_INDEX].each_with_index do |data_point, index|
52
+ store.norm_data.each do |data_row|
53
+ data_row.points.each_with_index do |data_point, index|
54
54
  next if data_point.nil?
55
55
 
56
- rad_pos = index * Math::PI * 2 / @column_count
56
+ rad_pos = index * Math::PI * 2 / column_count
57
57
  point_distance = data_point * @radius
58
- start_x = @center_x + Math::sin(rad_pos) * point_distance
59
- start_y = @center_y - Math::cos(rad_pos) * point_distance
58
+ start_x = @center_x + Math.sin(rad_pos) * point_distance
59
+ start_y = @center_y - Math.cos(rad_pos) * point_distance
60
60
 
61
- next_index = index + 1 < data_row[DATA_VALUES_INDEX].length ? index + 1 : 0
61
+ next_index = index + 1 < data_row.points.length ? index + 1 : 0
62
62
 
63
- next_rad_pos = next_index * Math::PI * 2 / @column_count
64
- next_point_distance = data_row[DATA_VALUES_INDEX][next_index] * @radius
65
- end_x = @center_x + Math::sin(next_rad_pos) * next_point_distance
66
- end_y = @center_y - Math::cos(next_rad_pos) * next_point_distance
63
+ next_rad_pos = next_index * Math::PI * 2 / column_count
64
+ next_point_distance = data_row.points[next_index] * @radius
65
+ end_x = @center_x + Math.sin(next_rad_pos) * next_point_distance
66
+ end_y = @center_y - Math.cos(next_rad_pos) * next_point_distance
67
67
 
68
- @d = @d.line(start_x, start_y, end_x, end_y)
68
+ Gruff::Renderer::Line.new(color: data_row.color, width: stroke_width).render(start_x, start_y, end_x, end_y)
69
69
 
70
- @d = @d.circle(start_x, start_y, start_x - circle_radius, start_y) unless @hide_dots
70
+ Gruff::Renderer::Circle.new(color: data_row.color, width: stroke_width).render(start_x, start_y, start_x - circle_radius, start_y) unless @hide_dots
71
71
  end
72
-
73
72
  end
74
73
 
75
- @d.draw(@base_image)
74
+ Gruff::Renderer.finish
76
75
  end
77
76
 
77
+ private
78
78
 
79
- # the lines connecting in the center, with the first line vertical
80
- def draw_line_markers
81
- return if @hide_line_markers
82
-
79
+ def setup_drawing
80
+ super
83
81
 
84
- # have to do this here (AGAIN)... see draw() in this class
85
- # because this funtion is called before the @radius, @center_x and @center_y are set
86
82
  @radius = @graph_height / 2.0
87
83
  @center_x = @graph_left + (@graph_width / 2.0)
88
84
  @center_y = @graph_top + (@graph_height / 2.0) - 10 # Move graph up a bit
85
+ end
89
86
 
87
+ # the lines connecting in the center, with the first line vertical
88
+ def draw_line_markers
89
+ return if @hide_line_markers
90
90
 
91
91
  # Draw horizontal line markers and annotate with numbers
92
- @d = @d.stroke(@marker_color)
93
- @d = @d.stroke_width 1
94
-
95
-
96
- (0..@column_count-1).each do |index|
97
- rad_pos = index * Math::PI * 2 / @column_count
98
-
99
- @d = @d.line(@center_x, @center_y, @center_x + Math::sin(rad_pos) * @radius, @center_y - Math::cos(rad_pos) * @radius)
92
+ (0..column_count - 1).each do |index|
93
+ rad_pos = index * Math::PI * 2 / column_count
100
94
 
95
+ Gruff::Renderer::Line.new(color: @marker_color)
96
+ .render(@center_x, @center_y, @center_x + Math.sin(rad_pos) * @radius, @center_y - Math.cos(rad_pos) * @radius)
101
97
 
102
98
  marker_label = labels[index] ? labels[index].to_s : '000'
103
-
104
99
  draw_label(@center_x, @center_y, rad_pos * 360 / (2 * Math::PI), @radius, marker_label)
105
100
  end
106
101
  end
107
102
 
108
- private
109
-
110
103
  def draw_label(center_x, center_y, angle, radius, amount)
111
104
  r_offset = 1.1
112
105
  x_offset = center_x # + 15 # The label points need to be tweaked slightly
113
106
  y_offset = center_y # + 0 # This one doesn't though
114
- x = x_offset + (radius * r_offset * Math.sin(angle.deg2rad))
115
- y = y_offset - (radius * r_offset * Math.cos(angle.deg2rad))
107
+ x = x_offset + (radius * r_offset * Math.sin(deg2rad(angle)))
108
+ y = y_offset - (radius * r_offset * Math.cos(deg2rad(angle)))
116
109
 
117
110
  # Draw label
118
- @d.fill = @marker_color
119
- @d.font = @font if @font
120
- @d.pointsize = scale_fontsize(20)
121
- @d.stroke = 'transparent'
122
- @d.font_weight = BoldWeight
123
- @d.gravity = CenterGravity
124
- @d.annotate_scaled(@base_image, 0, 0, x, y, amount, @scale)
111
+ text_renderer = Gruff::Renderer::Text.new(amount, font: @font, size: 20, color: @marker_color, weight: Magick::BoldWeight)
112
+ text_renderer.render(0, 0, x, y, Magick::CenterGravity)
125
113
  end
126
-
127
114
  end
128
-
129
- # # This method is already in Float
130
- # class Float
131
- # # Used for degree => radian conversions
132
- # def deg2rad
133
- # self * (Math::PI/180.0)
134
- # end
135
- # end
136
-
137
-
138
-