ctioga2 0.0 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Changelog +25 -1
- data/lib/ctioga2/commands/commands.rb +13 -2
- data/lib/ctioga2/commands/doc/doc.rb +13 -17
- data/lib/ctioga2/commands/doc/documentation-commands.rb +14 -1
- data/lib/ctioga2/commands/doc/help.rb +136 -25
- data/lib/ctioga2/commands/doc/html.rb +56 -4
- data/lib/ctioga2/commands/doc/introspection.rb +45 -9
- data/lib/ctioga2/commands/doc/man.rb +7 -5
- data/lib/ctioga2/commands/doc/markup.rb +39 -12
- data/lib/ctioga2/commands/doc/wordwrap.rb +70 -0
- data/lib/ctioga2/commands/general-commands.rb +7 -4
- data/lib/ctioga2/commands/general-types.rb +27 -12
- data/lib/ctioga2/commands/interpreter.rb +2 -2
- data/lib/ctioga2/commands/parsers/command-line.rb +9 -5
- data/lib/ctioga2/commands/parsers/file.rb +5 -3
- data/lib/ctioga2/commands/type.rb +10 -3
- data/lib/ctioga2/commands/variables.rb +2 -2
- data/lib/ctioga2/data/backends/backend.rb +17 -15
- data/lib/ctioga2/data/backends/backends.rb +2 -2
- data/lib/ctioga2/data/backends/backends/gnuplot.rb +20 -5
- data/lib/ctioga2/data/backends/backends/math.rb +2 -2
- data/lib/ctioga2/data/backends/backends/text.rb +112 -17
- data/lib/ctioga2/data/backends/description.rb +10 -11
- data/lib/ctioga2/data/datacolumn.rb +73 -14
- data/lib/ctioga2/data/dataset.rb +305 -9
- data/lib/ctioga2/data/filters.rb +49 -1
- data/lib/ctioga2/data/indexed-dtable.rb +137 -0
- data/lib/ctioga2/data/point.rb +98 -7
- data/lib/ctioga2/data/stack.rb +98 -21
- data/lib/ctioga2/graphics/coordinates.rb +19 -2
- data/lib/ctioga2/graphics/elements.rb +12 -2
- data/lib/ctioga2/graphics/elements/containers.rb +14 -2
- data/lib/ctioga2/graphics/elements/contour.rb +67 -0
- data/lib/ctioga2/graphics/elements/curve2d.rb +103 -42
- data/lib/ctioga2/graphics/elements/element.rb +12 -2
- data/lib/ctioga2/graphics/elements/gradient-region.rb +94 -0
- data/lib/ctioga2/graphics/elements/parametric2d.rb +172 -0
- data/lib/ctioga2/graphics/elements/primitive.rb +37 -21
- data/lib/ctioga2/graphics/elements/region.rb +143 -0
- data/lib/ctioga2/graphics/elements/subplot.rb +92 -32
- data/lib/ctioga2/graphics/elements/tangent.rb +99 -0
- data/lib/ctioga2/graphics/elements/xyz-map.rb +126 -0
- data/lib/ctioga2/graphics/generator.rb +91 -6
- data/lib/ctioga2/graphics/legends.rb +26 -21
- data/lib/ctioga2/graphics/legends/area.rb +8 -8
- data/lib/ctioga2/graphics/legends/items.rb +5 -5
- data/lib/ctioga2/graphics/legends/storage.rb +4 -2
- data/lib/ctioga2/graphics/root.rb +24 -2
- data/lib/ctioga2/graphics/styles.rb +8 -0
- data/lib/ctioga2/graphics/styles/axes.rb +49 -23
- data/lib/ctioga2/graphics/styles/base.rb +2 -2
- data/lib/ctioga2/graphics/styles/carrays.rb +9 -2
- data/lib/ctioga2/graphics/styles/colormap.rb +272 -0
- data/lib/ctioga2/graphics/styles/curve.rb +64 -4
- data/lib/ctioga2/graphics/styles/drawable.rb +68 -9
- data/lib/ctioga2/graphics/styles/errorbar.rb +73 -0
- data/lib/ctioga2/graphics/styles/factory.rb +133 -17
- data/lib/ctioga2/graphics/styles/gradients.rb +60 -0
- data/lib/ctioga2/graphics/styles/location.rb +64 -0
- data/lib/ctioga2/graphics/styles/map-axes.rb +164 -0
- data/lib/ctioga2/graphics/styles/plot.rb +165 -62
- data/lib/ctioga2/graphics/styles/sets.rb +14 -1
- data/lib/ctioga2/graphics/styles/texts.rb +44 -34
- data/lib/ctioga2/graphics/subplot-commands.rb +94 -6
- data/lib/ctioga2/graphics/types.rb +113 -35
- data/lib/ctioga2/graphics/types/bijection.rb +3 -3
- data/lib/ctioga2/graphics/types/boundaries.rb +120 -1
- data/lib/ctioga2/graphics/types/dimensions.rb +8 -1
- data/lib/ctioga2/graphics/types/grid.rb +196 -0
- data/lib/ctioga2/graphics/types/location.rb +228 -0
- data/lib/ctioga2/graphics/types/point.rb +2 -2
- data/lib/ctioga2/log.rb +18 -18
- data/lib/ctioga2/metabuilder/type.rb +15 -3
- data/lib/ctioga2/metabuilder/types.rb +2 -2
- data/lib/ctioga2/metabuilder/types/coordinates.rb +13 -1
- data/lib/ctioga2/metabuilder/types/data.rb +50 -0
- data/lib/ctioga2/metabuilder/types/generic.rb +60 -0
- data/lib/ctioga2/metabuilder/types/lists.rb +53 -16
- data/lib/ctioga2/metabuilder/types/styles.rb +26 -45
- data/lib/ctioga2/plotmaker.rb +91 -20
- data/lib/ctioga2/postprocess.rb +8 -8
- data/lib/ctioga2/utils.rb +23 -4
- metadata +107 -75
- data/lib/ctioga2/data/merge.rb +0 -43
@@ -16,7 +16,7 @@ require 'ctioga2/log'
|
|
16
16
|
|
17
17
|
module CTioga2
|
18
18
|
|
19
|
-
Version::register_svn_info('$Revision:
|
19
|
+
Version::register_svn_info('$Revision: 196 $', '$Date: 2010-11-25 20:15:32 +0100 (Thu, 25 Nov 2010) $')
|
20
20
|
|
21
21
|
module Graphics
|
22
22
|
|
@@ -190,7 +190,7 @@ module CTioga2
|
|
190
190
|
# specification. Splits up the text at a comma and
|
191
191
|
def self.from_text(text, default = :figure)
|
192
192
|
if not text =~ /^\s*([btlrc]{2})(?::([^,]+),\s*(.*))?\s*$/
|
193
|
-
|
193
|
+
raise "Invalid format for aligned point: #{text}"
|
194
194
|
end
|
195
195
|
|
196
196
|
specs = $1
|
data/lib/ctioga2/log.rb
CHANGED
@@ -16,7 +16,7 @@ require 'logger'
|
|
16
16
|
|
17
17
|
module CTioga2
|
18
18
|
|
19
|
-
Version::register_svn_info('$Revision:
|
19
|
+
Version::register_svn_info('$Revision: 152 $', '$Date: 2010-06-20 01:55:50 +0200 (Sun, 20 Jun 2010) $')
|
20
20
|
|
21
21
|
# This module should be included (or extended) by every class that
|
22
22
|
# need logging/debugging facilities.
|
@@ -24,28 +24,28 @@ module CTioga2
|
|
24
24
|
|
25
25
|
# Prints a debug message, on channel _channel_. Channel handling
|
26
26
|
# is not implemented yet.
|
27
|
-
def debug(
|
28
|
-
@@logger.debug
|
27
|
+
def debug(channel = nil)
|
28
|
+
@@logger.debug {yield}
|
29
29
|
end
|
30
30
|
|
31
31
|
# Prints a warning message
|
32
|
-
def warn
|
33
|
-
@@logger.warn
|
32
|
+
def warn
|
33
|
+
@@logger.warn {yield}
|
34
34
|
end
|
35
35
|
|
36
36
|
# Prints an informational message
|
37
|
-
def info
|
38
|
-
@@logger.info
|
37
|
+
def info
|
38
|
+
@@logger.info {yield}
|
39
39
|
end
|
40
40
|
|
41
41
|
# Prints an error message
|
42
|
-
def error
|
43
|
-
@@logger.error
|
42
|
+
def error
|
43
|
+
@@logger.error {yield}
|
44
44
|
end
|
45
45
|
|
46
46
|
# Prints a fatal error message and initiates program termination.
|
47
|
-
def fatal
|
48
|
-
@@logger.fatal
|
47
|
+
def fatal
|
48
|
+
@@logger.fatal {yield}
|
49
49
|
exit 1 # Fatal error.
|
50
50
|
end
|
51
51
|
|
@@ -76,13 +76,13 @@ module CTioga2
|
|
76
76
|
# A logged replacement for system
|
77
77
|
def spawn(cmd, priority = :info)
|
78
78
|
retval = system(cmd)
|
79
|
-
self.send(priority
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
79
|
+
self.send(priority) { "Spawned #{cmd} -> " +
|
80
|
+
if retval
|
81
|
+
"success"
|
82
|
+
else
|
83
|
+
"failure"
|
84
|
+
end
|
85
|
+
}
|
86
86
|
return retval
|
87
87
|
end
|
88
88
|
|
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
|
|
20
20
|
|
21
21
|
module CTioga2
|
22
22
|
|
23
|
-
Version::register_svn_info('$Revision:
|
23
|
+
Version::register_svn_info('$Revision: 151 $', '$Date: 2010-06-19 23:45:20 +0200 (Sat, 19 Jun 2010) $')
|
24
24
|
|
25
25
|
|
26
26
|
# The MetaBuilder module contains a framework to perform
|
@@ -100,6 +100,10 @@ module CTioga2
|
|
100
100
|
# many of them here.
|
101
101
|
attr_accessor :re_shortcuts
|
102
102
|
|
103
|
+
# If the given string matches this regular expression, it is
|
104
|
+
# passed through without further modification.
|
105
|
+
attr_accessor :passthrough
|
106
|
+
|
103
107
|
# A default constructor. It should be safe to use it directly for
|
104
108
|
# children, unless something more specific is needed. Any descendent
|
105
109
|
# should *always* register _type_ as @type - or, even better, call
|
@@ -118,6 +122,10 @@ module CTioga2
|
|
118
122
|
end
|
119
123
|
end
|
120
124
|
end
|
125
|
+
if @type[:passthrough]
|
126
|
+
@passthrough = @type[:passthrough]
|
127
|
+
end
|
128
|
+
|
121
129
|
end
|
122
130
|
|
123
131
|
# This class function actually registers the current type
|
@@ -126,8 +134,8 @@ module CTioga2
|
|
126
134
|
# creates a #type_name instance method returning this value.
|
127
135
|
def self.type_name(name, public_name = nil, default_value = nil)
|
128
136
|
if @@types.has_key?(name)
|
129
|
-
warn "Redefining type #{name} " +
|
130
|
-
"from #{@@types[name]} to #{self}"
|
137
|
+
warn { "Redefining type #{name} " +
|
138
|
+
"from #{@@types[name]} to #{self}" }
|
131
139
|
end
|
132
140
|
@@types[name] = self
|
133
141
|
self.send(:define_method,:type_name) do
|
@@ -177,6 +185,10 @@ module CTioga2
|
|
177
185
|
# is recommanded to define a #string_to_type_internal function
|
178
186
|
# rather to redefine #string_to_type
|
179
187
|
def string_to_type(string)
|
188
|
+
# First, passthrough
|
189
|
+
if @passthrough && @passthrough === string
|
190
|
+
return stt_run_hook(string)
|
191
|
+
end
|
180
192
|
# First, shortcuts:
|
181
193
|
if @shortcuts and @shortcuts.key? string
|
182
194
|
return stt_run_hook(@shortcuts[string])
|
@@ -33,7 +33,7 @@ for file in files.uniq
|
|
33
33
|
begin
|
34
34
|
require "ctioga2/metabuilder/types/#{file}"
|
35
35
|
rescue Exception => e
|
36
|
-
warn "There was a problem trying to load 'ctioga2/metabuilder/types/#{file}'"
|
37
|
-
warn "#{e.inspect}"
|
36
|
+
warn { "There was a problem trying to load 'ctioga2/metabuilder/types/#{file}'" }
|
37
|
+
warn { "#{e.inspect}" }
|
38
38
|
end
|
39
39
|
end
|
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
|
|
20
20
|
|
21
21
|
module CTioga2
|
22
22
|
|
23
|
-
Version::register_svn_info('$Revision:
|
23
|
+
Version::register_svn_info('$Revision: 198 $', '$Date: 2010-11-30 00:48:23 +0100 (Tue, 30 Nov 2010) $')
|
24
24
|
|
25
25
|
module MetaBuilder
|
26
26
|
module Types
|
@@ -100,6 +100,8 @@ module CTioga2
|
|
100
100
|
def string_to_type_internal(str)
|
101
101
|
default = @type[:default] || :frame
|
102
102
|
case str
|
103
|
+
when Graphics::Types::GridBox::GridBoxRE
|
104
|
+
return Graphics::Types::GridBox::from_text(str)
|
103
105
|
when Graphics::Types::PointBasedBox::PointBasedBoxRE
|
104
106
|
return Graphics::Types::PointBasedBox::from_text(str, default)
|
105
107
|
else
|
@@ -119,6 +121,16 @@ module CTioga2
|
|
119
121
|
|
120
122
|
end
|
121
123
|
|
124
|
+
class LocationType < Type
|
125
|
+
|
126
|
+
type_name :location, 'location'
|
127
|
+
|
128
|
+
def string_to_type_internal(str)
|
129
|
+
return Graphics::Types::PlotLocation.from_text(str)
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
122
134
|
end
|
123
135
|
end
|
124
136
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# styles.rb : Different Types to deal with various style arguments.
|
2
|
+
# Copyright (C) 2006, 2009 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.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
|
18
|
+
|
19
|
+
require 'ctioga2/utils'
|
20
|
+
|
21
|
+
module CTioga2
|
22
|
+
|
23
|
+
Version::register_svn_info('$Revision: 171 $', '$Date: 2010-10-22 17:07:52 +0200 (Fri, 22 Oct 2010) $')
|
24
|
+
|
25
|
+
module MetaBuilder
|
26
|
+
module Types
|
27
|
+
|
28
|
+
class DataPointType < Type
|
29
|
+
|
30
|
+
type_name :data_point, 'data-point'
|
31
|
+
|
32
|
+
def string_to_type_internal(str)
|
33
|
+
return Data::DataPoint.from_text(PlotMaker.plotmaker,str)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class LevelType < Type
|
38
|
+
|
39
|
+
type_name :level, 'level'
|
40
|
+
|
41
|
+
# @todo This should be modified eventually to mirror the
|
42
|
+
# DataPoint, but for now, no.
|
43
|
+
def string_to_type_internal(str)
|
44
|
+
return [str.to_f, PlotMaker.plotmaker.data_stack.last]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# generic.rb: conversion-function based type (or the Death of MetaBuilder)
|
2
|
+
# you can choose among several possibilities
|
3
|
+
# Copyright (C) 2010 Vincent Fourmond
|
4
|
+
#
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program; if not, write to the Free Software
|
17
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
18
|
+
|
19
|
+
require 'ctioga2/utils'
|
20
|
+
|
21
|
+
module CTioga2
|
22
|
+
|
23
|
+
Version::register_svn_info('$Revision$', '$Date$')
|
24
|
+
|
25
|
+
|
26
|
+
module MetaBuilder
|
27
|
+
|
28
|
+
module Types
|
29
|
+
|
30
|
+
# A type based on a conversion function from_text from a given
|
31
|
+
# class/module.
|
32
|
+
class FunctionBasedType < Type
|
33
|
+
|
34
|
+
type_name :function_based
|
35
|
+
|
36
|
+
def type_name
|
37
|
+
return 'function_based'
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def initialize(type)
|
42
|
+
super
|
43
|
+
raise "type must have a :class key" unless type.has_key?(:class)
|
44
|
+
# We make a copy for our own purposes.
|
45
|
+
@cls = type[:class]
|
46
|
+
@func_name = type[:func_name] || :from_text
|
47
|
+
end
|
48
|
+
|
49
|
+
def string_to_type_internal(str)
|
50
|
+
return @cls.send(@func_name, str)
|
51
|
+
end
|
52
|
+
|
53
|
+
def type_to_string_internal(val)
|
54
|
+
return val.to_s
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -20,7 +20,7 @@ require 'ctioga2/utils'
|
|
20
20
|
|
21
21
|
module CTioga2
|
22
22
|
|
23
|
-
Version::register_svn_info('$Revision:
|
23
|
+
Version::register_svn_info('$Revision: 222 $', '$Date: 2011-01-11 00:52:31 +0100 (Tue, 11 Jan 2011) $')
|
24
24
|
|
25
25
|
|
26
26
|
module MetaBuilder
|
@@ -107,6 +107,38 @@ module CTioga2
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
+
|
111
|
+
# A choice between different symbols based on regular expressions.
|
112
|
+
class REListParameter < Type
|
113
|
+
|
114
|
+
type_name :re_list
|
115
|
+
|
116
|
+
def initialize(type)
|
117
|
+
super
|
118
|
+
raise "type must have a :list key" unless type.has_key?(:list)
|
119
|
+
# We make a copy for our own purposes.
|
120
|
+
@re_hash = type[:list].dup
|
121
|
+
end
|
122
|
+
|
123
|
+
def type_name
|
124
|
+
return 'relist'
|
125
|
+
end
|
126
|
+
|
127
|
+
def string_to_type_internal(str)
|
128
|
+
for k,v in @re_hash
|
129
|
+
if str =~ /^\s*#{k}\s*$/
|
130
|
+
return v
|
131
|
+
end
|
132
|
+
end
|
133
|
+
raise IncorrectInput, "Invalid input: #{str} should match " +
|
134
|
+
@re_hash.keys.map {|s| s.to_s}.join(',')
|
135
|
+
end
|
136
|
+
|
137
|
+
def type_to_string_internal(val)
|
138
|
+
return val.to_s
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
110
142
|
# An array of identical elements of type specified by :subtype. Defaults
|
111
143
|
# to String
|
112
144
|
class ArrayParameter < Type
|
@@ -142,14 +174,14 @@ module CTioga2
|
|
142
174
|
# A Type used for sets for Graphics::Styles::CircularArray
|
143
175
|
# objects.
|
144
176
|
#
|
145
|
-
#
|
177
|
+
# \todo write a gradient stuff !!!
|
146
178
|
class SetParameter < ArrayParameter
|
147
179
|
type_name :set
|
148
180
|
|
149
181
|
def initialize(type)
|
150
182
|
super
|
151
183
|
@separator = /\s*\|\s*/
|
152
|
-
@
|
184
|
+
@separator_out = '|'
|
153
185
|
end
|
154
186
|
|
155
187
|
def type_name
|
@@ -157,28 +189,33 @@ module CTioga2
|
|
157
189
|
end
|
158
190
|
|
159
191
|
def string_to_type_internal(str)
|
192
|
+
multiply = nil
|
193
|
+
if str =~ /(.*)\*\s*(\d+)\s*$/
|
194
|
+
multiply = $2.to_i
|
195
|
+
str = $1
|
196
|
+
end
|
160
197
|
if str =~ /^\s*gradient:(.+)--(.+),(\d+)\s*$/
|
161
198
|
s,e,nb = $1, $2, $3.to_i
|
162
199
|
s,e = @subtype.string_to_type(s),@subtype.string_to_type(e)
|
163
200
|
fact = if nb > 1
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
201
|
+
1.0/(nb - 1) # The famous off-by one...
|
202
|
+
else
|
203
|
+
warn { "Incorrect gradient number: #{nb}" }
|
204
|
+
1.0
|
205
|
+
end
|
169
206
|
array = []
|
170
207
|
nb.times do |i|
|
171
|
-
|
172
|
-
f = i * fact
|
173
|
-
e.each_index do |c|
|
174
|
-
a << s[c] * (1 - f) + e[c] * f
|
175
|
-
end
|
176
|
-
array << a
|
208
|
+
array << Utils::mix_objects(e,s, i * fact)
|
177
209
|
end
|
178
|
-
return array
|
179
210
|
else
|
180
|
-
|
211
|
+
array = super
|
212
|
+
end
|
213
|
+
if multiply
|
214
|
+
# Seems that I've finally managed to understand what zip
|
215
|
+
# is useful for !
|
216
|
+
array = array.zip(*([array]*(multiply-1))).flatten(1)
|
181
217
|
end
|
218
|
+
return array
|
182
219
|
end
|
183
220
|
|
184
221
|
end
|
@@ -20,28 +20,36 @@ require 'ctioga2/utils'
|
|
20
20
|
|
21
21
|
module CTioga2
|
22
22
|
|
23
|
-
Version::register_svn_info('$Revision:
|
23
|
+
Version::register_svn_info('$Revision: 222 $', '$Date: 2011-01-11 00:52:31 +0100 (Tue, 11 Jan 2011) $')
|
24
24
|
|
25
25
|
module MetaBuilder
|
26
26
|
module Types
|
27
27
|
|
28
|
-
# A color for use with Tioga, ie
|
29
|
-
#
|
28
|
+
# A color for use with Tioga, ie a [red, green, blue] array of
|
29
|
+
# values between 0 and 1.0. It accepts HTML-like colors, or
|
30
30
|
# three comma-separated values between 0 and 1.
|
31
31
|
class TiogaColorType < Type
|
32
32
|
|
33
33
|
type_name :tioga_color, 'color'
|
34
|
+
|
35
|
+
HLSRegexp = /(?:hls):/i
|
34
36
|
|
35
37
|
def string_to_type_internal(str)
|
38
|
+
if str =~ HLSRegexp
|
39
|
+
hls = true
|
40
|
+
str = str.gsub(HLSRegexp,'')
|
41
|
+
else
|
42
|
+
hls = false
|
43
|
+
end
|
36
44
|
if str =~ /^\s*#([0-9a-fA-F]{6})\s*$/
|
37
|
-
|
45
|
+
value = $1.scan(/../).map {
|
38
46
|
|i| i.to_i(16)/255.0
|
39
47
|
}
|
40
48
|
elsif str =~ /^\s*#([0-9a-fA-F]{3})\s*$/
|
41
|
-
|
49
|
+
value = $1.scan(/./).map {
|
42
50
|
|i| i.to_i(16)/15.0
|
43
51
|
}
|
44
|
-
else
|
52
|
+
else
|
45
53
|
value = str.split(/\s*,\s*/).map do |s|
|
46
54
|
s.to_f
|
47
55
|
end
|
@@ -49,6 +57,10 @@ module CTioga2
|
|
49
57
|
if value.size != 3
|
50
58
|
raise IncorrectInput, "You need exactly three values to make up a color"
|
51
59
|
end
|
60
|
+
if hls
|
61
|
+
# Requires Tioga r599
|
62
|
+
value = Tioga::FigureMaker.hls_to_rgb(value)
|
63
|
+
end
|
52
64
|
return value
|
53
65
|
end
|
54
66
|
end
|
@@ -74,7 +86,6 @@ module CTioga2
|
|
74
86
|
else
|
75
87
|
phase = 0
|
76
88
|
end
|
77
|
-
p specs
|
78
89
|
return [ specs.map { |s| s.to_f }, phase]
|
79
90
|
end
|
80
91
|
end
|
@@ -125,51 +136,21 @@ module CTioga2
|
|
125
136
|
end
|
126
137
|
end
|
127
138
|
|
128
|
-
#
|
129
|
-
class
|
130
|
-
|
131
|
-
include Tioga::FigureConstants
|
132
|
-
|
133
|
-
ValidTypes = {
|
134
|
-
/l(eft)?/i => LEFT_JUSTIFIED,
|
135
|
-
/c(enter)?/i => CENTERED,
|
136
|
-
/r(ight)?/ => RIGHT_JUSTIFIED
|
137
|
-
}
|
138
|
-
|
139
|
-
type_name :tioga_justification, 'halign'
|
139
|
+
# LaTeX font
|
140
|
+
class LaTeXFontBaseType < Type
|
141
|
+
type_name :latex_font, 'latex font'
|
140
142
|
|
141
143
|
def string_to_type_internal(str)
|
142
|
-
|
143
|
-
if str =~ /^\s*#{k}\s*/
|
144
|
-
return v
|
145
|
-
end
|
146
|
-
end
|
147
|
-
raise IncorrectInput, "Not a justification: #{str}"
|
144
|
+
return Graphics::Styles::LaTeXFont.from_text(str)
|
148
145
|
end
|
149
146
|
end
|
150
147
|
|
151
|
-
#
|
152
|
-
class
|
153
|
-
|
154
|
-
include Tioga::FigureConstants
|
155
|
-
|
156
|
-
type_name :tioga_align, 'valign'
|
157
|
-
|
158
|
-
ValidTypes = {
|
159
|
-
/t(op)?/i => ALIGNED_AT_TOP,
|
160
|
-
/c(enter)|m(idheight)/i => ALIGNED_AT_MIDHEIGHT,
|
161
|
-
/B|Baseline|baseline/ => ALIGNED_AT_BASELINE,
|
162
|
-
/b(ottom)?/ => ALIGNED_AT_BOTTOM
|
163
|
-
}
|
164
|
-
|
148
|
+
# Colormap
|
149
|
+
class LaTeXFontBaseType < Type
|
150
|
+
type_name :colormap, 'color map'
|
165
151
|
|
166
152
|
def string_to_type_internal(str)
|
167
|
-
|
168
|
-
if str =~ /^\s*#{k}\s*/
|
169
|
-
return v
|
170
|
-
end
|
171
|
-
end
|
172
|
-
raise IncorrectInput, "Not a vertical alignment: #{str}"
|
153
|
+
return Graphics::Styles::ColorMap.from_text(str)
|
173
154
|
end
|
174
155
|
end
|
175
156
|
|