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.
- checksums.yaml +5 -5
- data/.editorconfig +14 -0
- data/.github/ISSUE_TEMPLATE.md +18 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +109 -0
- data/.rubocop_todo.yml +130 -0
- data/.travis.yml +24 -12
- data/.yardopts +1 -0
- data/{History.txt → CHANGELOG.md} +61 -25
- data/Gemfile +3 -7
- data/README.md +57 -25
- data/Rakefile +6 -201
- data/assets/plastik/blue.png +0 -0
- data/assets/plastik/green.png +0 -0
- data/assets/plastik/red.png +0 -0
- data/docker/Dockerfile +14 -0
- data/docker/build.sh +4 -0
- data/docker/launch.sh +4 -0
- data/gruff.gemspec +19 -14
- data/init.rb +2 -0
- data/lib/gruff.rb +26 -2
- data/lib/gruff/accumulator_bar.rb +18 -8
- data/lib/gruff/area.rb +33 -19
- data/lib/gruff/bar.rb +76 -45
- data/lib/gruff/base.rb +337 -613
- data/lib/gruff/bezier.rb +34 -19
- data/lib/gruff/bullet.rb +51 -62
- data/lib/gruff/dot.rb +38 -62
- data/lib/gruff/helper/bar_conversion.rb +47 -0
- data/lib/gruff/helper/bar_value_label_mixin.rb +30 -0
- data/lib/gruff/helper/stacked_mixin.rb +23 -0
- data/lib/gruff/histogram.rb +59 -0
- data/lib/gruff/line.rb +130 -150
- data/lib/gruff/mini/bar.rb +17 -10
- data/lib/gruff/mini/legend.rb +24 -36
- data/lib/gruff/mini/pie.rb +18 -12
- data/lib/gruff/mini/side_bar.rb +26 -12
- data/lib/gruff/net.rb +60 -84
- data/lib/gruff/patch/rmagick.rb +33 -0
- data/lib/gruff/patch/string.rb +10 -0
- data/lib/gruff/photo_bar.rb +27 -30
- data/lib/gruff/pie.rb +190 -93
- data/lib/gruff/renderer/bezier.rb +21 -0
- data/lib/gruff/renderer/circle.rb +21 -0
- data/lib/gruff/renderer/dash_line.rb +22 -0
- data/lib/gruff/renderer/dot.rb +39 -0
- data/lib/gruff/renderer/ellipse.rb +21 -0
- data/lib/gruff/renderer/line.rb +34 -0
- data/lib/gruff/renderer/polygon.rb +23 -0
- data/lib/gruff/renderer/polyline.rb +21 -0
- data/lib/gruff/renderer/rectangle.rb +19 -0
- data/lib/gruff/renderer/renderer.rb +127 -0
- data/lib/gruff/renderer/text.rb +42 -0
- data/lib/gruff/scatter.rb +156 -180
- data/lib/gruff/scene.rb +31 -41
- data/lib/gruff/side_bar.rb +77 -63
- data/lib/gruff/side_stacked_bar.rb +77 -60
- data/lib/gruff/spider.rb +37 -50
- data/lib/gruff/stacked_area.rb +32 -30
- data/lib/gruff/stacked_bar.rb +87 -49
- data/lib/gruff/store/base_data.rb +34 -0
- data/lib/gruff/store/custom_data.rb +34 -0
- data/lib/gruff/store/store.rb +80 -0
- data/lib/gruff/store/xy_data.rb +55 -0
- data/lib/gruff/themes.rb +32 -33
- data/lib/gruff/version.rb +3 -1
- metadata +88 -94
- data/Manifest.txt +0 -81
- data/RELEASE.md +0 -30
- data/assets/bubble.png +0 -0
- data/assets/city_scene/background/0000.png +0 -0
- data/assets/city_scene/background/0600.png +0 -0
- data/assets/city_scene/background/2000.png +0 -0
- data/assets/city_scene/clouds/cloudy.png +0 -0
- data/assets/city_scene/clouds/partly_cloudy.png +0 -0
- data/assets/city_scene/clouds/stormy.png +0 -0
- data/assets/city_scene/grass/default.png +0 -0
- data/assets/city_scene/haze/true.png +0 -0
- data/assets/city_scene/number_sample/1.png +0 -0
- data/assets/city_scene/number_sample/2.png +0 -0
- data/assets/city_scene/number_sample/default.png +0 -0
- data/assets/city_scene/sky/0000.png +0 -0
- data/assets/city_scene/sky/0200.png +0 -0
- data/assets/city_scene/sky/0400.png +0 -0
- data/assets/city_scene/sky/0600.png +0 -0
- data/assets/city_scene/sky/0800.png +0 -0
- data/assets/city_scene/sky/1000.png +0 -0
- data/assets/city_scene/sky/1200.png +0 -0
- data/assets/city_scene/sky/1400.png +0 -0
- data/assets/city_scene/sky/1500.png +0 -0
- data/assets/city_scene/sky/1700.png +0 -0
- data/assets/city_scene/sky/2000.png +0 -0
- data/assets/pc306715.jpg +0 -0
- data/lib/gruff/bar_conversion.rb +0 -46
- data/lib/gruff/deprecated.rb +0 -39
- data/lib/gruff/stacked_mixin.rb +0 -23
- data/test/gruff_test_case.rb +0 -154
- data/test/image_compare.rb +0 -58
- data/test/test_accumulator_bar.rb +0 -51
- data/test/test_area.rb +0 -134
- data/test/test_bar.rb +0 -505
- data/test/test_base.rb +0 -8
- data/test/test_bezier.rb +0 -33
- data/test/test_bullet.rb +0 -26
- data/test/test_dot.rb +0 -263
- data/test/test_legend.rb +0 -68
- data/test/test_line.rb +0 -657
- data/test/test_mini_bar.rb +0 -33
- data/test/test_mini_pie.rb +0 -25
- data/test/test_mini_side_bar.rb +0 -36
- data/test/test_net.rb +0 -231
- data/test/test_photo.rb +0 -41
- data/test/test_pie.rb +0 -154
- data/test/test_scatter.rb +0 -233
- data/test/test_scene.rb +0 -100
- data/test/test_side_bar.rb +0 -56
- data/test/test_sidestacked_bar.rb +0 -105
- data/test/test_spider.rb +0 -226
- data/test/test_stacked_area.rb +0 -52
- data/test/test_stacked_bar.rb +0 -52
data/Manifest.txt
DELETED
|
@@ -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
|
data/assets/bubble.png
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/assets/pc306715.jpg
DELETED
|
Binary file
|
data/lib/gruff/bar_conversion.rb
DELETED
|
@@ -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
|
data/lib/gruff/deprecated.rb
DELETED
|
@@ -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
|
data/lib/gruff/stacked_mixin.rb
DELETED
|
@@ -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
|
data/test/gruff_test_case.rb
DELETED
|
@@ -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
|
data/test/image_compare.rb
DELETED
|
@@ -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
|