tioga 1.14 → 1.15

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.
@@ -22,13 +22,8 @@ This is the README for the Tioga kernel, version 1.14, June 10, 2011.
22
22
 
23
23
  << What's new >>
24
24
 
25
- Tioga 1.14 fixes all known problems of Tioga with Ruby 1.9.1 and
26
- higher (to the point that it runs with ctioga2, and the samples run
27
- too !).
28
-
29
- It also brings in the possibility to customize the number of major
30
- ticks after which log plots don't show minor ticks, via the
31
- log_minor_ticks_limit accessor.
25
+ Tioga 1.15 brings in some new iterators in Dvector and some minor
26
+ bug fixes (in particular for gem builds).
32
27
 
33
28
  << Quick Installation of Tioga >>
34
29
 
@@ -172,6 +167,17 @@ Bill Paxton
172
167
 
173
168
  Here are the old release messages:
174
169
 
170
+ Tioga 1.14 fixes all known problems of Tioga with Ruby 1.9.1 and
171
+ higher (to the point that it runs with ctioga2, and the samples run
172
+ too !).
173
+
174
+ It also brings in the possibility to customize the number of major
175
+ ticks after which log plots don't show minor ticks, via the
176
+ log_minor_ticks_limit accessor.
177
+
178
+ --------------------------------------------------
179
+
180
+
175
181
  Tioga 1.13 brings in a fix for a well-hidden memory leak that was
176
182
  unlikely to hit you unless you were allocating a huge number of
177
183
  vectors.
@@ -180,6 +186,7 @@ vectors.
180
186
  FigureMaker's internal state (color conversion functions and
181
187
  contouring algorithms) were made available as module functions too.
182
188
 
189
+ --------------------------------------------------
183
190
 
184
191
  Tioga 1.12 has seen quite a lot of action. The first and major
185
192
  change is the switch from a custom rewrite of mkmf.rb for
@@ -1199,6 +1199,40 @@ PRIVATE
1199
1199
  return ary;
1200
1200
  }
1201
1201
 
1202
+ PRIVATE
1203
+ /*
1204
+ * call-seq:
1205
+ * dvector.each3(other1, other2) {|x,y, z| block }
1206
+ *
1207
+ * Calls <i>block</i> once for each element in _dvector_, passing that
1208
+ * element as a parameter along with the corresponding element from the _other1_ and _other2_ vectors.
1209
+ * The three vectors must be the same length.
1210
+ *
1211
+ * a = Dvector[ 1, 0, -1 ]
1212
+ * b = Dvector[ 3, 4, 5 ]
1213
+ * c = Dvector[ 6, 9, 2 ]
1214
+ * a.each3(b, c) {|x,y,z| print "(", x ",", y, ", ", z, ") " }
1215
+ *
1216
+ * produces:
1217
+ *
1218
+ * (1,3,6) (0,4,9) (-1,5,2)
1219
+ */ VALUE dvector_each3(VALUE ary, VALUE ary2, VALUE ary3) {
1220
+ Dvector *d = Get_Dvector(ary);
1221
+ Dvector *d2 = Get_Dvector(ary2);
1222
+ Dvector *d3 = Get_Dvector(ary3);
1223
+ long i;
1224
+ if (d->len != d2->len) {
1225
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d2->len);
1226
+ }
1227
+ if (d->len != d3->len) {
1228
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d3->len);
1229
+ }
1230
+ for (i=0; i < d->len; i++) {
1231
+ rb_yield_values(3, rb_float_new(d->ptr[i]), rb_float_new(d2->ptr[i]), rb_float_new(d3->ptr[i]));
1232
+ }
1233
+ return ary;
1234
+ }
1235
+
1202
1236
  PRIVATE
1203
1237
  /*
1204
1238
  * call-seq:
@@ -1267,6 +1301,40 @@ PRIVATE
1267
1301
  return ary;
1268
1302
  }
1269
1303
 
1304
+ PRIVATE
1305
+ /*
1306
+ * call-seq:
1307
+ * dvector.each3_with_index(other1, other2) {|x,y,z,i| block }
1308
+ *
1309
+ * Calls <i>block</i> once for each element in _dvector_, passing that
1310
+ * element as a parameter along with the corresponding element from the _other1_ and _other2_ vectors and the index.
1311
+ * The three vectors must be the same length.
1312
+ *
1313
+ * a = Dvector[ 1, 0, -1 ]
1314
+ * b = Dvector[ 3, 4, 5 ]
1315
+ * c = Dvector[ 6, 9, 2 ]
1316
+ * a.each3(b, c) {|x,y,z,i| print "(", x ",", y, ", ", z, ",", i, ") " }
1317
+ *
1318
+ * produces:
1319
+ *
1320
+ * (1,3,6,0) (0,4,9,1) (-1,5,2,2)
1321
+ */ VALUE dvector_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3) {
1322
+ Dvector *d = Get_Dvector(ary);
1323
+ Dvector *d2 = Get_Dvector(ary2);
1324
+ Dvector *d3 = Get_Dvector(ary3);
1325
+ long i;
1326
+ if (d->len != d2->len) {
1327
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d2->len);
1328
+ }
1329
+ if (d->len != d3->len) {
1330
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for each3", d->len, d3->len);
1331
+ }
1332
+ for (i=0; i < d->len; i++) {
1333
+ rb_yield_values(4, rb_float_new(d->ptr[i]), rb_float_new(d2->ptr[i]), rb_float_new(d3->ptr[i]), LONG2NUM(i));
1334
+ }
1335
+ return ary;
1336
+ }
1337
+
1270
1338
  PRIVATE
1271
1339
  /*
1272
1340
  * call-seq:
@@ -1324,6 +1392,42 @@ PRIVATE
1324
1392
  return ary;
1325
1393
  }
1326
1394
 
1395
+ PRIVATE
1396
+ /*
1397
+ * call-seq:
1398
+ * dvector.reverse_each3(other1, other2) {|x,y,z| block }
1399
+ *
1400
+ * Same as <code>Dvector#each3</code>, but traverses vectors in reverse
1401
+ * order. The vectors must have the same size.
1402
+ *
1403
+ * a = Dvector[ 1, 0, -1 ]
1404
+ * b = Dvector[ 3, 4, 5 ]
1405
+ * c = Dvector[ 6, 9, 2 ]
1406
+ * a.reverse_each3(b, c) {|x,y,z| print "(", x ",", y, ", ", z, ") " }
1407
+ *
1408
+ * produces:
1409
+ *
1410
+ * (-1,5,2) (0,4,9) (1,3,6)
1411
+ */ VALUE dvector_reverse_each3(VALUE ary, VALUE ary2, VALUE ary3) {
1412
+ Dvector *d = Get_Dvector(ary);
1413
+ Dvector *d2 = Get_Dvector(ary2);
1414
+ Dvector *d3 = Get_Dvector(ary3);
1415
+ long len = d->len;
1416
+ if (len != d2->len) {
1417
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3", len, d2->len);
1418
+ }
1419
+ if (len != d3->len) {
1420
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3", len, d3->len);
1421
+ }
1422
+ while (len--) {
1423
+ rb_yield_values(3, rb_float_new(d->ptr[len]), rb_float_new(d2->ptr[len]), rb_float_new(d3->ptr[len]));
1424
+ if (d->len < len) {
1425
+ len = d->len;
1426
+ }
1427
+ }
1428
+ return ary;
1429
+ }
1430
+
1327
1431
  PRIVATE
1328
1432
  /*
1329
1433
  * call-seq:
@@ -1408,6 +1512,45 @@ PRIVATE
1408
1512
  return ary;
1409
1513
  }
1410
1514
 
1515
+ PRIVATE
1516
+ /*
1517
+ * call-seq:
1518
+ * dvector.reverse_each3_with_index {|x,y,z,index| block } -> dvector
1519
+ *
1520
+ * Same as <code>Dvector#each3_with_index</code>, but traverses the vectors in reverse
1521
+ * order.
1522
+ *
1523
+ * a = Dvector[ 1, 0, -1 ]
1524
+ * b = Dvector[ 3, 4, 5 ]
1525
+ * c = Dvector[ 6, 9, 2 ]
1526
+ * a.reverse_each3_with_index(b,c) {|x,y,i| print "(", x ",", y, "," i, ") " }
1527
+ * a.each3(b, c) {|x,y,z,i| print "(", x ",", y, ", ", z, ",", i, ") " }
1528
+ *
1529
+ * produces:
1530
+ *
1531
+ * (-1,5,2,2) (0,4,9,1) (1,3,6,0)
1532
+ */ VALUE dvector_reverse_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3) {
1533
+ Dvector *d = Get_Dvector(ary);
1534
+ Dvector *d2 = Get_Dvector(ary2);
1535
+ Dvector *d3 = Get_Dvector(ary3);
1536
+ long len = d->len;
1537
+ if (len != d2->len) {
1538
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3_with_index",
1539
+ len, d3->len);
1540
+ }
1541
+ if (len != d3->len) {
1542
+ rb_raise(rb_eArgError, "vectors with different lengths (%ld vs %ld) for reverse_each3_with_index",
1543
+ len, d3->len);
1544
+ }
1545
+ while (len--) {
1546
+ rb_yield_values(4, rb_float_new(d->ptr[len]), rb_float_new(d2->ptr[len]), rb_float_new(d3->ptr[len]), LONG2NUM(len));
1547
+ if (d->len < len) {
1548
+ len = d->len;
1549
+ }
1550
+ }
1551
+ return ary;
1552
+ }
1553
+
1411
1554
  PRIVATE
1412
1555
  /*
1413
1556
  * call-seq:
@@ -3025,7 +3168,7 @@ PRIVATE
3025
3168
  *
3026
3169
  * Returns square root of the dot product of the vector with itself.
3027
3170
  *
3028
- * a = Dvector[ 3, 5 ]
3171
+ * a = Dvector[ 3, 4 ]
3029
3172
  * a.vector_length -> 5.0
3030
3173
  */
3031
3174
  VALUE dvector_vector_length(VALUE ary) {
@@ -6080,6 +6223,10 @@ void Init_Dvector() {
6080
6223
  rb_define_method(cDvector, "each2_with_index", dvector_each2_with_index, 1);
6081
6224
  rb_define_method(cDvector, "reverse_each2", dvector_reverse_each2, 1);
6082
6225
  rb_define_method(cDvector, "reverse_each2_with_index", dvector_reverse_each2_with_index, 1);
6226
+ rb_define_method(cDvector, "each3", dvector_each3, 2);
6227
+ rb_define_method(cDvector, "each3_with_index", dvector_each3_with_index, 2);
6228
+ rb_define_method(cDvector, "reverse_each3", dvector_reverse_each3, 2);
6229
+ rb_define_method(cDvector, "reverse_each3_with_index", dvector_reverse_each3_with_index, 2);
6083
6230
 
6084
6231
  rb_define_method(cDvector, "collect2", dvector_collect2, 1);
6085
6232
  rb_define_method(cDvector, "collect2!", dvector_collect2_bang, 1);
@@ -87,6 +87,10 @@ PRIVATE VALUE dvector_reverse_each2(VALUE ary, VALUE ary2);
87
87
  PRIVATE VALUE dvector_reverse_each_index(VALUE ary);
88
88
  PRIVATE VALUE dvector_reverse_each_with_index(VALUE ary);
89
89
  PRIVATE VALUE dvector_reverse_each2_with_index(VALUE ary, VALUE ary2);
90
+ PRIVATE VALUE dvector_each3(VALUE ary, VALUE ary2, VALUE ary3);
91
+ PRIVATE VALUE dvector_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3);
92
+ PRIVATE VALUE dvector_reverse_each3(VALUE ary, VALUE ary2, VALUE ary3);
93
+ PRIVATE VALUE dvector_reverse_each3_with_index(VALUE ary, VALUE ary2, VALUE ary3);
90
94
  PRIVATE VALUE dvector_length(VALUE ary);
91
95
  PRIVATE VALUE dvector_empty_p(VALUE ary);
92
96
  PRIVATE VALUE dvector_dup(VALUE ary);
@@ -115,7 +115,7 @@ OBJ_PTR COLOR_PREAMBLE(OBJ_PTR fmkr, int *ierr) { return rb_const_get(CLASS_OF(f
115
115
 
116
116
  void GIVE_WARNING(const char *fmt, const char *str) { rb_warn(fmt,str); }
117
117
 
118
- void RAISE_ERROR(char *str, int *ierr) { *ierr = -1; rb_raise(rb_eArgError,str); }
118
+ void RAISE_ERROR(char *str, int *ierr) { *ierr = -1; rb_raise(rb_eArgError,"%s", str); }
119
119
 
120
120
  #define err_buff_len 256
121
121
  void RAISE_ERROR_s(char *fmt, char *s, int *ierr) {
@@ -38,7 +38,7 @@ class FigureMaker
38
38
 
39
39
  # This URL will contain tioga-(...) when it is exported from the
40
40
  # SVN repository. This is where we'll look for version information.
41
- SVN_URL = '$HeadURL: svn+ssh://rubyforge.org/var/svn/tioga/tags/tioga/Tioga%201.14/lib/Tioga/FigMkr.rb $'
41
+ SVN_URL = '$HeadURL$'
42
42
 
43
43
  TIOGA_VERSION = if SVN_URL =~ /tags\/tioga\/Tioga%20([^\/]+)/
44
44
  $1
@@ -0,0 +1,372 @@
1
+ # This file is automatically generated from Tioga/tioga.sty.in
2
+ # using the Tioga/mk_tioga_sty.rb script.
3
+ #
4
+ # Please do not modify this file directly as all changes would
5
+ # be lost !!
6
+
7
+ module Tioga
8
+ class FigureMaker
9
+ TEX_PREAMBLE = <<'End_of_preamble'
10
+ \makeatletter
11
+ % Here are some command to ease the use of pictures produced by Tioga
12
+ % within a LaTeX document.
13
+
14
+
15
+ % \tiogafigurefullpage[minwhitespace]{figurename}
16
+ %
17
+ % \tiogafigurefullpage shows a version of the picture scaled to fit the
18
+ % paper size minus the minwhitespace. The minwhitespace is the sum of
19
+ % the margins on both sides, top and bottom or left and right.
20
+ % The minwhitespace defaults to 2 inches.
21
+ %
22
+ \newcommand{\tiogafigurefullpage}[2][2in]{
23
+ \tiogafigurescaledtofit{#2}{\paperwidth - (#1)}{\paperheight - (#1)}}
24
+
25
+
26
+ % \tiogafigurescaledtofit{figurename}{maxwidth}{maxheight}
27
+ %
28
+ % \tiogafigurescaledtofit shows a version of the picture scaled to fit the
29
+ % given width and height while preserving the aspect ratio.
30
+ % The 1st arg is the base name for the pdf and txt files.
31
+ % The 2nd arg determines the maximum figure width.
32
+ % The 3rd arg determines the maximum figure height.
33
+ \newcommand{\tiogafigurescaledtofit}[3]{
34
+ \setkeys{Gin}{keepaspectratio=true}
35
+ \resizebox{#2}{#3}{\tiogafigureshow{#1}}}
36
+
37
+
38
+ % \tiogafigurescaled{figurename}{scalefactor}
39
+ %
40
+ % \tiogafigurescaled shows a scaled version of the picture
41
+ % The 1st arg is the base name for the pdf and txt files.
42
+ % The 2nd arg determines the scale.
43
+ \newcommand{\tiogafigurescaled}[2]{
44
+ \scalebox{#2}{\tiogafigureshow{#1}}}
45
+
46
+
47
+ % \tiogafigurescaledxy{figurename}{xscalefactor}{yscalefactor}
48
+ %
49
+ % \tiogafigurescaledxy shows a scaled version of the picture where you
50
+ % can use different scaling factors in the horizontal and vertical directions.
51
+ % The 1st arg is the base name for the pdf and txt files.
52
+ % The 2nd arg determines the horizontal scale.
53
+ % The 3rd arg determines the vertical scale.
54
+ \newcommand{\tiogafigurescaledxy}[3]{
55
+ \scalebox{#2}[#3]{\tiogafigureshow{#1}}}
56
+
57
+
58
+ % \tiogafiguresized{figurename}{figurewidth}{figureheight}
59
+ %
60
+ % \tiogafiguresized shows a scaled version of the picture, where you
61
+ % can specify the actual size you want. If either length is
62
+ % given as !, the one scale factor is used in both directions.
63
+ % The 1st arg is the base name for the pdf and txt files.
64
+ % The 2nd arg determines the figure width.
65
+ % The 3rd arg determines the figure height.
66
+ \newcommand{\tiogafiguresized}[3]{
67
+ \resizebox{#2}{#3}{\tiogafigureshow{#1}}}
68
+
69
+
70
+ % \tiogaprefix can be used to set a path for the figure pdf and txt files.
71
+ %
72
+ \newcommand{\tiogaprefix}{}
73
+ % The prefix is initialized to an empty string.
74
+ % To change it, use \renewcommand as in the following example:
75
+ % \renewcommand{\tiogaprefix}{plot_out/}
76
+
77
+
78
+ % \tiogafigurecentered{figurename}{targetwidth}{targetheight}
79
+ %
80
+ % \tiogafigurecentered displays an unscaled figure centered within
81
+ % a box of targetwidth *targetheight.
82
+ \newcommand{\tiogafigurecentered}[3]{
83
+ \vbox to #3{%
84
+ \vspace*{\fill}%
85
+ \hbox to #2{\hfill%
86
+ \tiogafigureshow{#1}%
87
+ \hspace*{\fill}}%
88
+ \vspace*{\fill}%
89
+ }}
90
+
91
+ % \tiogafigurecentereddebug{figurename}{targetwidth}{targetheight}
92
+ %
93
+ % \tiogafigurecentereddebug has the same effect as \tiogafigurecentered
94
+ % except that the figure is included in a \fbox, which makes it easier
95
+ % to track problems.
96
+ \newcommand{\tiogafigurecentereddebug}[3]{
97
+ \vbox to #3{%
98
+ \vspace*{\fill}%
99
+ \hbox to #2{\hfill%
100
+ \fbox{\tiogafigureshow{#1}}
101
+ \hspace*{\fill}}%
102
+ \vspace*{\fill}%
103
+ }}
104
+
105
+
106
+ % \tiogafigureshow{figurename}
107
+ %
108
+ % \tiogafigureshow shows the figure and the accompanying text.
109
+ % Inside a box, it first creates a picture that includes the pdf
110
+ % file with the graphics for the figure, then it includes the text.
111
+ % The \tiogaprefix is added at the start of the file names for both.
112
+ \newcommand{\tiogafigureshow}[1]{%
113
+ \mbox{\begin{picture}(0,0)(0,0)%
114
+ \put(0,0){\includegraphics{\tiogaprefix#1_figure.pdf}}%
115
+ \end{picture}%
116
+ \input{\tiogaprefix#1_figure.txt}}}
117
+
118
+ % Commands for text properties:
119
+ % Font size (two parameters)
120
+ % {sz}{line_sp}, 1st is size of font in points,
121
+ % 2nd is line spacing (not used by Tioga)
122
+ \newcommand\tiog@fontsize{{10.0}{10pt}}
123
+ \newcommand\settiogafontsize[2][10pt]{\renewcommand\tiog@fontsize{{#2}{#1}}}
124
+
125
+ % Font family
126
+ % \rmdefault, \sfdefault, \ttdefault -- roman, sans serif, typewriter
127
+ \newcommand\tiog@fontfamily{\rmdefault}
128
+ \newcommand\settiogafontfamily[1]{\renewcommand\tiog@fontfamily{#1}}
129
+
130
+ % Font series
131
+ % \mddefault, \bfdefault -- medium, bold
132
+ \newcommand\tiog@fontseries{\mddefault}
133
+ \newcommand\settiogafontseries[1]{\renewcommand\tiog@fontseries{#1}}
134
+
135
+ % Font shape
136
+ % \updefault, \itdefault, \sldefault, \scdefault -- upright, italic, slant, small caps
137
+ \newcommand\tiog@fontshape{\updefault}
138
+ \newcommand\settiogafontshape[1]{\renewcommand\tiog@fontshape{#1}}
139
+
140
+ % \SetTiogaFontInfo is called from within the figure.txt file with the TeX
141
+ % for the text of the figure. Do not modify this function directly, it
142
+ % is way better to use the previous settiogafont* commands.
143
+ \newcommand\SetTiogaFontInfo{%
144
+ \expandafter\fontsize\tiog@fontsize%
145
+ \fontfamily{\tiog@fontfamily}%
146
+ \fontseries{\tiog@fontseries}%
147
+ \fontshape{\tiog@fontshape}%
148
+ }
149
+
150
+ % This command is used inside the _figure.txt files. You can use it directly
151
+ % as well, if you really want to make sure you get the same fonts. But I
152
+ % personnaly doubt it would really come in useful ;-)...
153
+ \newcommand\tiogasetfont{\reset@font\SetTiogaFontInfo%
154
+ \selectfont}%
155
+
156
+
157
+ % This commands typesets its second argument while sending to the
158
+ % standard output successively the width, height and depth of the
159
+ % box produced.
160
+ %
161
+ % These informations are collected when Tioga runs pdflatex.
162
+ \newlength{\tiogatempdim}
163
+ \newcommand{\tiogameasure}[2]{%
164
+ \settowidth{\tiogatempdim}{#2}\typeout{#1[0]=\the\tiogatempdim}%
165
+ \settoheight{\tiogatempdim}{#2}\typeout{#1[1]=\the\tiogatempdim}%
166
+ \settodepth{\tiogatempdim}{#2}\typeout{#1[2]=\the\tiogatempdim}%
167
+ {#2}}
168
+
169
+ \makeatother
170
+ End_of_preamble
171
+ COLOR_PREAMBLE = <<'End_of_preamble'
172
+ % Color constants, generated from ColorConstants.rb
173
+ \definecolor{PaleTurquoise}{rgb}{0.688,0.932,0.932}
174
+ \definecolor{GreenYellow}{rgb}{0.680,1.000,0.185}
175
+ \definecolor{SpringGreen}{rgb}{0.000,1.000,0.498}
176
+ \definecolor{LightTurquoise}{rgb}{0.200,1.000,0.800}
177
+ \definecolor{DarkGrey}{rgb}{0.664,0.664,0.664}
178
+ \definecolor{DarkSlateGray}{rgb}{0.185,0.310,0.310}
179
+ \definecolor{RedBrown}{rgb}{0.800,0.400,0.200}
180
+ \definecolor{LightBrightGreen}{rgb}{0.000,0.800,0.200}
181
+ \definecolor{BlueViolet}{rgb}{0.540,0.170,0.888}
182
+ \definecolor{MediumOrchid}{rgb}{0.730,0.332,0.828}
183
+ \definecolor{Navy}{rgb}{0.000,0.000,0.500}
184
+ \definecolor{Gainsboro}{rgb}{0.864,0.864,0.864}
185
+ \definecolor{Sienna}{rgb}{0.628,0.320,0.176}
186
+ \definecolor{LightRose}{rgb}{1.000,0.600,0.800}
187
+ \definecolor{Cornsilk}{rgb}{1.000,0.972,0.864}
188
+ \definecolor{Peru}{rgb}{0.804,0.520,0.248}
189
+ \definecolor{Indigo}{rgb}{0.294,0.000,0.510}
190
+ \definecolor{Aquamarine}{rgb}{0.498,1.000,0.830}
191
+ \definecolor{Tomato}{rgb}{1.000,0.390,0.280}
192
+ \definecolor{LimeGreen}{rgb}{0.196,0.804,0.196}
193
+ \definecolor{DarkOrange}{rgb}{1.000,0.550,0.000}
194
+ \definecolor{RoyalPurple}{rgb}{0.400,0.000,0.600}
195
+ \definecolor{LightGold}{rgb}{0.800,0.800,0.400}
196
+ \definecolor{Burgundy}{rgb}{0.600,0.000,0.200}
197
+ \definecolor{MediumTurquoise}{rgb}{0.284,0.820,0.800}
198
+ \definecolor{DeepPink}{rgb}{1.000,0.080,0.576}
199
+ \definecolor{GrassGreen}{rgb}{0.200,0.600,0.000}
200
+ \definecolor{SlateGrey}{rgb}{0.440,0.500,0.565}
201
+ \definecolor{LightSkyBlue}{rgb}{0.530,0.808,0.980}
202
+ \definecolor{DarkCyan}{rgb}{0.000,0.545,0.545}
203
+ \definecolor{OrangeRed}{rgb}{1.000,0.270,0.000}
204
+ \definecolor{Purple}{rgb}{0.500,0.000,0.500}
205
+ \definecolor{LavenderBlush}{rgb}{1.000,0.940,0.960}
206
+ \definecolor{Black}{rgb}{0.000,0.000,0.000}
207
+ \definecolor{White}{rgb}{1.000,1.000,1.000}
208
+ \definecolor{MediumAquamarine}{rgb}{0.400,0.804,0.668}
209
+ \definecolor{DarkRoyalBlue}{rgb}{0.000,0.200,0.800}
210
+ \definecolor{SalmonRed}{rgb}{1.000,0.400,0.400}
211
+ \definecolor{LightMustard}{rgb}{1.000,0.800,0.400}
212
+ \definecolor{Chiffon}{rgb}{0.980,0.980,0.824}
213
+ \definecolor{MistyRose}{rgb}{1.000,0.894,0.884}
214
+ \definecolor{FireBrick}{rgb}{0.698,0.132,0.132}
215
+ \definecolor{SteelBlue}{rgb}{0.275,0.510,0.705}
216
+ \definecolor{LightYellow}{rgb}{1.000,1.000,0.880}
217
+ \definecolor{DarkKhaki}{rgb}{0.740,0.716,0.420}
218
+ \definecolor{PaleVioletRed}{rgb}{0.860,0.440,0.576}
219
+ \definecolor{Grey}{rgb}{0.500,0.500,0.500}
220
+ \definecolor{LightCoral}{rgb}{0.940,0.500,0.500}
221
+ \definecolor{BrickRed}{rgb}{0.645,0.000,0.129}
222
+ \definecolor{MediumPurple}{rgb}{0.576,0.440,0.860}
223
+ \definecolor{DarkSlateGrey}{rgb}{0.185,0.310,0.310}
224
+ \definecolor{RedOrange}{rgb}{0.800,0.200,0.000}
225
+ \definecolor{Silver}{rgb}{0.752,0.752,0.752}
226
+ \definecolor{LightSalmon}{rgb}{1.000,0.628,0.480}
227
+ \definecolor{Crimson}{rgb}{0.800,0.000,0.200}
228
+ \definecolor{OldLace}{rgb}{0.992,0.960,0.900}
229
+ \definecolor{GhostWhite}{rgb}{0.972,0.972,1.000}
230
+ \definecolor{Avocado}{rgb}{0.600,0.600,0.000}
231
+ \definecolor{Turquoise}{rgb}{0.250,0.880,0.815}
232
+ \definecolor{Linen}{rgb}{0.980,0.940,0.900}
233
+ \definecolor{DarkOrchid}{rgb}{0.600,0.196,0.800}
234
+ \definecolor{Pink}{rgb}{1.000,0.752,0.796}
235
+ \definecolor{Ivory}{rgb}{1.000,1.000,0.940}
236
+ \definecolor{BurlyWood}{rgb}{0.870,0.720,0.530}
237
+ \definecolor{MediumVioletRed}{rgb}{0.780,0.084,0.520}
238
+ \definecolor{DeepSkyBlue}{rgb}{0.000,0.750,1.000}
239
+ \definecolor{SaddleBrown}{rgb}{0.545,0.270,0.075}
240
+ \definecolor{LightGrassGreen}{rgb}{0.400,1.000,0.400}
241
+ \definecolor{LightSlateGray}{rgb}{0.468,0.532,0.600}
242
+ \definecolor{DarkGoldenrod}{rgb}{0.720,0.525,0.044}
243
+ \definecolor{Orchid}{rgb}{0.855,0.440,0.840}
244
+ \definecolor{Gray}{rgb}{0.500,0.500,0.500}
245
+ \definecolor{Smoke}{rgb}{0.950,0.950,0.950}
246
+ \definecolor{WhiteSmoke}{rgb}{0.970,0.970,0.970}
247
+ \definecolor{MediumBlue}{rgb}{0.000,0.000,0.804}
248
+ \definecolor{DarkSalmon}{rgb}{0.912,0.590,0.480}
249
+ \definecolor{PurpleBlue}{rgb}{0.400,0.200,0.800}
250
+ \definecolor{LawnGreen}{rgb}{0.488,0.990,0.000}
251
+ \definecolor{BlanchedAlmond}{rgb}{1.000,0.920,0.804}
252
+ \definecolor{Chocolate}{rgb}{0.824,0.410,0.116}
253
+ \definecolor{Moccasin}{rgb}{1.000,0.894,0.710}
254
+ \definecolor{FloralWhite}{rgb}{1.000,0.980,0.940}
255
+ \definecolor{SandyBrown}{rgb}{0.956,0.644,0.376}
256
+ \definecolor{LightOliveGreen}{rgb}{0.600,0.800,0.600}
257
+ \definecolor{DarkLavender}{rgb}{0.400,0.200,0.600}
258
+ \definecolor{PapayaWhip}{rgb}{1.000,0.936,0.835}
259
+ \definecolor{Honeydew}{rgb}{0.940,1.000,0.940}
260
+ \definecolor{AliceBlue}{rgb}{0.940,0.972,1.000}
261
+ \definecolor{Tan}{rgb}{0.824,0.705,0.550}
262
+ \definecolor{LightYellowGreen}{rgb}{0.800,0.800,0.200}
263
+ \definecolor{MediumSeaGreen}{rgb}{0.235,0.700,0.444}
264
+ \definecolor{DarkSmoke}{rgb}{0.920,0.920,0.920}
265
+ \definecolor{Rose}{rgb}{1.000,0.400,0.600}
266
+ \definecolor{LightCrimson}{rgb}{0.864,0.080,0.235}
267
+ \definecolor{BrightBlue}{rgb}{0.000,0.400,1.000}
268
+ \definecolor{Olive}{rgb}{0.500,0.500,0.000}
269
+ \definecolor{Gold}{rgb}{1.000,0.844,0.000}
270
+ \definecolor{SkyBlue}{rgb}{0.530,0.808,0.920}
271
+ \definecolor{LightSandyBrown}{rgb}{1.000,0.800,0.600}
272
+ \definecolor{Cyan}{rgb}{0.000,1.000,1.000}
273
+ \definecolor{DarkPeriwinkle}{rgb}{0.400,0.400,1.000}
274
+ \definecolor{Plum}{rgb}{0.868,0.628,0.868}
275
+ \definecolor{Khaki}{rgb}{0.940,0.900,0.550}
276
+ \definecolor{Azure}{rgb}{0.940,1.000,1.000}
277
+ \definecolor{Violet}{rgb}{0.932,0.510,0.932}
278
+ \definecolor{Magenta}{rgb}{1.000,0.000,1.000}
279
+ \definecolor{DimGray}{rgb}{0.410,0.410,0.410}
280
+ \definecolor{LightChartreuse}{rgb}{0.800,1.000,0.400}
281
+ \definecolor{LightGray}{rgb}{0.828,0.828,0.828}
282
+ \definecolor{CadetBlue}{rgb}{0.372,0.620,0.628}
283
+ \definecolor{YellowGreen}{rgb}{0.800,0.800,0.000}
284
+ \definecolor{DarkGray}{rgb}{0.664,0.664,0.664}
285
+ \definecolor{LightSlateGrey}{rgb}{0.468,0.532,0.600}
286
+ \definecolor{PaleGoldenrod}{rgb}{0.932,0.910,0.668}
287
+ \definecolor{GrayBlue}{rgb}{0.000,0.400,0.600}
288
+ \definecolor{Snow}{rgb}{1.000,0.980,0.980}
289
+ \definecolor{DarkSeaGreen}{rgb}{0.560,0.736,0.560}
290
+ \definecolor{Blue}{rgb}{0.000,0.000,1.000}
291
+ \definecolor{LemonChiffon}{rgb}{1.000,0.980,0.804}
292
+ \definecolor{MediumGreen}{rgb}{0.000,0.600,0.000}
293
+ \definecolor{PurpleGray}{rgb}{0.600,0.600,0.800}
294
+ \definecolor{Yellow}{rgb}{1.000,1.000,0.000}
295
+ \definecolor{Coral}{rgb}{1.000,0.498,0.312}
296
+ \definecolor{LightOrchid}{rgb}{0.600,0.400,0.800}
297
+ \definecolor{ForestGreen}{rgb}{0.132,0.545,0.132}
298
+ \definecolor{MustardSeed}{rgb}{0.800,0.600,0.000}
299
+ \definecolor{SeaGreen}{rgb}{0.180,0.545,0.340}
300
+ \definecolor{DarkMagenta}{rgb}{0.545,0.000,0.545}
301
+ \definecolor{AntiqueWhite}{rgb}{0.980,0.920,0.844}
302
+ \definecolor{HotPink}{rgb}{1.000,0.410,0.705}
303
+ \definecolor{Lilac}{rgb}{0.800,0.600,1.000}
304
+ \definecolor{PeachPuff}{rgb}{1.000,0.855,0.725}
305
+ \definecolor{Teal}{rgb}{0.000,0.500,0.500}
306
+ \definecolor{DarkTurquoise}{rgb}{0.000,0.808,0.820}
307
+ \definecolor{BrightPink}{rgb}{1.000,0.400,0.800}
308
+ \definecolor{LightCyan}{rgb}{0.880,1.000,1.000}
309
+ \definecolor{MediumSlateBlue}{rgb}{0.484,0.408,0.932}
310
+ \definecolor{RosyBrown}{rgb}{0.736,0.560,0.560}
311
+ \definecolor{GoldenBrown}{rgb}{0.600,0.400,0.000}
312
+ \definecolor{DarkBlue}{rgb}{0.000,0.000,0.545}
313
+ \definecolor{LightSeaGreen}{rgb}{0.125,0.698,0.668}
314
+ \definecolor{OliveDrab}{rgb}{0.420,0.556,0.136}
315
+ \definecolor{SlateBlue}{rgb}{0.415,0.352,0.804}
316
+ \definecolor{DarkPurpleBlue}{rgb}{0.400,0.000,0.800}
317
+ \definecolor{Beige}{rgb}{0.960,0.960,0.864}
318
+ \definecolor{Lavender}{rgb}{0.900,0.900,0.980}
319
+ \definecolor{Maroon}{rgb}{0.500,0.000,0.000}
320
+ \definecolor{PowderBlue}{rgb}{0.690,0.880,0.900}
321
+ \definecolor{WarmGray}{rgb}{0.678,0.660,0.562}
322
+ \definecolor{DimGrey}{rgb}{0.410,0.410,0.410}
323
+ \definecolor{Cement}{rgb}{0.800,0.800,0.600}
324
+ \definecolor{LightGreen}{rgb}{0.565,0.932,0.565}
325
+ \definecolor{MidnightBlue}{rgb}{0.098,0.098,0.440}
326
+ \definecolor{Saffron}{rgb}{1.000,0.800,0.000}
327
+ \definecolor{Green}{rgb}{0.000,0.500,0.000}
328
+ \definecolor{DarkGreen}{rgb}{0.000,0.392,0.000}
329
+ \definecolor{LightSteelBlue}{rgb}{0.690,0.770,0.870}
330
+ \definecolor{PaleGreen}{rgb}{0.596,0.985,0.596}
331
+ \definecolor{SoftYellow}{rgb}{1.000,1.000,0.400}
332
+ \definecolor{LightBlue}{rgb}{0.680,0.848,0.900}
333
+ \definecolor{DarkSlateBlue}{rgb}{0.284,0.240,0.545}
334
+ \definecolor{BlueGreen}{rgb}{0.000,0.600,0.400}
335
+ \definecolor{MediumOrange}{rgb}{1.000,0.400,0.000}
336
+ \definecolor{Red}{rgb}{1.000,0.000,0.000}
337
+ \definecolor{Fuchsia}{rgb}{1.000,0.000,1.000}
338
+ \definecolor{CornflowerBlue}{rgb}{0.392,0.585,0.930}
339
+ \definecolor{LightPlum}{rgb}{0.800,0.600,0.800}
340
+ \definecolor{NavajoWhite}{rgb}{1.000,0.870,0.680}
341
+ \definecolor{Seashell}{rgb}{1.000,0.960,0.932}
342
+ \definecolor{Aqua}{rgb}{0.000,1.000,1.000}
343
+ \definecolor{IndianRed}{rgb}{0.804,0.360,0.360}
344
+ \definecolor{DarkOliveGreen}{rgb}{0.332,0.420,0.185}
345
+ \definecolor{Lime}{rgb}{0.000,1.000,0.000}
346
+ \definecolor{Periwinkle}{rgb}{0.600,0.000,1.000}
347
+ \definecolor{Thistle}{rgb}{0.848,0.750,0.848}
348
+ \definecolor{Brown}{rgb}{0.648,0.165,0.165}
349
+ \definecolor{LightDullGreen}{rgb}{0.400,1.000,0.600}
350
+ \definecolor{DarkViolet}{rgb}{0.580,0.000,0.828}
351
+ \definecolor{MediumSpringGreen}{rgb}{0.000,0.980,0.604}
352
+ \definecolor{RoyalBlue}{rgb}{0.255,0.410,0.884}
353
+ \definecolor{LightSienna}{rgb}{0.800,0.400,0.000}
354
+ \definecolor{Goldenrod}{rgb}{0.855,0.648,0.125}
355
+ \definecolor{DarkChocolate}{rgb}{0.400,0.200,0.000}
356
+ \definecolor{Orange}{rgb}{1.000,0.648,0.000}
357
+ \definecolor{SlateGray}{rgb}{0.440,0.500,0.565}
358
+ \definecolor{Bisque}{rgb}{1.000,0.894,0.770}
359
+ \definecolor{LavenderBlue}{rgb}{0.400,0.200,1.000}
360
+ \definecolor{DarkRed}{rgb}{0.545,0.000,0.000}
361
+ \definecolor{Mauve}{rgb}{0.800,0.200,0.400}
362
+ \definecolor{Pumpkin}{rgb}{1.000,0.600,0.200}
363
+ \definecolor{Wheat}{rgb}{0.960,0.870,0.700}
364
+ \definecolor{Chartreuse}{rgb}{0.498,1.000,0.000}
365
+ \definecolor{LightGrey}{rgb}{0.828,0.828,0.828}
366
+ \definecolor{DodgerBlue}{rgb}{0.116,0.565,1.000}
367
+ \definecolor{MintCream}{rgb}{0.960,1.000,0.980}
368
+ \definecolor{Salmon}{rgb}{0.980,0.500,0.448}
369
+
370
+ End_of_preamble
371
+ end
372
+ end