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,81 +0,0 @@
1
- History.txt
2
- MIT-LICENSE
3
- Manifest.txt
4
- README.txt
5
- Rakefile
6
- assets/bubble.png
7
- assets/city_scene/background/0000.png
8
- assets/city_scene/background/0600.png
9
- assets/city_scene/background/2000.png
10
- assets/city_scene/clouds/cloudy.png
11
- assets/city_scene/clouds/partly_cloudy.png
12
- assets/city_scene/clouds/stormy.png
13
- assets/city_scene/grass/default.png
14
- assets/city_scene/haze/true.png
15
- assets/city_scene/number_sample/1.png
16
- assets/city_scene/number_sample/2.png
17
- assets/city_scene/number_sample/default.png
18
- assets/city_scene/sky/0000.png
19
- assets/city_scene/sky/0200.png
20
- assets/city_scene/sky/0400.png
21
- assets/city_scene/sky/0600.png
22
- assets/city_scene/sky/0800.png
23
- assets/city_scene/sky/1000.png
24
- assets/city_scene/sky/1200.png
25
- assets/city_scene/sky/1400.png
26
- assets/city_scene/sky/1500.png
27
- assets/city_scene/sky/1700.png
28
- assets/city_scene/sky/2000.png
29
- assets/pc306715.jpg
30
- assets/plastik/blue.png
31
- assets/plastik/green.png
32
- assets/plastik/red.png
33
- init.rb
34
- lib/gruff.rb
35
- lib/gruff/accumulator_bar.rb
36
- lib/gruff/area.rb
37
- lib/gruff/bar.rb
38
- lib/gruff/bar_conversion.rb
39
- lib/gruff/base.rb
40
- lib/gruff/bullet.rb
41
- lib/gruff/deprecated.rb
42
- lib/gruff/dot.rb
43
- lib/gruff/line.rb
44
- lib/gruff/mini/bar.rb
45
- lib/gruff/mini/legend.rb
46
- lib/gruff/mini/pie.rb
47
- lib/gruff/mini/side_bar.rb
48
- lib/gruff/net.rb
49
- lib/gruff/photo_bar.rb
50
- lib/gruff/pie.rb
51
- lib/gruff/scene.rb
52
- lib/gruff/side_bar.rb
53
- lib/gruff/side_stacked_bar.rb
54
- lib/gruff/spider.rb
55
- lib/gruff/stacked_area.rb
56
- lib/gruff/stacked_bar.rb
57
- lib/gruff/stacked_mixin.rb
58
- rails_generators/gruff/gruff_generator.rb
59
- rails_generators/gruff/templates/controller.rb
60
- rails_generators/gruff/templates/functional_test.rb
61
- test/gruff_test_case.rb
62
- test/test_accumulator_bar.rb
63
- test/test_area.rb
64
- test/test_bar.rb
65
- test/test_base.rb
66
- test/test_bullet.rb
67
- test/test_dot.rb
68
- test/test_legend.rb
69
- test/test_line.rb
70
- test/test_mini_bar.rb
71
- test/test_mini_pie.rb
72
- test/test_mini_side_bar.rb
73
- test/test_net.rb
74
- test/test_photo.rb
75
- test/test_pie.rb
76
- test/test_scene.rb
77
- test/test_side_bar.rb
78
- test/test_sidestacked_bar.rb
79
- test/test_spider.rb
80
- test/test_stacked_area.rb
81
- test/test_stacked_bar.rb
data/RELEASE.md DELETED
@@ -1,30 +0,0 @@
1
- Subject: [ANN] Gruff 0.5.1 released!
2
-
3
- The Gruff team is pleased to announce the release of Gruff 0.5.1.
4
-
5
- New in version 0.5.1:
6
-
7
- Skip packaging the test images. This reduces the gem from 20MB+ to
8
- 300KB+.
9
-
10
- Bugfixes:
11
-
12
- * Issue #92 Reduce the gem size by not shipping the test images.
13
-
14
- You can find a complete list of issues here:
15
-
16
- * https://github.com/topfunky/gruff/issues?state=closed&milestone=7
17
-
18
-
19
- Installation:
20
-
21
- gem install gruff
22
-
23
- You can find an introductory tutorial at
24
- https://github.com/topfunky/gruff
25
-
26
- Enjoy!
27
-
28
-
29
- --
30
- The Gruff Team
Binary file
Binary file
@@ -1,46 +0,0 @@
1
- ##
2
- # Original Author: David Stokar
3
- #
4
- # This class perfoms the y coordinats conversion for the bar class.
5
- #
6
- # There are three cases:
7
- #
8
- # 1. Bars all go from zero in positive direction
9
- # 2. Bars all go from zero to negative direction
10
- # 3. Bars either go from zero to positive or from zero to negative
11
- #
12
- class Gruff::BarConversion
13
- attr_writer :mode
14
- attr_writer :zero
15
- attr_writer :graph_top
16
- attr_writer :graph_height
17
- attr_writer :minimum_value
18
- attr_writer :spread
19
-
20
- def get_left_y_right_y_scaled(data_point, result)
21
- case @mode
22
- when 1 then # Case one
23
- # minimum value >= 0 ( only positiv values )
24
- result[0] = @graph_top + @graph_height*(1 - data_point) + 1
25
- result[1] = @graph_top + @graph_height - 1
26
- when 2 then # Case two
27
- # only negativ values
28
- result[0] = @graph_top + 1
29
- result[1] = @graph_top + @graph_height*(1 - data_point) - 1
30
- when 3 then # Case three
31
- # positiv and negativ values
32
- val = data_point-@minimum_value/@spread
33
- if data_point >= @zero
34
- result[0] = @graph_top + @graph_height*(1 - (val-@zero)) + 1
35
- result[1] = @graph_top + @graph_height*(1 - @zero) - 1
36
- else
37
- result[0] = @graph_top + @graph_height*(1 - (val-@zero)) + 1
38
- result[1] = @graph_top + @graph_height*(1 - @zero) - 1
39
- end
40
- else
41
- result[0] = 0.0
42
- result[1] = 0.0
43
- end
44
- end
45
-
46
- end
@@ -1,39 +0,0 @@
1
-
2
- ##
3
- # A mixin for methods that need to be deleted or have been
4
- # replaced by cleaner code.
5
-
6
- module Gruff
7
- module Deprecated
8
-
9
- def scale_measurements
10
- setup_graph_measurements
11
- end
12
-
13
- def total_height
14
- @rows + 10
15
- end
16
-
17
- def graph_top
18
- @graph_top * @scale
19
- end
20
-
21
- def graph_height
22
- @graph_height * @scale
23
- end
24
-
25
- def graph_left
26
- @graph_left * @scale
27
- end
28
-
29
- def graph_width
30
- @graph_width * @scale
31
- end
32
-
33
- # TODO Should be calculate_graph_height
34
- # def setup_graph_height
35
- # @graph_height = @graph_bottom - @graph_top
36
- # end
37
-
38
- end
39
- end
@@ -1,23 +0,0 @@
1
-
2
- module Gruff::Base::StackedMixin
3
- # Used by StackedBar and child classes.
4
- #
5
- # tsal: moved from Base 03 FEB 2007
6
- DATA_VALUES_INDEX = Gruff::Base::DATA_VALUES_INDEX
7
- def get_maximum_by_stack
8
- # Get sum of each stack
9
- max_hash = {}
10
- @data.each do |data_set|
11
- data_set[DATA_VALUES_INDEX].each_with_index do |data_point, i|
12
- max_hash[i] = 0.0 unless max_hash[i]
13
- max_hash[i] += data_point.to_f
14
- end
15
- end
16
-
17
- # @maximum_value = 0
18
- max_hash.keys.each do |key|
19
- @maximum_value = max_hash[key] if max_hash[key] > @maximum_value
20
- end
21
- @minimum_value = 0
22
- end
23
- end
@@ -1,154 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__) + '/../lib/')
2
-
3
- RMAGICK_BYPASS_VERSION_TEST = true
4
-
5
- require 'test/unit'
6
- require 'gruff'
7
- require 'fileutils'
8
-
9
- TEST_OUTPUT_DIR = File.dirname(__FILE__) + "/output#{'_java' if RUBY_PLATFORM == 'java'}"
10
- FileUtils.mkdir_p(TEST_OUTPUT_DIR)
11
- FileUtils.rm_f Dir[TEST_OUTPUT_DIR + '/*']
12
-
13
- if ENV['RM_INFO'] && RUBY_VERSION =~ /^(1\.9|2\.0)\./
14
- require 'minitest/reporters'
15
- MiniTest::Reporters.use!
16
- end
17
-
18
- class Gruff::Base
19
- alias :write_org :write
20
-
21
- def write(filename='graph.png')
22
- basefilename = File.basename(filename).split('.')[0..-2].join('.')
23
- extension = filename.slice(/\.[^\.]*$/)
24
- testfilename = File.join(TEST_OUTPUT_DIR, basefilename) + extension
25
- counter = 0
26
- while File.exists?(testfilename)
27
- counter += 1
28
- testfilename = File.join(TEST_OUTPUT_DIR, basefilename) + "-#{counter}#{extension}"
29
- end
30
- write_org(testfilename)
31
- end
32
- end
33
-
34
- class GruffTestCase < Test::Unit::TestCase
35
- def setup
36
- srand 42
37
- @datasets = [
38
- [:Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]],
39
- [:Charles, [80, 54, 67, 54, 68, 70, 90, 95]],
40
- [:Julie, [22, 29, 35, 38, 36, 40, 46, 57]],
41
- [:Jane, [95, 95, 95, 90, 85, 80, 88, 100]],
42
- [:Philip, [90, 34, 23, 12, 78, 89, 98, 88]],
43
- [:Arthur, [5, 10, 13, 11, 6, 16, 22, 32]],
44
- ]
45
-
46
- @labels = {
47
- 0 => '5/6',
48
- 1 => '5/15',
49
- 2 => '5/24',
50
- 3 => '5/30',
51
- 4 => '6/4',
52
- 5 => '6/12',
53
- 6 => '6/21',
54
- 7 => '6/28',
55
- }
56
- end
57
-
58
- def setup_single_dataset
59
- @datasets = [
60
- [:Jimmy, [25, 36, 86]]
61
- ]
62
-
63
- @labels = {
64
- 0 => 'You',
65
- 1 => 'Average',
66
- 2 => 'Lifetime'
67
- }
68
- end
69
-
70
- def setup_wide_dataset
71
- @datasets = [
72
- ['Auto', 25],
73
- ['Food', 5],
74
- ['Entertainment', 15]
75
- ]
76
-
77
- @labels = {0 => 'This Month'}
78
- end
79
-
80
- def test_dummy
81
- assert true
82
- end
83
-
84
- protected
85
-
86
- # Generate graphs at several sizes.
87
- #
88
- # Also writes the graph to disk.
89
- #
90
- # graph_sized 'bar_basic' do |g|
91
- # g.data('students', [1, 2, 3, 4])
92
- # end
93
- #
94
- def graph_sized(filename, sizes=['', 400])
95
- class_name = self.class.name.gsub(/^TestGruff/, '')
96
- Array(sizes).each do |size|
97
- g = instance_eval("Gruff::#{class_name}.new #{size}")
98
- g.title = "#{class_name} Graph"
99
- yield g
100
- write_test_file g, "#{filename}_#{size}.png"
101
- end
102
- end
103
-
104
- def write_test_file(graph, filename)
105
- testfilename = [TEST_OUTPUT_DIR, filename].join('/')
106
- basefilename = filename.split('.')[0..-2].join('.')
107
- extension = filename.slice(/\..*$/)
108
- counter = 0
109
- while File.exists? testfilename
110
- counter += 1
111
- testfilename = [TEST_OUTPUT_DIR, basefilename].join('/') + "-#{counter}#{extension}"
112
- end
113
- graph.write(testfilename)
114
- end
115
-
116
- ##
117
- # Example:
118
- #
119
- # setup_basic_graph Gruff::Pie, 400
120
- #
121
- def setup_basic_graph(*args)
122
- klass, size = Gruff::Bar, 400
123
- # Allow args to be klass, size or just klass or just size.
124
- #
125
- # TODO Refactor
126
- case args.length
127
- when 1
128
- case args[0]
129
- when Fixnum
130
- size = args[0]
131
- klass = eval("Gruff::#{self.class.name.gsub(/^TestGruff/, '')}")
132
- when String
133
- size = args[0]
134
- klass = eval("Gruff::#{self.class.name.gsub(/^TestGruff/, '')}")
135
- else
136
- klass = args[0]
137
- end
138
- when 2
139
- klass, size = args[0], args[1]
140
- end
141
-
142
- g = klass.new(size)
143
- g.title = 'My Bar Graph'
144
- g.labels = @labels
145
- g.font = '/Library/Fonts/Verdana.ttf'
146
-
147
-
148
- @datasets.each do |data|
149
- g.data(data[0], data[1])
150
- end
151
- g
152
- end
153
-
154
- end
@@ -1,58 +0,0 @@
1
- #!ruby
2
-
3
- require 'chunky_png'
4
-
5
- class ImageCompare
6
- include ChunkyPNG::Color
7
-
8
- def self.compare(file_name, old_file_name)
9
- name = file_name.chomp('.png')
10
- org_file_name = "#{name}_0.png~"
11
- new_file_name = "#{name}_1.png~"
12
-
13
- return nil unless File.exists? old_file_name
14
- images = [
15
- ChunkyPNG::Image.from_file(old_file_name),
16
- ChunkyPNG::Image.from_file(file_name),
17
- ]
18
-
19
- sizes = images.map(&:width).uniq + images.map(&:height).uniq
20
- if sizes.size != 2
21
- logger.warn "Image size has changed for #{name}: #{sizes}"
22
- return nil
23
- end
24
-
25
- diff = []
26
- images.first.height.times do |y|
27
- images.first.row(y).each_with_index do |pixel, x|
28
- unless pixel == images.last[x, y]
29
- diff << [x, y]
30
- end
31
- end
32
- end
33
-
34
- if diff.empty?
35
- File.delete(org_file_name) if File.exists? org_file_name
36
- File.delete(new_file_name) if File.exists? new_file_name
37
- return false
38
- end
39
-
40
- x, y = diff.map { |xy| xy[0] }, diff.map { |xy| xy[1] }
41
- (1..2).each do |i|
42
- images.each do |image|
43
- image.rect(x.min - i, y.min - i, x.max + i, y.max + i, ChunkyPNG::Color.rgb(255, 0, 0))
44
- end
45
- end
46
- images.first.save(org_file_name)
47
- images.last.save(new_file_name)
48
- true
49
- end
50
- end
51
-
52
- if $0 == __FILE__
53
- unless ARGV.size == 2
54
- puts "Usage: #$0 <image1> <image2>"
55
- exit 1
56
- end
57
- ImageCompare.compare(ARGV[0], ARGV[1])
58
- end