dyi 0.0.0

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 (48) hide show
  1. data/COPYING +674 -0
  2. data/README +28 -0
  3. data/examples/class_diagram.rb +151 -0
  4. data/examples/data/03311056.xlsx +0 -0
  5. data/examples/data/currency.xlsx +0 -0
  6. data/examples/data/money.csv +12 -0
  7. data/examples/line_and_bar.rb +26 -0
  8. data/examples/line_chart.rb +30 -0
  9. data/examples/logo.rb +68 -0
  10. data/examples/pie_chart.rb +19 -0
  11. data/examples/simple_shapes.rb +15 -0
  12. data/lib/dyi.rb +49 -0
  13. data/lib/dyi/chart.rb +34 -0
  14. data/lib/dyi/chart/array_reader.rb +136 -0
  15. data/lib/dyi/chart/base.rb +580 -0
  16. data/lib/dyi/chart/csv_reader.rb +93 -0
  17. data/lib/dyi/chart/excel_reader.rb +100 -0
  18. data/lib/dyi/chart/line_chart.rb +468 -0
  19. data/lib/dyi/chart/pie_chart.rb +141 -0
  20. data/lib/dyi/chart/table.rb +201 -0
  21. data/lib/dyi/color.rb +218 -0
  22. data/lib/dyi/coordinate.rb +224 -0
  23. data/lib/dyi/drawing.rb +32 -0
  24. data/lib/dyi/drawing/canvas.rb +100 -0
  25. data/lib/dyi/drawing/clipping.rb +61 -0
  26. data/lib/dyi/drawing/color_effect.rb +118 -0
  27. data/lib/dyi/drawing/filter.rb +74 -0
  28. data/lib/dyi/drawing/pen.rb +231 -0
  29. data/lib/dyi/drawing/pen_3d.rb +270 -0
  30. data/lib/dyi/font.rb +132 -0
  31. data/lib/dyi/formatter.rb +36 -0
  32. data/lib/dyi/formatter/base.rb +245 -0
  33. data/lib/dyi/formatter/emf_formatter.rb +253 -0
  34. data/lib/dyi/formatter/eps_formatter.rb +397 -0
  35. data/lib/dyi/formatter/svg_formatter.rb +260 -0
  36. data/lib/dyi/formatter/svg_reader.rb +113 -0
  37. data/lib/dyi/formatter/xaml_formatter.rb +317 -0
  38. data/lib/dyi/length.rb +399 -0
  39. data/lib/dyi/matrix.rb +122 -0
  40. data/lib/dyi/painting.rb +177 -0
  41. data/lib/dyi/shape.rb +1332 -0
  42. data/lib/dyi/svg_element.rb +149 -0
  43. data/lib/dyi/type.rb +104 -0
  44. data/lib/ironruby.rb +326 -0
  45. data/lib/util.rb +231 -0
  46. data/test/path_command_test.rb +217 -0
  47. data/test/test_length.rb +91 -0
  48. metadata +114 -0
data/README ADDED
@@ -0,0 +1,28 @@
1
+ = DYI: A Library to Create Vector-Images.
2
+
3
+ DYI is a 2D graphics library, very rich and expressive.
4
+ DYI have been optimized for SVG format, but it is also possible
5
+ to output other format; for example, EPS.
6
+
7
+ == License
8
+
9
+ Copyright (c) 2009-2011 Sound-F Co., Ltd. All rights reserved.
10
+
11
+ DYI is free software: you can redistribute it and/or modify it
12
+ under the terms of the GNU General Public License as published by
13
+ the Free Software Foundation, either version 3 of the License, or
14
+ (at your option) any later version.
15
+
16
+ DYI is distributed in the hope that it will be useful,
17
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ GNU General Public License for more details.
20
+
21
+ You should have received a copy of the GNU General Public License
22
+ along with DYI. If not, see <http://www.gnu.org/licenses/>.
23
+
24
+ == Support
25
+
26
+ We plan to make up a mailing list for support of DYI ,but it is
27
+ under construction.
28
+ We're going to set up it in a few days.
@@ -0,0 +1,151 @@
1
+ require '../lib/dyi'
2
+
3
+ class ClassBox
4
+ def initialize class_name
5
+ @name = class_name
6
+ @width = @name.length * 12
7
+ @height = 30
8
+ @children = []
9
+ end
10
+
11
+ def draw(canvas, pen, top_left_point, horizontal_span = 5)
12
+ @top_left_point_x = top_left_point[0]
13
+ @top_left_point_y = top_left_point[1]
14
+ pen.draw_rectangle(canvas, top_left_point, @width, @height)
15
+ pen.draw_text(canvas, [@top_left_point_x+@name.length * 2.5, @top_left_point_y+@height*3.0/4.0], @name)
16
+
17
+ total_width = 0
18
+ @children.each do |child|
19
+ total_width += child.width + horizontal_span
20
+ end
21
+ total_width -= horizontal_span
22
+
23
+ position_x = @top_left_point_x + @width/2.0 - total_width/2.0
24
+ @children.each_with_index do |child, i|
25
+ child.draw(canvas, pen, [position_x, @top_left_point_y+@height+30])
26
+ pen.draw_arrow(canvas, child.get_top_center, [get_arrowhead_pos_x(i), @top_left_point_y+@height])
27
+ position_x += child.width + horizontal_span
28
+ end
29
+ self
30
+ end
31
+
32
+ def extends parent
33
+ parent.pushChildren self
34
+ self
35
+ end
36
+
37
+ def pushChildren child
38
+ @children.push child
39
+ end
40
+
41
+ def width
42
+ @width
43
+ end
44
+
45
+ def get_top_center
46
+ [@top_left_point_x + @width/2.0, @top_left_point_y]
47
+ end
48
+
49
+ def get_bottom_center
50
+ [@top_left_point_x + @width/2.0, @top_left_point_y + @height]
51
+ end
52
+
53
+ private
54
+
55
+ def get_arrowhead_pos_x index
56
+ @top_left_point_x+(index+1)*@width/(@children.length+1)
57
+ end
58
+ end
59
+
60
+ class ArrowPen < DYI::Drawing::Pen
61
+ def draw_arrow(canvas, start_point, end_point, headsize = 5)
62
+ start_point = DYI::Coordinate.new(start_point)
63
+ end_point = DYI::Coordinate.new(end_point)
64
+ total_length = DYI::Length.new(start_point.distance(end_point))
65
+ end_point_no_rotate = DYI::Coordinate.new(start_point.x + total_length, start_point.y)
66
+
67
+ rotate_value = Math.atan2(end_point.y - start_point.y, end_point.x - start_point.x) * 360.0 / (2*Math::PI)
68
+
69
+ draw_line(canvas, start_point, end_point_no_rotate).rotate(rotate_value, start_point)
70
+ draw_polygon(canvas, end_point_no_rotate){|line|
71
+ line.line_to([-headsize, -headsize], true)
72
+ line.line_to([0, 2*headsize], true)
73
+ line.line_to([headsize, -headsize], true)
74
+ }.rotate(rotate_value, start_point)
75
+ end
76
+ end
77
+
78
+ canvas = DYI::Drawing::Canvas.new 1300, 1300
79
+
80
+ pen = ArrowPen.new
81
+ dashed_pen = ArrowPen.new(:stroke_dasharray => [3])
82
+
83
+ base_class = ClassBox.new('Base')
84
+ ClassBox.new('Table').extends(base_class)
85
+ ClassBox.new('PieChart').extends(base_class)
86
+ ClassBox.new('LineChart').extends(base_class)
87
+
88
+ pen.draw_rectangle(canvas, [30,10], 530, 260)
89
+ pen.draw_text(canvas, [60, 30], 'DYI::Chart')
90
+ base_class.draw(canvas, pen, [200,30])
91
+ legend = ClassBox.new('Legend').draw(canvas, pen, [350,30])
92
+ axis_util = ClassBox.new('AxisUtil').draw(canvas, pen, [450,30])
93
+ dashed_pen.draw_arrow(canvas, [200,90], legend.get_bottom_center)
94
+ dashed_pen.draw_arrow(canvas, [310,90], axis_util.get_bottom_center)
95
+
96
+ array_reader = ClassBox.new('ArrayReader')
97
+ ClassBox.new('CsvReader').extends(array_reader)
98
+ ClassBox.new('ExcelReader').extends(array_reader)
99
+
100
+ array_reader.draw(canvas, pen, [200, 170])
101
+
102
+ base_class = ClassBox.new('Base')
103
+ ClassBox.new('EpsFormatter').extends(base_class)
104
+ xml_formatter = ClassBox.new('XmlFormatter').extends(base_class)
105
+ ClassBox.new('EmfFormatter').extends(base_class)
106
+ ClassBox.new('SvgFormatter').extends(xml_formatter)
107
+ ClassBox.new('XamlFormatter').extends(xml_formatter)
108
+
109
+ pen.draw_rectangle(canvas, [30, 300], 480, 230)
110
+ pen.draw_text(canvas, [230, 320], 'DYI::Formatter')
111
+ base_class.draw(canvas, pen, [250,330])
112
+
113
+ pen_base_class = ClassBox.new('PenBase')
114
+ brush = ClassBox.new('Brush').extends(pen_base_class)
115
+ pen_class = ClassBox.new('Pen').extends(pen_base_class)
116
+ ClassBox.new('CylinderBrush').extends(brush)
117
+ ClassBox.new('CubicPen').extends(pen_class)
118
+
119
+ pen.draw_rectangle(canvas, [540, 300], 400, 230)
120
+ pen.draw_text(canvas, [730, 320], 'DYI::Drawing')
121
+ pen_base_class.draw(canvas, pen, [650,330], 90)
122
+ ClassBox.new('Canvas').draw(canvas, pen, [800,350])
123
+
124
+ comparable_class = ClassBox.new('Comparable').draw(canvas, pen, [50, 550])
125
+
126
+ pen.draw_rectangle(canvas, [30, 620], 270, 180)
127
+ pen.draw_text(canvas, [130, 640], 'DYI')
128
+ ClassBox.new('Length').draw(canvas, pen, [50, 650])
129
+ ClassBox.new('Coordinate').draw(canvas, pen, [150, 650])
130
+ ClassBox.new('Color').draw(canvas, pen, [50, 700])
131
+ ClassBox.new('Font').draw(canvas, pen, [200, 700])
132
+ ClassBox.new('Painting').draw(canvas, pen, [80, 750])
133
+ pen.draw_arrow(canvas, [122, 665], [150, 665])
134
+ dashed_pen.draw_arrow(canvas, [110, 650], comparable_class.get_bottom_center)
135
+
136
+ base_class = ClassBox.new('Base')
137
+ ClassBox.new('Rectangle').extends(base_class)
138
+ ClassBox.new('Circle').extends(base_class)
139
+ ClassBox.new('Ellipse').extends(base_class)
140
+ ClassBox.new('Line').extends(base_class)
141
+ polyline = ClassBox.new('Polyline').extends(base_class)
142
+ ClassBox.new('Path').extends(base_class)
143
+ ClassBox.new('Text').extends(base_class)
144
+ ClassBox.new('ShapeGroup').extends(base_class)
145
+ ClassBox.new('Polygon').extends(polyline)
146
+
147
+ pen.draw_rectangle(canvas, [310, 600], 770, 200)
148
+ pen.draw_text(canvas, [730, 620], 'DYI::Shape')
149
+ base_class.draw(canvas, pen, [650,630])
150
+
151
+ canvas.save 'output/test.svg'
@@ -0,0 +1,12 @@
1
+ 1998,550804,5919793,#008000
2
+ 1999,589375,6153010,#008000
3
+ 2000,658350,6330959,#008000
4
+ 2001,667725,6478207,#008000
5
+ 2002,910393,6707326,#008000
6
+ 2003,1015445,6767064,#ffa500
7
+ 2004,1082958,6891878,#ffa500
8
+ 2005,1115568,7015353,#ffa500
9
+ 2006,1035779,7129107,#ffa500
10
+ 2007,908926,7210963,#ffa500
11
+ 2008,883589,7345795,#ffa500
12
+ 2009,956238,7542049,#ffa500
@@ -0,0 +1,26 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require '../lib/dyi'
4
+
5
+ chart = DYI::Chart::LineChart.new 800,500,
6
+ :use_y_second_axises => [true, nil],
7
+ :chart_margins => {:left => 80, :right => 70, :bottom => 50},
8
+ :axis_format => '#,##0',
9
+ :axis_settings => {:min => 4000000},
10
+ :max_x_label_count => 20,
11
+ :data_columns => [0, 1],
12
+ :chart_types => [:line, :bar],
13
+ :line_width => 3,
14
+ :show_dropshadow => true,
15
+ :color_columns => [nil, 2],
16
+ # :represent_3d => true,
17
+ # :_3d_settings => {:dx => 30, :dy => -10},
18
+ :show_legend => false,
19
+ :legend_point => [50, 480]
20
+
21
+ reader = DYI::Chart::CsvReader.read('data/money.csv', :data_types => [:number, :number, :string], :title_column=>0, :column_skip => 1)
22
+ chart.load_data reader
23
+
24
+ chart.save 'output/test.svg'
25
+ chart.save 'output/test.eps', :eps
26
+ chart.save 'output/test.emf', :emf if defined? IRONRUBY_VERSION
@@ -0,0 +1,30 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require '../lib/dyi'
4
+
5
+ gr = DYI::Drawing::ColorEffect::LinearGradient.new([0,0],[0,1])
6
+ gr.add_color(0, '#8FD3F5')
7
+ gr.add_color(1, '#D5EEF2')
8
+
9
+ chart = DYI::Chart::LineChart.new 720,300,
10
+ # :represent_3d => true,
11
+ :axis_format => '#,##0',
12
+ :data_columns => [0, 3, 1],
13
+ :use_y_second_axises => [nil, nil, true],
14
+ :chart_types => [:line, :line, :area],
15
+ :x_axis_format => '%Y/%m/%d',
16
+ :axis_font => {:font_family => 'HGPGOTHICM', :size => 12},
17
+ :show_legend => true,
18
+ # :axis_settings => {:min=>4000, :max=> 16000},
19
+ :chart_colors => ['#F68C23', '#89C549', gr],
20
+ :line_width => 3,
21
+ :legend_font => {},
22
+ :legend_texts => ['Constant value (left axis)', 'Constant value of Dividend Reinvestment (left axis)', 'Net Assets (right axis)']
23
+
24
+ reader = DYI::Chart::ExcelReader.read('data/03311056.xlsx', :sheet => 'Sheet2', :title_column=>1, :column_skip=>2, :title_row=>1, :row_skip=>2)
25
+ chart.load_data reader
26
+
27
+ chart.save 'output/test.svg'
28
+ chart.save 'output/test.xaml', :xaml
29
+ chart.save 'output/test.eps', :eps
30
+ chart.save 'output/test.emf', :emf if defined? IRONRUBY_VERSION
@@ -0,0 +1,68 @@
1
+ require 'rubygems'
2
+ require '../lib/dyi'
3
+
4
+ canvas = DYI::Drawing::Canvas.new(287.008, 162.637)
5
+
6
+ DYI::Drawing::Brush.new(:color=>'#51ADE2').draw_closed_path(canvas, [287.008,0]) {|path|
7
+ path.rline_to([0,162.637], [-39.41,0])
8
+ path.rcurve_to([0,-5.191], [-1.729,-107.272], [-1.729,-107.272], [-2.594,102.295], [-2.813,107.272])
9
+ path.rline_to([-3.246,0])
10
+ path.rcurve_to([0,-4.977], [-1.728,-107.272], [-1.728,-107.272], [-2.595,102.513], [-2.595,107.272])
11
+ path.rline_to([-3.245, 0])
12
+ path.rcurve_to([-0.215,-4.54], [-1.729,-107.272], [-1.729,-107.272], [-2.813,102.943], [-2.813,107.272])
13
+ path.rline_to([-3.46, 0])
14
+ path.line_to([path.current_point.x, 0])
15
+ path.line_to([287.008, path.current_point.y])
16
+ }
17
+ DYI::Drawing::Brush.new(:color=>'#325BA8').draw_closed_path(canvas, [258.475,0]) {|path|
18
+ path.rline_to([-52.793,97.971], [-0.078,64.666], [-57.073,0], [-0.071, -65.106])
19
+ path.line_to([98.671,0])
20
+ path.rline_to([92.148,0])
21
+ path.rcurve_to([-12.327,25.52], [-35.9,74.829], [-35.9,74.829], [27.034,-50.391], [40.013, -74.829])
22
+ path.rline_to([4.322,0])
23
+ path.rcurve_to([-11.461,24.221], [-37.414,78.289], [-37.414,78.289], [30.206,-55.798], [41.955,-78.289])
24
+ path.rline_to([4.111,0])
25
+ path.rcurve_to([-10.599,21.844], [-39.146,81.75], [-39.146,81.75], [33.306,-62.069], [43.687,-81.75])
26
+ }
27
+
28
+ DYI::Drawing::Brush.new(:color=>'#51ADE2').draw_closed_path(canvas, [149.875,78.938]){|path|
29
+ path.rcurve_to([0,13.193], [-2.379,25.52], [-7.353,36.552])
30
+ path.rcurve_to([-4.757,10.814], [-11.894,20.114], [-20.112,27.249])
31
+ path.rline_to([-0.216, 0])
32
+ path.rcurve_to([-9.517,7.786], [-20.113,12.76], [-31.144,15.787])
33
+ path.rcurve_to([-11.03,3.027], [-22.276,4.111], [-33.954,4.111])
34
+ path.rcurve_to([-12.76,0], [-22.276,-0.651], [-28.98,-1.514])
35
+ path.rline_to([-20.113, -2.815])
36
+ path.rcurve_to([12.327,-1.077], [34.17,-4.322], [54.5,-15.784])
37
+ path.rcurve_to([14.921,-8.219], [27.034,-21.627], [32.441,-33.524])
38
+ path.rcurve_to([5.623,-11.894], [6.271,-20.543], [6.487,-20.543])
39
+ path.rcurve_to([-0.217,0], [-1.08,8.649], [-7.137,20.114])
40
+ path.rcurve_to([-5.623,11.676], [-18.167,24.654], [-32.873,32.003])
41
+ path.curve_to([35.468,153.985], [7.354,154.414], [0,154.414])
42
+ path.rline_to([0, -3.241])
43
+ path.rcurve_to([7.137,-0.215], [34.82,-1.729], [58.827,-15.355])
44
+ path.rcurve_to([29.844,-14.921], [35.9,-49.526], [35.035,-48.661])
45
+ path.rcurve_to([0.866,-0.866], [-6.487,33.303], [-36.117,46.714])
46
+ path.curve_to([33.954,146.198], [7.137,146.847], [0,146.847])
47
+ path.rline_to([0, -3.246])
48
+ path.rcurve_to([6.92,-0.211], [33.307,-1.942], [55.15,-14.488])
49
+ path.rcurve_to([26.168,-13.193], [31.358,-41.955], [31.358,-43.254])
50
+ path.rcurve_to([0,1.299], [-6.487,29.631], [-32.44,41.311])
51
+ path.curve_to([32.44,138.412], [6.92,139.278], [0,139.278])
52
+ path.line_to([path.current_point.x, 6.704])
53
+ path.rline_to([27.25, -4.326])
54
+ path.curve_to([37.631,0.647], [49.31,0], [61.854,0])
55
+ path.rcurve_to([11.03,0], [21.194,0.864], [31.36,3.677])
56
+ path.rcurve_to([9.731,2.594], [19.464,6.92], [27.25,12.975])
57
+ path.rcurve_to([9.083,6.706], [16.868,16.006], [21.843,26.819])
58
+ path.curve_to([147.496,54.284], [149.875,66.395], [149.875,78.938])
59
+ path.close_path
60
+
61
+ path.move_to([120.678,16.868])
62
+ path.rcurve_to([0,0], [0,-0.217], [-0.214,-0.217])
63
+ path.rline_to([0.214, 0])
64
+ path.line_to([path.current_point.x, 16.868])
65
+ }
66
+
67
+ canvas.save('output/logo.svg')
68
+ canvas.save('output/logo.eps', :eps)
@@ -0,0 +1,19 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require '../lib/dyi'
4
+
5
+ chart = DYI::Chart::PieChart.new 400,500,
6
+ :data_label_format => "{name}\n{percent}",
7
+ :represent_3d => true,
8
+ :moved_elements => [0.2,nil,nil,0.5],
9
+ :chart_colors => ['blue', 'red', 'yellow', 'green'],
10
+ :_3d_settings => {:dy => 30},
11
+ :chart_stroke_color => 'white'
12
+
13
+ reader = DYI::Chart::ExcelReader.read('data/currency.xlsx', :title_column=>0, :column_skip=>1)
14
+ chart.load_data reader
15
+
16
+ chart.save 'output/test.svg'
17
+ chart.save 'output/test.xaml', :xaml
18
+ chart.save 'output/test.eps', :eps
19
+ chart.save 'output/test.emf', :emf if defined? IRONRUBY_VERSION
@@ -0,0 +1,15 @@
1
+ require '../lib/dyi'
2
+
3
+ canvas = DYI::Drawing::Canvas.new(500, 500)
4
+
5
+ pen = DYI::Drawing::Pen.new(:color => 'blue')
6
+ pen.draw_rectangle(canvas, [30, 30], 30, 30)
7
+
8
+ brush = DYI::Drawing::Brush.new(:color => 'rgb(255,255,127)', :width => 0)
9
+ center_point = DYI::Coordinate.new(100, 45)
10
+ brush.draw_circle(canvas, center_point, 20)
11
+
12
+ pen = DYI::Drawing::Pen.new(:color => '#CCFFCC', :width => 5)
13
+ pen.draw_line(canvas, [150,70], [80,140])
14
+
15
+ canvas.save 'output/test.svg'
@@ -0,0 +1,49 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ # Copyright (c) 2009-2011 Sound-F Co., Ltd. All rights reserved.
4
+ #
5
+ # Author:: Mamoru Yuo
6
+ #
7
+ # This file is part of DYI.
8
+ #
9
+ # DYI is free software: you can redistribute it and/or modify it
10
+ # under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # DYI is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with DYI. If not, see <http://www.gnu.org/licenses/>.
21
+
22
+
23
+ module DYI
24
+ VERSION = '0.0.0'
25
+ end
26
+
27
+ %w(
28
+
29
+ util
30
+ dyi/length
31
+ dyi/coordinate
32
+ dyi/color
33
+ dyi/painting
34
+ dyi/font
35
+ dyi/matrix
36
+ dyi/type
37
+ dyi/svg_element
38
+ dyi/drawing
39
+ dyi/shape
40
+ dyi/formatter
41
+ dyi/chart
42
+
43
+ ).each do |file_name|
44
+ require File.join(File.dirname(__FILE__), file_name)
45
+ end
46
+
47
+ if defined? IRONRUBY_VERSION
48
+ require File.join(File.dirname(__FILE__), 'ironruby')
49
+ end
@@ -0,0 +1,34 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ # Copyright (c) 2009-2011 Sound-F Co., Ltd. All rights reserved.
4
+ #
5
+ # Author:: Mamoru Yuo
6
+ #
7
+ # This file is part of DYI.
8
+ #
9
+ # DYI is free software: you can redistribute it and/or modify it
10
+ # under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # DYI is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with DYI. If not, see <http://www.gnu.org/licenses/>.
21
+
22
+ %w(
23
+
24
+ base
25
+ line_chart
26
+ pie_chart
27
+ table
28
+ array_reader
29
+ csv_reader
30
+ excel_reader
31
+
32
+ ).each do |file_name|
33
+ require File.join(File.dirname(__FILE__), 'chart', file_name)
34
+ end