ctioga 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/COPYING +340 -0
  2. data/ctioga/bin/ctable +28 -0
  3. data/ctioga/bin/ctioga +37 -0
  4. data/ctioga/doc/ctable.1 +156 -0
  5. data/ctioga/doc/ctioga.1 +2363 -0
  6. data/ctioga/examples/README +46 -0
  7. data/ctioga/examples/ctioga.gnuplot +4 -0
  8. data/ctioga/examples/ctioga_within_tioga.rb +53 -0
  9. data/ctioga/examples/ctiogarc.rb +24 -0
  10. data/ctioga/examples/include_1.rb +15 -0
  11. data/ctioga/examples/noise.dat +100 -0
  12. data/ctioga/examples/noise.rb +13 -0
  13. data/ctioga/examples/trig.csv +100 -0
  14. data/ctioga/examples/trig.dat +100 -0
  15. data/ctioga/examples/trig.rb +14 -0
  16. data/ctioga/examples/trigh.dat +100 -0
  17. data/ctioga/examples/trigh.rb +10 -0
  18. data/ctioga/examples/tutorial +763 -0
  19. data/ctioga/examples/tutorial.sh +269 -0
  20. data/ctioga/tests/README +14 -0
  21. data/ctioga/tests/axes.sh +40 -0
  22. data/ctioga/tests/basic.sh +11 -0
  23. data/ctioga/tests/draw.sh +24 -0
  24. data/ctioga/tests/histograms.sh +14 -0
  25. data/ctioga/tests/insets.sh +41 -0
  26. data/ctioga/tests/layouts.sh +29 -0
  27. data/ctioga/tests/legends.sh +113 -0
  28. data/ctioga/tests/styles.sh +43 -0
  29. data/ctioga/tests/test_style.sh +8 -0
  30. data/ctioga/tests/tests.sh +24 -0
  31. data/ctioga/tests/text_backend.sh +83 -0
  32. data/ctioga/tests/tioga_defaults.rb +18 -0
  33. data/lib/CTioga/axes.rb +904 -0
  34. data/lib/CTioga/backends.rb +88 -0
  35. data/lib/CTioga/boundaries.rb +224 -0
  36. data/lib/CTioga/ctable.rb +134 -0
  37. data/lib/CTioga/curve_style.rb +246 -0
  38. data/lib/CTioga/debug.rb +199 -0
  39. data/lib/CTioga/dimension.rb +133 -0
  40. data/lib/CTioga/elements.rb +17 -0
  41. data/lib/CTioga/elements/base.rb +84 -0
  42. data/lib/CTioga/elements/containers.rb +578 -0
  43. data/lib/CTioga/elements/curves.rb +368 -0
  44. data/lib/CTioga/elements/tioga_primitives.rb +440 -0
  45. data/lib/CTioga/layout.rb +595 -0
  46. data/lib/CTioga/legends.rb +29 -0
  47. data/lib/CTioga/legends/cmdline.rb +187 -0
  48. data/lib/CTioga/legends/item.rb +164 -0
  49. data/lib/CTioga/legends/style.rb +257 -0
  50. data/lib/CTioga/log.rb +73 -0
  51. data/lib/CTioga/movingarrays.rb +131 -0
  52. data/lib/CTioga/partition.rb +271 -0
  53. data/lib/CTioga/plot_style.rb +230 -0
  54. data/lib/CTioga/plotmaker.rb +1677 -0
  55. data/lib/CTioga/shortcuts.rb +69 -0
  56. data/lib/CTioga/structures.rb +82 -0
  57. data/lib/CTioga/styles.rb +140 -0
  58. data/lib/CTioga/themes.rb +581 -0
  59. data/lib/CTioga/themes/classical.rb +82 -0
  60. data/lib/CTioga/themes/demo.rb +63 -0
  61. data/lib/CTioga/themes/fits.rb +91 -0
  62. data/lib/CTioga/themes/mono.rb +33 -0
  63. data/lib/CTioga/tioga.rb +32 -0
  64. data/lib/CTioga/utils.rb +173 -0
  65. data/lib/MetaBuilder/Parameters/dates.rb +38 -0
  66. data/lib/MetaBuilder/Parameters/lists.rb +132 -0
  67. data/lib/MetaBuilder/Parameters/numbers.rb +69 -0
  68. data/lib/MetaBuilder/Parameters/strings.rb +86 -0
  69. data/lib/MetaBuilder/Parameters/styles.rb +75 -0
  70. data/lib/MetaBuilder/Qt4/Parameters/dates.rb +51 -0
  71. data/lib/MetaBuilder/Qt4/Parameters/numbers.rb +65 -0
  72. data/lib/MetaBuilder/Qt4/Parameters/strings.rb +106 -0
  73. data/lib/MetaBuilder/Qt4/parameter.rb +172 -0
  74. data/lib/MetaBuilder/Qt4/parameters.rb +9 -0
  75. data/lib/MetaBuilder/descriptions.rb +603 -0
  76. data/lib/MetaBuilder/factory.rb +101 -0
  77. data/lib/MetaBuilder/group.rb +57 -0
  78. data/lib/MetaBuilder/metabuilder.rb +10 -0
  79. data/lib/MetaBuilder/parameter.rb +374 -0
  80. data/lib/MetaBuilder/parameters.rb +11 -0
  81. data/lib/MetaBuilder/qt4.rb +8 -0
  82. data/lib/SciYAG/Backends/backend.rb +379 -0
  83. data/lib/SciYAG/Backends/binner.rb +168 -0
  84. data/lib/SciYAG/Backends/cache.rb +102 -0
  85. data/lib/SciYAG/Backends/dataset.rb +158 -0
  86. data/lib/SciYAG/Backends/descriptions.rb +469 -0
  87. data/lib/SciYAG/Backends/filters.rb +25 -0
  88. data/lib/SciYAG/Backends/filters/average.rb +134 -0
  89. data/lib/SciYAG/Backends/filters/cumulate.rb +37 -0
  90. data/lib/SciYAG/Backends/filters/filter.rb +70 -0
  91. data/lib/SciYAG/Backends/filters/norm.rb +39 -0
  92. data/lib/SciYAG/Backends/filters/smooth.rb +63 -0
  93. data/lib/SciYAG/Backends/filters/sort.rb +43 -0
  94. data/lib/SciYAG/Backends/filters/strip.rb +34 -0
  95. data/lib/SciYAG/Backends/filters/trim.rb +64 -0
  96. data/lib/SciYAG/Backends/gnuplot.rb +131 -0
  97. data/lib/SciYAG/Backends/math.rb +108 -0
  98. data/lib/SciYAG/Backends/mdb.rb +462 -0
  99. data/lib/SciYAG/Backends/multitext.rb +96 -0
  100. data/lib/SciYAG/Backends/source.rb +64 -0
  101. data/lib/SciYAG/Backends/text.rb +339 -0
  102. data/lib/SciYAG/backends.rb +16 -0
  103. metadata +191 -0
@@ -0,0 +1,38 @@
1
+ # numbers.rb : Different ParameterTypes to deal with numbers
2
+ # Copyright (C) 2006 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
+ require 'time'
19
+
20
+ module MetaBuilder
21
+
22
+ # The module ParameterTypes should be used for all subclasses of
23
+ # ParameterType, to keep the place clean and tidy.
24
+ module ParameterTypes
25
+
26
+ # A combination date/time
27
+ class DateTimeParameter < ParameterType
28
+
29
+ type_name :date_time, 'date', Time.new
30
+
31
+ def string_to_type_internal(str)
32
+ return Time.parse(str)
33
+ end
34
+
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,132 @@
1
+ # lists.rb : Different ParameterTypes to deal with types where
2
+ # you can choose among several possibilities
3
+ # Copyright (C) 2006 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
+
20
+ module MetaBuilder
21
+
22
+ # The module ParameterTypes should be used for all subclasses of
23
+ # ParameterType, to keep the place clean and tidy.
24
+ module ParameterTypes
25
+
26
+ # A regular expression matching true
27
+ TRUE_RE = /^\s*(true|yes|on)\s*$/i
28
+
29
+ # A regular expression matching false
30
+ FALSE_RE = /^\s*(false|no(ne)?|off)\s*$/i
31
+
32
+
33
+ # A boolean parameter
34
+ class BooleanParameter < ParameterType
35
+
36
+ type_name :boolean
37
+
38
+ def type_name
39
+ return 'bool'
40
+ end
41
+
42
+ def string_to_type_internal(str)
43
+ if str == true or str =~ TRUE_RE
44
+ return true
45
+ else
46
+ return false
47
+ end
48
+ end
49
+
50
+ def type_to_string_internal(val)
51
+ if val
52
+ return "true"
53
+ else
54
+ return "false"
55
+ end
56
+ end
57
+
58
+ # Booleans are a special case for option parser, as they
59
+ # are handled completely differently
60
+ def option_parser_long_option(name)
61
+ return "--[no-]#{name}"
62
+ end
63
+ end
64
+
65
+ # A list of symbols. A hash :list must be provided that states
66
+ # the correspondance between the legal symbols that can be
67
+ # accepted by this parameter and their "english" name.
68
+ # This parameter can typically be used to prompt the user
69
+ # for different choices.
70
+ class ListParameter < ParameterType
71
+
72
+ type_name :list
73
+
74
+ def initialize(type)
75
+ super
76
+ raise "type must have a :list key" unless type.has_key?(:list)
77
+ # We make a copy for our own purposes.
78
+ @hash = type[:list].dup
79
+ end
80
+
81
+ def type_name
82
+ return 'list'
83
+ end
84
+
85
+ def string_to_type_internal(str)
86
+ if @hash.has_key?(str.to_sym)
87
+ return str.to_sym
88
+ else
89
+ raise IncorrectInput, "Invalid input: #{str} should be one of " +
90
+ @hash.keys.map {|s| s.to_s}.join(',')
91
+ end
92
+ end
93
+
94
+ def type_to_string_internal(val)
95
+ return val.to_s
96
+ end
97
+ end
98
+
99
+ # An array of identical elements of type specified by :subtype. Defaults
100
+ # to String
101
+ class ArrayParameter < ParameterType
102
+ type_name :array
103
+
104
+ def initialize(type)
105
+ super
106
+ # We make a copy for our own purposes.
107
+ subtype = type[:subtype] || {:type => :string}
108
+ @subtype = ParameterType.get_type(subtype)
109
+ @separator = /\s*,\s*/
110
+ @separator_out = ','
111
+ end
112
+
113
+ def type_name
114
+ return 'array'
115
+ end
116
+
117
+ def string_to_type_internal(str)
118
+ ary = str.split(@separator)
119
+ return ary.map do |a|
120
+ @subtype.string_to_type(a)
121
+ end
122
+ end
123
+
124
+ def type_to_string_internal(val)
125
+ return val.map do |a|
126
+ @subtype.type_to_string(a)
127
+ end.join(@separator_out)
128
+ end
129
+ end
130
+
131
+ end
132
+ end
@@ -0,0 +1,69 @@
1
+ # numbers.rb : Different ParameterTypes to deal with numbers
2
+ # Copyright (C) 2006 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
+ module MetaBuilder
20
+
21
+ # The module ParameterTypes should be used for all subclasses of
22
+ # ParameterType, to keep the place clean and tidy.
23
+ module ParameterTypes
24
+
25
+ # An integer
26
+ class IntegerParameter < ParameterType
27
+
28
+ type_name :integer, 'number', 0
29
+
30
+ def string_to_type_internal(str)
31
+ return Integer(str)
32
+ end
33
+
34
+ end
35
+
36
+ # A float
37
+ class FloatParameter < ParameterType
38
+
39
+ type_name :float, 'number', 0.0
40
+
41
+ def string_to_type_internal(str)
42
+ return Float(str)
43
+ end
44
+
45
+ end
46
+
47
+ # A Float Range
48
+ class FloatRangeParameter < ParameterType
49
+
50
+ RANGE_RE = /([^:]+):([^:]+)/
51
+
52
+ type_name :float_range, 'range'
53
+
54
+ def string_to_type_internal(str)
55
+ raise IncorrectInput, "#{str} is not a valid range" unless
56
+ str =~ RANGE_RE
57
+ s,e = Float($1), Float($2)
58
+ return Range.new(s,e)
59
+ end
60
+
61
+ def type_to_string_internal(value)
62
+ return "#{value.first.to_s}:#{value.last.to_s}"
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+
69
+ end
@@ -0,0 +1,86 @@
1
+ # strings.rb : Different ParameterTypes to deal with strings
2
+ # Copyright (C) 2006 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
+ module MetaBuilder
20
+
21
+ # The module ParameterTypes should be used for all subclasses of
22
+ # ParameterType, to keep the place clean and tidy.
23
+ module ParameterTypes
24
+
25
+ # A String
26
+ class StringParameter < ParameterType
27
+
28
+ type_name :string
29
+
30
+ def type_name
31
+ return 'text'
32
+ end
33
+
34
+ def string_to_type(str)
35
+ return str
36
+ end
37
+ end
38
+
39
+ # A piece of text representing the path to a file.
40
+ class FileParameter < StringParameter
41
+
42
+ type_name :file
43
+
44
+ # The file filters, Qt style.
45
+ attr_reader :filter
46
+
47
+ def initialize(type)
48
+ super(type)
49
+ @filter = type[:filter]
50
+ end
51
+
52
+ def type_name
53
+ return 'file'
54
+ end
55
+
56
+ end
57
+
58
+ # A String or a regular expression
59
+ class StringOrRegexpParameter < ParameterType
60
+
61
+ type_name :string_or_regexp
62
+
63
+ def type_name
64
+ return 'regexp'
65
+ end
66
+
67
+ def string_to_type(str)
68
+ if str =~ /^\/(.*)\/$/
69
+ return Regexp.new($1)
70
+ else
71
+ return str
72
+ end
73
+ end
74
+
75
+ def type_to_string(val)
76
+ if val.is_a? String
77
+ return val
78
+ else
79
+ return "/#{val}/"
80
+ end
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+ end
@@ -0,0 +1,75 @@
1
+ # strings.rb : Different ParameterTypes to deal with different styles items,
2
+ # such as colors, line types, fonts ???
3
+ # Copyright (C) 2006 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
+
20
+ module MetaBuilder
21
+
22
+ # The module ParameterTypes should be used for all subclasses of
23
+ # ParameterType, to keep the place clean and tidy.
24
+ module ParameterTypes
25
+
26
+ # A HTML color: the value is returned in the form of an array
27
+ # of three integers between 0 and 255. Strings can be in the form
28
+ # of a standard HTML color like #FF0000 for red, or it can be a
29
+ # name corresponding to a constant in one of the modules given
30
+ # in the :namespaces array.
31
+ class HTMLColorParameter < ParameterType
32
+
33
+ type_name :html_color, 'color'
34
+
35
+ def string_to_type_internal(str)
36
+ if str =~ /#([0-9a-fA-F]{6})/
37
+ return $1.scan(/../).map {|i| i.to_i(16)}
38
+ elsif @type.has_key?(:namespaces)
39
+ for mod in @type[:namespaces]
40
+ if mod.const_defined?(str)
41
+ return normalize(mod.const_get(str))
42
+ end
43
+ end
44
+ else
45
+ raise IncorrectInput, "#{str} is not a valid color"
46
+ end
47
+ end
48
+
49
+ def type_to_string_internal(color)
50
+ return "##{color.map {|i| sprintf("%02x",i)}.join}"
51
+ end
52
+
53
+ private
54
+ # Returns a normalized color, that is, if everything is below or equal
55
+ # to 1.0, multiply by 255 -- and always convert to int.
56
+ def normalize(ar)
57
+ if ar.max <= 1.0
58
+ ret = ar.map {|c| c * 255.0}
59
+ else
60
+ ret = ar.dup
61
+ end
62
+ ret.map! {|i| i.to_i}
63
+ return ret
64
+ end
65
+ end
66
+
67
+ # A set of margins - that is, four floats representing left top
68
+ # right bottom coordinates.
69
+ class MarginsParameter < ParameterType
70
+
71
+ type_name :margins, 'margins'
72
+ end
73
+
74
+ end
75
+ end
@@ -0,0 +1,51 @@
1
+ # numbers.rb : Different ParameterTypes to deal with numbers
2
+ # Copyright (C) 2006 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
+ require 'time'
19
+
20
+ module MetaBuilder
21
+
22
+ # The module ParameterTypes should be used for all subclasses of
23
+ # ParameterType, to keep the place clean and tidy.
24
+ module ParameterTypes
25
+
26
+ # A combination date/time
27
+ class DateTimeParameter < ParameterType
28
+
29
+
30
+ # Converts a Time to a Variant.
31
+ def type_to_variant(val)
32
+ if val.is_a? Qt::DateTime
33
+ return Qt::Variant.new(val)
34
+ else
35
+ epoch = Qt::Date.new(1970, 1, 1)
36
+ date = Qt::DateTime.new(epoch)
37
+ return Qt::Variant.new(date.add_secs(val.to_i))
38
+ end
39
+ end
40
+
41
+ # Converts back to Time
42
+ def variant_to_type(variant)
43
+ epoch = Qt::DateTime.new(Qt::Date.new(1970, 1, 1))
44
+ nb = epoch.secs_to(variant.value)
45
+ return Time.at(nb)
46
+ end
47
+
48
+ end
49
+ end
50
+
51
+ end