tioga 1.14 → 1.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -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