ctioga2 0.3 → 0.4
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.
- data/Changelog +18 -0
- data/lib/ctioga2/commands/arguments.rb +17 -2
- data/lib/ctioga2/commands/commands.rb +13 -5
- data/lib/ctioga2/commands/context.rb +53 -0
- data/lib/ctioga2/commands/doc/doc.rb +1 -1
- data/lib/ctioga2/commands/doc/documentation-commands.rb +1 -1
- data/lib/ctioga2/commands/doc/help.rb +1 -1
- data/lib/ctioga2/commands/doc/html.rb +1 -1
- data/lib/ctioga2/commands/doc/introspection.rb +16 -1
- data/lib/ctioga2/commands/doc/man.rb +1 -1
- data/lib/ctioga2/commands/doc/markup.rb +1 -1
- data/lib/ctioga2/commands/doc/wordwrap.rb +1 -1
- data/lib/ctioga2/commands/general-commands.rb +1 -1
- data/lib/ctioga2/commands/general-types.rb +1 -1
- data/lib/ctioga2/commands/groups.rb +1 -1
- data/lib/ctioga2/commands/interpreter.rb +22 -1
- data/lib/ctioga2/commands/parsers/command-line.rb +8 -1
- data/lib/ctioga2/commands/parsers/file.rb +2 -1
- data/lib/ctioga2/commands/strings.rb +1 -1
- data/lib/ctioga2/commands/type.rb +1 -1
- data/lib/ctioga2/commands/variables.rb +1 -1
- data/lib/ctioga2/data/backends/backend.rb +1 -1
- data/lib/ctioga2/data/backends/backends/gnuplot.rb +1 -1
- data/lib/ctioga2/data/backends/backends/math.rb +1 -1
- data/lib/ctioga2/data/backends/backends/text.rb +12 -2
- data/lib/ctioga2/data/backends/description.rb +1 -1
- data/lib/ctioga2/data/backends/factory.rb +1 -1
- data/lib/ctioga2/data/backends/parameter.rb +1 -1
- data/lib/ctioga2/data/datacolumn.rb +1 -1
- data/lib/ctioga2/data/dataset.rb +1 -1
- data/lib/ctioga2/data/filters.rb +1 -1
- data/lib/ctioga2/data/indexed-dtable.rb +1 -1
- data/lib/ctioga2/data/point.rb +1 -1
- data/lib/ctioga2/data/stack.rb +6 -6
- data/lib/ctioga2/graphics/coordinates.rb +1 -1
- data/lib/ctioga2/graphics/elements.rb +1 -1
- data/lib/ctioga2/graphics/elements/containers.rb +1 -1
- data/lib/ctioga2/graphics/elements/contour.rb +1 -1
- data/lib/ctioga2/graphics/elements/curve2d.rb +1 -1
- data/lib/ctioga2/graphics/elements/element.rb +1 -1
- data/lib/ctioga2/graphics/elements/gradient-region.rb +1 -1
- data/lib/ctioga2/graphics/elements/parametric2d.rb +1 -1
- data/lib/ctioga2/graphics/elements/primitive.rb +115 -69
- data/lib/ctioga2/graphics/elements/region.rb +1 -1
- data/lib/ctioga2/graphics/elements/subplot.rb +9 -3
- data/lib/ctioga2/graphics/elements/tangent.rb +1 -1
- data/lib/ctioga2/graphics/elements/xyz-map.rb +1 -1
- data/lib/ctioga2/graphics/generator.rb +1 -1
- data/lib/ctioga2/graphics/legends.rb +5 -7
- data/lib/ctioga2/graphics/legends/area.rb +8 -8
- data/lib/ctioga2/graphics/legends/items.rb +2 -2
- data/lib/ctioga2/graphics/legends/provider.rb +1 -1
- data/lib/ctioga2/graphics/legends/storage.rb +1 -1
- data/lib/ctioga2/graphics/root.rb +1 -1
- data/lib/ctioga2/graphics/styles.rb +5 -0
- data/lib/ctioga2/graphics/styles/arrows.rb +53 -0
- data/lib/ctioga2/graphics/styles/axes.rb +29 -23
- data/lib/ctioga2/graphics/styles/background.rb +12 -10
- data/lib/ctioga2/graphics/styles/base.rb +99 -5
- data/lib/ctioga2/graphics/styles/box.rb +67 -0
- data/lib/ctioga2/graphics/styles/carrays.rb +1 -1
- data/lib/ctioga2/graphics/styles/colormap.rb +1 -1
- data/lib/ctioga2/graphics/styles/curve.rb +7 -1
- data/lib/ctioga2/graphics/styles/drawable.rb +24 -11
- data/lib/ctioga2/graphics/styles/errorbar.rb +1 -1
- data/lib/ctioga2/graphics/styles/factory.rb +1 -1
- data/lib/ctioga2/graphics/styles/gradients.rb +3 -3
- data/lib/ctioga2/graphics/styles/legend.rb +20 -5
- data/lib/ctioga2/graphics/styles/location.rb +3 -3
- data/lib/ctioga2/graphics/styles/map-axes.rb +6 -7
- data/lib/ctioga2/graphics/styles/plot.rb +51 -26
- data/lib/ctioga2/graphics/styles/sets.rb +1 -1
- data/lib/ctioga2/graphics/styles/sheet.rb +348 -0
- data/lib/ctioga2/graphics/styles/texts.rb +45 -64
- data/lib/ctioga2/graphics/subplot-commands.rb +1 -1
- data/lib/ctioga2/graphics/types.rb +1 -3
- data/lib/ctioga2/graphics/types/bijection.rb +1 -1
- data/lib/ctioga2/graphics/types/boundaries.rb +1 -1
- data/lib/ctioga2/graphics/types/boxes.rb +1 -1
- data/lib/ctioga2/graphics/types/dimensions.rb +2 -2
- data/lib/ctioga2/graphics/types/grid.rb +1 -1
- data/lib/ctioga2/graphics/types/location.rb +2 -2
- data/lib/ctioga2/graphics/types/point.rb +1 -1
- data/lib/ctioga2/log.rb +10 -6
- data/lib/ctioga2/metabuilder/type.rb +1 -1
- data/lib/ctioga2/metabuilder/types/coordinates.rb +1 -1
- data/lib/ctioga2/metabuilder/types/data.rb +1 -1
- data/lib/ctioga2/metabuilder/types/dates.rb +1 -1
- data/lib/ctioga2/metabuilder/types/lists.rb +1 -1
- data/lib/ctioga2/metabuilder/types/numbers.rb +1 -1
- data/lib/ctioga2/metabuilder/types/strings.rb +1 -1
- data/lib/ctioga2/metabuilder/types/styles.rb +30 -3
- data/lib/ctioga2/plotmaker.rb +1 -1
- data/lib/ctioga2/postprocess.rb +1 -1
- data/lib/ctioga2/utils.rb +78 -3
- metadata +6 -5
- data/lib/ctioga2/git-fools-svn.rb +0 -7
- data/lib/ctioga2/graphics/elements/redirecting-container.rb~ +0 -123
- data/lib/ctioga2/metabuilder/types/generic.rb~ +0 -225
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# arrows.rb: style objects for lines and arrows
|
|
2
|
+
# copyright (c) 2012 by Vincent Fourmond
|
|
3
|
+
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
# (at your option) any later version.
|
|
8
|
+
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details (in the COPYING file).
|
|
13
|
+
|
|
14
|
+
require 'ctioga2/utils'
|
|
15
|
+
require 'ctioga2/log'
|
|
16
|
+
|
|
17
|
+
# This module contains all the classes used by ctioga
|
|
18
|
+
module CTioga2
|
|
19
|
+
|
|
20
|
+
Version::register_svn_info('$Revision$', '$Date$')
|
|
21
|
+
|
|
22
|
+
module Graphics
|
|
23
|
+
|
|
24
|
+
# All the styles
|
|
25
|
+
module Styles
|
|
26
|
+
|
|
27
|
+
# This class represents styles attached to a box
|
|
28
|
+
#
|
|
29
|
+
# @todo Add rounded corners and the like...
|
|
30
|
+
class BoxStyle < StrokeStyle
|
|
31
|
+
|
|
32
|
+
sub_style 'fill', FillStyle
|
|
33
|
+
|
|
34
|
+
def draw_box(t, x1, y1, x2, y2)
|
|
35
|
+
t.context do
|
|
36
|
+
t.discard_path
|
|
37
|
+
|
|
38
|
+
## @todo Rounded rects!
|
|
39
|
+
if fill && fill.color
|
|
40
|
+
fill.setup_fill(t)
|
|
41
|
+
t.append_rect_to_path(x1, y1, x2 - x1, y2 - y1)
|
|
42
|
+
fill.do_fill(t)
|
|
43
|
+
end
|
|
44
|
+
if color
|
|
45
|
+
set_stroke_style(t)
|
|
46
|
+
t.append_rect_to_path(x1, y1, x2 - x1, y2 - y1)
|
|
47
|
+
t.stroke
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Draws a box around the given box, leaving dx and dy
|
|
54
|
+
# around. If _dy_ is omitted, it defaults to _dx_
|
|
55
|
+
def draw_box_around(t, x1, y1, x2, y2, dx, dy = nil)
|
|
56
|
+
dy ||= dx
|
|
57
|
+
dx = dx.to_figure(t, :x)
|
|
58
|
+
dy = dy.to_figure(t, :y)
|
|
59
|
+
draw_box(t, x1 - dx, y1 + dy,
|
|
60
|
+
x2 + dx, y2 - dy)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
@@ -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$', '$Date$')
|
|
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
|
|
|
@@ -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$', '$Date$')
|
|
20
|
+
Version::register_svn_info('$Revision: 199 $', '$Date: 2010-11-30 00:48:26 +0100 (Tue, 30 Nov 2010) $')
|
|
21
21
|
|
|
22
22
|
module Graphics
|
|
23
23
|
|
|
@@ -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$', '$Date$')
|
|
20
|
+
Version::register_svn_info('$Revision: 349 $', '$Date: 2012-12-25 22:23:27 +0100 (Tue, 25 Dec 2012) $')
|
|
21
21
|
|
|
22
22
|
module Graphics
|
|
23
23
|
|
|
@@ -28,6 +28,9 @@ module CTioga2
|
|
|
28
28
|
# \todo maybe for objects different than Curve2D, a subclass of
|
|
29
29
|
# CurveStyle could be used ? This way, we could have clearly
|
|
30
30
|
# separated legends and the like ?
|
|
31
|
+
#
|
|
32
|
+
# @todo This should probably be a subclass of basicStyle, to
|
|
33
|
+
# handle style sheets.
|
|
31
34
|
class CurveStyle
|
|
32
35
|
|
|
33
36
|
# The style of the line that is drawn, as a StrokeStyle.
|
|
@@ -105,6 +108,9 @@ module CTioga2
|
|
|
105
108
|
# plotted onto
|
|
106
109
|
#
|
|
107
110
|
# \todo make #legend another object derived from BasicStyle ?
|
|
111
|
+
#
|
|
112
|
+
# @todo This function should essentially disappear if we make
|
|
113
|
+
# this derive from BasicStyle.
|
|
108
114
|
def set_from_hash(hash)
|
|
109
115
|
@line = StrokeStyle.from_hash(hash, 'line_%s')
|
|
110
116
|
@marker = MarkerStyle.from_hash(hash, 'marker_%s')
|
|
@@ -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$', '$Date$')
|
|
20
|
+
Version::register_svn_info('$Revision: 350 $', '$Date: 2012-12-25 22:23:35 +0100 (Tue, 25 Dec 2012) $')
|
|
21
21
|
|
|
22
22
|
module Graphics
|
|
23
23
|
|
|
@@ -28,13 +28,13 @@ module CTioga2
|
|
|
28
28
|
# a Tioga path.
|
|
29
29
|
class StrokeStyle < BasicStyle
|
|
30
30
|
# The color
|
|
31
|
-
|
|
31
|
+
typed_attribute :color, 'color-or-false'
|
|
32
32
|
|
|
33
33
|
# The line style
|
|
34
|
-
|
|
34
|
+
typed_attribute :style, 'line-style'
|
|
35
35
|
|
|
36
36
|
# The line width
|
|
37
|
-
|
|
37
|
+
typed_attribute :width, 'float'
|
|
38
38
|
|
|
39
39
|
# Sets the stroke style to a FigureMaker object, _t_.
|
|
40
40
|
def set_stroke_style(t)
|
|
@@ -42,6 +42,14 @@ module CTioga2
|
|
|
42
42
|
t.line_type = @style if @style
|
|
43
43
|
t.line_width = @width if @width
|
|
44
44
|
end
|
|
45
|
+
|
|
46
|
+
# Draws a line according with this style
|
|
47
|
+
def draw_line(t, x1, y1, x2, y2)
|
|
48
|
+
t.context do
|
|
49
|
+
set_stroke_style(t)
|
|
50
|
+
t.stroke_line(x1, y1, x2, y2)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
45
53
|
end
|
|
46
54
|
|
|
47
55
|
# This class represents all the stylistic information to draw a
|
|
@@ -54,13 +62,13 @@ module CTioga2
|
|
|
54
62
|
class MarkerStyle < BasicStyle
|
|
55
63
|
|
|
56
64
|
# The color
|
|
57
|
-
|
|
65
|
+
typed_attribute :color, 'color'
|
|
58
66
|
|
|
59
67
|
# The marker
|
|
60
|
-
|
|
68
|
+
typed_attribute :marker, 'marker'
|
|
61
69
|
|
|
62
70
|
# The marker scale
|
|
63
|
-
|
|
71
|
+
typed_attribute :scale, 'float'
|
|
64
72
|
|
|
65
73
|
# Shows the marker at a given location/set of locations.
|
|
66
74
|
#
|
|
@@ -97,16 +105,21 @@ module CTioga2
|
|
|
97
105
|
#
|
|
98
106
|
# \todo add ways to specify complex fills, such as patterned
|
|
99
107
|
# fills and so on. Those would use clipping the path and base
|
|
100
|
-
# themselves on the coordinates of the current frame
|
|
108
|
+
# themselves on the coordinates of the current frame -- or more
|
|
109
|
+
# nicely use dimensions ? (which would allow to mix both to some
|
|
110
|
+
# extent ?)
|
|
101
111
|
#
|
|
102
112
|
# \todo more attributes ?
|
|
113
|
+
#
|
|
114
|
+
# @todo This class should also provide image-based fills, with
|
|
115
|
+
# CSS-like capacities (scaling, tiling, centering, and so on...)
|
|
103
116
|
class FillStyle < BasicStyle
|
|
104
117
|
|
|
105
118
|
# The color.
|
|
106
|
-
|
|
119
|
+
typed_attribute :color, "color"
|
|
107
120
|
|
|
108
121
|
# The transparency
|
|
109
|
-
|
|
122
|
+
typed_attribute :transparency, 'float'
|
|
110
123
|
|
|
111
124
|
# Sets up the parameters for the fill. Must be called before
|
|
112
125
|
# any path drawing.
|
|
@@ -136,7 +149,7 @@ module CTioga2
|
|
|
136
149
|
# fill ? A float, or:
|
|
137
150
|
# * :top, :bottom
|
|
138
151
|
# * false, nil to disable filling altogether
|
|
139
|
-
|
|
152
|
+
typed_attribute :y0, 'fill-until'
|
|
140
153
|
|
|
141
154
|
end
|
|
142
155
|
|
|
@@ -18,7 +18,7 @@ require 'ctioga2/log'
|
|
|
18
18
|
# This module contains all the classes used by ctioga
|
|
19
19
|
module CTioga2
|
|
20
20
|
|
|
21
|
-
Version::register_svn_info('$Revision$', '$Date$')
|
|
21
|
+
Version::register_svn_info('$Revision: 123 $', '$Date: 2010-01-10 02:45:47 +0100 (Sun, 10 Jan 2010) $')
|
|
22
22
|
|
|
23
23
|
module Graphics
|
|
24
24
|
|
|
@@ -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$', '$Date$')
|
|
20
|
+
Version::register_svn_info('$Revision: 217 $', '$Date: 2010-12-31 16:18:20 +0100 (Fri, 31 Dec 2010) $')
|
|
21
21
|
|
|
22
22
|
module Graphics
|
|
23
23
|
|
|
@@ -19,7 +19,7 @@ require 'ctioga2/graphics/coordinates'
|
|
|
19
19
|
# This module contains all the classes used by ctioga
|
|
20
20
|
module CTioga2
|
|
21
21
|
|
|
22
|
-
Version::register_svn_info('$Revision$', '$Date$')
|
|
22
|
+
Version::register_svn_info('$Revision: 335 $', '$Date: 2012-12-23 00:29:44 +0100 (Sun, 23 Dec 2012) $')
|
|
23
23
|
|
|
24
24
|
module Graphics
|
|
25
25
|
|
|
@@ -37,10 +37,10 @@ module CTioga2
|
|
|
37
37
|
include Log
|
|
38
38
|
|
|
39
39
|
# The starting color (for x = 0)
|
|
40
|
-
|
|
40
|
+
typed_attribute :start, 'color'
|
|
41
41
|
|
|
42
42
|
# The ending color (for x = 1)
|
|
43
|
-
|
|
43
|
+
typed_attribute :end, 'color'
|
|
44
44
|
|
|
45
45
|
def initialize(s,e)
|
|
46
46
|
warn { "This class shouldn't be used anymore at #{caller.inspect}" }
|
|
@@ -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$', '$Date$')
|
|
20
|
+
Version::register_svn_info('$Revision: 359 $', '$Date: 2012-12-26 10:45:35 +0100 (Wed, 26 Dec 2012) $')
|
|
21
21
|
|
|
22
22
|
module Graphics
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ module CTioga2
|
|
|
27
27
|
class LegendStorageStyle < BasicStyle
|
|
28
28
|
|
|
29
29
|
# The distance between two lines, a Types::Dimension object.
|
|
30
|
-
|
|
30
|
+
typed_attribute :dy, 'dimension'
|
|
31
31
|
|
|
32
32
|
# The width of the legend pictogram, a Types::Dimension object.
|
|
33
33
|
attr_accessor :picto_width
|
|
@@ -38,12 +38,22 @@ module CTioga2
|
|
|
38
38
|
# The distance between the legend pictogram and the text
|
|
39
39
|
attr_accessor :picto_to_text
|
|
40
40
|
|
|
41
|
-
# The scale of the legend
|
|
42
|
-
|
|
41
|
+
# The overall scale of the legend
|
|
42
|
+
typed_attribute :scale, 'float'
|
|
43
43
|
|
|
44
44
|
# The scale of the legend text -- relative to the overall
|
|
45
45
|
# scale.
|
|
46
|
-
|
|
46
|
+
typed_attribute :text_scale, 'float'
|
|
47
|
+
|
|
48
|
+
# The scale of the pictogram
|
|
49
|
+
typed_attribute :symbol_scale, 'float'
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# A frame around the legend
|
|
53
|
+
sub_style :frame, BoxStyle
|
|
54
|
+
|
|
55
|
+
# Padding around the frame
|
|
56
|
+
typed_attribute :frame_padding, 'dimension'
|
|
47
57
|
|
|
48
58
|
def initialize
|
|
49
59
|
@dy = Types::Dimension.new(:dy, 1.6, :y)
|
|
@@ -55,6 +65,11 @@ module CTioga2
|
|
|
55
65
|
|
|
56
66
|
@scale = 0.8
|
|
57
67
|
@text_scale = 0.82
|
|
68
|
+
@symbol_scale = 1
|
|
69
|
+
|
|
70
|
+
@frame = BoxStyle.new()
|
|
71
|
+
|
|
72
|
+
@frame_padding = Types::Dimension.from_text("1mm", :x)
|
|
58
73
|
end
|
|
59
74
|
end
|
|
60
75
|
end
|
|
@@ -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$', '$Date$')
|
|
20
|
+
Version::register_svn_info('$Revision: 335 $', '$Date: 2012-12-23 00:29:44 +0100 (Sun, 23 Dec 2012) $')
|
|
21
21
|
|
|
22
22
|
module Graphics
|
|
23
23
|
|
|
@@ -36,10 +36,10 @@ module CTioga2
|
|
|
36
36
|
|
|
37
37
|
# The name of the X axis, something to be fed to
|
|
38
38
|
# PlotStyle#get_axis_key
|
|
39
|
-
|
|
39
|
+
typed_attribute :xaxis, 'axis'
|
|
40
40
|
|
|
41
41
|
# The name of the Y axis
|
|
42
|
-
|
|
42
|
+
typed_attribute :yaxis, 'axis'
|
|
43
43
|
|
|
44
44
|
# Given a PlotStyle object, returns the axes keys as would
|
|
45
45
|
# PlotStyle#get_axis_key
|
|
@@ -32,17 +32,17 @@ module CTioga2
|
|
|
32
32
|
attr_accessor :color_map
|
|
33
33
|
|
|
34
34
|
# Zmin and Zmax boundaries
|
|
35
|
-
|
|
35
|
+
typed_attribute :bounds, "float-range"
|
|
36
36
|
|
|
37
37
|
# Size of the bar (not counting the label)
|
|
38
|
-
|
|
38
|
+
typed_attribute :bar_size, 'dimension'
|
|
39
39
|
|
|
40
40
|
# Space to be left between the graph and the beginning of the
|
|
41
41
|
# graph
|
|
42
|
-
|
|
42
|
+
typed_attribute :bar_shift, 'dimension'
|
|
43
43
|
|
|
44
44
|
# Space to be left on the side
|
|
45
|
-
|
|
45
|
+
typed_attribute :padding, 'dimension'
|
|
46
46
|
|
|
47
47
|
# Creates a new MapAxisStyle object at the given location with
|
|
48
48
|
# the given style.
|
|
@@ -155,10 +155,9 @@ module CTioga2
|
|
|
155
155
|
end
|
|
156
156
|
|
|
157
157
|
end
|
|
158
|
+
# @todo This naming doesn't look that good, honestly
|
|
159
|
+
ZAxisStyle = MapAxisStyle.options_hash()
|
|
158
160
|
|
|
159
|
-
ZAxisStyle = FullAxisStyle.dup
|
|
160
|
-
ZAxisStyle['bar_size'] = CmdArg.new('dimension')
|
|
161
|
-
ZAxisStyle['bar_shift'] = CmdArg.new('dimension')
|
|
162
161
|
end
|
|
163
162
|
end
|
|
164
163
|
end
|
|
@@ -19,7 +19,7 @@ require 'ctioga2/graphics/coordinates'
|
|
|
19
19
|
# This module contains all the classes used by ctioga
|
|
20
20
|
module CTioga2
|
|
21
21
|
|
|
22
|
-
Version::register_svn_info('$Revision$', '$Date$')
|
|
22
|
+
Version::register_svn_info('$Revision: 370 $', '$Date: 2012-12-28 17:40:18 +0100 (Fri, 28 Dec 2012) $')
|
|
23
23
|
|
|
24
24
|
module Graphics
|
|
25
25
|
|
|
@@ -33,6 +33,10 @@ module CTioga2
|
|
|
33
33
|
# * ticks
|
|
34
34
|
# * background (uniform fill + watermark if applicable + possibly
|
|
35
35
|
# a picture .?)
|
|
36
|
+
#
|
|
37
|
+
# This class is way too complex and needs too much flexibility
|
|
38
|
+
# to be handled by a subclass of BasicStyle. However, all
|
|
39
|
+
# substyles should be.
|
|
36
40
|
class PlotStyle
|
|
37
41
|
|
|
38
42
|
include Tioga::FigureConstants
|
|
@@ -77,27 +81,36 @@ module CTioga2
|
|
|
77
81
|
def initialize
|
|
78
82
|
# Default style for the plots.
|
|
79
83
|
@axes = {}
|
|
80
|
-
@axes[:left] =
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
@axes[:left] =
|
|
85
|
+
StyleSheet.style_for(AxisStyle, 'left', :left,
|
|
86
|
+
AXIS_WITH_TICKS_AND_NUMERIC_LABELS,
|
|
87
|
+
'$y$')
|
|
88
|
+
@axes[:bottom] =
|
|
89
|
+
StyleSheet.style_for(AxisStyle, 'bottom', :bottom,
|
|
90
|
+
AXIS_WITH_TICKS_AND_NUMERIC_LABELS,
|
|
91
|
+
'$x$')
|
|
92
|
+
|
|
93
|
+
@axes[:right] =
|
|
94
|
+
StyleSheet.style_for(AxisStyle, 'right', :right,
|
|
95
|
+
AXIS_WITH_TICKS_ONLY)
|
|
96
|
+
@axes[:top] =
|
|
97
|
+
StyleSheet.style_for(AxisStyle, 'top', :top,
|
|
98
|
+
AXIS_WITH_TICKS_ONLY)
|
|
89
99
|
|
|
90
100
|
@xaxis_location = :bottom
|
|
91
101
|
@yaxis_location = :left
|
|
92
102
|
|
|
93
|
-
@title =
|
|
94
|
-
|
|
103
|
+
@title =
|
|
104
|
+
StyleSheet.style_for(TextLabel, 'title',
|
|
105
|
+
nil,
|
|
106
|
+
Types::PlotLocation.new(:top))
|
|
95
107
|
|
|
96
108
|
@plot_margin = nil
|
|
97
109
|
|
|
98
110
|
@transforms = CoordinateTransforms.new
|
|
99
111
|
|
|
100
|
-
@background =
|
|
112
|
+
@background =
|
|
113
|
+
StyleSheet.style_for(BackgroundStyle, 'background')
|
|
101
114
|
|
|
102
115
|
# A padding of 4bp ? Why ?? Why not ?
|
|
103
116
|
@padding = Types::Dimension.new(:bp, 4)
|
|
@@ -227,7 +240,7 @@ module CTioga2
|
|
|
227
240
|
axis.draw_axis(t)
|
|
228
241
|
rescue Exception => e
|
|
229
242
|
error { "Impossible to draw axis #{which}: #{e.message}" }
|
|
230
|
-
debug { "Full message: #{e.inspect}" }
|
|
243
|
+
debug { "Full message: #{e.inspect}\n#{e.backtrace.join("\n")}" }
|
|
231
244
|
end
|
|
232
245
|
end
|
|
233
246
|
end
|
|
@@ -319,13 +332,12 @@ module CTioga2
|
|
|
319
332
|
"Axes and labels", "Axes and labels", 40)
|
|
320
333
|
|
|
321
334
|
|
|
322
|
-
|
|
323
335
|
AxisTypeCommands = []
|
|
324
336
|
[:left, :right, :top, :bottom].each do |loc|
|
|
325
337
|
AxisTypeCommands <<
|
|
326
338
|
Cmd.new("#{loc}",nil,"--#{loc}",
|
|
327
339
|
[
|
|
328
|
-
|
|
340
|
+
AxisStyleOptions['decoration'],
|
|
329
341
|
], PartialAxisStyle) do |plotmaker, dec, opts|
|
|
330
342
|
style = AxisStyle.current_axis_style(plotmaker, loc)
|
|
331
343
|
style.decoration = dec
|
|
@@ -336,14 +348,18 @@ module CTioga2
|
|
|
336
348
|
describe("Sets the type of the #{loc} axis",
|
|
337
349
|
<<"EOH", AxisGroup)
|
|
338
350
|
Sets the type of the #{loc} axis.
|
|
351
|
+
|
|
352
|
+
The options have the same meaning as for {command: define-axis-style},
|
|
353
|
+
see that command for more information.
|
|
339
354
|
EOH
|
|
355
|
+
|
|
340
356
|
end
|
|
341
357
|
|
|
342
358
|
AxisStyleCommand =
|
|
343
359
|
Cmd.new("axis-style",nil,"--axis-style",
|
|
344
360
|
[
|
|
345
361
|
CmdArg.new('axis'),
|
|
346
|
-
],
|
|
362
|
+
], AxisStyleOptions) do |plotmaker, which, opts|
|
|
347
363
|
style = AxisStyle.current_axis_style(plotmaker, which)
|
|
348
364
|
style.set_from_hash(opts)
|
|
349
365
|
end
|
|
@@ -351,8 +367,8 @@ EOH
|
|
|
351
367
|
describe("Sets the style of the given axis",
|
|
352
368
|
<<"EOH", AxisGroup)
|
|
353
369
|
This command can be used to set various aspects of the style of the
|
|
354
|
-
given axis, through its various options
|
|
355
|
-
|
|
370
|
+
given axis, through its various options, which are documented in more details
|
|
371
|
+
in the {command: define-axis-style} command.
|
|
356
372
|
EOH
|
|
357
373
|
|
|
358
374
|
BackgroundLinesCommand =
|
|
@@ -360,10 +376,9 @@ EOH
|
|
|
360
376
|
[
|
|
361
377
|
CmdArg.new('axis'),
|
|
362
378
|
CmdArg.new('color-or-false')
|
|
363
|
-
],
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}) do |plotmaker, which, color, options|
|
|
379
|
+
],
|
|
380
|
+
StrokeStyle.options_hash().without('color')
|
|
381
|
+
) do |plotmaker, which, color, options|
|
|
367
382
|
axis = AxisStyle.current_axis_style(plotmaker, which)
|
|
368
383
|
if color
|
|
369
384
|
style = {'color' => color}
|
|
@@ -388,7 +403,8 @@ EOH
|
|
|
388
403
|
%w{x y}.each do |axis|
|
|
389
404
|
labelcmd = Cmd.new("#{axis}label", "-#{axis}",
|
|
390
405
|
"--#{axis}label", [ CmdArg.new('text') ],
|
|
391
|
-
|
|
406
|
+
TextLabel.options_hash().without('text')
|
|
407
|
+
) do |plotmaker, label, options|
|
|
392
408
|
PlotStyle.current_plot_style(plotmaker).
|
|
393
409
|
set_label_style("#{axis}_label", options, label)
|
|
394
410
|
end
|
|
@@ -396,6 +412,8 @@ EOH
|
|
|
396
412
|
<<"EOH", AxisGroup)
|
|
397
413
|
Sets the #{axis.upcase} label of the current plot.
|
|
398
414
|
EOH
|
|
415
|
+
|
|
416
|
+
Commands::make_alias_for_option "#{axis}label", 'alignment', 'align', true
|
|
399
417
|
|
|
400
418
|
nolabelcmd = Cmd.new("no-#{axis}label", nil,
|
|
401
419
|
"--no-#{axis}label", []) do |plotmaker|
|
|
@@ -424,8 +442,10 @@ EOD
|
|
|
424
442
|
end
|
|
425
443
|
|
|
426
444
|
TitleLabelCommand =
|
|
427
|
-
Cmd.new('title', '-t', '--title',
|
|
428
|
-
|
|
445
|
+
Cmd.new('title', '-t', '--title',
|
|
446
|
+
[ CmdArg.new('text') ],
|
|
447
|
+
TextLabel.options_hash().without('text')
|
|
448
|
+
) do |plotmaker, label, options|
|
|
429
449
|
PlotStyle.current_plot_style(plotmaker).
|
|
430
450
|
set_label_style('title', options, label)
|
|
431
451
|
end
|
|
@@ -435,6 +455,8 @@ EOD
|
|
|
435
455
|
Sets the title of the current plot.
|
|
436
456
|
EOH
|
|
437
457
|
|
|
458
|
+
Commands::make_alias_for_option 'title', 'alignment', 'align', true
|
|
459
|
+
|
|
438
460
|
NoTitleLabelCommand =
|
|
439
461
|
Cmd.new('no-title', nil, '--no-title', []) do |plotmaker|
|
|
440
462
|
PlotStyle.current_plot_style(plotmaker).
|
|
@@ -501,6 +523,8 @@ EOH
|
|
|
501
523
|
PlotStyle.current_plot_style(plotmaker).
|
|
502
524
|
set_label_style(which, options)
|
|
503
525
|
end
|
|
526
|
+
|
|
527
|
+
Commands::make_alias_for_option 'label-style', 'alignment', 'align', true
|
|
504
528
|
|
|
505
529
|
LabelStyleCommand.describe("Sets the style of the given label",
|
|
506
530
|
<<"EOH", AxisGroup)
|
|
@@ -517,6 +541,7 @@ override the color using the /stroke_color option of
|
|
|
517
541
|
greater.
|
|
518
542
|
EOH
|
|
519
543
|
|
|
544
|
+
|
|
520
545
|
end
|
|
521
546
|
end
|
|
522
547
|
end
|