tioga 1.8 → 1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/Tioga_README +46 -11
  2. data/split/Dtable/dtable.c +2 -2
  3. data/split/Dtable/dvector.h +8 -0
  4. data/split/Dtable/namespace.h +16 -8
  5. data/split/Dtable/symbols.h +1 -1
  6. data/split/Dvector/dvector.c +77 -2
  7. data/split/Dvector/dvector_intern.h +2 -0
  8. data/split/Dvector/include/dvector.h +8 -0
  9. data/split/Dvector/lib/Dvector_extras.rb +12 -0
  10. data/split/Dvector/namespace.h +16 -8
  11. data/split/Dvector/symbols.h +1 -1
  12. data/split/Flate/namespace.h +16 -8
  13. data/split/Flate/symbols.h +1 -1
  14. data/split/Function/dvector.h +8 -0
  15. data/split/Function/function.c +2 -1
  16. data/split/Function/namespace.h +16 -8
  17. data/split/Function/symbols.h +1 -1
  18. data/split/Tioga/axes.c +217 -75
  19. data/split/Tioga/dvector.h +8 -0
  20. data/split/Tioga/figures.c +19 -2
  21. data/split/Tioga/figures.h +7 -6
  22. data/split/Tioga/generic.c +14 -1
  23. data/split/Tioga/generic.h +13 -0
  24. data/split/Tioga/init.c +5 -9
  25. data/split/Tioga/lib/Colormaps.rb +33 -2
  26. data/split/Tioga/lib/Doc.rb +30 -0
  27. data/split/Tioga/lib/Executive.rb +4 -2
  28. data/split/Tioga/lib/FigMkr.rb +219 -53
  29. data/split/Tioga/lib/Figures_and_Plots.rb +7 -0
  30. data/split/Tioga/lib/Images.rb +10 -2
  31. data/split/Tioga/lib/Legends.rb +7 -3
  32. data/split/Tioga/lib/Markers.rb +7 -0
  33. data/split/Tioga/lib/TexPreamble.rb +56 -56
  34. data/split/Tioga/lib/Utils.rb +7 -0
  35. data/split/Tioga/lib/maker.rb +1 -0
  36. data/split/Tioga/lib/tioga_ui_cmds.rb +6 -5
  37. data/split/Tioga/namespace.h +16 -8
  38. data/split/Tioga/pdfcolor.c +63 -7
  39. data/split/Tioga/pdfcoords.c +0 -16
  40. data/split/Tioga/pdfimage.c +16 -2
  41. data/split/Tioga/pdfs.h +1 -0
  42. data/split/Tioga/pdftext.c +223 -82
  43. data/split/Tioga/symbols.h +1 -1
  44. data/split/Tioga/texout.c +1 -1
  45. data/split/Tioga/wrappers.c +21 -10
  46. data/split/Tioga/wrappers.h +5 -0
  47. data/split/extconf.rb +27 -15
  48. data/split/namespace.h +16 -8
  49. data/split/scripts/tioga +0 -0
  50. data/split/symbols.h +1 -1
  51. data/tests/Icon_Test.pdf +0 -0
  52. data/tests/tc_Dvector.rb +24 -0
  53. metadata +38 -37
@@ -17,6 +17,13 @@ class Figures_and_Plots < Doc < FigureMaker
17
17
  def show_plot(bounds=nil,&cmd)
18
18
  end
19
19
 
20
+ # :call-seq:
21
+ # show_plot_without_clipping(bounds) do ... end
22
+ #
23
+ # This is identical to show_plot except it doesn't do #clip_to_frame before calling the plot command.
24
+ def show_plot_without_clipping(bounds=nil,&cmd)
25
+ end
26
+
20
27
  # :call-seq:
21
28
  # context do ... end
22
29
  #
@@ -44,11 +44,19 @@ grayscale images is stored using one byte per sample. The routine create_monoch
44
44
  a handy way to create such data from a table of values.
45
45
 
46
46
  Grayscale images can also be used as a "soft mask" for other images. In this case, the grayscale samples
47
- are interpreted as relative opacities (a stencil mask, on the other hand, is "hard" in that each sample is either totally opaque or totally transparent). To use such soft masking, create a dictionary for the grayscale
47
+ are interpreted as relative opacities (a stencil mask, on the other hand, is "hard" in that each
48
+ sample is either totally opaque or totally transparent). To use such soft masking, create a dictionary for the grayscale
48
49
  image and provide it as the 'opacity_mask' entry for the image be be masked.
49
50
 
50
51
  The 'color_space' entry is 'RGB' or 'rgb' for an image using the red-green-blue representation. Samples
51
- are stored as three bytes, corresponding to red, green, and blue intensities.
52
+ are stored as three bytes, corresponding to red, green, and blue intensities
53
+ (e.g., red intensity in range 0.0 to 1.0 is stored as round(red*255)).
54
+
55
+ If the 'color_space' entry is 'HLS' or 'hls', then samples
56
+ are stored as three bytes, corresponding to hue, lightness, and saturation
57
+ (the hue angle in the range 0.0 to 360.0 is stored as round(hue*256/360)).
58
+ [Note: internally, the hls data is copied and converted to rgb -- see string_hls_to_rgb.]
59
+
52
60
  In 4-color printing, as in ink-jet printers, images are painted using cyan, magenta, yellow, and black inks.
53
61
  The corresponding 'color_space' is 'CMYK' or 'cmyk'. For this case, samples are stored as four bytes,
54
62
  corresponding to cyan, magenta, yellow, and black intensitites.
@@ -25,10 +25,14 @@ class Legends < Doc < FigureMaker
25
25
  end
26
26
 
27
27
  # :call-seq:
28
- # show_legend
28
+ # show_legend(legend_background_function=nil)
29
29
  #
30
- # Shows the legend in the current frame.
31
- def show_legend
30
+ # Shows the legend in the current frame. If given a function arguement,
31
+ # it calls the function with bounds [left, right, top, bottom] for the
32
+ # rectangle where the legend will be shown. You can use this opportunity
33
+ # to provide a background for the legend info and a frame around it too
34
+ # if you'd like.
35
+ def show_legend(legend_background_function=nil)
32
36
  end
33
37
 
34
38
  =begin rdoc
@@ -65,6 +65,13 @@ Dictionary Entries
65
65
  'stroke_width' => a_float # to be used for stroked markers
66
66
  'mode' # alias for 'rendering_mode'
67
67
  'legend' => a_dict or a_string # for adding marker to legend
68
+
69
+ You can provide a list of markers as the value of the 'marker' entry in the dictionary. In this
70
+ case, the show_marker routine will go through the list of markers using one per point. If there
71
+ are more points than markers, it will cycle through the list of markers repeatedly. Similarly,
72
+ you can provide a list of colors for 'color', 'fill_color', or 'stroke_color', and a list of
73
+ numbers for 'font', 'angle', 'scale', 'horizontal_scale', 'vertical_scale', 'italic_angle', 'ascent_angle',
74
+ or 'stroke_width'.
68
75
 
69
76
 
70
77
  Examples
@@ -170,38 +170,6 @@ module Tioga
170
170
  End_of_preamble
171
171
  COLOR_PREAMBLE = <<'End_of_preamble'
172
172
  % Color constants, generated from ColorConstants.rb
173
- \definecolor{CornflowerBlue}{rgb}{0.392,0.585,0.930}
174
- \definecolor{NavajoWhite}{rgb}{1.000,0.870,0.680}
175
- \definecolor{Fuchsia}{rgb}{1.000,0.000,1.000}
176
- \definecolor{Seashell}{rgb}{1.000,0.960,0.932}
177
- \definecolor{LightPlum}{rgb}{0.800,0.600,0.800}
178
- \definecolor{Lime}{rgb}{0.000,1.000,0.000}
179
- \definecolor{DarkOliveGreen}{rgb}{0.332,0.420,0.185}
180
- \definecolor{Periwinkle}{rgb}{0.600,0.000,1.000}
181
- \definecolor{IndianRed}{rgb}{0.804,0.360,0.360}
182
- \definecolor{Aqua}{rgb}{0.000,1.000,1.000}
183
- \definecolor{Thistle}{rgb}{0.848,0.750,0.848}
184
- \definecolor{MediumSpringGreen}{rgb}{0.000,0.980,0.604}
185
- \definecolor{DarkViolet}{rgb}{0.580,0.000,0.828}
186
- \definecolor{RoyalBlue}{rgb}{0.255,0.410,0.884}
187
- \definecolor{LightDullGreen}{rgb}{0.400,1.000,0.600}
188
- \definecolor{Brown}{rgb}{0.648,0.165,0.165}
189
- \definecolor{DarkChocolate}{rgb}{0.400,0.200,0.000}
190
- \definecolor{Orange}{rgb}{1.000,0.648,0.000}
191
- \definecolor{Goldenrod}{rgb}{0.855,0.648,0.125}
192
- \definecolor{SlateGray}{rgb}{0.440,0.500,0.565}
193
- \definecolor{LightSienna}{rgb}{0.800,0.400,0.000}
194
- \definecolor{DarkRed}{rgb}{0.545,0.000,0.000}
195
- \definecolor{Pumpkin}{rgb}{1.000,0.600,0.200}
196
- \definecolor{LavenderBlue}{rgb}{0.400,0.200,1.000}
197
- \definecolor{Bisque}{rgb}{1.000,0.894,0.770}
198
- \definecolor{Wheat}{rgb}{0.960,0.870,0.700}
199
- \definecolor{Mauve}{rgb}{0.800,0.200,0.400}
200
- \definecolor{MintCream}{rgb}{0.960,1.000,0.980}
201
- \definecolor{DodgerBlue}{rgb}{0.116,0.565,1.000}
202
- \definecolor{Salmon}{rgb}{0.980,0.500,0.448}
203
- \definecolor{LightGrey}{rgb}{0.828,0.828,0.828}
204
- \definecolor{Chartreuse}{rgb}{0.498,1.000,0.000}
205
173
  \definecolor{PaleTurquoise}{rgb}{0.688,0.932,0.932}
206
174
  \definecolor{GreenYellow}{rgb}{0.680,1.000,0.185}
207
175
  \definecolor{SpringGreen}{rgb}{0.000,1.000,0.498}
@@ -212,11 +180,11 @@ End_of_preamble
212
180
  \definecolor{LightBrightGreen}{rgb}{0.000,0.800,0.200}
213
181
  \definecolor{BlueViolet}{rgb}{0.540,0.170,0.888}
214
182
  \definecolor{MediumOrchid}{rgb}{0.730,0.332,0.828}
183
+ \definecolor{Navy}{rgb}{0.000,0.000,0.500}
215
184
  \definecolor{Gainsboro}{rgb}{0.864,0.864,0.864}
216
185
  \definecolor{Sienna}{rgb}{0.628,0.320,0.176}
217
186
  \definecolor{LightRose}{rgb}{1.000,0.600,0.800}
218
187
  \definecolor{Cornsilk}{rgb}{1.000,0.972,0.864}
219
- \definecolor{Navy}{rgb}{0.000,0.000,0.500}
220
188
  \definecolor{Peru}{rgb}{0.804,0.520,0.248}
221
189
  \definecolor{Indigo}{rgb}{0.294,0.000,0.510}
222
190
  \definecolor{Aquamarine}{rgb}{0.498,1.000,0.830}
@@ -233,12 +201,12 @@ End_of_preamble
233
201
  \definecolor{LightSkyBlue}{rgb}{0.530,0.808,0.980}
234
202
  \definecolor{DarkCyan}{rgb}{0.000,0.545,0.545}
235
203
  \definecolor{OrangeRed}{rgb}{1.000,0.270,0.000}
204
+ \definecolor{Purple}{rgb}{0.500,0.000,0.500}
236
205
  \definecolor{LavenderBlush}{rgb}{1.000,0.940,0.960}
237
206
  \definecolor{Black}{rgb}{0.000,0.000,0.000}
238
207
  \definecolor{White}{rgb}{1.000,1.000,1.000}
239
208
  \definecolor{MediumAquamarine}{rgb}{0.400,0.804,0.668}
240
209
  \definecolor{DarkRoyalBlue}{rgb}{0.000,0.200,0.800}
241
- \definecolor{Purple}{rgb}{0.500,0.000,0.500}
242
210
  \definecolor{SalmonRed}{rgb}{1.000,0.400,0.400}
243
211
  \definecolor{LightMustard}{rgb}{1.000,0.800,0.400}
244
212
  \definecolor{Chiffon}{rgb}{0.980,0.980,0.824}
@@ -254,17 +222,17 @@ End_of_preamble
254
222
  \definecolor{MediumPurple}{rgb}{0.576,0.440,0.860}
255
223
  \definecolor{DarkSlateGrey}{rgb}{0.185,0.310,0.310}
256
224
  \definecolor{RedOrange}{rgb}{0.800,0.200,0.000}
225
+ \definecolor{Silver}{rgb}{0.752,0.752,0.752}
257
226
  \definecolor{LightSalmon}{rgb}{1.000,0.628,0.480}
258
227
  \definecolor{Crimson}{rgb}{0.800,0.000,0.200}
259
228
  \definecolor{OldLace}{rgb}{0.992,0.960,0.900}
260
229
  \definecolor{GhostWhite}{rgb}{0.972,0.972,1.000}
261
- \definecolor{Silver}{rgb}{0.752,0.752,0.752}
230
+ \definecolor{Avocado}{rgb}{0.600,0.600,0.000}
262
231
  \definecolor{Turquoise}{rgb}{0.250,0.880,0.815}
263
232
  \definecolor{Linen}{rgb}{0.980,0.940,0.900}
264
233
  \definecolor{DarkOrchid}{rgb}{0.600,0.196,0.800}
265
234
  \definecolor{Pink}{rgb}{1.000,0.752,0.796}
266
235
  \definecolor{Ivory}{rgb}{1.000,1.000,0.940}
267
- \definecolor{Avocado}{rgb}{0.600,0.600,0.000}
268
236
  \definecolor{BurlyWood}{rgb}{0.870,0.720,0.530}
269
237
  \definecolor{MediumVioletRed}{rgb}{0.780,0.084,0.520}
270
238
  \definecolor{DeepSkyBlue}{rgb}{0.000,0.750,1.000}
@@ -275,48 +243,48 @@ End_of_preamble
275
243
  \definecolor{Orchid}{rgb}{0.855,0.440,0.840}
276
244
  \definecolor{Gray}{rgb}{0.500,0.500,0.500}
277
245
  \definecolor{Smoke}{rgb}{0.950,0.950,0.950}
246
+ \definecolor{WhiteSmoke}{rgb}{0.970,0.970,0.970}
278
247
  \definecolor{MediumBlue}{rgb}{0.000,0.000,0.804}
279
248
  \definecolor{DarkSalmon}{rgb}{0.912,0.590,0.480}
280
249
  \definecolor{PurpleBlue}{rgb}{0.400,0.200,0.800}
281
250
  \definecolor{LawnGreen}{rgb}{0.488,0.990,0.000}
282
251
  \definecolor{BlanchedAlmond}{rgb}{1.000,0.920,0.804}
283
- \definecolor{WhiteSmoke}{rgb}{0.970,0.970,0.970}
284
252
  \definecolor{Chocolate}{rgb}{0.824,0.410,0.116}
285
- \definecolor{LightOliveGreen}{rgb}{0.600,0.800,0.600}
286
253
  \definecolor{Moccasin}{rgb}{1.000,0.894,0.710}
287
254
  \definecolor{FloralWhite}{rgb}{1.000,0.980,0.940}
288
255
  \definecolor{SandyBrown}{rgb}{0.956,0.644,0.376}
289
- \definecolor{LightYellowGreen}{rgb}{0.800,0.800,0.200}
290
- \definecolor{AliceBlue}{rgb}{0.940,0.972,1.000}
291
- \definecolor{Honeydew}{rgb}{0.940,1.000,0.940}
256
+ \definecolor{LightOliveGreen}{rgb}{0.600,0.800,0.600}
292
257
  \definecolor{DarkLavender}{rgb}{0.400,0.200,0.600}
293
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}
294
261
  \definecolor{Tan}{rgb}{0.824,0.705,0.550}
295
- \definecolor{BrightBlue}{rgb}{0.000,0.400,1.000}
296
- \definecolor{LightCrimson}{rgb}{0.864,0.080,0.235}
297
- \definecolor{DarkSmoke}{rgb}{0.920,0.920,0.920}
262
+ \definecolor{LightYellowGreen}{rgb}{0.800,0.800,0.200}
298
263
  \definecolor{MediumSeaGreen}{rgb}{0.235,0.700,0.444}
264
+ \definecolor{DarkSmoke}{rgb}{0.920,0.920,0.920}
299
265
  \definecolor{Rose}{rgb}{1.000,0.400,0.600}
300
- \definecolor{Cyan}{rgb}{0.000,1.000,1.000}
301
- \definecolor{LightSandyBrown}{rgb}{1.000,0.800,0.600}
302
- \definecolor{Gold}{rgb}{1.000,0.844,0.000}
266
+ \definecolor{LightCrimson}{rgb}{0.864,0.080,0.235}
267
+ \definecolor{BrightBlue}{rgb}{0.000,0.400,1.000}
303
268
  \definecolor{Olive}{rgb}{0.500,0.500,0.000}
269
+ \definecolor{Gold}{rgb}{1.000,0.844,0.000}
304
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}
305
273
  \definecolor{DarkPeriwinkle}{rgb}{0.400,0.400,1.000}
306
- \definecolor{Azure}{rgb}{0.940,1.000,1.000}
307
- \definecolor{Khaki}{rgb}{0.940,0.900,0.550}
308
- \definecolor{Magenta}{rgb}{1.000,0.000,1.000}
309
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}
310
277
  \definecolor{Violet}{rgb}{0.932,0.510,0.932}
311
- \definecolor{CadetBlue}{rgb}{0.372,0.620,0.628}
312
- \definecolor{LightGray}{rgb}{0.828,0.828,0.828}
278
+ \definecolor{Magenta}{rgb}{1.000,0.000,1.000}
313
279
  \definecolor{DimGray}{rgb}{0.410,0.410,0.410}
314
- \definecolor{YellowGreen}{rgb}{0.800,0.800,0.000}
315
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}
316
284
  \definecolor{DarkGray}{rgb}{0.664,0.664,0.664}
317
285
  \definecolor{LightSlateGrey}{rgb}{0.468,0.532,0.600}
318
- \definecolor{GrayBlue}{rgb}{0.000,0.400,0.600}
319
286
  \definecolor{PaleGoldenrod}{rgb}{0.932,0.910,0.668}
287
+ \definecolor{GrayBlue}{rgb}{0.000,0.400,0.600}
320
288
  \definecolor{Snow}{rgb}{1.000,0.980,0.980}
321
289
  \definecolor{DarkSeaGreen}{rgb}{0.560,0.736,0.560}
322
290
  \definecolor{Blue}{rgb}{0.000,0.000,1.000}
@@ -324,9 +292,9 @@ End_of_preamble
324
292
  \definecolor{MediumGreen}{rgb}{0.000,0.600,0.000}
325
293
  \definecolor{PurpleGray}{rgb}{0.600,0.600,0.800}
326
294
  \definecolor{Yellow}{rgb}{1.000,1.000,0.000}
327
- \definecolor{ForestGreen}{rgb}{0.132,0.545,0.132}
328
295
  \definecolor{Coral}{rgb}{1.000,0.498,0.312}
329
296
  \definecolor{LightOrchid}{rgb}{0.600,0.400,0.800}
297
+ \definecolor{ForestGreen}{rgb}{0.132,0.545,0.132}
330
298
  \definecolor{MustardSeed}{rgb}{0.800,0.600,0.000}
331
299
  \definecolor{SeaGreen}{rgb}{0.180,0.545,0.340}
332
300
  \definecolor{DarkMagenta}{rgb}{0.545,0.000,0.545}
@@ -345,9 +313,9 @@ End_of_preamble
345
313
  \definecolor{LightSeaGreen}{rgb}{0.125,0.698,0.668}
346
314
  \definecolor{OliveDrab}{rgb}{0.420,0.556,0.136}
347
315
  \definecolor{SlateBlue}{rgb}{0.415,0.352,0.804}
348
- \definecolor{Lavender}{rgb}{0.900,0.900,0.980}
349
316
  \definecolor{DarkPurpleBlue}{rgb}{0.400,0.000,0.800}
350
317
  \definecolor{Beige}{rgb}{0.960,0.960,0.864}
318
+ \definecolor{Lavender}{rgb}{0.900,0.900,0.980}
351
319
  \definecolor{Maroon}{rgb}{0.500,0.000,0.000}
352
320
  \definecolor{PowderBlue}{rgb}{0.690,0.880,0.900}
353
321
  \definecolor{WarmGray}{rgb}{0.678,0.660,0.562}
@@ -366,6 +334,38 @@ End_of_preamble
366
334
  \definecolor{BlueGreen}{rgb}{0.000,0.600,0.400}
367
335
  \definecolor{MediumOrange}{rgb}{1.000,0.400,0.000}
368
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
369
 
370
370
  End_of_preamble
371
371
  end
@@ -43,6 +43,13 @@ module Tioga
43
43
  end
44
44
  return a
45
45
  end
46
+ module_function :tex_quote_text
47
+
48
+ class ::String
49
+ def quotex
50
+ Tioga::Utils.tex_quote_text(self)
51
+ end
52
+ end
46
53
 
47
54
  # Dimension conversion constants taken straight from the TeXbook
48
55
  DIMENSION_CONVERSION = {
@@ -18,6 +18,7 @@
18
18
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
19
  =end
20
20
 
21
+ require 'rubygems' rescue nil
21
22
  require 'Tioga/tioga.rb'
22
23
  require 'scanf'
23
24
 
@@ -326,10 +326,11 @@ class TiogaUI
326
326
  $figures_font = 'system 12'
327
327
  =end
328
328
 
329
- tiogainit_name = ENV['HOME'] + '/.tiogainit'
330
- if File.exist?(tiogainit_name)
331
- load(tiogainit_name)
329
+ tiogainit_names = %w[ .tiogarc .tiogainit ].map do |f|
330
+ File.join(ENV['HOME'], f)
332
331
  end
332
+ tiogainit_name = tiogainit_names.find {|f| test ?e, f}
333
+ load(tiogainit_name) unless tiogainit_name.nil?
333
334
 
334
335
  @pdf_name = nil
335
336
  @have_loaded = false
@@ -443,8 +444,8 @@ class TiogaUI
443
444
  return
444
445
  end
445
446
  make_portfolio(true, parse_figs($tioga_args[argnum]))
446
- else # unrecognized command
447
- show_help(filename,cmd)
447
+ #else # unrecognized command
448
+ # show_help(filename,cmd)
448
449
  end
449
450
  rescue
450
451
  end
@@ -21,27 +21,35 @@
21
21
  #ifndef _NAMESPACE_H
22
22
  #define _NAMESPACE_H
23
23
 
24
- /* This header file provides two OS-specific macros for the definition of
25
- extern symbols:
24
+ /* This header file provides three OS-specific macros for the definition of
25
+ extern (or NOT extern) symbols:
26
26
 
27
27
  * PUBLIC, which has to be used to mark objects that will be used
28
- outside the module
28
+ outside the module
29
29
 
30
- * PRIVATE, for symbols which are "extern" but intern to the module
30
+ * INTERN, for symbols which are shared among compilation units within a
31
+ module, but are NOT exported to other modules.
32
+
33
+ * PRIVATE, for symbols which are visible only within the containing
34
+ compilation unit (i.e. C source file) and, of course, are not exported to
35
+ other modules.
31
36
 
32
37
  Please don't add "extern" after the PRIVATE or PUBLIC declaration
33
38
  as this would break compilation on Darwin.
34
39
  */
35
40
 
36
- #ifdef __APPLE__
41
+ #if __GNUC__ >= 4 /* we have the visibility attribute */
42
+ # define INTERN __attribute__ ((visibility ("hidden")))
43
+ # define PUBLIC __attribute__ ((visibility ("default")))
44
+ # define INTERN_EXTERN extern
45
+ #elif defined __APPLE__
37
46
  # define INTERN __private_extern__
38
47
  # define PUBLIC
39
- #elif __GNUC__ >= 4 /* we have the visibility attribute */
40
- # define INTERN __attribute__ ((visibility ("hidden")))
41
- # define PUBLIC __attribute__ ((visibility ("default")))
48
+ # define INTERN_EXTERN
42
49
  #else /* not really good */
43
50
  # define INTERN
44
51
  # define PUBLIC
52
+ # define INTERN_EXTERN
45
53
  #endif /* __APPLE__ and __GNU_C_ >= 4*/
46
54
 
47
55
  /* In any case, PRIVATE is static */
@@ -362,7 +362,8 @@ clr_value(double n1, double n2, double hue) // from plplot plctrl.c
362
362
  }
363
363
 
364
364
 
365
- static void
365
+ // this is also used for converting images
366
+ void
366
367
  convert_hls_to_rgb(double h, double l, double s, double *p_r, double *p_g,
367
368
  double *p_b) // from plplot plctrl.c
368
369
  {
@@ -510,16 +511,31 @@ c_get_color_from_colormap(OBJ_PTR fmkr, FM *p, OBJ_PTR color_map, double x,
510
511
  int *ierr)
511
512
  { // x is from 0 to 1. this returns a vector for the RGB color from
512
513
  // the given colormap
513
- unsigned char *buff = (unsigned char *)(String_Ptr(color_map,ierr));
514
- unsigned char r, g, b, i;
515
- int len = String_Len(color_map,ierr);
514
+ OBJ_PTR cm_len_obj;
515
+ OBJ_PTR lookup_obj;
516
+ unsigned char *buff;
517
+ unsigned char r, g, b;
518
+ int i, cm_len, lu_len;
519
+
520
+ cm_len_obj = Array_Entry(color_map, 0, ierr);
521
+ if (*ierr != 0) RETURN_NIL;
522
+ cm_len = Number_to_int(cm_len_obj, ierr) + 1;
523
+ if (*ierr != 0) RETURN_NIL;
524
+ lookup_obj = Array_Entry(color_map, 1, ierr);
525
+ if (*ierr != 0) RETURN_NIL;
526
+ buff = (unsigned char *)(String_Ptr(lookup_obj,ierr));
516
527
  if (*ierr != 0) RETURN_NIL;
517
- if (len % 3 != 0) {
518
- RAISE_ERROR("Sorry: color_map length must be a multiple of 3 "
528
+ lu_len = String_Len(lookup_obj,ierr);
529
+ if (*ierr != 0) RETURN_NIL;
530
+
531
+ if (3*cm_len != lu_len) {
532
+ RAISE_ERROR("Sorry: lookup length must be 3 times colormap length "
519
533
  "(for R G B components)", ierr);
520
534
  RETURN_NIL;
521
535
  }
522
- i = 3 * ROUND(x * ((len/3)-1));
536
+ // Make sure x is non-negative
537
+ if (x < 0.0) x = -x;
538
+ i = 3 * (ROUND(x * (cm_len-1)) % cm_len);
523
539
  r = buff[i]; g = buff[i+1]; b = buff[i+2];
524
540
  OBJ_PTR result = Array_New(3);
525
541
  Array_Store(result, 0, Float_New(r/255.0), ierr);
@@ -785,3 +801,43 @@ c_yaxis_stroke_color_get(OBJ_PTR fmkr, FM *p, int *ierr)
785
801
  Array_Store(result, 2, Float_New(b), ierr);
786
802
  return result;
787
803
  }
804
+
805
+
806
+
807
+ void
808
+ str_hls_to_rgb_bang(unsigned char* str, long len)
809
+ {
810
+ double r,g,b,h,l,s;
811
+ long n, j;
812
+ // convert HLS triples to RGB triples
813
+ n = len/3;
814
+ for (j=0; j<n; j++) {
815
+ // 360/256 = 1.40625
816
+ h = str[0]*1.40625; l = str[1]/255.0; s = str[2]/255.0;
817
+ convert_hls_to_rgb(h,l,s,&r,&g,&b);
818
+ *str++ = round(r*255.0); *str++ = round(g*255.0); *str++ = round(b*255.0);
819
+ }
820
+ }
821
+
822
+
823
+ void
824
+ c_string_hls_to_rgb_bang(OBJ_PTR fmkr, FM *p, unsigned char* str, long len, int *ierr)
825
+ { str_hls_to_rgb_bang(str,len); }
826
+
827
+ void
828
+ c_string_rgb_to_hls_bang(OBJ_PTR fmkr, FM *p, unsigned char* str, long len, int *ierr)
829
+ {
830
+ double r,g,b,h,l,s;
831
+ long n, j;
832
+ // convert RGB triples to HLS triples
833
+ n = len/3;
834
+ for (j=0; j<n; j++) {
835
+ // 360/256 = 1.40625
836
+ r = str[0]/255.0; g = str[1]/255.0; b = str[2]/255.0;
837
+ convert_rgb_to_hls(r, g, b, &h, &l, &s);
838
+ *str++ = round(h/1.40625); *str++ = round(l*255.0); *str++ = round(s*255.0);
839
+ }
840
+ }
841
+
842
+
843
+