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.
- 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
|
|