gruff 0.6.0-java → 0.11.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) 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 +112 -0
  7. data/.travis.yml +24 -15
  8. data/.yardopts +1 -0
  9. data/{History.txt → CHANGELOG.md} +72 -25
  10. data/Gemfile +3 -7
  11. data/README.md +57 -25
  12. data/Rakefile +21 -192
  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 +21 -13
  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 +435 -704
  26. data/lib/gruff/bezier.rb +32 -17
  27. data/lib/gruff/bullet.rb +62 -68
  28. data/lib/gruff/dot.rb +38 -82
  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 +60 -0
  33. data/lib/gruff/line.rb +134 -170
  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 +68 -81
  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 +39 -42
  42. data/lib/gruff/pie.rb +180 -89
  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 +42 -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 +132 -0
  53. data/lib/gruff/renderer/text.rb +53 -0
  54. data/lib/gruff/scatter.rb +163 -182
  55. data/lib/gruff/scene.rb +31 -41
  56. data/lib/gruff/side_bar.rb +81 -65
  57. data/lib/gruff/side_stacked_bar.rb +78 -62
  58. data/lib/gruff/spider.rb +49 -57
  59. data/lib/gruff/stacked_area.rb +40 -32
  60. data/lib/gruff/stacked_bar.rb +86 -53
  61. data/lib/gruff/store/base_data.rb +38 -0
  62. data/lib/gruff/store/custom_data.rb +38 -0
  63. data/lib/gruff/store/store.rb +80 -0
  64. data/lib/gruff/store/xy_data.rb +59 -0
  65. data/lib/gruff/themes.rb +32 -33
  66. data/lib/gruff/version.rb +3 -1
  67. metadata +80 -102
  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_labels_for_null_data.rb +0 -27
  107. data/test/test_legend.rb +0 -68
  108. data/test/test_line.rb +0 -657
  109. data/test/test_mini_bar.rb +0 -33
  110. data/test/test_mini_pie.rb +0 -25
  111. data/test/test_mini_side_bar.rb +0 -36
  112. data/test/test_net.rb +0 -231
  113. data/test/test_photo.rb +0 -41
  114. data/test/test_pie.rb +0 -161
  115. data/test/test_scatter.rb +0 -233
  116. data/test/test_scene.rb +0 -100
  117. data/test/test_side_bar.rb +0 -56
  118. data/test/test_sidestacked_bar.rb +0 -105
  119. data/test/test_spider.rb +0 -226
  120. data/test/test_stacked_area.rb +0 -52
  121. data/test/test_stacked_bar.rb +0 -68
@@ -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