tioga 1.6 → 1.7
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.
- data/Tioga_README +35 -10
- data/split/Dvector/dvector.c +264 -22
- data/split/Dvector/lib/Dvector_extras.rb +30 -2
- data/split/Flate/extconf.rb +1 -1
- data/split/Function/function.c +112 -2
- data/split/Tioga/figures.c +76 -77
- data/split/Tioga/figures.h +375 -490
- data/split/Tioga/generic.c +254 -0
- data/split/Tioga/generic.h +236 -0
- data/split/Tioga/init.c +434 -320
- data/split/Tioga/lib/Creating_Paths.rb +11 -1
- data/split/Tioga/lib/FigMkr.rb +263 -65
- data/split/Tioga/lib/Legends.rb +4 -2
- data/split/Tioga/lib/Markers.rb +3 -2
- data/split/Tioga/lib/Special_Paths.rb +22 -23
- data/split/Tioga/lib/TeX_Text.rb +79 -1
- data/split/Tioga/lib/TexPreamble.rb +14 -0
- data/split/Tioga/lib/Utils.rb +5 -1
- data/split/Tioga/pdfs.h +7 -45
- data/split/Tioga/{axes.c → shared/axes.c} +210 -197
- data/split/Tioga/{makers.c → shared/makers.c} +442 -211
- data/split/Tioga/{pdf_font_dicts.c → shared/pdf_font_dicts.c} +0 -0
- data/split/Tioga/shared/pdfcolor.c +628 -0
- data/split/Tioga/shared/pdfcoords.c +443 -0
- data/split/Tioga/{pdffile.c → shared/pdffile.c} +56 -52
- data/split/Tioga/{pdfimage.c → shared/pdfimage.c} +103 -211
- data/split/Tioga/shared/pdfpath.c +766 -0
- data/split/Tioga/{pdftext.c → shared/pdftext.c} +121 -99
- data/split/Tioga/shared/texout.c +524 -0
- data/split/Tioga/wrappers.c +489 -0
- data/split/Tioga/wrappers.h +259 -0
- data/split/extconf.rb +4 -0
- data/split/mkmf2.rb +12 -1
- data/tests/benchmark_dvector_reads.rb +112 -0
- data/tests/tc_Dvector.rb +35 -3
- data/tests/tc_Function.rb +32 -0
- metadata +65 -52
- data/split/Tioga/pdfcolor.c +0 -486
- data/split/Tioga/pdfcoords.c +0 -523
- data/split/Tioga/pdfpath.c +0 -913
- data/split/Tioga/texout.c +0 -380
data/split/Tioga/figures.h
CHANGED
@@ -23,14 +23,11 @@
|
|
23
23
|
#define __figures_H__
|
24
24
|
|
25
25
|
#include <namespace.h>
|
26
|
-
|
27
26
|
#include <math.h>
|
28
27
|
#include <stdbool.h>
|
29
28
|
#include <ctype.h>
|
30
|
-
|
31
|
-
#include "
|
32
|
-
#include "ruby.h"
|
33
|
-
#include "intern.h"
|
29
|
+
|
30
|
+
#include "generic.h"
|
34
31
|
|
35
32
|
#include <defs.h>
|
36
33
|
|
@@ -114,9 +111,9 @@ typedef struct {
|
|
114
111
|
bool root_figure;
|
115
112
|
bool in_subplot;
|
116
113
|
double page_left, page_bottom, page_top, page_right, page_width, page_height;
|
117
|
-
// in output units. READ ONLY
|
114
|
+
// in output units. READ ONLY.
|
118
115
|
|
119
|
-
/* frame and bounds attributes. READ ONLY
|
116
|
+
/* frame and bounds attributes. READ ONLY. */
|
120
117
|
// frame location as fractions of page width & height.
|
121
118
|
double frame_left, frame_right, frame_top, frame_bottom, frame_width, frame_height;
|
122
119
|
// bounds in figure coords.
|
@@ -131,8 +128,8 @@ typedef struct {
|
|
131
128
|
|
132
129
|
double default_font_size; // in points
|
133
130
|
double default_text_scale;
|
134
|
-
double default_text_height_dx; // in figure coords. READ ONLY
|
135
|
-
double default_text_height_dy; // in figure coords. READ ONLY
|
131
|
+
double default_text_height_dx; // in figure coords. READ ONLY. set when change default_text_scale.
|
132
|
+
double default_text_height_dy; // in figure coords. READ ONLY. set when change default_text_scale.
|
136
133
|
|
137
134
|
double label_left_margin; // as fraction of frame width
|
138
135
|
double label_right_margin; // as fraction of frame width
|
@@ -149,8 +146,12 @@ typedef struct {
|
|
149
146
|
/* graphics attributes */
|
150
147
|
|
151
148
|
/* color attributes */
|
152
|
-
|
153
|
-
|
149
|
+
double stroke_color_R;
|
150
|
+
double stroke_color_G;
|
151
|
+
double stroke_color_B;
|
152
|
+
double fill_color_R;
|
153
|
+
double fill_color_G;
|
154
|
+
double fill_color_B;
|
154
155
|
|
155
156
|
/* stroke attributes */
|
156
157
|
double default_line_scale; // multipler for line_width
|
@@ -158,50 +159,52 @@ typedef struct {
|
|
158
159
|
int line_cap;
|
159
160
|
int line_join;
|
160
161
|
double miter_limit;
|
161
|
-
VALUE line_type; // [ dashArray dashPhase ] in points
|
162
162
|
|
163
163
|
/* transparency */
|
164
164
|
double stroke_opacity;
|
165
165
|
double fill_opacity;
|
166
166
|
|
167
167
|
/* Title */
|
168
|
-
VALUE title; // text
|
169
168
|
bool title_visible;
|
170
169
|
int title_side;
|
171
170
|
double title_position;
|
172
171
|
|
173
172
|
double title_scale;
|
174
|
-
double title_shift; // in char heights, positive for out from edge (or toward larger x or y
|
173
|
+
double title_shift; // in char heights, positive for out from edge (or toward larger x or y OBJ_PTR)
|
175
174
|
double title_angle;
|
176
175
|
int title_alignment;
|
177
176
|
int title_justification;
|
178
|
-
|
177
|
+
double title_color_R;
|
178
|
+
double title_color_G;
|
179
|
+
double title_color_B;
|
179
180
|
|
180
181
|
/* X label */
|
181
|
-
VALUE xlabel; // text
|
182
182
|
bool xlabel_visible;
|
183
183
|
double xlabel_position; // xlabel side is given by xaxis_loc
|
184
184
|
|
185
185
|
double xlabel_scale;
|
186
|
-
double xlabel_shift; // in char heights, positive for out from edge (or toward larger x or y
|
186
|
+
double xlabel_shift; // in char heights, positive for out from edge (or toward larger x or y OBJ_PTR)
|
187
187
|
double xlabel_angle;
|
188
188
|
int xlabel_side;
|
189
189
|
int xlabel_alignment;
|
190
190
|
int xlabel_justification;
|
191
|
-
|
191
|
+
double xlabel_color_R;
|
192
|
+
double xlabel_color_G;
|
193
|
+
double xlabel_color_B;
|
192
194
|
|
193
195
|
/* Y label */
|
194
|
-
VALUE ylabel; // text
|
195
196
|
bool ylabel_visible;
|
196
197
|
double ylabel_position; // ylabel side is given by yaxis_loc
|
197
198
|
|
198
199
|
double ylabel_scale;
|
199
|
-
double ylabel_shift; // in char heights, positive for out from edge (or toward larger x or y
|
200
|
+
double ylabel_shift; // in char heights, positive for out from edge (or toward larger x or y OBJ_PTR)
|
200
201
|
double ylabel_angle;
|
201
202
|
int ylabel_side;
|
202
203
|
int ylabel_alignment;
|
203
204
|
int ylabel_justification;
|
204
|
-
|
205
|
+
double ylabel_color_R;
|
206
|
+
double ylabel_color_G;
|
207
|
+
double ylabel_color_B;
|
205
208
|
|
206
209
|
/* X axis */
|
207
210
|
bool xaxis_visible;
|
@@ -209,27 +212,26 @@ typedef struct {
|
|
209
212
|
int xaxis_loc;
|
210
213
|
// line
|
211
214
|
double xaxis_line_width; // for axis line
|
212
|
-
|
215
|
+
double xaxis_stroke_color_R; // for axis line and tick marks
|
216
|
+
double xaxis_stroke_color_G;
|
217
|
+
double xaxis_stroke_color_B;
|
213
218
|
// tick marks
|
214
219
|
double xaxis_major_tick_width; // same units as line_width
|
215
220
|
double xaxis_minor_tick_width; // same units as line_width
|
216
221
|
double xaxis_major_tick_length; // in units of numeric label char heights
|
217
222
|
double xaxis_minor_tick_length; // in units of numeric label char heights
|
218
223
|
bool xaxis_log_values;
|
219
|
-
bool xaxis_ticks_inside; // inside frame or toward larger x or y
|
220
|
-
bool xaxis_ticks_outside; // inside frame or toward smaller x or y
|
224
|
+
bool xaxis_ticks_inside; // inside frame or toward larger x or y OBJ_PTR for specific location
|
225
|
+
bool xaxis_ticks_outside; // inside frame or toward smaller x or y OBJ_PTR for specific location
|
221
226
|
double xaxis_tick_interval; // set to 0 to use default
|
222
227
|
double xaxis_min_between_major_ticks; // in units of numeric label char heights
|
223
228
|
int xaxis_number_of_minor_intervals; // set to 0 to use default
|
224
|
-
VALUE xaxis_locations_for_major_ticks; // set to nil to use defaults
|
225
|
-
VALUE xaxis_locations_for_minor_ticks; // set to nil to use defaults
|
226
229
|
// numeric labels on major ticks
|
227
230
|
bool xaxis_use_fixed_pt;
|
228
231
|
int xaxis_digits_max;
|
229
|
-
VALUE xaxis_tick_labels; // set to nil to use defaults. else must have a label for each major tick
|
230
232
|
int xaxis_numeric_label_decimal_digits; // set to negative to use default
|
231
233
|
double xaxis_numeric_label_scale;
|
232
|
-
double xaxis_numeric_label_shift; // in char heights, positive for out from edge (or toward larger x or y
|
234
|
+
double xaxis_numeric_label_shift; // in char heights, positive for out from edge (or toward larger x or y OBJ_PTR)
|
233
235
|
double xaxis_numeric_label_angle;
|
234
236
|
int xaxis_numeric_label_alignment;
|
235
237
|
int xaxis_numeric_label_justification;
|
@@ -248,27 +250,26 @@ typedef struct {
|
|
248
250
|
int yaxis_loc;
|
249
251
|
// line
|
250
252
|
double yaxis_line_width; // for axis line
|
251
|
-
|
253
|
+
double yaxis_stroke_color_R; // for axis line and tick marks
|
254
|
+
double yaxis_stroke_color_G;
|
255
|
+
double yaxis_stroke_color_B;
|
252
256
|
// tick marks
|
253
257
|
double yaxis_major_tick_width; // same units as line_width
|
254
258
|
double yaxis_minor_tick_width; // same units as line_width
|
255
259
|
double yaxis_major_tick_length; // in units of numeric label char heights
|
256
260
|
double yaxis_minor_tick_length; // in units of numeric label char heights
|
257
261
|
bool yaxis_log_values;
|
258
|
-
bool yaxis_ticks_inside; // inside frame or toward larger x or y
|
259
|
-
bool yaxis_ticks_outside; // inside frame or toward smaller x or y
|
262
|
+
bool yaxis_ticks_inside; // inside frame or toward larger x or y OBJ_PTR for specific location
|
263
|
+
bool yaxis_ticks_outside; // inside frame or toward smaller x or y OBJ_PTR for specific location
|
260
264
|
double yaxis_tick_interval; // set to 0 to use default
|
261
265
|
double yaxis_min_between_major_ticks; // in units of numeric label char heights
|
262
266
|
int yaxis_number_of_minor_intervals; // set to 0 to use default
|
263
|
-
VALUE yaxis_locations_for_major_ticks; // set to nil to use defaults
|
264
|
-
VALUE yaxis_locations_for_minor_ticks; // set to nil to use defaults
|
265
267
|
// numeric labels on major ticks
|
266
268
|
bool yaxis_use_fixed_pt;
|
267
269
|
int yaxis_digits_max;
|
268
|
-
VALUE yaxis_tick_labels; // set to nil to use defaults. else must have a label for each major tick
|
269
270
|
int yaxis_numeric_label_decimal_digits; // set to negative to use default
|
270
271
|
double yaxis_numeric_label_scale;
|
271
|
-
double yaxis_numeric_label_shift; // in char heights, positive for out from edge (or toward larger x or y
|
272
|
+
double yaxis_numeric_label_shift; // in char heights, positive for out from edge (or toward larger x or y OBJ_PTR)
|
272
273
|
double yaxis_numeric_label_angle;
|
273
274
|
int yaxis_numeric_label_alignment;
|
274
275
|
int yaxis_numeric_label_justification;
|
@@ -300,77 +301,370 @@ typedef struct {
|
|
300
301
|
|
301
302
|
/* Whether to complain about out non ok numbers in paths */
|
302
303
|
int croak_on_nonok_numbers;
|
303
|
-
|
304
|
-
/* PRIVATE -- not to be included in the
|
304
|
+
|
305
|
+
/* PRIVATE -- not to be included in the user interface */
|
305
306
|
double clip_left, clip_right, clip_top, clip_bottom; // in output coords
|
306
|
-
VALUE fm;
|
307
307
|
} FM;
|
308
308
|
|
309
309
|
typedef FM Figure_Maker;
|
310
310
|
|
311
|
-
extern
|
311
|
+
extern double bbox_llx, bbox_lly, bbox_urx, bbox_ury;
|
312
|
+
|
312
313
|
extern char *data_dir;
|
313
314
|
|
314
|
-
extern FM *Get_FM(VALUE fmkr);
|
315
|
-
extern bool Is_FM(VALUE fmkr);
|
316
315
|
|
317
|
-
|
318
|
-
|
316
|
+
// all routines set *ierr nonzero in case of error.
|
317
|
+
// if call a routine that gets ierr as arg, check ierr when it returns.
|
318
|
+
// cleanup and return if find ierr != 0.
|
319
|
+
// *ierr is set to 0 by wrapper routines before 1st call to "c_" routines.
|
320
|
+
|
319
321
|
|
320
322
|
/*======================================================================*/
|
323
|
+
// axes.c
|
324
|
+
extern char *Get_String(OBJ_PTR ary, int index, int *ierr);
|
325
|
+
|
326
|
+
extern void c_show_axis(OBJ_PTR fmkr, FM *p, int location, int *ierr);
|
327
|
+
extern void c_show_edge(OBJ_PTR fmkr, FM *p, int location, int *ierr);
|
328
|
+
extern void c_no_title(OBJ_PTR fmkr, FM *p, int *ierr);
|
329
|
+
extern void c_no_xlabel(OBJ_PTR fmkr, FM *p, int *ierr);
|
330
|
+
extern void c_no_ylabel(OBJ_PTR fmkr, FM *p, int *ierr);
|
331
|
+
extern void c_no_xaxis(OBJ_PTR fmkr, FM *p, int *ierr);
|
332
|
+
extern void c_no_yaxis(OBJ_PTR fmkr, FM *p, int *ierr);
|
333
|
+
extern void c_no_left_edge(OBJ_PTR fmkr, FM *p, int *ierr);
|
334
|
+
extern void c_no_right_edge(OBJ_PTR fmkr, FM *p, int *ierr);
|
335
|
+
extern void c_no_top_edge(OBJ_PTR fmkr, FM *p, int *ierr);
|
336
|
+
extern void c_no_bottom_edge(OBJ_PTR fmkr, FM *p, int *ierr);
|
321
337
|
|
322
|
-
|
323
|
-
|
338
|
+
/*======================================================================*/
|
339
|
+
// figures.c
|
340
|
+
extern FM *Get_FM(OBJ_PTR fmkr, int *ierr);
|
341
|
+
void Init_FigureMaker(void);
|
342
|
+
extern bool Get_initialized(void);
|
343
|
+
extern void Set_initialized(void);
|
324
344
|
|
325
|
-
|
326
|
-
|
345
|
+
/*======================================================================*/
|
346
|
+
// init.c
|
347
|
+
extern void Init_IDs(void);
|
348
|
+
extern OBJ_PTR Get_fm_data_attr(OBJ_PTR fmkr, int *ierr);
|
349
|
+
extern void Initialize_Figure(OBJ_PTR fmkr);
|
350
|
+
extern void do_cmd(OBJ_PTR fmkr, OBJ_PTR cmd, int *ierr);
|
351
|
+
extern bool Get_bool(OBJ_PTR obj, ID_PTR name_ID, int *ierr);
|
352
|
+
extern int Get_int(OBJ_PTR obj, ID_PTR name_ID, int *ierr);
|
353
|
+
extern double Get_double(OBJ_PTR obj, ID_PTR name_ID, int *ierr);
|
354
|
+
extern char *Get_tex_preview_paper_width(OBJ_PTR fmkr, int *ierr);
|
355
|
+
extern char *Get_tex_preview_paper_height(OBJ_PTR fmkr, int *ierr);
|
356
|
+
extern char *Get_tex_preview_hoffset(OBJ_PTR fmkr, int *ierr);
|
357
|
+
extern char *Get_tex_preview_voffset(OBJ_PTR fmkr, int *ierr);
|
358
|
+
extern char *Get_tex_preview_figure_width(OBJ_PTR fmkr, int *ierr);
|
359
|
+
extern char *Get_tex_preview_figure_height(OBJ_PTR fmkr, int *ierr);
|
360
|
+
extern char *Get_tex_fontsize(OBJ_PTR fmkr, int *ierr);
|
361
|
+
extern char *Get_tex_fontfamily(OBJ_PTR fmkr, int *ierr);
|
362
|
+
extern char *Get_tex_fontseries(OBJ_PTR fmkr, int *ierr);
|
363
|
+
extern char *Get_tex_fontshape(OBJ_PTR fmkr, int *ierr);
|
364
|
+
extern char *Get_tex_preview_minwhitespace(OBJ_PTR fmkr, int *ierr);
|
365
|
+
extern bool Get_tex_preview_fullpage(OBJ_PTR fmkr, int *ierr);
|
366
|
+
extern char *Get_tex_preview_tiogafigure_command(OBJ_PTR fmkr, int *ierr);
|
367
|
+
extern char *Get_tex_preview_generated_preamble(OBJ_PTR fmkr, int *ierr);
|
368
|
+
extern double Get_tex_xoffset(OBJ_PTR fmkr, int *ierr);
|
369
|
+
extern double Get_tex_yoffset(OBJ_PTR fmkr, int *ierr);
|
370
|
+
extern char *Get_tex_preview_documentclass(OBJ_PTR fmkr, int *ierr);
|
371
|
+
extern char *Get_tex_preamble(OBJ_PTR fmkr, int *ierr);
|
372
|
+
extern char *Get_xaxis_numeric_label_tex(OBJ_PTR fmkr, int *ierr);
|
373
|
+
extern char *Get_yaxis_numeric_label_tex(OBJ_PTR fmkr, int *ierr);
|
374
|
+
extern char *Get_tex_preview_pagestyle(OBJ_PTR fmkr, int *ierr);
|
375
|
+
extern char *Get_tex_preview_tiogafigure_command(OBJ_PTR fmkr, int *ierr);
|
376
|
+
extern OBJ_PTR Get_line_type(OBJ_PTR fmkr, int *ierr);
|
377
|
+
extern void Set_line_type(OBJ_PTR fmkr, OBJ_PTR v, int *ierr);
|
378
|
+
extern OBJ_PTR Get_xaxis_tick_labels(OBJ_PTR fmkr, int *ierr);
|
379
|
+
extern OBJ_PTR Get_xaxis_locations_for_major_ticks(OBJ_PTR fmkr, int *ierr);
|
380
|
+
extern OBJ_PTR Get_xaxis_locations_for_minor_ticks(OBJ_PTR fmkr, int *ierr);
|
381
|
+
extern OBJ_PTR Get_yaxis_tick_labels(OBJ_PTR fmkr, int *ierr);
|
382
|
+
extern OBJ_PTR Get_yaxis_locations_for_major_ticks(OBJ_PTR fmkr, int *ierr);
|
383
|
+
extern OBJ_PTR Get_yaxis_locations_for_minor_ticks(OBJ_PTR fmkr, int *ierr);
|
384
|
+
|
385
|
+
extern void c_private_init_fm_data(OBJ_PTR fmkr, FM *p, int *ierr);
|
386
|
+
extern void c_set_frame_sides(OBJ_PTR fmkr, FM *p,
|
387
|
+
double left, double right, double top, double bottom, int *ierr);
|
388
|
+
extern void c_set_device_pagesize(OBJ_PTR fmkr, FM *p, double width, double height, int *ierr);
|
389
|
+
extern OBJ_PTR c_get_save_filename(OBJ_PTR fmkr, FM *p, OBJ_PTR name, int *ierr);
|
390
|
+
extern void c_private_make(OBJ_PTR fmkr, FM *p, OBJ_PTR name, OBJ_PTR cmd, int *ierr);
|
391
|
+
extern OBJ_PTR c_private_make_portfolio(OBJ_PTR fmkr, FM *p, OBJ_PTR name, OBJ_PTR fignums, OBJ_PTR fignames, int *ierr);
|
392
|
+
|
393
|
+
/* The ID of the measures_info instance variable */
|
394
|
+
extern ID_PTR measures_info_ID;
|
327
395
|
|
328
|
-
|
329
|
-
|
330
|
-
extern
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
396
|
+
/*======================================================================*/
|
397
|
+
// makers.c
|
398
|
+
extern OBJ_PTR c_private_make_contour(OBJ_PTR fmkr, FM *p,
|
399
|
+
OBJ_PTR gaps, // these vectors get the results
|
400
|
+
OBJ_PTR xs, OBJ_PTR ys, // data x coordinates and y coordinates
|
401
|
+
OBJ_PTR zs, double z_level, // the table of values and the desired contour level
|
402
|
+
OBJ_PTR legit, // the table of flags (nonzero means okay)
|
403
|
+
int method, // method == 1 means CONREC
|
404
|
+
int *ierr);
|
405
|
+
extern OBJ_PTR c_private_make_steps(OBJ_PTR fmkr, FM *p, OBJ_PTR Xvec_data, OBJ_PTR Yvec_data,
|
406
|
+
double xfirst, double yfirst, double xlast, double ylast, int justification, int *ierr);
|
407
|
+
/* adds n_pts_to_add points to Xs and Ys for steps with the given parameters.
|
408
|
+
X_data and Y_data are arrays of n values where n_pts_to_add = 2*(n+1)
|
409
|
+
(xfirst,yfirst) and (xlast,ylast) are extra data points to fix the first and last steps.
|
410
|
+
The X_data plus xfirst and xlast determine the widths of the steps.
|
411
|
+
The Y_data plus yfirst and ylast determine the height of the steps.
|
412
|
+
The steps occur at locations midway between the given x locations. */
|
413
|
+
extern OBJ_PTR c_private_make_spline_interpolated_points(OBJ_PTR fmkr, FM *p,
|
414
|
+
OBJ_PTR Xvec, OBJ_PTR Xvec_data, OBJ_PTR Yvec_data,
|
415
|
+
OBJ_PTR start_slope, OBJ_PTR end_slope, int *ierr);
|
337
416
|
|
338
|
-
|
417
|
+
/*======================================================================*/
|
418
|
+
// pdfcolor.c
|
419
|
+
extern void Free_Functions(void);
|
420
|
+
extern void Write_Functions(int *ierr);
|
421
|
+
extern void Free_Stroke_Opacities(void);
|
422
|
+
extern void Free_Fill_Opacities(void);
|
423
|
+
extern void Write_Stroke_Opacity_Objects(void);
|
424
|
+
extern void Write_Fill_Opacity_Objects(void);
|
425
|
+
extern void Free_Shadings(void);
|
426
|
+
extern void Write_Shadings(void);
|
427
|
+
|
428
|
+
extern void c_stroke_opacity_set(OBJ_PTR fmkr, FM *p, double stroke_opacity, int *ierr);
|
429
|
+
extern void c_fill_opacity_set(OBJ_PTR fmkr, FM *p, double fill_opacity, int *ierr);
|
430
|
+
extern void c_private_axial_shading(OBJ_PTR fmkr, FM *p,
|
431
|
+
double x0, double y0, double x1, double y1,
|
432
|
+
OBJ_PTR colormap, bool extend_start, bool extend_end, int *ierr);
|
433
|
+
extern void c_private_radial_shading(OBJ_PTR fmkr, FM *p,
|
434
|
+
double x0, double y0, double r0,
|
435
|
+
double x1, double y1, double r1, OBJ_PTR colormap,
|
436
|
+
double a, double b, double c, double d, bool extend_start, bool extend_end, int *ierr);
|
437
|
+
extern OBJ_PTR c_private_create_colormap(OBJ_PTR fmkr, FM *p,
|
438
|
+
bool rgb, int length, OBJ_PTR Ps, OBJ_PTR C1s, OBJ_PTR C2s, OBJ_PTR C3s, int *ierr);
|
439
|
+
extern OBJ_PTR c_get_color_from_colormap(OBJ_PTR fmkr, FM *p, OBJ_PTR color_map, double x, int *ierr);
|
440
|
+
extern OBJ_PTR c_convert_to_colormap(OBJ_PTR fmkr, FM* p, OBJ_PTR Rs, OBJ_PTR Gs, OBJ_PTR Bs, int *ierr);
|
441
|
+
extern OBJ_PTR c_hls_to_rgb(OBJ_PTR fmkr, FM *p, OBJ_PTR hls_vec, int *ierr);
|
442
|
+
extern OBJ_PTR c_rgb_to_hls(OBJ_PTR fmkr, FM *p, OBJ_PTR rgb_vecc_hls_to_rgb, int *ierr);
|
443
|
+
extern void c_title_color_set(OBJ_PTR fmkr, FM *p, OBJ_PTR valc_hls_to_rgb, int *ierr);
|
444
|
+
extern OBJ_PTR c_title_color_get(OBJ_PTR fmkr, FM *pc_hls_to_rgb, int *ierr); // value is array of [r, g, b] intensities from 0 to 1
|
445
|
+
extern void c_xlabel_color_set(OBJ_PTR fmkr, FM *p, OBJ_PTR valc_hls_to_rgb, int *ierr);
|
446
|
+
extern OBJ_PTR c_xlabel_color_get(OBJ_PTR fmkr, FM *pc_hls_to_rgb, int *ierr); // value is array of [r, g, b] intensities from 0 to 1
|
447
|
+
extern void c_ylabel_color_set(OBJ_PTR fmkr, FM *p, OBJ_PTR valc_hls_to_rgb, int *ierr);
|
448
|
+
extern OBJ_PTR c_ylabel_color_get(OBJ_PTR fmkr, FM *pc_hls_to_rgb, int *ierr); // value is array of [r, g, b] intensities from 0 to 1
|
449
|
+
extern void c_xaxis_stroke_color_set(OBJ_PTR fmkr, FM *p, OBJ_PTR valc_hls_to_rgb, int *ierr);
|
450
|
+
extern OBJ_PTR c_xaxis_stroke_color_get(OBJ_PTR fmkr, FM *pc_hls_to_rgb, int *ierr); // value is array of [r, g, b] intensities from 0 to 1
|
451
|
+
extern void c_yaxis_stroke_color_set(OBJ_PTR fmkr, FM *p, OBJ_PTR valc_hls_to_rgb, int *ierr);
|
452
|
+
extern OBJ_PTR c_yaxis_stroke_color_get(OBJ_PTR fmkr, FM *pc_hls_to_rgb, int *ierr); // value is array of [r, g, b] intensities from 0 to 1
|
339
453
|
|
454
|
+
/*======================================================================*/
|
455
|
+
// pdfcoords.c
|
456
|
+
extern void Recalc_Font_Hts(FM *p);
|
457
|
+
extern double convert_figure_to_output_x(FM *p, double x);
|
458
|
+
extern double convert_figure_to_output_y(FM *p, double y);
|
459
|
+
extern double convert_figure_to_output_dy(FM *p, double dy);
|
460
|
+
extern double convert_figure_to_output_dx(FM *p, double dx);
|
461
|
+
extern double convert_output_to_figure_x(FM *p, double x);
|
462
|
+
extern double convert_output_to_figure_y(FM *p, double y);
|
463
|
+
extern double convert_output_to_figure_dy(FM *p, double dy);
|
464
|
+
extern double convert_output_to_figure_dx(FM *p, double dx);
|
340
465
|
|
341
|
-
|
466
|
+
extern void c_set_subframe(OBJ_PTR fmkr, FM *p,
|
467
|
+
double left_margin, double right_margin, double top_margin, double bottom_margin, int *ierr);
|
468
|
+
extern void c_private_set_default_font_size(OBJ_PTR fmkr, FM *p, double size, int *ierr);
|
469
|
+
extern OBJ_PTR c_convert_to_degrees(OBJ_PTR fmkr, FM *p, double dx, double dy, int *ierr); // dx and dy in figure coords
|
470
|
+
extern OBJ_PTR c_convert_inches_to_output(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
471
|
+
extern OBJ_PTR c_convert_output_to_inches(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
472
|
+
extern OBJ_PTR c_convert_mm_to_output(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
473
|
+
extern OBJ_PTR c_convert_output_to_mm(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
474
|
+
extern OBJ_PTR c_convert_page_to_output_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
475
|
+
extern OBJ_PTR c_convert_page_to_output_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
476
|
+
extern OBJ_PTR c_convert_page_to_output_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
477
|
+
extern OBJ_PTR c_convert_page_to_output_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
478
|
+
extern OBJ_PTR c_convert_output_to_page_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
479
|
+
extern OBJ_PTR c_convert_output_to_page_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
480
|
+
extern OBJ_PTR c_convert_output_to_page_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
481
|
+
extern OBJ_PTR c_convert_output_to_page_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
482
|
+
extern OBJ_PTR c_convert_frame_to_page_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
483
|
+
extern OBJ_PTR c_convert_frame_to_page_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
484
|
+
extern OBJ_PTR c_convert_frame_to_page_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
485
|
+
extern OBJ_PTR c_convert_frame_to_page_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
486
|
+
extern OBJ_PTR c_convert_page_to_frame_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
487
|
+
extern OBJ_PTR c_convert_page_to_frame_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
488
|
+
extern OBJ_PTR c_convert_page_to_frame_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
489
|
+
extern OBJ_PTR c_convert_page_to_frame_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
490
|
+
extern OBJ_PTR c_convert_figure_to_frame_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
491
|
+
extern OBJ_PTR c_convert_figure_to_frame_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
492
|
+
extern OBJ_PTR c_convert_figure_to_frame_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
493
|
+
extern OBJ_PTR c_convert_figure_to_frame_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
494
|
+
extern OBJ_PTR c_convert_frame_to_figure_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
495
|
+
extern OBJ_PTR c_convert_frame_to_figure_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
496
|
+
extern OBJ_PTR c_convert_frame_to_figure_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
497
|
+
extern OBJ_PTR c_convert_frame_to_figure_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
498
|
+
extern OBJ_PTR c_convert_figure_to_output_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
499
|
+
extern OBJ_PTR c_convert_figure_to_output_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
500
|
+
extern OBJ_PTR c_convert_figure_to_output_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
501
|
+
extern OBJ_PTR c_convert_figure_to_output_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
502
|
+
extern OBJ_PTR c_convert_output_to_figure_x(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
503
|
+
extern OBJ_PTR c_convert_output_to_figure_y(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
504
|
+
extern OBJ_PTR c_convert_output_to_figure_dx(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
505
|
+
extern OBJ_PTR c_convert_output_to_figure_dy(OBJ_PTR fmkr, FM *p, double val, int *ierr);
|
506
|
+
extern void c_doing_subplot(OBJ_PTR fmkr, FM *p, int *ierr);
|
507
|
+
extern void c_doing_subfigure(OBJ_PTR fmkr, FM *p, int *ierr);
|
508
|
+
extern void c_private_set_bounds(OBJ_PTR fmkr, FM *p,
|
509
|
+
double left_boundary, double right_boundary, double top_boundary, double bottom_boundary, int *ierr);
|
342
510
|
|
343
|
-
/* in addition to RGB, colors are also often specified in terms of (HUE,LIGHTNESS,SATURATION) */
|
344
|
-
extern VALUE FM_hls_to_rgb(VALUE fmkr, VALUE hls_vec);
|
345
|
-
extern VALUE FM_rgb_to_hls(VALUE fmkr, VALUE rgb_vec);
|
346
|
-
/* hue is given as an angle from 0 to 360 around the color wheel.
|
347
|
-
0, 60, 120, 180, 240, and 300 are respectively red, yellow, green, cyan, blue, and magenta. */
|
348
|
-
/* lightness and saturation are given as numbers from 0 to 1 */
|
349
|
-
extern void c_hls_to_rgb(double h, double l, double s, double *p_r, double *p_g, double *p_b); // from plplot plctrl.c
|
350
|
-
extern void c_rgb_to_hls(double r, double g, double b, double *p_h, double *p_l, double *p_s); // from plplot plctrl.c
|
351
|
-
|
352
511
|
/*======================================================================*/
|
512
|
+
// pdffile.c
|
513
|
+
extern void Init_pdf(int *ierr);
|
514
|
+
extern void Open_pdf(OBJ_PTR fmkr, FM *p, char *filename, bool quiet_mode, int *ierr);
|
515
|
+
extern void Start_Axis_Standard_State(OBJ_PTR fmkr, FM *p, double r, double g, double b, double line_width, int *ierr);
|
516
|
+
extern void End_Axis_Standard_State(void);
|
517
|
+
extern void Write_gsave(void);
|
518
|
+
extern void Write_grestore(void);
|
519
|
+
extern void Close_pdf(OBJ_PTR fmkr, FM *p, bool quiet_mode, int *ierr);
|
520
|
+
extern void Rename_pdf(char *oldname, char *newname);
|
353
521
|
|
354
|
-
|
522
|
+
extern void c_pdf_gsave(OBJ_PTR fmkr, FM *p, int *ierr);
|
523
|
+
extern void c_pdf_grestore(OBJ_PTR fmkr, FM *p, int *ierr);
|
355
524
|
|
356
|
-
|
357
|
-
|
358
|
-
extern
|
359
|
-
|
525
|
+
/*======================================================================*/
|
526
|
+
// pdfimage.c
|
527
|
+
extern OBJ_PTR c_private_create_image_data(OBJ_PTR fmkr, FM *p, OBJ_PTR table,
|
528
|
+
int first_row, int last_row, int first_column, int last_column,
|
529
|
+
double min_val, double max_val, int max_code, int if_below_range, int if_above_range, int *ierr);
|
530
|
+
extern OBJ_PTR c_private_create_monochrome_image_data(OBJ_PTR fmkr, FM *p, OBJ_PTR table,
|
531
|
+
int first_row, int last_row, int first_column, int last_column,
|
532
|
+
double boundary, bool reversed, int *ierr);
|
533
|
+
extern void c_private_show_jpg(OBJ_PTR fmkr, FM *p, char *filename,
|
534
|
+
int width, int height, OBJ_PTR image_destination, int mask_obj_num, int *ierr);
|
535
|
+
extern OBJ_PTR c_private_show_image(OBJ_PTR fmkr, FM *p, int image_type, double llx, double lly, double lrx, double lry,
|
536
|
+
double ulx, double uly, bool interpolate, bool reversed, int w, int h, unsigned char* data, long len,
|
537
|
+
OBJ_PTR mask_min, OBJ_PTR mask_max, OBJ_PTR hival, OBJ_PTR lookup_data, int mask_obj_num, int *ierr);
|
360
538
|
|
361
|
-
|
362
|
-
|
363
|
-
extern void
|
364
|
-
extern void
|
539
|
+
/*======================================================================*/
|
540
|
+
// pdfpath.c
|
541
|
+
extern void Unpack_RGB(OBJ_PTR rgb, double *rp, double *gp, double *bp, int *ierr);
|
542
|
+
extern void update_bbox(FM *p, double x, double y);
|
365
543
|
|
366
|
-
extern void
|
544
|
+
extern void c_stroke_color_set_RGB(OBJ_PTR fmkr, FM *p, double r, double g, double b, int *ierr);
|
545
|
+
extern void c_stroke_color_set(OBJ_PTR fmkr, FM *p, OBJ_PTR value, int *ierr);
|
546
|
+
extern OBJ_PTR c_stroke_color_get(OBJ_PTR fmkr, FM *p, int *ierr);
|
547
|
+
extern void c_fill_color_set_RGB(OBJ_PTR fmkr, FM *p, double r, double g, double b, int *ierr);
|
548
|
+
extern void c_fill_color_set(OBJ_PTR fmkr, FM *p, OBJ_PTR value, int *ierr);
|
549
|
+
extern OBJ_PTR c_fill_color_get(OBJ_PTR fmkr, FM *p, int *ierr);
|
550
|
+
extern void c_line_width_set(OBJ_PTR fmkr, FM *p, double line_width, int *ierr);
|
551
|
+
extern void c_rescale_lines(OBJ_PTR fmkr, FM *p, double scaling_factor, int *ierr);
|
552
|
+
extern void c_line_cap_set(OBJ_PTR fmkr, FM *p, int line_cap, int *ierr);
|
553
|
+
extern void c_line_join_set(OBJ_PTR fmkr, FM *p, int line_join, int *ierr);
|
554
|
+
extern void c_miter_limit_set(OBJ_PTR fmkr, FM *p, double miter_limit, int *ierr);
|
555
|
+
extern void c_line_type_set(OBJ_PTR fmkr, FM *p, OBJ_PTR line_type, int *ierr);
|
556
|
+
extern void c_update_bbox(OBJ_PTR fmkr, FM *p, double x, double y, int *ierr);
|
557
|
+
extern OBJ_PTR c_bbox_left(OBJ_PTR fmkr, FM *p, int *ierr);
|
558
|
+
extern OBJ_PTR c_bbox_right(OBJ_PTR fmkr, FM *p, int *ierr);
|
559
|
+
extern OBJ_PTR c_bbox_top(OBJ_PTR fmkr, FM *p, int *ierr);
|
560
|
+
extern OBJ_PTR c_bbox_bottom(OBJ_PTR fmkr, FM *p, int *ierr);
|
561
|
+
extern void c_move_to_point(OBJ_PTR fmkr, FM *p, double x, double y, int *ierr);
|
562
|
+
extern void c_moveto(OBJ_PTR fmkr, FM *p, double x, double y, int *ierr);
|
563
|
+
extern void c_append_point_to_path(OBJ_PTR fmkr, FM *p, double x, double y, int *ierr);
|
564
|
+
extern void c_lineto(OBJ_PTR fmkr, FM *p, double x, double y, int *ierr);
|
565
|
+
extern OBJ_PTR c_bezier_control_points(OBJ_PTR fmkr, FM *p,
|
566
|
+
double x0, double y0, double delta_x, double a, double b, double c, int *ierr);
|
567
|
+
extern void c_append_curve_to_path(OBJ_PTR fmkr, FM *p, double x1, double y1,
|
568
|
+
double x2, double y2, double x3, double y3, int *ierr);
|
569
|
+
extern void c_curveto(OBJ_PTR fmkr, FM *p,
|
570
|
+
double x1, double y1, double x2, double y2, double x3, double y3, int *ierr);
|
571
|
+
extern void c_close_path(OBJ_PTR fmkr, FM *p, int *ierr);
|
572
|
+
extern void c_append_arc_to_path(OBJ_PTR fmkr, FM *p,
|
573
|
+
double x_start, double y_start, double x_corner, double y_corner,
|
574
|
+
double x_end, double y_end, double dx, double dy, int *ierr);
|
575
|
+
extern void c_append_arc(OBJ_PTR fmkr, FM *p,
|
576
|
+
double x_start, double y_start, double x_corner, double y_corner,
|
577
|
+
double x_end, double y_end, double radius, int *ierr);
|
578
|
+
extern void c_append_rect_to_path(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, int *ierr);
|
579
|
+
extern void c_append_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, int *ierr);
|
580
|
+
extern void c_append_rounded_rect_to_path(OBJ_PTR fmkr, FM *p,
|
581
|
+
double x, double y, double width, double height, double dx, double dy, int *ierr);
|
582
|
+
extern void c_append_rounded_rect(OBJ_PTR fmkr, FM *p,
|
583
|
+
double x, double y, double width, double height, double radius, int *ierr);
|
584
|
+
extern void c_append_oval_to_path(OBJ_PTR fmkr, FM *p, double x, double y, double dx, double dy, double angle, int *ierr);
|
585
|
+
extern void c_append_oval(OBJ_PTR fmkr, FM *p, double x, double y, double dx, double dy, double angle, int *ierr);
|
586
|
+
extern void c_append_circle_to_path(OBJ_PTR fmkr, FM *p, double x, double y, double dx, int *ierr);
|
587
|
+
extern void c_append_points_to_path(OBJ_PTR fmkr, FM *p, OBJ_PTR x_vec, OBJ_PTR y_vec, int *ierr);
|
588
|
+
extern void c_private_append_points_with_gaps_to_path(OBJ_PTR fmkr, FM *p,
|
589
|
+
OBJ_PTR x_vec, OBJ_PTR y_vec, OBJ_PTR gaps, bool do_close, int *ierr);
|
590
|
+
extern void c_stroke(OBJ_PTR fmkr, FM *p, int *ierr);
|
591
|
+
extern void c_close_and_stroke(OBJ_PTR fmkr, FM *p, int *ierr);
|
592
|
+
extern void c_fill(OBJ_PTR fmkr, FM *p, int *ierr);
|
593
|
+
extern void c_discard_path(OBJ_PTR fmkr, FM *p, int *ierr);
|
594
|
+
extern void c_eofill(OBJ_PTR fmkr, FM *p, int *ierr);
|
595
|
+
extern void c_fill_and_stroke(OBJ_PTR fmkr, FM *p, int *ierr);
|
596
|
+
extern void c_eofill_and_stroke(OBJ_PTR fmkr, FM *p, int *ierr);
|
597
|
+
extern void c_close_fill_and_stroke(OBJ_PTR fmkr, FM *p, int *ierr);
|
598
|
+
extern void c_close_eofill_and_stroke(OBJ_PTR fmkr, FM *p, int *ierr);
|
599
|
+
extern void c_clip(OBJ_PTR fmkr, FM *p, int *ierr);
|
600
|
+
extern void c_eoclip(OBJ_PTR fmkr, FM *p, int *ierr);
|
601
|
+
extern void c_fill_and_clip(OBJ_PTR fmkr, FM *p, int *ierr);
|
602
|
+
extern void c_stroke_and_clip(OBJ_PTR fmkr, FM *p, int *ierr);
|
603
|
+
extern void c_fill_stroke_and_clip(OBJ_PTR fmkr, FM *p, int *ierr);
|
604
|
+
extern void c_stroke_line(OBJ_PTR fmkr, FM *p, double x1, double y1, double x2, double y2, int *ierr);
|
605
|
+
extern void c_fill_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, int *ierr);
|
606
|
+
extern void c_stroke_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, int *ierr);
|
607
|
+
extern void c_fill_and_stroke_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, int *ierr);
|
608
|
+
extern void c_clip_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, int *ierr);
|
609
|
+
extern void c_clip_dev_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, int *ierr);
|
610
|
+
extern void c_clip_oval(OBJ_PTR fmkr, FM *p, double x, double y, double dx, double dy, double angle, int *ierr);
|
611
|
+
extern void c_fill_oval(OBJ_PTR fmkr, FM *p, double x, double y, double dx, double dy, double angle, int *ierr);
|
612
|
+
extern void c_stroke_oval(OBJ_PTR fmkr, FM *p, double x, double y, double dx, double dy, double angle, int *ierr);
|
613
|
+
extern void c_fill_and_stroke_oval(OBJ_PTR fmkr, FM *p, double x, double y, double dx, double dy, double angle, int *ierr);
|
614
|
+
extern void c_clip_rounded_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, double dx, double dy, int *ierr);
|
615
|
+
extern void c_fill_rounded_rect(OBJ_PTR fmkr, FM *p, double x, double y, double width, double height, double dx, double dy, int *ierr);
|
616
|
+
extern void c_stroke_rounded_rect(OBJ_PTR fmkr, FM *p,
|
617
|
+
double x, double y, double width, double height, double dx, double dy, int *ierr);
|
618
|
+
extern void c_fill_and_stroke_rounded_rect(OBJ_PTR fmkr, FM *p,
|
619
|
+
double x, double y, double width, double height, double dx, double dy, int *ierr);
|
620
|
+
extern void c_clip_circle(OBJ_PTR fmkr, FM *p, double x, double y, double dx, int *ierr);
|
621
|
+
extern void c_fill_circle(OBJ_PTR fmkr, FM *p, double x, double y, double dx, int *ierr);
|
622
|
+
extern void c_stroke_circle(OBJ_PTR fmkr, FM *p, double x, double y, double dx, int *ierr);
|
623
|
+
extern void c_fill_and_stroke_circle(OBJ_PTR fmkr, FM *p, double x, double y, double dx, int *ierr);
|
624
|
+
extern void c_append_frame(OBJ_PTR fmkr, FM *p, bool clip, int *ierr);
|
625
|
+
extern void c_append_frame_to_path(OBJ_PTR fmkr, FM *p, int *ierr);
|
626
|
+
extern void c_fill_frame(OBJ_PTR fmkr, FM *p, int *ierr);
|
627
|
+
extern void c_stroke_frame(OBJ_PTR fmkr, FM *p, int *ierr);
|
628
|
+
extern void c_fill_and_stroke_frame(OBJ_PTR fmkr, FM *p, int *ierr);
|
629
|
+
extern void c_clip_to_frame(OBJ_PTR fmkr, FM *p, int *ierr);
|
367
630
|
|
368
|
-
|
631
|
+
/*======================================================================*/
|
632
|
+
// pdftext.c
|
633
|
+
extern void Init_Font_Dictionary(void);
|
634
|
+
extern bool Used_Any_Fonts(void);
|
635
|
+
extern void Clear_Fonts_In_Use_Flags(void);
|
636
|
+
extern void Write_Font_Dictionaries(void);
|
637
|
+
extern void Write_Font_Descriptors(void);
|
638
|
+
extern void Write_Font_Widths(void);
|
639
|
+
|
640
|
+
extern OBJ_PTR c_register_font(OBJ_PTR fmkr, FM *p, char *font_name, int *ierr);
|
641
|
+
extern OBJ_PTR c_marker_string_info(OBJ_PTR fmkr, FM *p, int fnt, unsigned char *text, double scale, int *ierr);
|
642
|
+
extern void c_private_show_marker(
|
643
|
+
OBJ_PTR fmkr, FM *p, int int_args, OBJ_PTR stroke_width, OBJ_PTR string,
|
644
|
+
OBJ_PTR x, OBJ_PTR y, OBJ_PTR x_vec, OBJ_PTR y_vec,
|
645
|
+
double h_scale, double v_scale, double scale, double it_angle, double ascent_angle, double angle,
|
646
|
+
OBJ_PTR fill_color, OBJ_PTR stroke_color, int *ierr);
|
369
647
|
|
370
|
-
|
371
|
-
|
648
|
+
/*======================================================================*/
|
649
|
+
// texout.c
|
650
|
+
extern void Open_tex(OBJ_PTR fmkr, char *filename, bool quiet_mode, int *ierr);
|
651
|
+
extern void Close_tex(OBJ_PTR fmkr, bool quiet_mode, int *ierr);
|
652
|
+
extern void Create_wrapper(OBJ_PTR fmkr, char *filename, bool quiet_mode, int *ierr);
|
653
|
+
extern void Init_tex(int *ierr);
|
654
|
+
extern void Rename_tex(char *oldname, char *newname, int *ierr);
|
655
|
+
extern void private_make_portfolio(char *filename, OBJ_PTR fignums, OBJ_PTR fignames, int *ierr);
|
656
|
+
|
657
|
+
extern void c_rescale_text(OBJ_PTR fmkr, FM *p, double scaling_factor, int *ierr);
|
658
|
+
extern void c_show_rotated_text(OBJ_PTR fmkr, FM *p, char *text, int frame_side, double shift, double fraction,
|
659
|
+
double scale, double angle, int justification, int alignment, OBJ_PTR measure_name, int *ierr);
|
660
|
+
extern void c_show_rotated_label(OBJ_PTR fmkr, FM *p, char *text,
|
661
|
+
double xloc, double yloc, double scale, double angle, int justification, int alignment, OBJ_PTR measure_name, int *ierr);
|
662
|
+
extern OBJ_PTR c_check_label_clip(OBJ_PTR fmkr, FM *p, double x, double y, int *ierr);
|
663
|
+
extern void c_save_measure(OBJ_PTR fmkr, OBJ_PTR measure_name,
|
664
|
+
double width, double height, double depth);
|
372
665
|
|
373
|
-
|
666
|
+
|
667
|
+
/*======================================================================*/
|
374
668
|
|
375
669
|
// ENLARGE = the conversion factor from "big points" to output units
|
376
670
|
#define ENLARGE 10.0
|
@@ -384,55 +678,29 @@ extern double bbox_llx, bbox_lly, bbox_urx, bbox_ury;
|
|
384
678
|
#define convert_inches_to_output(inches) ((ENLARGE*BIG_POINTS_PER_INCH)*(inches))
|
385
679
|
#define convert_output_to_inches(output) ((output)/(ENLARGE*BIG_POINTS_PER_INCH))
|
386
680
|
|
387
|
-
extern VALUE FM_convert_inches_to_output(VALUE fmkr, VALUE value);
|
388
|
-
extern VALUE FM_convert_output_to_inches(VALUE fmkr, VALUE value);
|
389
|
-
|
390
681
|
#define convert_mm_to_output(mm) ((ENLARGE*BIG_POINTS_PER_INCH*INCHES_PER_MM)*(mm))
|
391
682
|
#define convert_output_to_mm(output) ((output)/(ENLARGE*BIG_POINTS_PER_INCH*INCHES_PER_MM))
|
392
683
|
|
393
|
-
extern VALUE FM_convert_mm_to_output(VALUE fmkr, VALUE value);
|
394
|
-
extern VALUE FM_convert_output_to_mm(VALUE fmkr, VALUE value);
|
395
|
-
|
396
684
|
#define convert_page_to_output_x(p,x) ((p)->page_left + (x)*(p)->page_width)
|
397
685
|
#define convert_page_to_output_y(p,y) ((p)->page_bottom + (y)*(p)->page_height)
|
398
686
|
#define convert_page_to_output_dx(p,dx) ((dx)*(p)->page_width)
|
399
687
|
#define convert_page_to_output_dy(p,dy) ((dy)*(p)->page_height)
|
400
688
|
|
401
|
-
extern VALUE FM_convert_page_to_output_x(VALUE fmkr, VALUE value);
|
402
|
-
extern VALUE FM_convert_page_to_output_y(VALUE fmkr, VALUE value);
|
403
|
-
extern VALUE FM_convert_page_to_output_dx(VALUE fmkr, VALUE value);
|
404
|
-
extern VALUE FM_convert_page_to_output_dy(VALUE fmkr, VALUE value);
|
405
|
-
|
406
689
|
#define convert_output_to_page_x(p,x) (((x) - (p)->page_left)/(p)->page_width)
|
407
690
|
#define convert_output_to_page_y(p,y) (((y) - (p)->page_bottom)/(p)->page_height)
|
408
691
|
#define convert_output_to_page_dx(p,dx) ((dx)/(p)->page_width)
|
409
692
|
#define convert_output_to_page_dy(p,dy) ((dy)/(p)->page_height)
|
410
693
|
|
411
|
-
extern VALUE FM_convert_output_to_page_x(VALUE fmkr, VALUE value);
|
412
|
-
extern VALUE FM_convert_output_to_page_y(VALUE fmkr, VALUE value);
|
413
|
-
extern VALUE FM_convert_output_to_page_dx(VALUE fmkr, VALUE value);
|
414
|
-
extern VALUE FM_convert_output_to_page_dy(VALUE fmkr, VALUE value);
|
415
|
-
|
416
694
|
#define convert_frame_to_page_x(p,x) ((p)->frame_left + (x)*(p)->frame_width)
|
417
695
|
#define convert_frame_to_page_y(p,y) ((p)->frame_bottom + (y)*(p)->frame_height)
|
418
696
|
#define convert_frame_to_page_dx(p,dx) ((dx)*(p)->frame_width)
|
419
697
|
#define convert_frame_to_page_dy(p,dy) ((dy)*(p)->frame_height)
|
420
698
|
|
421
|
-
extern VALUE FM_convert_frame_to_page_x(VALUE fmkr, VALUE value);
|
422
|
-
extern VALUE FM_convert_frame_to_page_y(VALUE fmkr, VALUE value);
|
423
|
-
extern VALUE FM_convert_frame_to_page_dx(VALUE fmkr, VALUE value);
|
424
|
-
extern VALUE FM_convert_frame_to_page_dy(VALUE fmkr, VALUE value);
|
425
|
-
|
426
699
|
#define convert_page_to_frame_x(p,x) (((x) - (p)->frame_left)/(p)->frame_width)
|
427
700
|
#define convert_page_to_frame_y(p,y) (((y) - (p)->frame_bottom)/(p)->frame_height)
|
428
701
|
#define convert_page_to_frame_dx(p,dx) ((dx)/(p)->frame_width)
|
429
702
|
#define convert_page_to_frame_dy(p,dy) ((dy)/(p)->frame_height)
|
430
703
|
|
431
|
-
extern VALUE FM_convert_page_to_frame_x(VALUE fmkr, VALUE value);
|
432
|
-
extern VALUE FM_convert_page_to_frame_y(VALUE fmkr, VALUE value);
|
433
|
-
extern VALUE FM_convert_page_to_frame_dx(VALUE fmkr, VALUE value);
|
434
|
-
extern VALUE FM_convert_page_to_frame_dy(VALUE fmkr, VALUE value);
|
435
|
-
|
436
704
|
#define convert_figure_to_frame_x(p,x) (\
|
437
705
|
((p)->bounds_left > (p)->bounds_right)? (1.0 - ((x)-(p)->bounds_xmin)/(p)->bounds_width) : ((x)-(p)->bounds_xmin)/(p)->bounds_width)
|
438
706
|
#define convert_figure_to_frame_y(p,y) (\
|
@@ -442,11 +710,6 @@ extern VALUE FM_convert_page_to_frame_dy(VALUE fmkr, VALUE value);
|
|
442
710
|
#define convert_figure_to_frame_dy(p,dy) (\
|
443
711
|
((p)->bounds_bottom > (p)->bounds_top)? -(dy)/(p)->bounds_height : (dy)/(p)->bounds_height)
|
444
712
|
|
445
|
-
extern VALUE FM_convert_figure_to_frame_x(VALUE fmkr, VALUE value);
|
446
|
-
extern VALUE FM_convert_figure_to_frame_y(VALUE fmkr, VALUE value);
|
447
|
-
extern VALUE FM_convert_figure_to_frame_dx(VALUE fmkr, VALUE value);
|
448
|
-
extern VALUE FM_convert_figure_to_frame_dy(VALUE fmkr, VALUE value);
|
449
|
-
|
450
713
|
#define convert_frame_to_figure_x(p,x) (\
|
451
714
|
((p)->bounds_left > (p)->bounds_right)? ((p)->bounds_left - (x)*(p)->bounds_width): ((p)->bounds_left + (x)*(p)->bounds_width))
|
452
715
|
#define convert_frame_to_figure_y(p,y) (\
|
@@ -456,352 +719,6 @@ extern VALUE FM_convert_figure_to_frame_dy(VALUE fmkr, VALUE value);
|
|
456
719
|
#define convert_frame_to_figure_dy(p,dy) (\
|
457
720
|
((p)->bounds_bottom > (p)->bounds_top)? (-(dy)*(p)->bounds_height): ((dy)*(p)->bounds_height))
|
458
721
|
|
459
|
-
extern VALUE FM_convert_frame_to_figure_x(VALUE fmkr, VALUE value);
|
460
|
-
extern VALUE FM_convert_frame_to_figure_y(VALUE fmkr, VALUE value);
|
461
|
-
extern VALUE FM_convert_frame_to_figure_dx(VALUE fmkr, VALUE value);
|
462
|
-
extern VALUE FM_convert_frame_to_figure_dy(VALUE fmkr, VALUE value);
|
463
|
-
|
464
|
-
extern double convert_figure_to_output_x(FM *p, double x);
|
465
|
-
extern double convert_figure_to_output_y(FM *p, double y);
|
466
|
-
extern double convert_figure_to_output_dy(FM *p, double dy);
|
467
|
-
extern double convert_figure_to_output_dx(FM *p, double dx);
|
468
|
-
|
469
|
-
extern VALUE FM_convert_figure_to_output_x(VALUE fmkr, VALUE value);
|
470
|
-
extern VALUE FM_convert_figure_to_output_y(VALUE fmkr, VALUE value);
|
471
|
-
extern VALUE FM_convert_figure_to_output_dx(VALUE fmkr, VALUE value);
|
472
|
-
extern VALUE FM_convert_figure_to_output_dy(VALUE fmkr, VALUE value);
|
473
|
-
|
474
|
-
extern double convert_output_to_figure_x(FM *p, double x);
|
475
|
-
extern double convert_output_to_figure_y(FM *p, double y);
|
476
|
-
extern double convert_output_to_figure_dy(FM *p, double dy);
|
477
|
-
extern double convert_output_to_figure_dx(FM *p, double dx);
|
478
|
-
|
479
|
-
extern VALUE FM_convert_output_to_figure_x(VALUE fmkr, VALUE value);
|
480
|
-
extern VALUE FM_convert_output_to_figure_y(VALUE fmkr, VALUE value);
|
481
|
-
extern VALUE FM_convert_output_to_figure_dx(VALUE fmkr, VALUE value);
|
482
|
-
extern VALUE FM_convert_output_to_figure_dy(VALUE fmkr, VALUE value);
|
483
|
-
|
484
|
-
extern double c_convert_to_degrees(FM *p, double dx, double dy);
|
485
|
-
extern VALUE FM_convert_to_degrees(VALUE fmkr, VALUE dx, VALUE dy);
|
486
|
-
|
487
|
-
extern void update_bbox(FM *p, double x, double y);
|
488
|
-
|
489
|
-
extern void c_set_bounds(FM *p, double left, double right, double top, double bottom);
|
490
|
-
extern VALUE FM_private_set_bounds(VALUE fmkr, VALUE left, VALUE right, VALUE top, VALUE bottom); /* in figure coords */
|
491
|
-
|
492
|
-
extern VALUE FM_private_context(VALUE fmkr, VALUE cmd);
|
493
|
-
|
494
|
-
extern void c_set_subframe(FM *p, double left_margin, double right_margin, double top_margin, double bottom_margin);
|
495
|
-
extern VALUE FM_private_set_subframe(VALUE fmkr, VALUE left_margin, VALUE right_margin, VALUE top_margin, VALUE bottom_margin);
|
496
|
-
|
497
|
-
/* TeX text */
|
498
|
-
|
499
|
-
extern VALUE FM_rescale_text(VALUE fmkr, VALUE scale); // updates char_height_dx and char_height_dy too
|
500
|
-
|
501
|
-
extern VALUE FM_show_rotated_text(VALUE fmkr, VALUE text, VALUE frame_side, VALUE shift,
|
502
|
-
VALUE fraction, VALUE scale, VALUE angle, VALUE justification, VALUE alignment);
|
503
|
-
|
504
|
-
extern VALUE FM_show_rotated_label(VALUE fmkr, VALUE text,
|
505
|
-
VALUE xloc, VALUE yloc, VALUE scale, VALUE angle, VALUE justification, VALUE alignment);
|
506
|
-
|
507
|
-
extern VALUE FM_check_label_clip(VALUE fmkr, VALUE xloc, VALUE yloc);
|
508
|
-
|
509
|
-
/* PDF graphics */
|
510
|
-
|
511
|
-
/* graphics attributes */
|
512
|
-
extern VALUE FM_stroke_color_set(VALUE fmkr, VALUE value);
|
513
|
-
extern VALUE FM_fill_color_set(VALUE fmkr, VALUE value);
|
514
|
-
extern VALUE FM_line_width_set(VALUE fmkr, VALUE value);
|
515
|
-
extern VALUE FM_stroke_scale_set(VALUE fmkr, VALUE value);
|
516
|
-
extern VALUE FM_line_cap_set(VALUE fmkr, VALUE value);
|
517
|
-
extern VALUE FM_line_join_set(VALUE fmkr, VALUE value);
|
518
|
-
extern VALUE FM_miter_limit_set(VALUE fmkr, VALUE value);
|
519
|
-
extern VALUE FM_line_type_set(VALUE fmkr, VALUE line_type);
|
520
|
-
extern VALUE FM_stroke_opacity_set(VALUE fmkr, VALUE value);
|
521
|
-
extern VALUE FM_fill_opacity_set(VALUE fmkr, VALUE value);
|
522
|
-
extern VALUE FM_marker_horizontal_scaling_set(VALUE fmkr, VALUE value); // as fraction of normal width
|
523
|
-
|
524
|
-
/*
|
525
|
-
Once start a path, must finish with it before going on to anything else.
|
526
|
-
So, do sequence of path producer operations followed by a single path consumer operation.
|
527
|
-
After the path consumer operation finishes, the current path is reset to empty.
|
528
|
-
Can't mix in other kinds of operations in the middle of this; once start constructing a path,
|
529
|
-
cannot do any other graphics operations until have finished producing the path and have consumed it.
|
530
|
-
*/
|
531
|
-
|
532
|
-
/* Path Producers */
|
533
|
-
|
534
|
-
/* path parameters are in figure coordinates */
|
535
|
-
/* are immediately converted to output coordinates; uneffected by later changes in figure coordinate system */
|
536
|
-
|
537
|
-
extern VALUE FM_move_to_point(VALUE fmkr, VALUE x, VALUE y); // x y m
|
538
|
-
extern VALUE FM_append_point_to_path(VALUE fmkr, VALUE x, VALUE y); // x y l
|
539
|
-
extern VALUE FM_append_curve_to_path(VALUE fmkr, VALUE x1, VALUE y1, VALUE x2, VALUE y2, VALUE x3, VALUE y3); // x1 y1 x2 y2 x3 y3 c
|
540
|
-
extern VALUE FM_close_path(VALUE fmkr); // h
|
541
|
-
|
542
|
-
extern VALUE FM_append_points_to_path(VALUE fmkr, VALUE x_vec, VALUE y_vec);
|
543
|
-
extern VALUE FM_private_append_points_with_gaps_to_path(VALUE fmkr, VALUE x_vec, VALUE y_vec, VALUE gaps, VALUE close_gaps);
|
544
|
-
|
545
|
-
extern VALUE FM_append_arc_to_path(VALUE fmkr, VALUE x_start, VALUE y_start, VALUE x_corner, VALUE y_corner,
|
546
|
-
VALUE x_end, VALUE y_end, VALUE dx, VALUE dy);
|
547
|
-
// dx and dy are converted to output coords and smaller is used as radius
|
548
|
-
|
549
|
-
extern VALUE FM_append_rect_to_path(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height); // x y w h re
|
550
|
-
extern VALUE FM_append_rounded_rect_to_path(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height, VALUE dx, VALUE dy);
|
551
|
-
// dx and dy are converted to output coords and smaller is used as radius
|
552
|
-
|
553
|
-
extern VALUE FM_append_circle_to_path(VALUE fmkr, VALUE x, VALUE y, VALUE dx);
|
554
|
-
extern VALUE FM_append_oval_to_path(VALUE fmkr, VALUE x, VALUE y, VALUE dx, VALUE dy, VALUE angle);
|
555
|
-
|
556
|
-
extern VALUE FM_append_frame_to_path(VALUE fmkr);
|
557
|
-
|
558
|
-
extern VALUE FM_update_bbox(VALUE fmkr, VALUE x, VALUE y);
|
559
|
-
|
560
|
-
extern VALUE FM_bbox_left(VALUE fmkr);
|
561
|
-
extern VALUE FM_bbox_right(VALUE fmkr);
|
562
|
-
extern VALUE FM_bbox_top(VALUE fmkr);
|
563
|
-
extern VALUE FM_bbox_bottom(VALUE fmkr);
|
564
|
-
|
565
|
-
/* Path Consumers */
|
566
|
-
|
567
|
-
extern VALUE FM_stroke(VALUE fmkr); // S
|
568
|
-
extern VALUE FM_close_and_stroke(VALUE fmkr); // s
|
569
|
-
extern VALUE FM_fill(VALUE fmkr); // f
|
570
|
-
extern VALUE FM_eofill(VALUE fmkr); // f*
|
571
|
-
extern VALUE FM_fill_and_stroke(VALUE fmkr); // B
|
572
|
-
extern VALUE FM_eofill_and_stroke(VALUE fmkr); // B*
|
573
|
-
extern VALUE FM_close_fill_and_stroke(VALUE fmkr); // b
|
574
|
-
extern VALUE FM_close_eofill_and_stroke(VALUE fmkr); // b*
|
575
|
-
extern VALUE FM_clip(VALUE fmkr); // W n
|
576
|
-
extern VALUE FM_eoclip(VALUE fmkr); // W* n
|
577
|
-
extern VALUE FM_discard_path(VALUE fmkr); // n
|
578
|
-
|
579
|
-
/* Combination Path Constructing and Using */
|
580
|
-
|
581
|
-
extern VALUE FM_stroke_line(VALUE fmkr, VALUE x1, VALUE y1, VALUE x2, VALUE y2);
|
582
|
-
|
583
|
-
extern VALUE FM_fill_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height);
|
584
|
-
extern VALUE FM_stroke_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height);
|
585
|
-
extern VALUE FM_fill_and_stroke_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height);
|
586
|
-
extern VALUE FM_clip_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height);
|
587
|
-
|
588
|
-
extern VALUE FM_fill_frame(VALUE fmkr);
|
589
|
-
extern VALUE FM_stroke_frame(VALUE fmkr);
|
590
|
-
extern VALUE FM_fill_and_stroke_frame(VALUE fmkr);
|
591
|
-
extern VALUE FM_clip_to_frame(VALUE fmkr);
|
592
|
-
|
593
|
-
extern VALUE FM_fill_oval(VALUE fmkr, VALUE x, VALUE y, VALUE dx, VALUE dy, VALUE angle);
|
594
|
-
extern VALUE FM_stroke_oval(VALUE fmkr, VALUE x, VALUE y, VALUE dx, VALUE dy, VALUE angle);
|
595
|
-
extern VALUE FM_fill_and_stroke_oval(VALUE fmkr, VALUE x, VALUE y, VALUE dx, VALUE dy, VALUE angle);
|
596
|
-
extern VALUE FM_clip_oval(VALUE fmkr, VALUE x, VALUE y, VALUE dx, VALUE dy, VALUE angle);
|
597
|
-
|
598
|
-
extern VALUE FM_fill_circle(VALUE fmkr, VALUE x, VALUE y, VALUE dx);
|
599
|
-
extern VALUE FM_stroke_circle(VALUE fmkr, VALUE x, VALUE y, VALUE dx);
|
600
|
-
extern VALUE FM_fill_and_stroke_circle(VALUE fmkr, VALUE x, VALUE y, VALUE dx);
|
601
|
-
extern VALUE FM_clip_circle(VALUE fmkr, VALUE x, VALUE y, VALUE dx);
|
602
|
-
|
603
|
-
extern VALUE FM_fill_rounded_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height, VALUE dx, VALUE dy);
|
604
|
-
extern VALUE FM_stroke_rounded_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height, VALUE dx, VALUE dy);
|
605
|
-
extern VALUE FM_fill_and_stroke_rounded_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height, VALUE dx, VALUE dy);
|
606
|
-
extern VALUE FM_clip_rounded_rect(VALUE fmkr, VALUE x, VALUE y, VALUE width, VALUE height, VALUE dx, VALUE dy);
|
607
|
-
|
608
|
-
/* Shading */
|
609
|
-
|
610
|
-
extern VALUE FM_private_axial_shading(VALUE fmkr, VALUE x0, VALUE y0,
|
611
|
-
VALUE x1, VALUE y1, VALUE colormap, VALUE extend_start, VALUE extend_end);
|
612
|
-
extern VALUE FM_private_radial_shading(VALUE fmkr, VALUE x0, VALUE y0, VALUE r0,
|
613
|
-
VALUE x1, VALUE y1, VALUE r1, VALUE colormap,
|
614
|
-
VALUE a, VALUE b, VALUE c, VALUE d,
|
615
|
-
VALUE extend_start, VALUE extend_end);
|
616
|
-
|
617
|
-
/* Markers */
|
618
|
-
|
619
|
-
// a marker is a [font number, character code]
|
620
|
-
// markers are filled with the current fill color and/or stroked with the current stroke color
|
621
|
-
// they are scaled by the current text_scale times the scale parameter passed to the drawing routine
|
622
|
-
// locations given in figure coords
|
623
|
-
|
624
|
-
extern VALUE FM_register_font(VALUE fmkr, VALUE font_name); // returns font number.
|
625
|
-
|
626
|
-
extern VALUE FM_private_show_marker(VALUE fmkr, VALUE integer_args, VALUE stroke_width, VALUE string,
|
627
|
-
VALUE x, VALUE y, VALUE x_vec, VALUE y_vec,
|
628
|
-
VALUE h_scale, VALUE v_scale, VALUE scale, VALUE it_angle, VALUE ascent_angle, VALUE angle,
|
629
|
-
VALUE fill_color, VALUE stroke_color);
|
630
|
-
|
631
|
-
extern VALUE FM_marker_string_info(VALUE fmkr, VALUE font_number, VALUE string, VALUE scale);
|
632
|
-
// [ width, llx, lly, urx, ury ] in figure coords
|
633
|
-
|
634
|
-
/* Images */
|
635
|
-
|
636
|
-
extern VALUE FM_private_show_jpg(VALUE fmkr, VALUE filename, VALUE width, VALUE height, VALUE image_destination, VALUE mask_xo_num);
|
637
|
-
extern VALUE FM_show_jp2(VALUE fmkr, VALUE filename, VALUE width, VALUE height, VALUE image_destination, VALUE mask_xo_num);
|
638
|
-
|
639
|
-
extern VALUE FM_private_show_rgb_image(VALUE fmkr, VALUE llx, VALUE lly, VALUE lrx, VALUE lry, VALUE ulx, VALUE uly,
|
640
|
-
VALUE interpolate, VALUE w, VALUE h, VALUE data, VALUE mask_xo_num);
|
641
|
-
|
642
|
-
extern VALUE FM_private_show_cmyk_image(VALUE fmkr, VALUE llx, VALUE lly, VALUE lrx, VALUE lry, VALUE ulx, VALUE uly,
|
643
|
-
VALUE interpolate, VALUE w, VALUE h, VALUE data, VALUE mask_xo_num);
|
644
|
-
|
645
|
-
extern VALUE FM_private_show_grayscale_image(VALUE fmkr, VALUE llx, VALUE lly, VALUE lrx, VALUE lry, VALUE ulx, VALUE uly,
|
646
|
-
VALUE interpolate, VALUE w, VALUE h, VALUE data, VALUE mask_xo_num);
|
647
|
-
|
648
|
-
extern VALUE FM_private_show_monochrome_image(VALUE fmkr, VALUE llx, VALUE lly, VALUE lrx, VALUE lry, VALUE ulx, VALUE uly,
|
649
|
-
VALUE interpolate, VALUE reversed, VALUE w, VALUE h, VALUE data, VALUE mask_xo_num);
|
650
|
-
|
651
|
-
extern VALUE FM_private_show_image(VALUE fmkr, VALUE llx, VALUE lly, VALUE lrx, VALUE lry, VALUE ulx, VALUE uly,
|
652
|
-
VALUE interpolate, VALUE w, VALUE h, VALUE data, VALUE value_mask_min, VALUE value_mask_max,
|
653
|
-
VALUE hival, VALUE lookup, VALUE mask_xo_num);
|
654
|
-
|
655
|
-
extern VALUE FM_private_create_image_data(VALUE fmkr, VALUE data,
|
656
|
-
VALUE first_row, VALUE last_row, VALUE first_column, VALUE last_column,
|
657
|
-
VALUE min_value, VALUE max_value, VALUE max_code, VALUE if_below_range, VALUE if_above_range);
|
658
|
-
|
659
|
-
extern VALUE FM_private_create_monochrome_image_data(VALUE fmkr, VALUE data,
|
660
|
-
VALUE first_row, VALUE last_row, VALUE first_column, VALUE last_column,
|
661
|
-
VALUE boundary, VALUE reverse);
|
662
|
-
|
663
|
-
/* Colormaps for Sampled Images */
|
664
|
-
|
665
|
-
extern VALUE FM_private_create_colormap(VALUE fmkr, VALUE rgb_flag,
|
666
|
-
VALUE length, VALUE Ps, VALUE C1s, VALUE C2s, VALUE C3s);
|
667
|
-
/*
|
668
|
-
create mappings from 'position' (0 to 1) to color (in HLS or RGB color spaces)
|
669
|
-
the length parameter determines the number of entries in the color map (any integer between 2 and 256).
|
670
|
-
for rgb, the colors are given as (red, green, blue) intensities from 0.0 to 1.0
|
671
|
-
for hls, the colors are given as (hue, lightness, saturation)
|
672
|
-
lightness and saturation given as values from 0.0 to 1.0
|
673
|
-
hue given as degrees (0 to 360) around the color wheel from red->green->blue->red
|
674
|
-
Ps are the locations in (0 to 1) for the control points -- in increasing order
|
675
|
-
must have Ps[0] == 0.0 and Ps[num_ps-1] == 1.0
|
676
|
-
*/
|
677
|
-
|
678
|
-
extern VALUE FM_convert_to_colormap(VALUE fmkr, VALUE Rs, VALUE Gs, VALUE Bs);
|
679
|
-
/* this creates an arbitrary mapping from positions to colors given as (r,g,b) triples */
|
680
|
-
/* the colormap size is set to the length of the vectors */
|
681
|
-
/* the Rs, Gs, and Bs are VALUEs from 0 to 1 representing the intensity of the color component */
|
682
|
-
|
683
|
-
extern VALUE FM_get_color_from_colormap(VALUE fmkr, VALUE color_map, VALUE color_position);
|
684
|
-
/* color_position is from 0 to 1. this returns a vector for the RGB color from the given colormap */
|
685
|
-
|
686
|
-
|
687
|
-
/*======================================================================*/
|
688
|
-
|
689
|
-
/* Axes Operations */
|
690
|
-
|
691
|
-
extern VALUE FM_show_axis(VALUE fmkr, VALUE loc);
|
692
|
-
extern VALUE FM_show_edge(VALUE fmkr, VALUE loc);
|
693
|
-
|
694
|
-
/*======================================================================*/
|
695
|
-
|
696
|
-
/* Line Builders */
|
697
|
-
|
698
|
-
extern VALUE FM_private_make_contour(VALUE fmkr,
|
699
|
-
VALUE dest_xs, VALUE dest_ys, VALUE gaps, // these Dvectors get the results
|
700
|
-
VALUE xs, VALUE ys, // data x coordinates and y coordinates
|
701
|
-
VALUE zs, VALUE z_level, // the Dtable of values and the desired contour level
|
702
|
-
VALUE legit, // the Dtable of flags (nonzero means okay)
|
703
|
-
VALUE method // int == 1 means use CONREC
|
704
|
-
);
|
705
|
-
|
706
|
-
extern VALUE FM_private_make_steps(VALUE fmkr, VALUE Xvec, VALUE Yvec, VALUE Xdata, VALUE Ydata,
|
707
|
-
VALUE xfirst, VALUE yfirst, VALUE xlast, VALUE ylast);
|
708
|
-
/* adds n_pts_to_add points to Xs and Ys for steps with the given parameters.
|
709
|
-
X_data and Y_data are arrays of n values where n_pts_to_add = 2*(n+1)
|
710
|
-
(xfirst,yfirst) and (xlast,ylast) are extra data points to fix the first and last steps.
|
711
|
-
The X_data plus xfirst and xlast determine the widths of the steps.
|
712
|
-
The Y_data plus yfirst and ylast determine the height of the steps.
|
713
|
-
The steps occur at locations midway between the given x locations. */
|
714
|
-
|
715
|
-
extern VALUE FM_private_make_spline_interpolated_points(VALUE fmkr, VALUE Xvec, VALUE Yvec, VALUE Xdata, VALUE Ydata,
|
716
|
-
VALUE start_slope, VALUE end_slope);
|
717
|
-
/* uses Xvec_data and Yvec_data to create a cubic spline interpolant.
|
718
|
-
once the spline interpolant is created, it is sampled at the n_pts_to_add in Xs.
|
719
|
-
Xvec entry i is set to the value of the spline at Yvec entry i.
|
720
|
-
Both the X_data and the Xs should be stored in ascending order.
|
721
|
-
There is a boundary condition choice to be made for each end concerning the slope.
|
722
|
-
If clamped is true, the corresponding slope argument value sets the slope.
|
723
|
-
If clamped is false (known as a "free" or "natural" spline),
|
724
|
-
the 2nd derivative is set to 0 and the slope is determined by the fit.
|
725
|
-
In this case, the corresponding slope argument is ignored.
|
726
|
-
*/
|
727
|
-
|
728
|
-
/*======================================================================*/
|
729
|
-
|
730
|
-
/* Some miscellaneous stuff */
|
731
|
-
|
732
|
-
extern void figure_moveto(FM *p, double x, double y); // figure coords
|
733
|
-
extern void figure_lineto(FM *p, double x, double y); // figure coords
|
734
|
-
extern void figure_join(FM *p, double x0, double y0, double x1, double y1); // figure coords
|
735
|
-
extern void figure_join_and_stroke(FM *p, double x0, double y0, double x1, double y1); // figure coords
|
736
|
-
|
737
|
-
extern double Get_double(VALUE obj, ID name_ID); // for instance variables of the obj
|
738
|
-
extern bool Get_bool(VALUE obj, ID name_ID);
|
739
|
-
extern int Get_int(VALUE obj, ID name_ID);
|
740
|
-
#define Get_value(obj, name_ID) rb_ivar_get(obj, name_ID)
|
741
|
-
|
742
|
-
|
743
|
-
extern VALUE FM_private_make(VALUE fmkr, VALUE name, VALUE cmd);
|
744
|
-
extern VALUE FM_get_save_filename(VALUE fmkr, VALUE name);
|
745
|
-
|
746
|
-
extern VALUE FM_private_make_portfolio(VALUE fmkr, VALUE name, VALUE fignums, VALUE fignames);
|
747
|
-
extern void private_make_portfolio(char *filename, VALUE fignums, VALUE fignames);
|
748
|
-
|
749
|
-
extern void Init_PlotAxis(void);
|
750
|
-
extern void Initialize_Figure(VALUE fmkr);
|
751
|
-
extern void c_setup_drawing(FM *p);
|
752
|
-
extern void Init_IDs(void);
|
753
|
-
extern void Initialize_Figure(VALUE fmkr);
|
754
|
-
|
755
|
-
extern void c_moveto(FM *p, double x, double y);
|
756
|
-
extern void c_lineto(FM *p, double x, double y);
|
757
|
-
extern void c_curveto(FM *p, double x1, double y1, double x2, double y2, double x3, double y3);
|
758
|
-
extern void c_line_width_set(FM *p, double line_width);
|
759
|
-
extern void c_line_cap_set(FM *p, int line_cap);
|
760
|
-
extern void c_line_join_set(FM *p, int line_cap);
|
761
|
-
extern void c_miter_limit_set(FM *p, double miter_limit);
|
762
|
-
extern void c_stroke_scale_set(FM *p, double stroke_scale);
|
763
|
-
extern void c_clip_rect(FM *p, double x, double y, double width, double height); // in output coords
|
764
|
-
|
765
|
-
extern int Blank_String(char *str);
|
766
|
-
extern char *Get_String(VALUE ary, int index);
|
767
|
-
|
768
|
-
extern void c_show_rotated_text(FM *p, char *text, int frame_side, double shift, double fraction,
|
769
|
-
double scale, double angle, int justification, int alignment);
|
770
|
-
extern void c_show_rotated_label(FM *p, char *text,
|
771
|
-
double xloc, double yloc, double scale, double angle, int justification, int alignment);
|
772
|
-
|
773
|
-
extern void pldtikmin(FM *p, double tick_min, double vmin, double vmax, double *tick, int *nsubt);
|
774
|
-
extern void draw_box_top_and_bottom(FM *p, char *xopt, double xtick, int nxsub);
|
775
|
-
extern void draw_box_left_and_right(FM *p, char *yopt, double ytick, int nysub);
|
776
|
-
|
777
|
-
extern VALUE do_cmd(VALUE fmkr, VALUE cmd);
|
778
|
-
|
779
|
-
extern char *Get_tex_preview_documentclass(VALUE fmkr);
|
780
|
-
extern char *Get_tex_preamble(VALUE fmkr);
|
781
|
-
extern char *Get_tex_xaxis_numeric_label(VALUE fmkr);
|
782
|
-
extern char *Get_tex_yaxis_numeric_label(VALUE fmkr);
|
783
|
-
extern char *Get_tex_preview_pagestyle(VALUE fmkr);
|
784
|
-
extern double Get_tex_xoffset(VALUE fmkr);
|
785
|
-
extern double Get_tex_yoffset(VALUE fmkr);
|
786
|
-
|
787
|
-
extern char *Get_tex_preview_paper_width(VALUE fmkr);
|
788
|
-
extern char *Get_tex_preview_paper_height(VALUE fmkr);
|
789
|
-
extern char *Get_tex_preview_hoffset(VALUE fmkr);
|
790
|
-
extern char *Get_tex_preview_voffset(VALUE fmkr);
|
791
|
-
extern char *Get_tex_preview_figure_width(VALUE fmkr);
|
792
|
-
extern char *Get_tex_preview_figure_height(VALUE fmkr);
|
793
|
-
extern char *Get_tex_preview_minwhitespace(VALUE fmkr);
|
794
|
-
extern bool Get_tex_preview_fullpage(VALUE fmkr);
|
795
|
-
|
796
|
-
extern char *Get_tex_preview_tiogafigure_command(VALUE fmkr);
|
797
|
-
|
798
|
-
extern char *Get_tex_fontsize(VALUE fmkr);
|
799
|
-
extern char *Get_tex_fontfamily(VALUE fmkr);
|
800
|
-
extern char *Get_tex_fontseries(VALUE fmkr);
|
801
|
-
extern char *Get_tex_fontshape(VALUE fmkr);
|
802
|
-
|
803
|
-
extern char *Get_tex_preview_generated_preamble(VALUE fmkr);
|
804
|
-
|
805
722
|
#ifndef USE_P
|
806
723
|
#define USE_P p = NULL;
|
807
724
|
#endif
|
@@ -827,37 +744,5 @@ extern char *Get_tex_preview_generated_preamble(VALUE fmkr);
|
|
827
744
|
#define SIGN(a) ((a)<0 ? -1 : 1)
|
828
745
|
#endif
|
829
746
|
|
830
|
-
#define DBL_ATTR(attr) \
|
831
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return rb_float_new(p->attr); } \
|
832
|
-
static VALUE FM_##attr##_set(VALUE fmkr, VALUE val) { \
|
833
|
-
FM *p = Get_FM(fmkr); VALUE v = rb_Float(val); p->attr = NUM2DBL(v); return val; }
|
834
|
-
|
835
|
-
#define INT_ATTR(attr) \
|
836
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return INT2FIX(p->attr); } \
|
837
|
-
static VALUE FM_##attr##_set(VALUE fmkr, VALUE val) { \
|
838
|
-
FM *p = Get_FM(fmkr); VALUE v = rb_Integer(val); p->attr = NUM2INT(v); return val; }
|
839
|
-
|
840
|
-
#define VAL_ATTR(attr) \
|
841
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return p->attr; } \
|
842
|
-
static VALUE FM_##attr##_set(VALUE fmkr, VALUE val) { \
|
843
|
-
FM *p = Get_FM(fmkr); p->attr = val; return val; }
|
844
|
-
|
845
|
-
#define BOOL_ATTR(attr) \
|
846
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return (p->attr)? Qtrue : Qfalse; } \
|
847
|
-
static VALUE FM_##attr##_set(VALUE fmkr, VALUE val) { \
|
848
|
-
FM *p = Get_FM(fmkr); p->attr = (val != Qfalse); return val; }
|
849
|
-
|
850
|
-
#define RO_DBL_ATTR(attr) \
|
851
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return rb_float_new(p->attr); }
|
852
|
-
|
853
|
-
#define RO_INT_ATTR(attr) \
|
854
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return INT2FIX(p->attr); }
|
855
|
-
|
856
|
-
#define RO_VAL_ATTR(attr) \
|
857
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return p->attr; }
|
858
|
-
|
859
|
-
#define RO_BOOL_ATTR(attr) \
|
860
|
-
static VALUE FM_##attr##_get(VALUE fmkr) { FM *p = Get_FM(fmkr); return (p->attr)? Qtrue : Qfalse; }
|
861
|
-
|
862
747
|
#endif /* __figures_H__ */
|
863
748
|
|