ctioga2 0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +339 -0
- data/Changelog +6 -0
- data/bin/ctioga2 +26 -0
- data/lib/ctioga2/commands/arguments.rb +58 -0
- data/lib/ctioga2/commands/commands.rb +258 -0
- data/lib/ctioga2/commands/doc/doc.rb +118 -0
- data/lib/ctioga2/commands/doc/documentation-commands.rb +119 -0
- data/lib/ctioga2/commands/doc/help.rb +95 -0
- data/lib/ctioga2/commands/doc/html.rb +230 -0
- data/lib/ctioga2/commands/doc/introspection.rb +211 -0
- data/lib/ctioga2/commands/doc/man.rb +279 -0
- data/lib/ctioga2/commands/doc/markup.rb +359 -0
- data/lib/ctioga2/commands/general-commands.rb +119 -0
- data/lib/ctioga2/commands/general-types.rb +118 -0
- data/lib/ctioga2/commands/groups.rb +73 -0
- data/lib/ctioga2/commands/interpreter.rb +257 -0
- data/lib/ctioga2/commands/parsers/command-line.rb +187 -0
- data/lib/ctioga2/commands/parsers/file.rb +186 -0
- data/lib/ctioga2/commands/strings.rb +303 -0
- data/lib/ctioga2/commands/type.rb +100 -0
- data/lib/ctioga2/commands/variables.rb +101 -0
- data/lib/ctioga2/data/backends/backend.rb +260 -0
- data/lib/ctioga2/data/backends/backends.rb +39 -0
- data/lib/ctioga2/data/backends/backends/gnuplot.rb +140 -0
- data/lib/ctioga2/data/backends/backends/math.rb +121 -0
- data/lib/ctioga2/data/backends/backends/text.rb +335 -0
- data/lib/ctioga2/data/backends/description.rb +405 -0
- data/lib/ctioga2/data/backends/factory.rb +73 -0
- data/lib/ctioga2/data/backends/parameter.rb +109 -0
- data/lib/ctioga2/data/datacolumn.rb +245 -0
- data/lib/ctioga2/data/dataset.rb +233 -0
- data/lib/ctioga2/data/filters.rb +131 -0
- data/lib/ctioga2/data/merge.rb +43 -0
- data/lib/ctioga2/data/point.rb +72 -0
- data/lib/ctioga2/data/stack.rb +294 -0
- data/lib/ctioga2/graphics/coordinates.rb +73 -0
- data/lib/ctioga2/graphics/elements.rb +111 -0
- data/lib/ctioga2/graphics/elements/containers.rb +111 -0
- data/lib/ctioga2/graphics/elements/curve2d.rb +155 -0
- data/lib/ctioga2/graphics/elements/element.rb +90 -0
- data/lib/ctioga2/graphics/elements/primitive.rb +256 -0
- data/lib/ctioga2/graphics/elements/subplot.rb +140 -0
- data/lib/ctioga2/graphics/generator.rb +68 -0
- data/lib/ctioga2/graphics/legends.rb +108 -0
- data/lib/ctioga2/graphics/legends/area.rb +199 -0
- data/lib/ctioga2/graphics/legends/items.rb +183 -0
- data/lib/ctioga2/graphics/legends/provider.rb +58 -0
- data/lib/ctioga2/graphics/legends/storage.rb +65 -0
- data/lib/ctioga2/graphics/root.rb +209 -0
- data/lib/ctioga2/graphics/styles.rb +30 -0
- data/lib/ctioga2/graphics/styles/axes.rb +247 -0
- data/lib/ctioga2/graphics/styles/background.rb +122 -0
- data/lib/ctioga2/graphics/styles/base.rb +115 -0
- data/lib/ctioga2/graphics/styles/carrays.rb +53 -0
- data/lib/ctioga2/graphics/styles/curve.rb +101 -0
- data/lib/ctioga2/graphics/styles/drawable.rb +87 -0
- data/lib/ctioga2/graphics/styles/factory.rb +351 -0
- data/lib/ctioga2/graphics/styles/legend.rb +63 -0
- data/lib/ctioga2/graphics/styles/plot.rb +410 -0
- data/lib/ctioga2/graphics/styles/sets.rb +64 -0
- data/lib/ctioga2/graphics/styles/texts.rb +277 -0
- data/lib/ctioga2/graphics/subplot-commands.rb +141 -0
- data/lib/ctioga2/graphics/types.rb +188 -0
- data/lib/ctioga2/graphics/types/bijection.rb +79 -0
- data/lib/ctioga2/graphics/types/boundaries.rb +170 -0
- data/lib/ctioga2/graphics/types/boxes.rb +157 -0
- data/lib/ctioga2/graphics/types/dimensions.rb +157 -0
- data/lib/ctioga2/graphics/types/point.rb +247 -0
- data/lib/ctioga2/log.rb +97 -0
- data/lib/ctioga2/metabuilder/type.rb +316 -0
- data/lib/ctioga2/metabuilder/types.rb +39 -0
- data/lib/ctioga2/metabuilder/types/coordinates.rb +124 -0
- data/lib/ctioga2/metabuilder/types/dates.rb +43 -0
- data/lib/ctioga2/metabuilder/types/lists.rb +188 -0
- data/lib/ctioga2/metabuilder/types/numbers.rb +97 -0
- data/lib/ctioga2/metabuilder/types/strings.rb +93 -0
- data/lib/ctioga2/metabuilder/types/styles.rb +178 -0
- data/lib/ctioga2/plotmaker.rb +677 -0
- data/lib/ctioga2/postprocess.rb +115 -0
- data/lib/ctioga2/utils.rb +120 -0
- data/setup.rb +1586 -0
- metadata +144 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
# carrays.rb: 'circular arrays'
|
2
|
+
# copyright (c) 2009 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: 2 $', '$Date: 2009-04-25 14:03:30 +0200 (Sat, 25 Apr 2009) $')
|
21
|
+
|
22
|
+
module Graphics
|
23
|
+
|
24
|
+
module Styles
|
25
|
+
|
26
|
+
# Various arrays and hashes suitable for use with CircularArray and
|
27
|
+
# CurveStyleFactory
|
28
|
+
module Sets
|
29
|
+
include Tioga::FigureConstants
|
30
|
+
|
31
|
+
ColorSets = {
|
32
|
+
"default" =>
|
33
|
+
[Red, Green, Blue, Cyan, Magenta, Orange],
|
34
|
+
"pastel1" =>
|
35
|
+
[MediumSeaGreen, RoyalBlue, Pumpkin, DarkChocolate, Lilac, Crimson],
|
36
|
+
"colorblind" =>
|
37
|
+
[BrightBlue, Goldenrod, Coral, Lilac, FireBrick, RoyalPurple],
|
38
|
+
}
|
39
|
+
|
40
|
+
MarkerSets = {
|
41
|
+
"default" =>
|
42
|
+
[Bullet, TriangleUp, Square, Plus, Times],
|
43
|
+
"open" =>
|
44
|
+
[BulletOpen, TriangleUpOpen, SquareOpen, PlusOpen, TimesOpen],
|
45
|
+
}
|
46
|
+
|
47
|
+
LineWidthSets = {
|
48
|
+
'default' => [1.0]
|
49
|
+
}
|
50
|
+
|
51
|
+
LineStyleSets = {
|
52
|
+
'default' => [ LineStyles::Solid,
|
53
|
+
LineStyles::Dots,
|
54
|
+
LineStyles::Dashes,
|
55
|
+
LineStyles::Small_Dots,
|
56
|
+
LineStyles::Dot_Long_Dash,
|
57
|
+
LineStyles::Dash_Dot_Dot ]
|
58
|
+
}
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,277 @@
|
|
1
|
+
# texts.rb: style for textual objects
|
2
|
+
# copyright (c) 2009 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: 94 $', '$Date: 2009-06-25 23:37:13 +0200 (Thu, 25 Jun 2009) $')
|
21
|
+
|
22
|
+
module Graphics
|
23
|
+
|
24
|
+
module Styles
|
25
|
+
|
26
|
+
# Conversion between the #location attribute and the real
|
27
|
+
# constant used for Tioga
|
28
|
+
LocationToTiogaLocation = {
|
29
|
+
:left => Tioga::FigureConstants::LEFT,
|
30
|
+
:right => Tioga::FigureConstants::RIGHT,
|
31
|
+
:bottom => Tioga::FigureConstants::BOTTOM,
|
32
|
+
:top => Tioga::FigureConstants::TOP,
|
33
|
+
:at_x_origin => Tioga::FigureConstants::AT_X_ORIGIN,
|
34
|
+
:at_y_origin => Tioga::FigureConstants::AT_Y_ORIGIN
|
35
|
+
}
|
36
|
+
|
37
|
+
# Horizontal or vertical
|
38
|
+
LocationVertical = {
|
39
|
+
:left => true,
|
40
|
+
:right => true,
|
41
|
+
:bottom => false,
|
42
|
+
:top => false,
|
43
|
+
:at_x_origin => true,
|
44
|
+
:at_y_origin => false
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
# The style of a text object. This class is suitable for
|
49
|
+
# inclusion as a Hash to FigureMaker#show_axis, for the tick
|
50
|
+
# labels.
|
51
|
+
class BaseTextStyle < BasicStyle
|
52
|
+
|
53
|
+
# The angle of the text
|
54
|
+
attr_accessor :angle
|
55
|
+
|
56
|
+
# The 'shift' of the text. Only meaningful for axes and tick
|
57
|
+
# labels, where the position of the text is specified using a
|
58
|
+
# side rather than a precise position
|
59
|
+
attr_accessor :shift
|
60
|
+
|
61
|
+
# The scale of the text
|
62
|
+
attr_accessor :scale
|
63
|
+
|
64
|
+
# The vertical alignment
|
65
|
+
attr_accessor :alignement
|
66
|
+
|
67
|
+
# The horizontal alignment
|
68
|
+
attr_accessor :justification
|
69
|
+
|
70
|
+
# Draw the _text_ at the given location with the given style.
|
71
|
+
# If _y_ is _nil_, then _x_or_loc_ is taken to be a location
|
72
|
+
# (see FigureMaker#show_text).
|
73
|
+
def draw_text(t, text, x_or_loc, y = nil, measure = nil)
|
74
|
+
dict = prepare_show_text_dict(text, x_or_loc, y, measure)
|
75
|
+
t.show_text(dict)
|
76
|
+
end
|
77
|
+
|
78
|
+
protected
|
79
|
+
|
80
|
+
# Prepares the dictionnary for use with show_text
|
81
|
+
def prepare_show_text_dict(text, x_or_loc, y = nil, measure = nil)
|
82
|
+
dict = self.to_hash
|
83
|
+
dict['text'] = text
|
84
|
+
if y
|
85
|
+
dict['at'] = [x_or_loc, y]
|
86
|
+
else
|
87
|
+
# Perform automatic conversion on the location
|
88
|
+
if x_or_loc.is_a? Symbol
|
89
|
+
x_or_loc = LocationToTiogaLocation[x_or_loc]
|
90
|
+
end
|
91
|
+
dict['loc'] = x_or_loc
|
92
|
+
end
|
93
|
+
if measure
|
94
|
+
dict['measure'] = measure
|
95
|
+
end
|
96
|
+
return dict
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
# The style of a full text object.
|
103
|
+
class FullTextStyle < BaseTextStyle
|
104
|
+
# The color of the text
|
105
|
+
attr_accessor :color
|
106
|
+
|
107
|
+
# The (horizontal) position with respect to a location. You'll
|
108
|
+
# seldom need that.
|
109
|
+
attr_accessor :position
|
110
|
+
end
|
111
|
+
|
112
|
+
# A hash that can be used as a base for optional arguments to
|
113
|
+
# things that take texts.
|
114
|
+
FullTextStyleOptions = {
|
115
|
+
'angle' => CmdArg.new('float'),
|
116
|
+
'shift' => CmdArg.new('float'),
|
117
|
+
'scale' => CmdArg.new('float'),
|
118
|
+
'justification' => CmdArg.new('justification'),
|
119
|
+
'color' => CmdArg.new('color'),
|
120
|
+
'align' => CmdArg.new('alignment'),
|
121
|
+
}
|
122
|
+
|
123
|
+
# A label.
|
124
|
+
class TextLabel < FullTextStyle
|
125
|
+
# The text of the label. _nil_ or _false_ means there will be
|
126
|
+
# no text displayed
|
127
|
+
attr_accessor :text
|
128
|
+
|
129
|
+
# The location of the label.
|
130
|
+
attr_accessor :loc
|
131
|
+
|
132
|
+
def initialize(text = nil)
|
133
|
+
@text = text
|
134
|
+
end
|
135
|
+
|
136
|
+
# Draw the label, if #text is not _nil_ or _false_.
|
137
|
+
# Attributes such as scale, shift and angle are taken from the
|
138
|
+
# corresponding _default_ if _default_ isn't nil.
|
139
|
+
def draw(t, default = nil, measure = nil)
|
140
|
+
if @text
|
141
|
+
dict = prepare_label_dict(t, default, measure)
|
142
|
+
t.show_text(dict)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
# Gets the extension of the label, in units of text height.
|
147
|
+
# Default values for the various parameters are taken from the
|
148
|
+
# _default_ parameter if they are not specified.
|
149
|
+
def label_extension(t, default = nil, side = nil)
|
150
|
+
if @text
|
151
|
+
dict = prepare_label_dict(t, default, nil)
|
152
|
+
case side
|
153
|
+
when :bottom, :right
|
154
|
+
extra = 0.5 # To account for baseline ?
|
155
|
+
when :top, :left
|
156
|
+
extra = 1
|
157
|
+
else # We take the safe side !
|
158
|
+
extra = 1
|
159
|
+
end
|
160
|
+
return (dict['shift'] + extra) * dict['scale']
|
161
|
+
else
|
162
|
+
return 0
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
protected
|
167
|
+
|
168
|
+
def prepare_label_dict(t, default = nil, measure = nil)
|
169
|
+
dict = prepare_show_text_dict(@text, @loc, nil, measure)
|
170
|
+
if default
|
171
|
+
for attribute in %w(scale angle shift)
|
172
|
+
if ! dict.key?(attribute)
|
173
|
+
dict[attribute] = t.send("#{default}_#{attribute}")
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
return dict
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
181
|
+
|
182
|
+
# Same thing as FullTextStyleOptions, but also permits to
|
183
|
+
# override the #text part of the whole stuff..
|
184
|
+
FullTextLabelOptions = FullTextStyleOptions.dup
|
185
|
+
FullTextLabelOptions['text'] = CmdArg.new('text')
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
# The style for a string marker. Hmmm, this is somewhat
|
190
|
+
# redundant with TiogaPrimitiveCall::MarkerOptions and I don't
|
191
|
+
# like that.
|
192
|
+
class MarkerStringStyle < BasicStyle
|
193
|
+
|
194
|
+
MarkerOptions = {
|
195
|
+
'color' => 'color',
|
196
|
+
'stroke_color' => 'color',
|
197
|
+
'fill_color' => 'color',
|
198
|
+
'scale' => 'float',
|
199
|
+
'horizontal_scale' => 'float',
|
200
|
+
'vertical_scale' => 'float',
|
201
|
+
'angle' => 'float',
|
202
|
+
'justification' => 'justification',
|
203
|
+
'alignment' => 'alignment',
|
204
|
+
}
|
205
|
+
|
206
|
+
|
207
|
+
# The angle of the text
|
208
|
+
attr_accessor :angle
|
209
|
+
|
210
|
+
# The scale of the text
|
211
|
+
attr_accessor :scale
|
212
|
+
|
213
|
+
# The horizontal scale of the text
|
214
|
+
attr_accessor :horizontal_scale
|
215
|
+
|
216
|
+
# The vertical scale of the text
|
217
|
+
attr_accessor :vertical_scale
|
218
|
+
|
219
|
+
# The vertical alignment
|
220
|
+
attr_accessor :alignement
|
221
|
+
|
222
|
+
# The horizontal alignment
|
223
|
+
attr_accessor :justification
|
224
|
+
|
225
|
+
# Colors
|
226
|
+
attr_accessor :color
|
227
|
+
attr_accessor :stroke_color
|
228
|
+
attr_accessor :fill_color
|
229
|
+
|
230
|
+
# A number between 1 to 14 -- a PDF font
|
231
|
+
attr_accessor :font
|
232
|
+
|
233
|
+
# The rendering mode.
|
234
|
+
attr_accessor :mode
|
235
|
+
|
236
|
+
def initialize
|
237
|
+
# It make sense to use both by default, as it would be
|
238
|
+
# confusing to provide both fill_ and stroke_color that
|
239
|
+
# don't have effects by default...
|
240
|
+
@mode = Tioga::FigureConstants::FILL_AND_STROKE
|
241
|
+
end
|
242
|
+
|
243
|
+
|
244
|
+
# Draws the string marker at the given location
|
245
|
+
def draw_string_marker(t, text, x, y)
|
246
|
+
dict = self.to_hash
|
247
|
+
dict['text'] = text
|
248
|
+
dict['at'] = [x, y]
|
249
|
+
# TODO !
|
250
|
+
dict['mode'] =
|
251
|
+
t.show_marker(dict)
|
252
|
+
end
|
253
|
+
|
254
|
+
# Returns the true vertical scale of the marker
|
255
|
+
def real_vertical_scale
|
256
|
+
return (@vertical_scale || 1.0) * (@scale || 1.0)
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
StringMarkerOptions = {
|
261
|
+
'color' => CmdArg.new('color'),
|
262
|
+
'stroke_color' => CmdArg.new('color'),
|
263
|
+
'fill_color' => CmdArg.new('color'),
|
264
|
+
'scale' => CmdArg.new('float'),
|
265
|
+
'horizontal_scale' => CmdArg.new('float'),
|
266
|
+
'vertical_scale' => CmdArg.new('float'),
|
267
|
+
'angle' => CmdArg.new('float'),
|
268
|
+
'justification' => CmdArg.new('justification'),
|
269
|
+
'alignment' => CmdArg.new('alignment'),
|
270
|
+
'font' => CmdArg.new('pdf-font')
|
271
|
+
}
|
272
|
+
|
273
|
+
|
274
|
+
end
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# subplot-commands.rb: commands for dealing with subplots
|
2
|
+
# copyright (c) 2009 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
|
+
module CTioga2
|
18
|
+
|
19
|
+
Version::register_svn_info('$Revision: 97 $', '$Date: 2009-06-27 21:33:45 +0200 (Sat, 27 Jun 2009) $')
|
20
|
+
|
21
|
+
module Graphics
|
22
|
+
|
23
|
+
# The group containing all commands linked to subplots and other
|
24
|
+
# insets, frame margin selections...
|
25
|
+
SubplotsGroup =
|
26
|
+
CmdGroup.new('subplots',
|
27
|
+
"Subplots and assimilated",
|
28
|
+
"Subplots and assimilated", 31)
|
29
|
+
|
30
|
+
SetFrameMarginsCommand =
|
31
|
+
Cmd.new("frame-margins",nil,"--frame-margins",
|
32
|
+
[
|
33
|
+
CmdArg.new('frame-margins'),
|
34
|
+
]) do |plotmaker, margins|
|
35
|
+
|
36
|
+
plotmaker.root_object.current_plot.subframe = margins
|
37
|
+
end
|
38
|
+
|
39
|
+
SetFrameMarginsCommand.describe('Sets the margins of the current plot',
|
40
|
+
<<EOH, SubplotsGroup)
|
41
|
+
Sets the margins for the current plot. Margins are the same things as the
|
42
|
+
position (such as specified for and inset). Using this within an inset or
|
43
|
+
more complex plots might produce unexpected results. The main use of this
|
44
|
+
function is to control the padding around simple plots.
|
45
|
+
EOH
|
46
|
+
|
47
|
+
PaddingCommand =
|
48
|
+
Cmd.new("padding",nil,"--padding",
|
49
|
+
[
|
50
|
+
CmdArg.new('dimension'),
|
51
|
+
]) do |plotmaker, dim|
|
52
|
+
|
53
|
+
Styles::PlotStyle.current_plot_style(plotmaker).padding = dim
|
54
|
+
end
|
55
|
+
|
56
|
+
PaddingCommand.describe('Sets the padding for the current plot',
|
57
|
+
<<EOH, SubplotsGroup)
|
58
|
+
When the {command: frame-margins} is set to automatic, ctioga2 leaves
|
59
|
+
that much space around the plot on the sides where there are no labels.
|
60
|
+
EOH
|
61
|
+
|
62
|
+
|
63
|
+
InsetCommand =
|
64
|
+
Cmd.new("inset",nil,"--inset",
|
65
|
+
[
|
66
|
+
CmdArg.new('box'),
|
67
|
+
]) do |plotmaker, box|
|
68
|
+
subplot = plotmaker.root_object.subplot
|
69
|
+
subplot.subframe = box
|
70
|
+
end
|
71
|
+
|
72
|
+
InsetCommand.describe('Begins a new inset',
|
73
|
+
<<EOD, SubplotsGroup)
|
74
|
+
Starts a new inset at the specified box. If no graphical commands have
|
75
|
+
been issued before this one, it starts a top-level box in a blank
|
76
|
+
background.
|
77
|
+
|
78
|
+
TODO: this surely could be clarified a little tiny bit.
|
79
|
+
EOD
|
80
|
+
|
81
|
+
NextInsetCommand =
|
82
|
+
Cmd.new("next-inset",nil,"--next-inset",
|
83
|
+
[
|
84
|
+
CmdArg.new('box'),
|
85
|
+
]) do |plotmaker, box|
|
86
|
+
plotmaker.root_object.leave_subobject
|
87
|
+
subplot = plotmaker.root_object.subplot
|
88
|
+
subplot.subframe = box
|
89
|
+
end
|
90
|
+
|
91
|
+
NextInsetCommand.describe('Ends the previous inset and begins a new one',
|
92
|
+
<<EOD, SubplotsGroup)
|
93
|
+
Has the same effet as {command: end} followed by {command: inset}.
|
94
|
+
EOD
|
95
|
+
|
96
|
+
EndCommand =
|
97
|
+
Cmd.new("end",nil,"--end",
|
98
|
+
[]) do |plotmaker|
|
99
|
+
plotmaker.root_object.leave_subobject
|
100
|
+
end
|
101
|
+
|
102
|
+
EndCommand.describe('Leaves the current subobject',
|
103
|
+
<<EOD, SubplotsGroup)
|
104
|
+
Leaves the current subobject.
|
105
|
+
EOD
|
106
|
+
|
107
|
+
RescaleCommand =
|
108
|
+
Cmd.new("plot-scale",nil,"--plot-scale",
|
109
|
+
[CmdArg.new('float')],
|
110
|
+
{'what' => CmdArg.new('text')}) do |plotmaker, scale, options|
|
111
|
+
what = options['what'] || 'text'
|
112
|
+
case what
|
113
|
+
when /text/i
|
114
|
+
Styles::PlotStyle.current_plot_style(plotmaker).text_scale = scale
|
115
|
+
when /lines/i
|
116
|
+
Styles::PlotStyle.current_plot_style(plotmaker).lines_scale = scale
|
117
|
+
when /both/i
|
118
|
+
Styles::PlotStyle.current_plot_style(plotmaker).text_scale = scale
|
119
|
+
Styles::PlotStyle.current_plot_style(plotmaker).lines_scale = scale
|
120
|
+
else
|
121
|
+
CTioga2::Log::error "Unkown 'what' option for plot-scale: #{what}"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
RescaleCommand.describe('Rescales the current (sub)plot',
|
126
|
+
<<EOD, SubplotsGroup)
|
127
|
+
Applies a scaling factor to the whole current subplot. Depending on
|
128
|
+
the 'what' option (default text), the scale applies to:
|
129
|
+
* text ('text' or 'both')
|
130
|
+
* marker size ('text' or 'both')
|
131
|
+
* line widths ('lines' or 'both')
|
132
|
+
Scaling also applies to all elements of the plot that were added
|
133
|
+
before the call to plot-scale.
|
134
|
+
EOD
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|