ctioga2 0.0 → 0.1

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 (84) hide show
  1. data/Changelog +25 -1
  2. data/lib/ctioga2/commands/commands.rb +13 -2
  3. data/lib/ctioga2/commands/doc/doc.rb +13 -17
  4. data/lib/ctioga2/commands/doc/documentation-commands.rb +14 -1
  5. data/lib/ctioga2/commands/doc/help.rb +136 -25
  6. data/lib/ctioga2/commands/doc/html.rb +56 -4
  7. data/lib/ctioga2/commands/doc/introspection.rb +45 -9
  8. data/lib/ctioga2/commands/doc/man.rb +7 -5
  9. data/lib/ctioga2/commands/doc/markup.rb +39 -12
  10. data/lib/ctioga2/commands/doc/wordwrap.rb +70 -0
  11. data/lib/ctioga2/commands/general-commands.rb +7 -4
  12. data/lib/ctioga2/commands/general-types.rb +27 -12
  13. data/lib/ctioga2/commands/interpreter.rb +2 -2
  14. data/lib/ctioga2/commands/parsers/command-line.rb +9 -5
  15. data/lib/ctioga2/commands/parsers/file.rb +5 -3
  16. data/lib/ctioga2/commands/type.rb +10 -3
  17. data/lib/ctioga2/commands/variables.rb +2 -2
  18. data/lib/ctioga2/data/backends/backend.rb +17 -15
  19. data/lib/ctioga2/data/backends/backends.rb +2 -2
  20. data/lib/ctioga2/data/backends/backends/gnuplot.rb +20 -5
  21. data/lib/ctioga2/data/backends/backends/math.rb +2 -2
  22. data/lib/ctioga2/data/backends/backends/text.rb +112 -17
  23. data/lib/ctioga2/data/backends/description.rb +10 -11
  24. data/lib/ctioga2/data/datacolumn.rb +73 -14
  25. data/lib/ctioga2/data/dataset.rb +305 -9
  26. data/lib/ctioga2/data/filters.rb +49 -1
  27. data/lib/ctioga2/data/indexed-dtable.rb +137 -0
  28. data/lib/ctioga2/data/point.rb +98 -7
  29. data/lib/ctioga2/data/stack.rb +98 -21
  30. data/lib/ctioga2/graphics/coordinates.rb +19 -2
  31. data/lib/ctioga2/graphics/elements.rb +12 -2
  32. data/lib/ctioga2/graphics/elements/containers.rb +14 -2
  33. data/lib/ctioga2/graphics/elements/contour.rb +67 -0
  34. data/lib/ctioga2/graphics/elements/curve2d.rb +103 -42
  35. data/lib/ctioga2/graphics/elements/element.rb +12 -2
  36. data/lib/ctioga2/graphics/elements/gradient-region.rb +94 -0
  37. data/lib/ctioga2/graphics/elements/parametric2d.rb +172 -0
  38. data/lib/ctioga2/graphics/elements/primitive.rb +37 -21
  39. data/lib/ctioga2/graphics/elements/region.rb +143 -0
  40. data/lib/ctioga2/graphics/elements/subplot.rb +92 -32
  41. data/lib/ctioga2/graphics/elements/tangent.rb +99 -0
  42. data/lib/ctioga2/graphics/elements/xyz-map.rb +126 -0
  43. data/lib/ctioga2/graphics/generator.rb +91 -6
  44. data/lib/ctioga2/graphics/legends.rb +26 -21
  45. data/lib/ctioga2/graphics/legends/area.rb +8 -8
  46. data/lib/ctioga2/graphics/legends/items.rb +5 -5
  47. data/lib/ctioga2/graphics/legends/storage.rb +4 -2
  48. data/lib/ctioga2/graphics/root.rb +24 -2
  49. data/lib/ctioga2/graphics/styles.rb +8 -0
  50. data/lib/ctioga2/graphics/styles/axes.rb +49 -23
  51. data/lib/ctioga2/graphics/styles/base.rb +2 -2
  52. data/lib/ctioga2/graphics/styles/carrays.rb +9 -2
  53. data/lib/ctioga2/graphics/styles/colormap.rb +272 -0
  54. data/lib/ctioga2/graphics/styles/curve.rb +64 -4
  55. data/lib/ctioga2/graphics/styles/drawable.rb +68 -9
  56. data/lib/ctioga2/graphics/styles/errorbar.rb +73 -0
  57. data/lib/ctioga2/graphics/styles/factory.rb +133 -17
  58. data/lib/ctioga2/graphics/styles/gradients.rb +60 -0
  59. data/lib/ctioga2/graphics/styles/location.rb +64 -0
  60. data/lib/ctioga2/graphics/styles/map-axes.rb +164 -0
  61. data/lib/ctioga2/graphics/styles/plot.rb +165 -62
  62. data/lib/ctioga2/graphics/styles/sets.rb +14 -1
  63. data/lib/ctioga2/graphics/styles/texts.rb +44 -34
  64. data/lib/ctioga2/graphics/subplot-commands.rb +94 -6
  65. data/lib/ctioga2/graphics/types.rb +113 -35
  66. data/lib/ctioga2/graphics/types/bijection.rb +3 -3
  67. data/lib/ctioga2/graphics/types/boundaries.rb +120 -1
  68. data/lib/ctioga2/graphics/types/dimensions.rb +8 -1
  69. data/lib/ctioga2/graphics/types/grid.rb +196 -0
  70. data/lib/ctioga2/graphics/types/location.rb +228 -0
  71. data/lib/ctioga2/graphics/types/point.rb +2 -2
  72. data/lib/ctioga2/log.rb +18 -18
  73. data/lib/ctioga2/metabuilder/type.rb +15 -3
  74. data/lib/ctioga2/metabuilder/types.rb +2 -2
  75. data/lib/ctioga2/metabuilder/types/coordinates.rb +13 -1
  76. data/lib/ctioga2/metabuilder/types/data.rb +50 -0
  77. data/lib/ctioga2/metabuilder/types/generic.rb +60 -0
  78. data/lib/ctioga2/metabuilder/types/lists.rb +53 -16
  79. data/lib/ctioga2/metabuilder/types/styles.rb +26 -45
  80. data/lib/ctioga2/plotmaker.rb +91 -20
  81. data/lib/ctioga2/postprocess.rb +8 -8
  82. data/lib/ctioga2/utils.rb +23 -4
  83. metadata +107 -75
  84. data/lib/ctioga2/data/merge.rb +0 -43
@@ -19,7 +19,7 @@ require 'ctioga2/graphics/legends/provider'
19
19
 
20
20
  module CTioga2
21
21
 
22
- Version::register_svn_info('$Revision: 68 $', '$Date: 2009-05-31 00:02:56 +0200 (Sun, 31 May 2009) $')
22
+ Version::register_svn_info('$Revision: 244 $', '$Date: 2011-01-23 23:36:02 +0100 (Sun, 23 Jan 2011) $')
23
23
 
24
24
  module Graphics
25
25
 
@@ -37,8 +37,8 @@ EOD
37
37
 
38
38
  NextLegendCommand.describe("Sets the legend for the next dataset",
39
39
  <<EOH, LegendGroup)
40
- Sets the legend for the next dataset. Overridden by the legend= option
41
- to the plot command.
40
+ Sets the legend for the next dataset. Overridden by the @legend@ option
41
+ to the {command: plot} command.
42
42
  EOH
43
43
 
44
44
  LegendLineCommand =
@@ -52,21 +52,6 @@ EOH
52
52
  LegendLineCommand.describe("Adds a pure text line to the legend",
53
53
  <<EOH, LegendGroup)
54
54
  Adds a line of text unrelated to any curve to the legend.
55
- EOH
56
-
57
- LegendInsideCommand =
58
- Cmd.new("legend-inside", nil, "--legend-inside",
59
- [ CmdArg.new('aligned-point')]) do |plotmaker, point|
60
- l = Legends::LegendArea.new(:inside)
61
- l.legend_position = point
62
- plotmaker.root_object.current_plot.legend_area = l
63
- end
64
-
65
- LegendInsideCommand.describe("Draw legends inside the current plot",
66
- <<EOH, LegendGroup)
67
- When this option is in effect, all legends for the current plot (and
68
- possibly subplots) are drawn inside the current plot, at the specified
69
- position.
70
55
  EOH
71
56
 
72
57
  AutoLegendCommand =
@@ -99,10 +84,30 @@ EOH
99
84
  <<EOH, LegendGroup)
100
85
  Sets the various aspects of the style of the legends throught
101
86
  its options:
102
- * dy: the spacing between consecutive lines
103
- * scale: the overall scale of the legends
104
- * text_scale: the scale of the text (and the markers) inside the legends
87
+ * @dy@: the spacing between consecutive lines
88
+ * @scale@: the overall scale of the legends
89
+ * @text_scale@: the scale of the text (and the markers) inside the legends
90
+ EOH
91
+
92
+ LegendInsideCommand =
93
+ Cmd.new("legend-inside", nil, "--legend-inside",
94
+ [ CmdArg.new('aligned-point')],
95
+ LegendStyleOptions) do |plotmaker, point, options|
96
+ l = Legends::LegendArea.new(:inside)
97
+ l.legend_position = point
98
+ plotmaker.root_object.current_plot.legend_area = l
99
+ l.legend_style.set_from_hash(options)
100
+ end
101
+
102
+ LegendInsideCommand.describe("Draw legends inside the current plot",
103
+ <<EOH, LegendGroup)
104
+ Using this command sets the position of the legends for the current
105
+ (sub)plot inside it, at the precise location given.
106
+
107
+ As a shortcut, {command: legend-inside} also takes all the options that
108
+ {command: legend-style} takes, with the same effect.
105
109
  EOH
106
110
 
111
+
107
112
  end
108
113
  end
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 80 $', '$Date: 2009-06-09 23:56:44 +0200 (Tue, 09 Jun 2009) $')
19
+ Version::register_svn_info('$Revision: 155 $', '$Date: 2010-06-21 21:41:32 +0200 (Mon, 21 Jun 2010) $')
20
20
 
21
21
  module Graphics
22
22
 
@@ -25,7 +25,7 @@ module CTioga2
25
25
 
26
26
  # This class holds a series of legends for curves.
27
27
  #
28
- # TODO:
28
+ # \todo
29
29
  #
30
30
  # * a legend can be plotted either inside a plot or outside the
31
31
  # root object
@@ -44,7 +44,7 @@ module CTioga2
44
44
  # @legend_area for the current Elements::Container, with the
45
45
  # given position.
46
46
  #
47
- # TODO: make a subclass for a top-level area ????
47
+ # \todo make a subclass for a top-level area ????
48
48
  class LegendArea
49
49
 
50
50
  # The style of the LegendStorage, a Styles::LegendStorageStyle
@@ -70,7 +70,7 @@ module CTioga2
70
70
  # subobjects. It assumes that the frames have been set
71
71
  # according to the return value of #partition_frame
72
72
  #
73
- # TODO:
73
+ # \todo
74
74
  #
75
75
  # * customization of the x and y of origin (y should match the
76
76
  # top of the corresponding graph, if applicable)
@@ -86,10 +86,10 @@ module CTioga2
86
86
 
87
87
  # We make figure coordinates frame coordinates
88
88
  t.set_bounds([0, 1, 1, 0])
89
- # TODO: customize this !
89
+ # \todo customize this !
90
90
  x, y = initial_xy(t, container)
91
91
  for item in items
92
- # TODO: transform the 0.0 for x into a negative
92
+ # \todo transform the 0.0 for x into a negative
93
93
  # user-specifiable stuff.
94
94
  item.draw(t, @legend_style, x , y)
95
95
  y -= @legend_style.dy.to_figure(t,:y)
@@ -176,12 +176,12 @@ module CTioga2
176
176
  def initial_xy(t, container)
177
177
  case @legend_type
178
178
  when :right
179
- l,r,t,b = container.subframe.to_frame_margins(t)
179
+ l,r,t,b = container.actual_subframe(t).to_frame_margins(t)
180
180
  # Here, we take profit from the fact that frame
181
181
  # coordinates are also figure coordinates within the
182
182
  # legend.
183
183
 
184
- # TODO: that won't work in the case of labels on the
184
+ # \todo that won't work in the case of labels on the
185
185
  # right-hand-side.
186
186
  return [- l/2, 1.0 - t]
187
187
  when :inside
@@ -18,7 +18,7 @@ require 'ctioga2/graphics/styles'
18
18
 
19
19
  module CTioga2
20
20
 
21
- Version::register_svn_info('$Revision: 55 $', '$Date: 2009-05-27 00:01:34 +0200 (Wed, 27 May 2009) $')
21
+ Version::register_svn_info('$Revision: 155 $', '$Date: 2010-06-21 21:41:32 +0200 (Mon, 21 Jun 2010) $')
22
22
 
23
23
  module Graphics
24
24
 
@@ -116,7 +116,7 @@ module CTioga2
116
116
  # The legend of a curve object, or rather, the legend
117
117
  # corresponding to a given
118
118
  #
119
- # TODO: finish to adapt: use FullTextStyle to draw the objects.
119
+ # \todo finish to adapt: use FullTextStyle to draw the objects.
120
120
  class CurveLegend < LegendItem
121
121
 
122
122
  include CTioga2::Log
@@ -130,9 +130,9 @@ module CTioga2
130
130
 
131
131
  # Draw one single text line
132
132
  #
133
- # TODO: adapt here !
133
+ # \todo adapt here !
134
134
  #
135
- # TODO: _x_ and _y_ are not taken into account the way they should be.
135
+ # \todo _x_ and _y_ are not taken into account the way they should be.
136
136
  def draw(t, legend_style, x, y)
137
137
  y = get_baseline_y(t, legend_style, y)
138
138
  t.context do
@@ -142,7 +142,7 @@ module CTioga2
142
142
  'bottom' => y,
143
143
  'top' => 1 - y - legend_style.picto_height.to_figure(t)
144
144
  }
145
- debug "Legend margins for '#{@curve_style.legend}' : #{margin_specs.inspect}"
145
+ debug { "Legend margins for '#{@curve_style.legend}' : #{margin_specs.inspect}" }
146
146
  t.subfigure(margin_specs) do
147
147
  # We make the markers slightly smaller than the text
148
148
  # around.
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
 
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 53 $', '$Date: 2009-05-20 01:05:32 +0200 (Wed, 20 May 2009) $')
19
+ Version::register_svn_info('$Revision: 139 $', '$Date: 2010-01-22 00:12:17 +0100 (Fri, 22 Jan 2010) $')
20
20
 
21
21
  module Graphics
22
22
 
@@ -50,7 +50,9 @@ module CTioga2
50
50
  retval << el
51
51
  elsif el.is_a? Elements::Container and
52
52
  (not el.legend_area)
53
- retval.concat(el.legend_storage.harvest_contents)
53
+ if el.legend_storage
54
+ retval.concat(el.legend_storage.harvest_contents)
55
+ end
54
56
  end
55
57
  end
56
58
  return retval
@@ -21,7 +21,7 @@ require 'ctioga2/graphics/subplot-commands'
21
21
 
22
22
  module CTioga2
23
23
 
24
- Version::register_svn_info('$Revision: 88 $', '$Date: 2009-06-17 00:10:31 +0200 (Wed, 17 Jun 2009) $')
24
+ Version::register_svn_info('$Revision: 155 $', '$Date: 2010-06-21 21:41:32 +0200 (Mon, 21 Jun 2010) $')
25
25
 
26
26
  # This module contains all graphical elements of CTioga2
27
27
  module Graphics
@@ -127,7 +127,7 @@ module CTioga2
127
127
  t.title_scale = 1
128
128
  t.xlabel_scale = 1
129
129
  t.ylabel_scale = 1
130
- # TODO: I think this is mostly useless. Check.
130
+ # \todo I think this is mostly useless. Check.
131
131
  end
132
132
 
133
133
  # Creates a subplot of the current plot. If @current_container
@@ -146,6 +146,28 @@ module CTioga2
146
146
  return subplot
147
147
  end
148
148
 
149
+ # This function is the companion of #subplot, but for Region
150
+ # objects. Returns the newly created Region.
151
+ def enter_region
152
+ if ! @current_container
153
+ subplot
154
+ end
155
+ region = Elements::Region.new(@current_container, self)
156
+ enter_subobject(region)
157
+ return region
158
+ end
159
+
160
+ # This function is the companion of #subplot, but for GradientRegion
161
+ # objects. Returns the newly created GradientRegion
162
+ def enter_gradient
163
+ if ! @current_container
164
+ subplot
165
+ end
166
+ region = Elements::GradientRegion.new(@current_container, self)
167
+ enter_subobject(region)
168
+ return region
169
+ end
170
+
149
171
  # Returns true if not a single drawable object has been pushed
150
172
  # unto the RootObject yet.
151
173
  def empty?
@@ -14,13 +14,21 @@
14
14
  require 'ctioga2/graphics/styles/base'
15
15
 
16
16
  require 'ctioga2/graphics/styles/drawable'
17
+ require 'ctioga2/graphics/styles/location'
17
18
  require 'ctioga2/graphics/styles/texts'
18
19
  require 'ctioga2/graphics/styles/carrays'
19
20
  require 'ctioga2/graphics/styles/curve'
20
21
 
22
+ require 'ctioga2/graphics/styles/gradients'
23
+ require 'ctioga2/graphics/styles/colormap'
24
+
25
+
26
+ require 'ctioga2/graphics/styles/errorbar'
27
+
21
28
  require 'ctioga2/graphics/styles/sets'
22
29
 
23
30
  require 'ctioga2/graphics/styles/axes'
31
+ require 'ctioga2/graphics/styles/map-axes'
24
32
  require 'ctioga2/graphics/styles/background'
25
33
  require 'ctioga2/graphics/styles/plot'
26
34
 
@@ -17,7 +17,7 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 94 $', '$Date: 2009-06-25 23:37:13 +0200 (Thu, 25 Jun 2009) $')
20
+ Version::register_svn_info('$Revision: 202 $', '$Date: 2010-11-30 22:21:17 +0100 (Tue, 30 Nov 2010) $')
21
21
 
22
22
  module Graphics
23
23
 
@@ -68,7 +68,7 @@ module CTioga2
68
68
  # Creates a new AxisStyle object at the given location with
69
69
  # the given style.
70
70
  def initialize(location = nil, decoration = nil, label = nil)
71
- @location = location
71
+ @location = Types::PlotLocation.new(location)
72
72
  @decoration = decoration
73
73
 
74
74
  @tick_label_style = FullTextStyle.new
@@ -80,7 +80,7 @@ module CTioga2
80
80
  # current plot boundaries. Also draw the #axis_label, if there
81
81
  # is one.
82
82
  #
83
- # TODO:
83
+ # \todo
84
84
  # * the offset mechanism, to place the axis away from the place
85
85
  # where it should be...
86
86
  # * non-linear axes (or linear, for that matter, but with
@@ -93,11 +93,31 @@ module CTioga2
93
93
  spec['stroke_color'] = @stroke_color
94
94
  end
95
95
  t.show_axis(spec)
96
- @axis_label.loc = LocationToTiogaLocation[@location]
96
+ @axis_label.loc = @location
97
97
  default = vertical? ? 'ylabel' : 'xlabel'
98
98
  @axis_label.draw(t, default)
99
99
  end
100
100
 
101
+ # Sets the current boundaries of the _t_ object to the _range_
102
+ # SimpleRange object for the direction handled by the
103
+ # AxisStyle, without touching the rest.
104
+ def set_bounds_for_axis(t, range = nil)
105
+ if ! range
106
+ return
107
+ end
108
+ l,r,top,b = t.bounds_left, t.bounds_right,
109
+ t.bounds_top, t.bounds_bottom
110
+
111
+ if self.vertical?
112
+ b = range.first
113
+ top = range.last
114
+ else
115
+ l = range.first
116
+ r = range.last
117
+ end
118
+ t.set_bounds([l,r,top,b])
119
+ end
120
+
101
121
  # Draw the axis background lines:
102
122
  def draw_background_lines(t)
103
123
  if @background_lines
@@ -132,16 +152,12 @@ module CTioga2
132
152
  get_axis_style(spec)
133
153
  end
134
154
 
135
- # Returns the extension of the axis (including tick labels and
136
- # labels if applicable) perpendicular to itself, in units of
137
- # text height (at scale = current text scale when drawing
138
- # axes).
139
- #
140
- # _style_ is a PlotStyle object containing the style
141
- # information for the target plot.
155
+ # Returns the part of the #extension only due to the labels
156
+ # (ticks and standard label).
142
157
  #
143
- # TODO: handle offset axes when that is implemented.
144
- def extension(t, style = nil)
158
+ # For now, it returns the same value as #extension, but that
159
+ # might change
160
+ def labels_only_extension(t, style = nil)
145
161
  ticks_shift, ticks_scale = *get_ticks_parameters(t)
146
162
  default = vertical? ? 'ylabel' : 'xlabel'
147
163
  le = @axis_label.label_extension(t, default, @location)
@@ -157,19 +173,31 @@ module CTioga2
157
173
  (style ? style.text_scale || 1 : 1)
158
174
  end
159
175
 
176
+ # Returns the extension of the axis (including tick labels and
177
+ # labels if applicable) perpendicular to itself, in units of
178
+ # text height (at scale = current text scale when drawing
179
+ # axes).
180
+ #
181
+ # _style_ is a PlotStyle object containing the style
182
+ # information for the target plot.
183
+ #
184
+ # \todo handle offset axes when that is implemented.
185
+ def extension(t, style = nil)
186
+ return labels_only_extension(t, style)
187
+ end
188
+
160
189
  protected
161
190
 
162
191
  # Whether the axis is vertical or not
163
192
  def vertical?
164
- return LocationVertical[@location]
193
+ return @location.vertical?
165
194
  end
166
195
 
167
196
  # Returns: _ticks_shift_, _ticks_scale_ for the axis.
168
197
  #
169
- # TODO: try something clever with the angles ?
198
+ # \todo try something clever with the angles ?
170
199
  def get_ticks_parameters(t)
171
- i = t.axis_information({'location' =>
172
- LocationToTiogaLocation[@location]})
200
+ i = t.axis_information({'location' => @location.tioga_location})
173
201
  retval = []
174
202
  retval << (@tick_label_style.shift || i['shift'])
175
203
  retval << (@tick_label_style.scale || i['scale'])
@@ -193,8 +221,7 @@ module CTioga2
193
221
  raise YetUnimplemented, "This has not been implemented yet"
194
222
  else
195
223
  retval.
196
- update({'location' =>
197
- LocationToTiogaLocation[@location],
224
+ update({'location' => @location.tioga_location,
198
225
  'type' => @decoration, 'log' => @log})
199
226
  return retval
200
227
  end
@@ -204,8 +231,7 @@ module CTioga2
204
231
  def compute_coordinate_transforms(t)
205
232
  return unless @transform
206
233
  # We'll proceed by steps...
207
- i = t.axis_information({'location' =>
208
- LocationToTiogaLocation[@location]})
234
+ i = t.axis_information({'location' => @location.tioga_location})
209
235
  t.context do
210
236
  if i['vertical']
211
237
  top,b = @transform.convert_to([t.bounds_top, t.bounds_bottom])
@@ -215,8 +241,7 @@ module CTioga2
215
241
  l,r = @transform.convert_to([t.bounds_left, t.bounds_right])
216
242
  end
217
243
  t.set_bounds([l,r,top,b])
218
- i = t.axis_information({'location' =>
219
- LocationToTiogaLocation[@location]})
244
+ i = t.axis_information({'location' => @location.tioga_location})
220
245
  # Now, we have the location of everything we need.
221
246
  end
222
247
  # In the following, the || are because of a fix in Tioga
@@ -235,6 +260,7 @@ module CTioga2
235
260
 
236
261
  PartialAxisStyle = {
237
262
  'transform' => CmdArg.new('bijection'),
263
+ 'location' => CmdArg.new('location'),
238
264
  'stroke_color' => CmdArg.new('color')
239
265
  }
240
266
 
@@ -16,7 +16,7 @@ require 'ctioga2/log'
16
16
  # This module contains all the classes used by ctioga
17
17
  module CTioga2
18
18
 
19
- Version::register_svn_info('$Revision: 32 $', '$Date: 2009-05-03 19:47:29 +0200 (Sun, 03 May 2009) $')
19
+ Version::register_svn_info('$Revision: 155 $', '$Date: 2010-06-21 21:41:32 +0200 (Mon, 21 Jun 2010) $')
20
20
 
21
21
  module Graphics
22
22
 
@@ -27,7 +27,7 @@ module CTioga2
27
27
  # share one common feature: all their attributes can be set
28
28
  # using the set_from_hash function.
29
29
  #
30
- # TODO: maybe a basic MetaBuilder::Type should be associated to
30
+ # \todo maybe a basic MetaBuilder::Type should be associated to
31
31
  # each attribute ???
32
32
  class BasicStyle
33
33
 
@@ -17,7 +17,7 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 2 $', '$Date: 2009-04-25 14:03:30 +0200 (Sat, 25 Apr 2009) $')
20
+ Version::register_svn_info('$Revision: 105 $', '$Date: 2009-09-17 22:17:16 +0200 (Thu, 17 Sep 2009) $')
21
21
 
22
22
  module Graphics
23
23
 
@@ -29,7 +29,14 @@ module CTioga2
29
29
  class CircularArray
30
30
 
31
31
  # The set through which we go
32
- attr_accessor :set
32
+ attr_reader :set
33
+
34
+ # Defines the set of elements we'll be circling through and
35
+ # resets the index.
36
+ def set=(s)
37
+ @set = s
38
+ @value = 0
39
+ end
33
40
 
34
41
  def initialize(set)
35
42
  @set = set