tioga 1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/Tioga_README +372 -0
  2. data/lgpl.txt +504 -0
  3. data/split/Dtable/defs.h +33 -0
  4. data/split/Dtable/dtable.c +1928 -0
  5. data/split/Dtable/dtable_intern.h +144 -0
  6. data/split/Dtable/dvector.h +61 -0
  7. data/split/Dtable/extconf.rb +4 -0
  8. data/split/Dtable/include/dtable.h +35 -0
  9. data/split/Dtable/lib/Dtable_extras.rb +90 -0
  10. data/split/Dtable/namespace.h +47 -0
  11. data/split/Dtable/safe_double.h +104 -0
  12. data/split/Dtable/symbols.c +92 -0
  13. data/split/Dtable/symbols.h +52 -0
  14. data/split/Dvector/defs.h +33 -0
  15. data/split/Dvector/dvector.c +5486 -0
  16. data/split/Dvector/dvector_intern.h +142 -0
  17. data/split/Dvector/extconf.rb +4 -0
  18. data/split/Dvector/include/dvector.h +61 -0
  19. data/split/Dvector/lib/Dvector_extras.rb +328 -0
  20. data/split/Dvector/lib/Numeric_extras.rb +134 -0
  21. data/split/Dvector/namespace.h +47 -0
  22. data/split/Dvector/safe_double.h +104 -0
  23. data/split/Dvector/symbols.c +92 -0
  24. data/split/Dvector/symbols.h +52 -0
  25. data/split/Flate/defs.h +33 -0
  26. data/split/Flate/extconf.rb +19 -0
  27. data/split/Flate/flate.c +156 -0
  28. data/split/Flate/flate_intern.h +97 -0
  29. data/split/Flate/include/flate.h +98 -0
  30. data/split/Flate/namespace.h +47 -0
  31. data/split/Flate/safe_double.h +104 -0
  32. data/split/Flate/symbols.c +92 -0
  33. data/split/Flate/symbols.h +52 -0
  34. data/split/Function/defs.h +33 -0
  35. data/split/Function/dvector.h +61 -0
  36. data/split/Function/extconf.rb +4 -0
  37. data/split/Function/function.c +988 -0
  38. data/split/Function/joint_qsort.c +258 -0
  39. data/split/Function/lib/Function_extras.rb +44 -0
  40. data/split/Function/namespace.h +47 -0
  41. data/split/Function/safe_double.h +104 -0
  42. data/split/Function/symbols.c +92 -0
  43. data/split/Function/symbols.h +52 -0
  44. data/split/Tioga/axes.c +774 -0
  45. data/split/Tioga/defs.h +33 -0
  46. data/split/Tioga/dtable.h +35 -0
  47. data/split/Tioga/dvector.h +61 -0
  48. data/split/Tioga/extconf.rb +4 -0
  49. data/split/Tioga/figures.c +672 -0
  50. data/split/Tioga/figures.h +855 -0
  51. data/split/Tioga/flate.h +98 -0
  52. data/split/Tioga/init.c +524 -0
  53. data/split/Tioga/lib/Arcs_and_Circles.rb +64 -0
  54. data/split/Tioga/lib/ColorConstants.rb +274 -0
  55. data/split/Tioga/lib/Colorbars.rb +10 -0
  56. data/split/Tioga/lib/Colormaps.rb +105 -0
  57. data/split/Tioga/lib/Coordinate_Conversions.rb +194 -0
  58. data/split/Tioga/lib/Creating_Paths.rb +94 -0
  59. data/split/Tioga/lib/Doc.rb +91 -0
  60. data/split/Tioga/lib/Executive.rb +515 -0
  61. data/split/Tioga/lib/FigMkr.rb +2224 -0
  62. data/split/Tioga/lib/FigureConstants.rb +125 -0
  63. data/split/Tioga/lib/Figures_and_Plots.rb +268 -0
  64. data/split/Tioga/lib/Images.rb +278 -0
  65. data/split/Tioga/lib/Legends.rb +190 -0
  66. data/split/Tioga/lib/MarkerConstants.rb +122 -0
  67. data/split/Tioga/lib/Markers.rb +129 -0
  68. data/split/Tioga/lib/Page_Frame_Bounds.rb +567 -0
  69. data/split/Tioga/lib/Rectangles.rb +94 -0
  70. data/split/Tioga/lib/Shading.rb +100 -0
  71. data/split/Tioga/lib/Special_Paths.rb +307 -0
  72. data/split/Tioga/lib/Strokes.rb +129 -0
  73. data/split/Tioga/lib/TeX_Text.rb +454 -0
  74. data/split/Tioga/lib/TexPreamble.rb +358 -0
  75. data/split/Tioga/lib/Titles_and_Labels.rb +306 -0
  76. data/split/Tioga/lib/Transparency.rb +89 -0
  77. data/split/Tioga/lib/Using_Paths.rb +164 -0
  78. data/split/Tioga/lib/Utils.rb +74 -0
  79. data/split/Tioga/lib/X_and_Y_Axes.rb +749 -0
  80. data/split/Tioga/lib/irb_tioga.rb +122 -0
  81. data/split/Tioga/lib/tioga.rb +1 -0
  82. data/split/Tioga/lib/tioga_ui.rb +5 -0
  83. data/split/Tioga/lib/tioga_ui_cmds.rb +793 -0
  84. data/split/Tioga/makers.c +989 -0
  85. data/split/Tioga/mk_tioga_sty.rb +53 -0
  86. data/split/Tioga/namespace.h +47 -0
  87. data/split/Tioga/pdf_font_dicts.c +18253 -0
  88. data/split/Tioga/pdfcolor.c +486 -0
  89. data/split/Tioga/pdfcoords.c +505 -0
  90. data/split/Tioga/pdffile.c +342 -0
  91. data/split/Tioga/pdfimage.c +536 -0
  92. data/split/Tioga/pdfpath.c +914 -0
  93. data/split/Tioga/pdfs.h +229 -0
  94. data/split/Tioga/pdftext.c +443 -0
  95. data/split/Tioga/safe_double.h +104 -0
  96. data/split/Tioga/symbols.c +92 -0
  97. data/split/Tioga/symbols.h +52 -0
  98. data/split/Tioga/texout.c +380 -0
  99. data/split/defs.h +33 -0
  100. data/split/extconf.rb +107 -0
  101. data/split/mkmf2.rb +1612 -0
  102. data/split/namespace.h +47 -0
  103. data/split/safe_double.h +104 -0
  104. data/split/scripts/tioga +4 -0
  105. data/split/symbols.c +92 -0
  106. data/split/symbols.h +52 -0
  107. data/tests/dtable_test.data +6 -0
  108. data/tests/dvector_read_test.data +1 -0
  109. data/tests/dvector_test.data +101 -0
  110. data/tests/tc_Dtable.rb +221 -0
  111. data/tests/tc_Dvector.rb +791 -0
  112. data/tests/tc_FMkr.rb +162 -0
  113. data/tests/tc_Flate.rb +45 -0
  114. data/tests/tc_Function.rb +111 -0
  115. data/tests/ts_Tioga.rb +38 -0
  116. metadata +163 -0
@@ -0,0 +1,33 @@
1
+ /**********************************************************************
2
+
3
+ defs.h:
4
+ some definitions that are used everywhere and that depend on some
5
+ HAVE_* macros.
6
+
7
+ Copyright (C) 2006 Vincent Fourmond
8
+
9
+ This program is free software; you can redistribute it and/or modify
10
+ it under the terms of the GNU General Library Public License as published
11
+ by the Free Software Foundation; either version 2 of the License, or
12
+ (at your option) any later version.
13
+
14
+ This program is distributed in the hope that it will be useful,
15
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ GNU Library General Public License for more details.
18
+
19
+ You should have received a copy of the GNU Library General Public License
20
+ along with this program; if not, write to the Free Software
21
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
+
23
+ **********************************************************************/
24
+
25
+
26
+ #ifdef HAVE_ISNAN
27
+ /* we use isnan and isinf, which are much faster than the workaround */
28
+ #define is_okay_number(x) (! isnan(x) && ! isinf(x))
29
+ #else
30
+ #define is_okay_number(x) ((x) - (x) == 0.0)
31
+ #define isnan(x) ((x) != (x))
32
+ /* yes, as funny as it may look NaN != NaN, and that's the only one */
33
+ #endif
@@ -0,0 +1,35 @@
1
+ /* dtable.h */
2
+ /*
3
+ Copyright (C) 2004 Bill Paxton
4
+
5
+ This file is part of Dtable.
6
+
7
+ Dtable is free software; you can redistribute it and/or modify
8
+ it under the terms of the GNU General Library Public License as published
9
+ by the Free Software Foundation; either version 2 of the License, or
10
+ (at your option) any later version.
11
+
12
+ Dtable is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU Library General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Library General Public License
18
+ along with Dtable; if not, write to the Free Software
19
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ */
21
+
22
+ #ifndef __dtable_H__
23
+ #define __dtable_H__
24
+
25
+ #include <symbols.h>
26
+
27
+ /*======================================================================*/
28
+
29
+
30
+ DECLARE_SYMBOL(VALUE, Read_Dtable,
31
+ (VALUE dest, char *filename, int skip_lines));
32
+ DECLARE_SYMBOL(double **, Dtable_Ptr,
33
+ (VALUE dtable, long *num_cols, long *num_rows));
34
+
35
+ #endif
@@ -0,0 +1,61 @@
1
+ /* Dvector.h */
2
+ /*
3
+ Copyright (C) 2005 Bill Paxton
4
+
5
+ Dvector is free software; you can redistribute it and/or modify
6
+ it under the terms of the GNU General Library Public License as published
7
+ by the Free Software Foundation; either version 2 of the License, or
8
+ (at your option) any later version.
9
+
10
+ Dvector 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 Library General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Library General Public License
16
+ along with Dvector; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
+ */
19
+
20
+ #ifndef __Dvector_H__
21
+ #define __Dvector_H__
22
+
23
+ /* this file has been heavily modified by Vincent Fourmond to take care
24
+ of the 'RCR330' scheme of exporting symbols
25
+ */
26
+
27
+ #include <symbols.h>
28
+ #include <stdbool.h>
29
+
30
+ /*======================================================================*/
31
+
32
+ /* functions for handling Dvectors: */
33
+
34
+ DECLARE_SYMBOL(double *, Dvector_Data_for_Read, (VALUE dvector, long *len_ptr));
35
+ /* returns pointer to the dvector's data (which may be shared) */
36
+ DECLARE_SYMBOL(double *, Dvector_Data_Copy, (VALUE dvector, long *len_ptr));
37
+ /* like Dvector_Data_for_Read, but returns pointer to a copy of the data */
38
+ DECLARE_SYMBOL(double *, Dvector_Data_for_Write,
39
+ (VALUE dvector, long *len_ptr));
40
+ DECLARE_SYMBOL(double *, Dvector_Data_Resize, (VALUE dvector, long new_len));
41
+ DECLARE_SYMBOL(double *, Dvector_Data_Replace,
42
+ (VALUE dvector, long len, double *data));
43
+ /* copies the data into the dvector */
44
+ DECLARE_SYMBOL(VALUE, Dvector_Create, (void));
45
+ DECLARE_SYMBOL(void, Dvector_Store_Double, (VALUE ary, long idx, double val));
46
+ /* pushes one element onto the vector */
47
+ DECLARE_SYMBOL(void, Dvector_Push_Double, (VALUE ary, double val));
48
+
49
+ /* functions for interpolation */
50
+ DECLARE_SYMBOL(double, c_dvector_spline_interpolate,
51
+ (double x, int n_pts_data, double *Xs, double *Ys,
52
+ double *Bs, double *Cs, double *Ds));
53
+ DECLARE_SYMBOL(double, c_dvector_linear_interpolate,
54
+ (int num_pts, double *xs, double *ys, double x));
55
+ DECLARE_SYMBOL(void, c_dvector_create_spline_interpolant,
56
+ (int n_pts_data, double *Xs, double *Ys,
57
+ bool start_clamped, double start_slope,
58
+ bool end_clamped, double end_slope,
59
+ double *As, double *Bs, double *Cs));
60
+ #endif /* __Dvector_H__ */
61
+
@@ -0,0 +1,4 @@
1
+ # Dtable installation file
2
+ require 'mkmf'
3
+
4
+ create_makefile 'Tioga/FigureMaker'
@@ -0,0 +1,672 @@
1
+ /* figures.c */
2
+ /*
3
+ Copyright (C) 2005 Bill Paxton
4
+
5
+ This file is part of Tioga.
6
+
7
+ Tioga is free software; you can redistribute it and/or modify
8
+ it under the terms of the GNU General Library Public License as published
9
+ by the Free Software Foundation; either version 2 of the License, or
10
+ (at your option) any later version.
11
+
12
+ Tioga is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU Library General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Library General Public License
18
+ along with Tioga; if not, write to the Free Software
19
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ */
21
+
22
+ /*
23
+ :stopdoc:
24
+ */
25
+
26
+ #include "figures.h"
27
+ #include "pdfs.h"
28
+ #include "flate.h"
29
+
30
+ #include <symbols.h>
31
+
32
+ #include <stdio.h>
33
+
34
+ char *data_dir = NULL;
35
+
36
+ VALUE cFM; /* the Tioga/FigureMaker class object */
37
+
38
+ static void FM_mark(FM *p) { /* all of the VALUEs in the FM struct should be marked */
39
+ rb_gc_mark(p->stroke_color);
40
+ rb_gc_mark(p->fill_color);
41
+ rb_gc_mark(p->line_type);
42
+ rb_gc_mark(p->title);
43
+ rb_gc_mark(p->title_color);
44
+ rb_gc_mark(p->xlabel);
45
+ rb_gc_mark(p->xlabel_color);
46
+ rb_gc_mark(p->ylabel);
47
+ rb_gc_mark(p->ylabel_color);
48
+ rb_gc_mark(p->xaxis_stroke_color);
49
+ rb_gc_mark(p->xaxis_locations_for_major_ticks);
50
+ rb_gc_mark(p->xaxis_locations_for_minor_ticks);
51
+ rb_gc_mark(p->yaxis_stroke_color);
52
+ rb_gc_mark(p->yaxis_locations_for_major_ticks);
53
+ rb_gc_mark(p->yaxis_locations_for_minor_ticks);
54
+ rb_gc_mark(p->fm);
55
+ }
56
+
57
+ static void FM_free(FM *p) {
58
+ free(p);
59
+ }
60
+
61
+ static VALUE FM_alloc(VALUE klass) {
62
+ FM *p;
63
+ VALUE ary = Data_Make_Struct(klass, FM, FM_mark, FM_free, p);
64
+ Initialize_Figure(ary);
65
+ p->fm = ary;
66
+ return ary;
67
+ }
68
+
69
+ bool Is_FM(VALUE fmkr) { return ( TYPE(fmkr) == T_DATA && RDATA(fmkr)->dfree == (RUBY_DATA_FUNC)FM_free ); }
70
+
71
+ FM *Get_FM(VALUE fmkr) {
72
+ FM *p;
73
+ Data_Get_Struct(fmkr, FM, p);
74
+ return p;
75
+ }
76
+
77
+ /* page attribute accessors */
78
+ RO_BOOL_ATTR(root_figure)
79
+ RO_BOOL_ATTR(in_subplot)
80
+
81
+ /* device page size accessors -- can set these using set_device_pagesize */
82
+ RO_DBL_ATTR(page_left)
83
+ RO_DBL_ATTR(page_bottom)
84
+ RO_DBL_ATTR(page_top)
85
+ RO_DBL_ATTR(page_right)
86
+ RO_DBL_ATTR(page_width)
87
+ RO_DBL_ATTR(page_height)
88
+
89
+ /* frame attribute accessors -- can set these using set_frame_sides */
90
+ RO_DBL_ATTR(frame_left)
91
+ RO_DBL_ATTR(frame_right)
92
+ RO_DBL_ATTR(frame_top)
93
+ RO_DBL_ATTR(frame_bottom)
94
+ RO_DBL_ATTR(frame_width)
95
+ RO_DBL_ATTR(frame_height)
96
+
97
+ /* bounds attribute accessors */
98
+ RO_DBL_ATTR(bounds_left)
99
+ RO_DBL_ATTR(bounds_right)
100
+ RO_DBL_ATTR(bounds_top)
101
+ RO_DBL_ATTR(bounds_bottom)
102
+ RO_DBL_ATTR(bounds_xmin)
103
+ RO_DBL_ATTR(bounds_xmax)
104
+ RO_DBL_ATTR(bounds_ymin)
105
+ RO_DBL_ATTR(bounds_ymax)
106
+ RO_DBL_ATTR(bounds_width)
107
+ RO_DBL_ATTR(bounds_height)
108
+ RO_BOOL_ATTR(xaxis_reversed)
109
+ RO_BOOL_ATTR(yaxis_reversed)
110
+
111
+ /* text attribute accessors */
112
+ RO_DBL_ATTR(default_font_size)
113
+ RO_DBL_ATTR(default_text_scale)
114
+ INT_ATTR(justification)
115
+ INT_ATTR(alignment)
116
+ RO_DBL_ATTR(default_text_height_dx)
117
+ RO_DBL_ATTR(default_text_height_dy)
118
+ DBL_ATTR(label_left_margin)
119
+ DBL_ATTR(label_right_margin)
120
+ DBL_ATTR(label_top_margin)
121
+ DBL_ATTR(label_bottom_margin)
122
+ DBL_ATTR(text_shift_on_left)
123
+ DBL_ATTR(text_shift_on_right)
124
+ DBL_ATTR(text_shift_on_top)
125
+ DBL_ATTR(text_shift_on_bottom)
126
+ DBL_ATTR(text_shift_from_x_origin)
127
+ DBL_ATTR(text_shift_from_y_origin)
128
+
129
+ /* graphics attribute accessors */
130
+ RO_DBL_ATTR(default_line_scale)
131
+ RO_VAL_ATTR(stroke_color)
132
+ RO_VAL_ATTR(fill_color)
133
+ RO_DBL_ATTR(line_width)
134
+ RO_INT_ATTR(line_cap)
135
+ RO_INT_ATTR(line_join)
136
+ RO_DBL_ATTR(miter_limit)
137
+ RO_DBL_ATTR(stroke_opacity)
138
+ RO_DBL_ATTR(fill_opacity)
139
+ RO_VAL_ATTR(line_type)
140
+
141
+ /* Title */
142
+ RO_BOOL_ATTR(title_visible)
143
+ VAL_ATTR(title)
144
+ INT_ATTR(title_side)
145
+ DBL_ATTR(title_position)
146
+ DBL_ATTR(title_scale)
147
+ DBL_ATTR(title_shift)
148
+ DBL_ATTR(title_angle)
149
+ INT_ATTR(title_alignment)
150
+ INT_ATTR(title_justification)
151
+ VAL_ATTR(title_color)
152
+
153
+ /* X label */
154
+ RO_BOOL_ATTR(xlabel_visible)
155
+ VAL_ATTR(xlabel)
156
+ DBL_ATTR(xlabel_position)
157
+ DBL_ATTR(xlabel_scale)
158
+ DBL_ATTR(xlabel_shift)
159
+ DBL_ATTR(xlabel_angle)
160
+ INT_ATTR(xlabel_side)
161
+ INT_ATTR(xlabel_alignment)
162
+ INT_ATTR(xlabel_justification)
163
+ VAL_ATTR(xlabel_color)
164
+
165
+ /* Y label */
166
+ RO_BOOL_ATTR(ylabel_visible)
167
+ VAL_ATTR(ylabel)
168
+ DBL_ATTR(ylabel_position)
169
+ DBL_ATTR(ylabel_scale)
170
+ DBL_ATTR(ylabel_shift)
171
+ DBL_ATTR(ylabel_angle)
172
+ INT_ATTR(ylabel_side)
173
+ INT_ATTR(ylabel_alignment)
174
+ INT_ATTR(ylabel_justification)
175
+ VAL_ATTR(ylabel_color)
176
+
177
+ /* X axis */
178
+ RO_BOOL_ATTR(xaxis_visible)
179
+ INT_ATTR(xaxis_loc)
180
+ INT_ATTR(xaxis_type)
181
+ DBL_ATTR(xaxis_line_width)
182
+ VAL_ATTR(xaxis_stroke_color)
183
+ DBL_ATTR(xaxis_major_tick_width)
184
+ DBL_ATTR(xaxis_minor_tick_width)
185
+ DBL_ATTR(xaxis_major_tick_length)
186
+ DBL_ATTR(xaxis_minor_tick_length)
187
+ BOOL_ATTR(xaxis_log_values)
188
+ BOOL_ATTR(xaxis_ticks_inside)
189
+ BOOL_ATTR(xaxis_ticks_outside)
190
+ DBL_ATTR(xaxis_tick_interval)
191
+ DBL_ATTR(xaxis_min_between_major_ticks)
192
+ INT_ATTR(xaxis_number_of_minor_intervals)
193
+ VAL_ATTR(xaxis_locations_for_major_ticks)
194
+ VAL_ATTR(xaxis_locations_for_minor_ticks)
195
+ BOOL_ATTR(xaxis_use_fixed_pt)
196
+ INT_ATTR(xaxis_digits_max)
197
+ VAL_ATTR(xaxis_tick_labels)
198
+ INT_ATTR(xaxis_numeric_label_decimal_digits)
199
+ DBL_ATTR(xaxis_numeric_label_scale)
200
+ DBL_ATTR(xaxis_numeric_label_shift)
201
+ DBL_ATTR(xaxis_numeric_label_angle)
202
+ INT_ATTR(xaxis_numeric_label_alignment)
203
+ INT_ATTR(xaxis_numeric_label_justification)
204
+ INT_ATTR(top_edge_type)
205
+ RO_BOOL_ATTR(top_edge_visible)
206
+ INT_ATTR(bottom_edge_type)
207
+ RO_BOOL_ATTR(bottom_edge_visible)
208
+
209
+ /* Y axis */
210
+ RO_BOOL_ATTR(yaxis_visible)
211
+ INT_ATTR(yaxis_loc)
212
+ INT_ATTR(yaxis_type)
213
+ DBL_ATTR(yaxis_line_width)
214
+ VAL_ATTR(yaxis_stroke_color)
215
+ DBL_ATTR(yaxis_major_tick_width)
216
+ DBL_ATTR(yaxis_minor_tick_width)
217
+ DBL_ATTR(yaxis_major_tick_length)
218
+ DBL_ATTR(yaxis_minor_tick_length)
219
+ BOOL_ATTR(yaxis_log_values)
220
+ BOOL_ATTR(yaxis_ticks_inside)
221
+ BOOL_ATTR(yaxis_ticks_outside)
222
+ DBL_ATTR(yaxis_tick_interval)
223
+ DBL_ATTR(yaxis_min_between_major_ticks)
224
+ INT_ATTR(yaxis_number_of_minor_intervals)
225
+ VAL_ATTR(yaxis_locations_for_major_ticks)
226
+ VAL_ATTR(yaxis_locations_for_minor_ticks)
227
+ BOOL_ATTR(yaxis_use_fixed_pt)
228
+ INT_ATTR(yaxis_digits_max)
229
+ VAL_ATTR(yaxis_tick_labels)
230
+ INT_ATTR(yaxis_numeric_label_decimal_digits)
231
+ DBL_ATTR(yaxis_numeric_label_scale)
232
+ DBL_ATTR(yaxis_numeric_label_shift)
233
+ DBL_ATTR(yaxis_numeric_label_angle)
234
+ INT_ATTR(yaxis_numeric_label_alignment)
235
+ INT_ATTR(yaxis_numeric_label_justification)
236
+ INT_ATTR(left_edge_type)
237
+ RO_BOOL_ATTR(left_edge_visible)
238
+ INT_ATTR(right_edge_type)
239
+ RO_BOOL_ATTR(right_edge_visible)
240
+
241
+ /* Legend */
242
+ DBL_ATTR(legend_text_width)
243
+ DBL_ATTR(legend_line_x0)
244
+ DBL_ATTR(legend_line_x1)
245
+ DBL_ATTR(legend_line_dy)
246
+ DBL_ATTR(legend_text_xstart)
247
+ DBL_ATTR(legend_text_ystart)
248
+ DBL_ATTR(legend_text_dy)
249
+ DBL_ATTR(legend_line_width)
250
+ DBL_ATTR(legend_scale)
251
+ INT_ATTR(legend_alignment)
252
+ INT_ATTR(legend_justification)
253
+
254
+ /* Debugging */
255
+ INT_ATTR(debug_verbosity_level)
256
+
257
+ /* Warning on non-ok numbers */
258
+ BOOL_ATTR(croak_on_nonok_numbers)
259
+
260
+ #define attr_reader(attr) rb_define_method(cFM, #attr , FM_##attr##_get, 0);
261
+ #define attr_writer(attr) rb_define_method(cFM, #attr "=", FM_##attr##_set, 1);
262
+ #define attr_accessors(attr) attr_reader(attr) attr_writer(attr)
263
+
264
+ void Init_FigureMaker(void) {
265
+ /* called by Ruby when the extension is loaded */
266
+
267
+ /* this function has been modified by Vincent Fourmond for the splitting
268
+ out of libraries more general than Tioga */
269
+
270
+ /*
271
+ Init_Flate();
272
+ Init_Dvector();
273
+ Init_Dtable();
274
+ */
275
+
276
+ /* These functions don't belong here anymore, as they will be called
277
+ by their respective modules. Instead, we require them */
278
+
279
+ rb_require("Dobjects/Dvector");
280
+ rb_require("Dobjects/Dtable");
281
+ rb_require("Flate");
282
+
283
+
284
+ VALUE mTioga = rb_define_module("Tioga");
285
+
286
+
287
+ /* and now, we need to import Dobjects and Flate modules*/
288
+ VALUE mDobjects = rb_define_module("Dobjects");
289
+ VALUE mFlate = rb_define_module("Flate");
290
+ rb_include_module(mTioga, mDobjects);
291
+ rb_include_module(mTioga, mFlate);
292
+
293
+ cFM = rb_define_class_under(mTioga, "FigureMaker", rb_cObject);
294
+
295
+ /* This is necessary to get the tex preamble for the previews*/
296
+ rb_require("Tioga/TexPreamble.rb");
297
+
298
+ /* Inclusion of the external objects to get them easily */
299
+ rb_include_module(cFM, mDobjects);
300
+ rb_include_module(cFM, mFlate);
301
+
302
+ rb_define_alloc_func(cFM, FM_alloc);
303
+ Init_IDs();
304
+ Init_Font_Dictionary();
305
+ rb_define_method(cFM, "private_make", FM_private_make, 2);
306
+ rb_define_method(cFM, "get_save_filename", FM_get_save_filename, 1);
307
+ rb_define_method(cFM, "private_make_portfolio", FM_private_make_portfolio, 3);
308
+
309
+ /* page attribute accessors */
310
+ attr_reader(root_figure)
311
+ attr_reader(in_subplot)
312
+ attr_reader(page_left)
313
+ attr_reader(page_right)
314
+ attr_reader(page_bottom)
315
+ attr_reader(page_top)
316
+ attr_reader(page_width)
317
+ attr_reader(page_height)
318
+ /* frame attribute accessors */
319
+ attr_reader(frame_left)
320
+ attr_reader(frame_right)
321
+ attr_reader(frame_bottom)
322
+ attr_reader(frame_top)
323
+ attr_reader(frame_width)
324
+ attr_reader(frame_height)
325
+ /* bounds attribute accessors */
326
+ attr_reader(bounds_left)
327
+ attr_reader(bounds_right)
328
+ attr_reader(bounds_bottom)
329
+ attr_reader(bounds_top)
330
+ attr_reader(bounds_width)
331
+ attr_reader(bounds_height)
332
+ attr_reader(bounds_xmin)
333
+ attr_reader(bounds_xmax)
334
+ attr_reader(bounds_ymin)
335
+ attr_reader(bounds_ymax)
336
+ attr_reader(xaxis_reversed)
337
+ attr_reader(yaxis_reversed)
338
+ /* text attribute accessors */
339
+ attr_reader(default_font_size)
340
+ attr_reader(default_text_scale)
341
+ attr_accessors(justification)
342
+ attr_accessors(alignment)
343
+ attr_reader(default_text_height_dx)
344
+ attr_reader(default_text_height_dy)
345
+ attr_accessors(label_left_margin)
346
+ attr_accessors(label_right_margin)
347
+ attr_accessors(label_top_margin)
348
+ attr_accessors(label_bottom_margin)
349
+ attr_accessors(text_shift_on_left)
350
+ attr_accessors(text_shift_on_right)
351
+ attr_accessors(text_shift_on_top)
352
+ attr_accessors(text_shift_on_bottom)
353
+ attr_accessors(text_shift_from_x_origin)
354
+ attr_accessors(text_shift_from_y_origin)
355
+ /* graphics attribute accessors */
356
+ attr_reader(default_line_scale)
357
+ attr_accessors(stroke_color)
358
+ attr_accessors(fill_color)
359
+ attr_accessors(line_width)
360
+ attr_accessors(line_cap)
361
+ attr_accessors(line_join)
362
+ attr_accessors(miter_limit)
363
+ attr_accessors(stroke_opacity)
364
+ attr_accessors(fill_opacity)
365
+ attr_accessors(line_type)
366
+ /* croak on non ok */
367
+ attr_accessors(croak_on_nonok_numbers)
368
+
369
+ /* methods */
370
+ rb_define_method(cFM, "private_context", FM_private_context, 1);
371
+ rb_define_method(cFM, "private_set_bounds", FM_private_set_bounds, 4);
372
+ rb_define_method(cFM, "private_set_subframe", FM_private_set_subframe, 4);
373
+ rb_define_method(cFM, "doing_subfigure", FM_doing_subfigure, 0);
374
+ /* colors */
375
+ rb_define_method(cFM, "hls_to_rgb", FM_hls_to_rgb, 1);
376
+ rb_define_method(cFM, "rgb_to_hls", FM_rgb_to_hls, 1);
377
+ /* coordinate system conversions */
378
+ rb_define_method(cFM, "convert_inches_to_output", FM_convert_inches_to_output, 1);
379
+ rb_define_method(cFM, "convert_output_to_inches", FM_convert_output_to_inches, 1);
380
+ rb_define_method(cFM, "convert_mm_to_output", FM_convert_mm_to_output, 1);
381
+ rb_define_method(cFM, "convert_output_to_mm", FM_convert_output_to_mm, 1);
382
+ rb_define_method(cFM, "convert_page_to_output_x", FM_convert_page_to_output_x, 1);
383
+ rb_define_method(cFM, "convert_page_to_output_y", FM_convert_page_to_output_y, 1);
384
+ rb_define_method(cFM, "convert_page_to_output_dx", FM_convert_page_to_output_dx, 1);
385
+ rb_define_method(cFM, "convert_page_to_output_dy", FM_convert_page_to_output_dy, 1);
386
+ rb_define_method(cFM, "convert_output_to_page_x", FM_convert_output_to_page_x, 1);
387
+ rb_define_method(cFM, "convert_output_to_page_y", FM_convert_output_to_page_y, 1);
388
+ rb_define_method(cFM, "convert_output_to_page_dx", FM_convert_output_to_page_dx, 1);
389
+ rb_define_method(cFM, "convert_output_to_page_dy", FM_convert_output_to_page_dy, 1);
390
+ rb_define_method(cFM, "convert_page_to_frame_x", FM_convert_page_to_frame_x, 1);
391
+ rb_define_method(cFM, "convert_page_to_frame_y", FM_convert_page_to_frame_y, 1);
392
+ rb_define_method(cFM, "convert_page_to_frame_dx", FM_convert_page_to_frame_dx, 1);
393
+ rb_define_method(cFM, "convert_page_to_frame_dy", FM_convert_page_to_frame_dy, 1);
394
+ rb_define_method(cFM, "convert_frame_to_page_x", FM_convert_frame_to_page_x, 1);
395
+ rb_define_method(cFM, "convert_frame_to_page_y", FM_convert_frame_to_page_y, 1);
396
+ rb_define_method(cFM, "convert_frame_to_page_dx", FM_convert_frame_to_page_dx, 1);
397
+ rb_define_method(cFM, "convert_frame_to_page_dy", FM_convert_frame_to_page_dy, 1);
398
+ rb_define_method(cFM, "convert_figure_to_frame_x", FM_convert_figure_to_frame_x, 1);
399
+ rb_define_method(cFM, "convert_figure_to_frame_y", FM_convert_figure_to_frame_y, 1);
400
+ rb_define_method(cFM, "convert_figure_to_frame_dx", FM_convert_figure_to_frame_dx, 1);
401
+ rb_define_method(cFM, "convert_figure_to_frame_dy", FM_convert_figure_to_frame_dy, 1);
402
+ rb_define_method(cFM, "convert_frame_to_figure_x", FM_convert_frame_to_figure_x, 1);
403
+ rb_define_method(cFM, "convert_frame_to_figure_y", FM_convert_frame_to_figure_y, 1);
404
+ rb_define_method(cFM, "convert_frame_to_figure_dx", FM_convert_frame_to_figure_dx, 1);
405
+ rb_define_method(cFM, "convert_frame_to_figure_dy", FM_convert_frame_to_figure_dy, 1);
406
+ rb_define_method(cFM, "convert_figure_to_output_x", FM_convert_figure_to_output_x, 1);
407
+ rb_define_method(cFM, "convert_figure_to_output_y", FM_convert_figure_to_output_y, 1);
408
+ rb_define_method(cFM, "convert_figure_to_output_dx", FM_convert_figure_to_output_dx, 1);
409
+ rb_define_method(cFM, "convert_figure_to_output_dy", FM_convert_figure_to_output_dy, 1);
410
+ rb_define_method(cFM, "convert_output_to_figure_x", FM_convert_output_to_figure_x, 1);
411
+ rb_define_method(cFM, "convert_output_to_figure_y", FM_convert_output_to_figure_y, 1);
412
+ rb_define_method(cFM, "convert_output_to_figure_dx", FM_convert_output_to_figure_dx, 1);
413
+ rb_define_method(cFM, "convert_output_to_figuret_dy", FM_convert_output_to_figure_dy, 1);
414
+ rb_define_method(cFM, "convert_to_degrees", FM_convert_to_degrees, 2);
415
+ /* text */
416
+ rb_define_method(cFM, "private_set_default_font_size", FM_private_set_default_font_size, 1);
417
+ rb_define_method(cFM, "rescale_text", FM_rescale_text, 1);
418
+ rb_define_method(cFM, "show_rotated_text", FM_show_rotated_text, 8);
419
+ rb_define_method(cFM, "show_rotated_label", FM_show_rotated_label, 7);
420
+ rb_define_method(cFM, "check_label_clip", FM_check_label_clip, 2);
421
+ /* path construction */
422
+ rb_define_method(cFM, "move_to_point", FM_move_to_point, 2);
423
+ rb_define_method(cFM, "append_point_to_path", FM_append_point_to_path, 2);
424
+ rb_define_method(cFM, "append_curve_to_path", FM_append_curve_to_path, 6);
425
+ rb_define_method(cFM, "close_path", FM_close_path, 0);
426
+ rb_define_method(cFM, "append_points_to_path", FM_append_points_to_path, 2);
427
+ rb_define_method(cFM, "private_append_points_with_gaps_to_path", FM_private_append_points_with_gaps_to_path, 4);
428
+ rb_define_method(cFM, "append_arc_to_path", FM_append_arc_to_path, 8);
429
+ rb_define_method(cFM, "append_rect_to_path", FM_append_rect_to_path, 4);
430
+ rb_define_method(cFM, "append_rounded_rect_to_path", FM_append_rounded_rect_to_path, 6);
431
+ rb_define_method(cFM, "append_circle_to_path", FM_append_circle_to_path, 3);
432
+ rb_define_method(cFM, "append_oval_to_path", FM_append_oval_to_path, 5);
433
+ rb_define_method(cFM, "append_frame_to_path", FM_append_frame_to_path, 0);
434
+ rb_define_method(cFM, "update_bbox", FM_update_bbox, 2);
435
+ rb_define_method(cFM, "bbox_left", FM_bbox_left, 0);
436
+ rb_define_method(cFM, "bbox_right", FM_bbox_right, 0);
437
+ rb_define_method(cFM, "bbox_top", FM_bbox_top, 0);
438
+ rb_define_method(cFM, "bbox_bottom", FM_bbox_bottom, 0);
439
+ /* path painting */
440
+ rb_define_method(cFM, "rescale_lines", FM_rescale_lines, 1);
441
+ rb_define_method(cFM, "discard_path", FM_discard_path, 0);
442
+ rb_define_method(cFM, "stroke", FM_stroke, 0);
443
+ rb_define_method(cFM, "close_and_stroke", FM_close_and_stroke, 0);
444
+ rb_define_method(cFM, "fill", FM_fill, 0);
445
+ rb_define_method(cFM, "eofill", FM_eofill, 0);
446
+ rb_define_method(cFM, "fill_and_stroke", FM_fill_and_stroke, 0);
447
+ rb_define_method(cFM, "eofill_and_stroke", FM_eofill_and_stroke, 0);
448
+ rb_define_method(cFM, "close_fill_and_stroke", FM_close_fill_and_stroke, 0);
449
+ rb_define_method(cFM, "close_eofill_and_stroke", FM_close_eofill_and_stroke, 0);
450
+ rb_define_method(cFM, "clip", FM_clip, 0);
451
+ rb_define_method(cFM, "eoclip", FM_eoclip, 0);
452
+
453
+ rb_define_method(cFM, "stroke_line", FM_stroke_line, 4);
454
+ rb_define_method(cFM, "fill_rect", FM_fill_rect, 4);
455
+ rb_define_method(cFM, "stroke_rect", FM_stroke_rect, 4);
456
+ rb_define_method(cFM, "fill_and_stroke_rect", FM_fill_and_stroke_rect, 4);
457
+ rb_define_method(cFM, "clip_rect", FM_clip_rect, 4);
458
+ rb_define_method(cFM, "stroke_frame", FM_stroke_frame, 0);
459
+ rb_define_method(cFM, "fill_frame", FM_fill_frame, 0);
460
+ rb_define_method(cFM, "fill_and_stroke_frame", FM_fill_and_stroke_frame, 0);
461
+ rb_define_method(cFM, "clip_circle", FM_clip_circle, 3);
462
+ rb_define_method(cFM, "clip_to_frame", FM_clip_to_frame, 0);
463
+ rb_define_method(cFM, "fill_circle", FM_fill_circle, 3);
464
+ rb_define_method(cFM, "stroke_circle", FM_stroke_circle, 3);
465
+ rb_define_method(cFM, "fill_and_stroke_circle", FM_fill_and_stroke_circle, 3);
466
+ rb_define_method(cFM, "clip_oval", FM_clip_oval, 5);
467
+ rb_define_method(cFM, "fill_oval", FM_fill_oval, 5);
468
+ rb_define_method(cFM, "stroke_oval", FM_stroke_oval, 5);
469
+ rb_define_method(cFM, "fill_and_stroke_oval", FM_fill_and_stroke_oval, 5);
470
+ rb_define_method(cFM, "rounded_rect_oval", FM_clip_rounded_rect, 6);
471
+ rb_define_method(cFM, "fill_rounded_rect", FM_fill_rounded_rect, 6);
472
+ rb_define_method(cFM, "stroke_rounded_rect", FM_stroke_rounded_rect, 6);
473
+ rb_define_method(cFM, "fill_and_stroke_rounded_rect", FM_fill_and_stroke_rounded_rect, 6);
474
+ /* shading */
475
+ rb_define_method(cFM, "private_axial_shading", FM_private_axial_shading, 7);
476
+ rb_define_method(cFM, "private_radial_shading", FM_private_radial_shading, 13);
477
+ /* markers */
478
+ rb_define_method(cFM, "register_font", FM_register_font, 1);
479
+ rb_define_method(cFM, "private_show_marker", FM_private_show_marker, 15);
480
+ rb_define_method(cFM, "marker_string_info", FM_marker_string_info, 3);
481
+ /* images */
482
+ rb_define_method(cFM, "private_show_jpg", FM_private_show_jpg, 5);
483
+ rb_define_method(cFM, "private_show_rgb_image", FM_private_show_rgb_image, 11);
484
+ rb_define_method(cFM, "private_show_cmyk_image", FM_private_show_rgb_image, 11);
485
+ rb_define_method(cFM, "private_show_grayscale_image", FM_private_show_grayscale_image, 11);
486
+ rb_define_method(cFM, "private_show_monochrome_image", FM_private_show_monochrome_image, 12);
487
+ rb_define_method(cFM, "private_show_image", FM_private_show_image, 15);
488
+ rb_define_method(cFM, "private_create_image_data", FM_private_create_image_data, 10);
489
+ rb_define_method(cFM, "private_create_monochrome_image_data", FM_private_create_monochrome_image_data, 7);
490
+ /* colormaps */
491
+ rb_define_method(cFM, "private_create_colormap", FM_private_create_colormap, 6);
492
+ rb_define_method(cFM, "convert_to_colormap", FM_convert_to_colormap, 3);
493
+ rb_define_method(cFM, "get_color_from_colormap", FM_get_color_from_colormap, 2);
494
+ /* plots */
495
+ rb_define_method(cFM, "set_frame_sides", FM_set_frame_sides, 4);
496
+ rb_define_method(cFM, "set_device_pagesize", FM_set_device_pagesize, 2);
497
+ rb_define_method(cFM, "doing_subplot", FM_doing_subplot, 0);
498
+ rb_define_method(cFM, "show_axis", FM_show_axis, 1);
499
+ rb_define_method(cFM, "show_edge", FM_show_edge, 1);
500
+ rb_define_method(cFM, "no_title", FM_no_title, 0);
501
+ rb_define_method(cFM, "no_xlabel", FM_no_xlabel, 0);
502
+ rb_define_method(cFM, "no_ylabel", FM_no_ylabel, 0);
503
+ rb_define_method(cFM, "no_xaxis", FM_no_xaxis, 0);
504
+ rb_define_method(cFM, "no_yaxis", FM_no_yaxis, 0);
505
+ rb_define_method(cFM, "no_left_edge", FM_no_left_edge, 0);
506
+ rb_define_method(cFM, "no_right_edge", FM_no_right_edge, 0);
507
+ rb_define_method(cFM, "no_top_edge", FM_no_top_edge, 0);
508
+ rb_define_method(cFM, "no_bottom_edge", FM_no_bottom_edge, 0);
509
+ /* makers */
510
+ rb_define_method(cFM, "private_make_contour", FM_private_make_contour, 9);
511
+ rb_define_method(cFM, "private_make_spline_interpolated_points", FM_private_make_spline_interpolated_points, 6);
512
+ rb_define_method(cFM, "private_make_steps", FM_private_make_steps, 8);
513
+
514
+ /* Title */
515
+ attr_reader(title_visible)
516
+ attr_accessors(title)
517
+ attr_accessors(title_side)
518
+ attr_accessors(title_position)
519
+ attr_accessors(title_scale)
520
+ attr_accessors(title_shift)
521
+ attr_accessors(title_angle)
522
+ attr_accessors(title_alignment)
523
+ attr_accessors(title_justification)
524
+ attr_accessors(title_color)
525
+
526
+ /* X label */
527
+ attr_reader(xlabel_visible)
528
+ attr_accessors(xlabel)
529
+ attr_accessors(xlabel_position)
530
+ attr_accessors(xlabel_scale)
531
+ attr_accessors(xlabel_shift)
532
+ attr_accessors(xlabel_angle)
533
+ attr_accessors(xlabel_side)
534
+ attr_accessors(xlabel_alignment)
535
+ attr_accessors(xlabel_justification)
536
+ attr_accessors(xlabel_color)
537
+
538
+ /* Y label */
539
+ attr_reader(ylabel_visible)
540
+ attr_accessors(ylabel)
541
+ attr_accessors(ylabel_position)
542
+ attr_accessors(ylabel_scale)
543
+ attr_accessors(ylabel_shift)
544
+ attr_accessors(ylabel_angle)
545
+ attr_accessors(ylabel_side)
546
+ attr_accessors(ylabel_alignment)
547
+ attr_accessors(ylabel_justification)
548
+ attr_accessors(ylabel_color)
549
+
550
+ /* X axis */
551
+ attr_reader(xaxis_visible)
552
+ attr_accessors(xaxis_loc)
553
+ attr_accessors(xaxis_type)
554
+ attr_accessors(xaxis_line_width)
555
+ attr_accessors(xaxis_stroke_color)
556
+ attr_accessors(xaxis_major_tick_width)
557
+ attr_accessors(xaxis_minor_tick_width)
558
+ attr_accessors(xaxis_major_tick_length)
559
+ attr_accessors(xaxis_minor_tick_length)
560
+ attr_accessors(xaxis_log_values)
561
+ attr_accessors(xaxis_ticks_inside)
562
+ attr_accessors(xaxis_ticks_outside)
563
+ attr_accessors(xaxis_tick_interval)
564
+ attr_accessors(xaxis_min_between_major_ticks)
565
+ attr_accessors(xaxis_number_of_minor_intervals)
566
+ attr_accessors(xaxis_locations_for_major_ticks)
567
+ attr_accessors(xaxis_locations_for_minor_ticks)
568
+ attr_accessors(xaxis_use_fixed_pt)
569
+ attr_accessors(xaxis_digits_max)
570
+ attr_accessors(xaxis_tick_labels)
571
+ attr_accessors(xaxis_numeric_label_decimal_digits)
572
+ attr_accessors(xaxis_numeric_label_scale)
573
+ attr_accessors(xaxis_numeric_label_shift)
574
+ attr_accessors(xaxis_numeric_label_angle)
575
+ attr_accessors(xaxis_numeric_label_alignment)
576
+ attr_accessors(xaxis_numeric_label_justification)
577
+ attr_accessors(top_edge_type)
578
+ attr_reader(top_edge_visible)
579
+ attr_accessors(bottom_edge_type)
580
+ attr_reader(bottom_edge_visible)
581
+
582
+ /* Y axis */
583
+ attr_reader(yaxis_visible)
584
+ attr_accessors(yaxis_loc)
585
+ attr_accessors(yaxis_type)
586
+ attr_accessors(yaxis_line_width)
587
+ attr_accessors(yaxis_stroke_color)
588
+ attr_accessors(yaxis_major_tick_width)
589
+ attr_accessors(yaxis_minor_tick_width)
590
+ attr_accessors(yaxis_major_tick_length)
591
+ attr_accessors(yaxis_minor_tick_length)
592
+ attr_accessors(yaxis_log_values)
593
+ attr_accessors(yaxis_ticks_inside)
594
+ attr_accessors(yaxis_ticks_outside)
595
+ attr_accessors(yaxis_tick_interval)
596
+ attr_accessors(yaxis_min_between_major_ticks)
597
+ attr_accessors(yaxis_number_of_minor_intervals)
598
+ attr_accessors(yaxis_locations_for_major_ticks)
599
+ attr_accessors(yaxis_locations_for_minor_ticks)
600
+ attr_accessors(yaxis_use_fixed_pt)
601
+ attr_accessors(yaxis_digits_max)
602
+ attr_accessors(yaxis_tick_labels)
603
+ attr_accessors(yaxis_numeric_label_decimal_digits)
604
+ attr_accessors(yaxis_numeric_label_scale)
605
+ attr_accessors(yaxis_numeric_label_shift)
606
+ attr_accessors(yaxis_numeric_label_angle)
607
+ attr_accessors(yaxis_numeric_label_alignment)
608
+ attr_accessors(yaxis_numeric_label_justification)
609
+ attr_accessors(left_edge_type)
610
+ attr_reader(left_edge_visible)
611
+ attr_accessors(right_edge_type)
612
+ attr_reader(right_edge_visible)
613
+
614
+ /* Legend */
615
+ attr_accessors(legend_text_width)
616
+ attr_accessors(legend_line_x0)
617
+ attr_accessors(legend_line_x1)
618
+ attr_accessors(legend_line_dy)
619
+ attr_accessors(legend_text_xstart)
620
+ attr_accessors(legend_text_ystart)
621
+ attr_accessors(legend_text_dy)
622
+ attr_accessors(legend_line_width)
623
+ attr_accessors(legend_scale)
624
+ attr_accessors(legend_alignment)
625
+ attr_accessors(legend_justification)
626
+
627
+ /* Debugging */
628
+ attr_accessors(debug_verbosity_level)
629
+
630
+ rb_require("Tioga/FigMkr.rb");
631
+ /* We now need to import the symbols */
632
+
633
+ /* imports from Dvector */
634
+ VALUE cDvector = rb_define_class_under(mDobjects, "Dvector", rb_cObject);
635
+ RB_IMPORT_SYMBOL(cDvector, Dvector_Create);
636
+ RB_IMPORT_SYMBOL(cDvector, Dvector_Data_Resize);
637
+ RB_IMPORT_SYMBOL(cDvector, Dvector_Data_Replace);
638
+ RB_IMPORT_SYMBOL(cDvector, Dvector_Data_for_Read);
639
+ RB_IMPORT_SYMBOL(cDvector, Dvector_Data_for_Write);
640
+ RB_IMPORT_SYMBOL(cDvector, Dvector_Store_Double);
641
+ RB_IMPORT_SYMBOL(cDvector, c_dvector_spline_interpolate);
642
+ RB_IMPORT_SYMBOL(cDvector, c_dvector_linear_interpolate);
643
+ RB_IMPORT_SYMBOL(cDvector, c_dvector_create_spline_interpolant);
644
+
645
+ /* imports from Flate */
646
+ RB_IMPORT_SYMBOL(mFlate, flate_compress);
647
+ RB_IMPORT_SYMBOL(mFlate, flate_expand);
648
+
649
+ /* imports from Dtable */
650
+ VALUE cDtable = rb_define_class_under(mDobjects, "Dtable", rb_cObject);
651
+ RB_IMPORT_SYMBOL(cDtable, Dtable_Ptr);
652
+ RB_IMPORT_SYMBOL(cDtable, Read_Dtable);
653
+ }
654
+
655
+ /* implementation of the various functions */
656
+ IMPLEMENT_SYMBOL(Dvector_Create);
657
+ IMPLEMENT_SYMBOL(Dvector_Data_Resize);
658
+ IMPLEMENT_SYMBOL(Dvector_Data_Replace);
659
+ IMPLEMENT_SYMBOL(Dvector_Data_for_Read);
660
+ IMPLEMENT_SYMBOL(Dvector_Data_for_Write);
661
+ IMPLEMENT_SYMBOL(Dvector_Store_Double);
662
+ IMPLEMENT_SYMBOL(c_dvector_spline_interpolate);
663
+ IMPLEMENT_SYMBOL(c_dvector_linear_interpolate);
664
+ IMPLEMENT_SYMBOL(c_dvector_create_spline_interpolant);
665
+
666
+ IMPLEMENT_SYMBOL(flate_compress);
667
+ IMPLEMENT_SYMBOL(flate_expand);
668
+
669
+ IMPLEMENT_SYMBOL(Dtable_Ptr);
670
+ IMPLEMENT_SYMBOL(Read_Dtable);
671
+
672
+