gruff 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,6 +1,13 @@
1
1
  CHANGELOG
2
2
 
3
+ == 0.0.2
4
+
5
+ * Fixed to_blob (thanks to Carlos Villela)
6
+ * Added bar graphs (initial functionality...will be enhanced)
7
+ * Removed rendered test output from gem
8
+
9
+
3
10
  == 0.0.1
4
11
 
5
- Initial release.
6
- Line graphs only. Other graph styles coming soon.
12
+ * Initial release.
13
+ * Line graphs only. Other graph styles coming soon.
data/lib/gruff.rb CHANGED
@@ -1,5 +1,7 @@
1
1
 
2
- %w{base area bar line pie}.each do |filename|
3
- #puts "Requiring #{filename}"
4
- require "gruff/#{filename}"
5
- end
2
+ require 'gruff/base'
3
+
4
+ require 'gruff/area'
5
+ require 'gruff/bar'
6
+ require 'gruff/line'
7
+ require 'gruff/pie'
data/lib/gruff/bar.rb CHANGED
@@ -4,11 +4,56 @@ require 'gruff/base'
4
4
  module Gruff
5
5
  class Bar < Base
6
6
 
7
- # TODO Not yet implemented.
8
7
  def draw
9
8
  super
10
9
 
11
- @d.draw(@base_image)
10
+ # Setup spacing.
11
+ #
12
+ # Columns sit side-by-side.
13
+ @bar_width = @graph_width / (@column_count * @data.length).to_f
14
+
15
+ @d = @d.stroke_opacity 0.0
16
+
17
+ @norm_data.each_with_index do |data_row, row_index|
18
+ @d = @d.fill current_color
19
+
20
+ data_row[1].each_with_index do |data_point, point_index|
21
+ # Use incremented x and scaled y
22
+ left_x = @graph_left + (@bar_width * (row_index + point_index + ((@data.length - 1) * point_index)))
23
+ left_y = @graph_top + (@graph_height - data_point * @graph_height)
24
+ right_x = left_x + @bar_width
25
+ right_y = @graph_top + @graph_height - 1
26
+
27
+ @d = @d.rectangle(left_x, left_y, right_x, right_y)
28
+
29
+ # TODO Calculate center based on bar_width and current row
30
+ #draw_label(left_x, index)
31
+ end
32
+
33
+ increment_color()
34
+ end
35
+
36
+ @d.draw(@base_image)
37
+ end
38
+
39
+ private
40
+
41
+ # Draws column labels below graph, centered under entire block
42
+ def draw_label(x_offset, index)
43
+ # TODO
44
+ if !@labels[index].nil? && @labels_seen[index].nil?
45
+ @d.fill = @marker_color
46
+ @d.font = @font
47
+ @d.stroke = 'transparent'
48
+ @d.font_weight = NormalWeight
49
+ @d.pointsize = scale_fontsize(@marker_pointsize)
50
+ @d.gravity = CenterGravity
51
+ @d = @d.annotate_scaled(@base_image,
52
+ 1, 1,
53
+ x_offset, @raw_rows - 80,
54
+ @labels[index], @scale)
55
+ @labels_seen[index] = 1
56
+ end
12
57
  end
13
58
 
14
59
  end
data/lib/gruff/base.rb CHANGED
@@ -7,12 +7,15 @@
7
7
  #
8
8
  #
9
9
 
10
- require 'rmagick'
11
- require 'yaml'
10
+ begin
11
+ require 'rmagick'
12
+ rescue LoadError
13
+ require 'RMagick' # capitalized on Windows
14
+ end
12
15
 
13
16
  module Gruff
14
17
 
15
- VERSION = '0.0.1'
18
+ VERSION = '0.0.2'
16
19
 
17
20
  class Base
18
21
 
@@ -172,10 +175,12 @@ module Gruff
172
175
  @base_image.write(filename)
173
176
  end
174
177
 
175
- # TODO Return the graph as a rendered binary blob.
176
- def to_blob(filename="graph.png")
178
+ # Return the graph as a rendered binary blob.
179
+ def to_blob(fileformat='PNG')
177
180
  draw()
178
- @base_image = @base_image.to_blob()
181
+ return @base_image.to_blob do
182
+ self.format=fileformat
183
+ end
179
184
  end
180
185
 
181
186
  protected
@@ -217,7 +222,7 @@ protected
217
222
  # Draws horizontal background lines and labels
218
223
  def draw_line_markers
219
224
  @graph_left = 130.0
220
- @graph_right = @raw_columns - 100.0
225
+ @graph_right = @raw_columns - 100.0 # TODO Make wider
221
226
  @graph_top = 150.0
222
227
  @graph_bottom = @raw_rows - 110.0
223
228
  @graph_height = @graph_bottom - @graph_top
data/rakefile CHANGED
@@ -61,7 +61,7 @@ spec = Gem::Specification.new do |s|
61
61
 
62
62
  s.files = [ "rakefile", "README", "CHANGELOG", "MIT-LICENSE" ]
63
63
  s.files = s.files + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
64
- s.files = s.files + Dir.glob( "test/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
64
+ s.files = s.files + Dir.glob( "test/**/*" ).delete_if { |item| item.include?( "\.svn" ) || item.include?("\.png") }
65
65
  end
66
66
 
67
67
  Rake::GemPackageTask.new(spec) do |p|
data/test/bar_test.rb ADDED
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/ruby
2
+
3
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
4
+ #$:.unshift File.dirname(__FILE__) + "/fixtures/helpers"
5
+
6
+ require 'test/unit'
7
+ require 'gruff'
8
+
9
+ class TestGruffBar < Test::Unit::TestCase
10
+
11
+ # TODO Delete old output files once when starting tests
12
+
13
+ def setup
14
+ @datasets = [
15
+ [:Jimmy, [25, 36, 86, 39]],
16
+ [:Charles, [80, 54, 67, 54]],
17
+ [:Julie, [22, 29, 35, 38]],
18
+ #[:Jane, [95, 95, 95, 90, 85, 80, 88, 100]],
19
+ #[:Philip, [90, 34, 23, 12, 78, 89, 98, 88]],
20
+ #["Arthur", [5, 10, 13, 11, 6, 16, 22, 32]],
21
+ ]
22
+ end
23
+
24
+ def test_bar_graph
25
+ g = Gruff::Bar.new
26
+ g.title = "Visual Multi-Line Bar Graph Test"
27
+ g.labels = {
28
+ 0 => '5/6',
29
+ 2 => '5/15',
30
+ 4 => '5/24',
31
+ 6 => '5/30',
32
+ }
33
+ @datasets.each do |data|
34
+ g.data(data[0], data[1])
35
+ end
36
+
37
+ g.write("test/output/bar_keynote.png")
38
+
39
+ g.theme_37signals
40
+ g.write("test/output/bar_37signals.png")
41
+
42
+ g.theme_rails_keynote
43
+ g.write("test/output/bar_rails_keynote.png")
44
+
45
+ g.theme_odeo
46
+ g.write("test/output/bar_odeo.png")
47
+ end
48
+
49
+
50
+ def test_bar_graph_small
51
+ g = Gruff::Bar.new(400)
52
+ g.title = "Visual Multi-Line Bar Graph Test"
53
+ g.labels = {
54
+ 0 => '5/6',
55
+ 2 => '5/15',
56
+ 4 => '5/24',
57
+ 6 => '5/30',
58
+ }
59
+ @datasets.each do |data|
60
+ g.data(data[0], data[1])
61
+ end
62
+
63
+ g.write("test/output/bar_keynote_small.png")
64
+
65
+ g.theme_37signals
66
+ g.write("test/output/bar_37signals_small.png")
67
+
68
+ g.theme_rails_keynote
69
+ g.write("test/output/bar_rails_keynote_small.png")
70
+
71
+ g.theme_odeo
72
+ g.write("test/output/bar_odeo_small.png")
73
+ end
74
+
75
+
76
+ end
data/test/line_test.rb CHANGED
@@ -6,7 +6,7 @@ $:.unshift(File.dirname(__FILE__) + "/../lib/")
6
6
  require 'test/unit'
7
7
  require 'gruff'
8
8
 
9
- class TestGruffLines < Test::Unit::TestCase
9
+ class TestGruffLine < Test::Unit::TestCase
10
10
 
11
11
  # TODO Delete old output files once when starting tests
12
12
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: gruff
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.1
7
- date: 2005-10-25 00:00:00 -07:00
6
+ version: 0.0.2
7
+ date: 2005-10-26 00:00:00 -07:00
8
8
  summary: Beautiful graphs for one or multiple datasets.
9
9
  require_paths:
10
10
  - lib
@@ -40,21 +40,9 @@ files:
40
40
  - lib/gruff/base.rb
41
41
  - lib/gruff/line.rb
42
42
  - lib/gruff/pie.rb
43
+ - test/bar_test.rb
43
44
  - test/line_test.rb
44
45
  - test/output
45
- - test/output/line_37signals.png
46
- - test/output/line_37signals_small.png
47
- - test/output/line_font.png
48
- - test/output/line_keynote.png
49
- - test/output/line_keynote_small.png
50
- - test/output/line_large.png
51
- - test/output/line_many.png
52
- - test/output/line_odeo.png
53
- - test/output/line_odeo_small.png
54
- - test/output/line_rails_keynote.png
55
- - test/output/line_rails_keynote_small.png
56
- - test/output/line_small.png
57
- - test/output/similar_high_end_values.png
58
46
  test_files: []
59
47
  rdoc_options: []
60
48
  extra_rdoc_files: []
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file