source: project/release/4/g2/trunk/g2.scm @ 25836

Last change on this file since 25836 was 25836, checked in by Mario Domenech Goulart, 9 years ago

g2: stubs for gd-related procedures for when libgd is not available.

File size: 7.8 KB
Line 
1(module g2
2
3  (qpcirc qprect g2:poly-line g2:set-background g2:arc g2:filled-arc
4   g2:ld g2:set-ld g2:string g2:set-qp g2:set-coordinate-system
5   g2:set-dash g2:close g2:move-r g2:line-to g2:pen g2:flush
6   g2:set-line-width g2:clear g2:set-auto-flush g2:allocate-basic-colors
7   g2:image g2:detach g2:polygon g2:filled-polygon g2:open-vd g2:plot
8   g2:reset-palette g2:clear-palette g2:spline g2:b-spline
9   g2:filled-spline g2:filled-b-spline g2:set-font-size g2:plot-r g2:save
10   g2:move g2:ink g2:raspln g2:filled-raspln g2:attach g2:line
11   g2:triangle g2:filled-triangle g2:circle g2:filled-circle g2:rectangle
12   g2:filled-rectangle g2:ellipse g2:filled-ellipse g2:line g2:para-3
13   g2:para-5 g2:filled-para-3 g2:filled-para-5 g2:plot-qp
14   g2:query-pointer g2:ps-land g2:ps-port g2:a0 g2:a1 g2:a2 g2:a3 g2:a4
15   g2:a5 g2:a6 g2:a7 g2:a8 g2:a9 g2:b0 g2:b1 g2:b2 g2:b3 g2:b4 g2:b5
16   g2:b6 g2:b7 g2:b8 g2:b9 g2:b10 g2:dl-envelope g2:c5-envelope
17   g2:comm-10-envelope g2:folio g2:executive g2:legal g2:letter g2:ledger
18   g2:tabloid g2:ps-epsf g2:ps-epsf-clip g2:ps-post-script g2:open-ps
19   g2:open-epsf g2:open-epsf-clip g2:open-fig g2:gd-jpeg g2:gd-png
20   g2:open-gd g2:open-x11 g2:open-x11x)
21
22(import chicken scheme foreign)
23(use easyffi)
24 
25#>
26#include <g2.h>
27#include <g2_PS.h>
28#include <g2_FIG.h>
29<#
30
31#>?
32___declare(default_renaming, "")
33___declare(substitute, "g2-;g2:")
34___declare(export_constants, yes)
35
36enum QPshape {
37    QPrect, /**< rectangular quasi pixel */
38    QPcirc  /**< circle as a quasi pixel */
39};
40
41int  g2_open_vd(void);
42void g2_attach(int vd_dev, int dev);
43void g2_detach(int vd_dev, int dev);
44
45void g2_close(int dev);
46void g2_set_auto_flush(int dev, ___bool on_off);
47void g2_flush(int dev);
48void g2_save(int dev);
49void g2_set_coordinate_system(int dev, double x_origin, double y_origin,
50                              double x_mul,    double y_mul);
51
52int  g2_ld();
53void g2_set_ld(int dev);
54
55int  g2_ink(int pd_dev, double red, double green, double blue);
56void g2_pen(int dev, int color);
57void g2_set_dash(int dev, int N, double *dashes);
58void g2_set_font_size(int dev, double size);
59void g2_set_line_width(int dev, double w);
60void g2_clear_palette(int dev);
61void g2_reset_palette(int dev);
62void g2_allocate_basic_colors(int dev);
63
64void g2_clear(int dev);
65void g2_set_background(int dev, int color);
66
67void g2_move(int dev, double x, double y);
68void g2_move_r(int dev, double dx, double dy);
69
70void g2_plot(int dev, double x, double y);
71void g2_plot_r(int dev, double dx, double dy);
72void g2_line(int dev, double x1, double y1, double x2, double y2);
73void g2_line_r(int dev, double dx, double dy);
74void g2_line_to(int dev, double x, double y);
75void g2_poly_line(int dev, int N_pt, double *points);
76void g2_triangle(int dev, double x1, double y1,
77                 double x2, double y2,
78                 double x3, double y3);
79void g2_filled_triangle(int dev, double x1, double y1,
80                        double x2, double y2,
81                        double x3, double y3);
82void g2_rectangle(int dev, double x1, double y1, double x2, double y2);
83void g2_filled_rectangle(int dev,
84                             double x1, double y1, double x2, double y2);
85void g2_polygon(int dev, int N_pt, double *points);
86void g2_filled_polygon(int dev, int N_pt, double *points);
87void g2_circle(int dev, double x, double y, double r);
88void g2_filled_circle(int dev, double x, double y, double r);
89void g2_ellipse(int dev, double x, double y, double r1, double r2);
90void g2_filled_ellipse(int dev, double x, double y, double r1, double r2);
91void g2_arc(int dev,
92            double x, double y,
93            double r1, double r2,
94            double a1, double a2);
95void g2_filled_arc(int dev, double x, double y,
96                   double r1, double r2,
97                   double a1, double a2);
98void g2_string(int dev, double x, double y, const char *text);
99void g2_image(int dev,
100                  double x, double y, int x_size, int y_size, int *pens);
101
102void g2_set_QP(int dev, double d, enum QPshape shape);
103void g2_plot_QP(int dev, double x, double y);
104void g2_query_pointer(int dev, ___out double *x, ___out double *y, ___out unsigned int *button);
105   
106void g2_spline(int id, int n, double *points, int o);
107void g2_b_spline(int id, int n, double *points, int o);
108void g2_raspln(int id, int n, double *points, double tn);
109void g2_para_3(int id, int n, double *points);
110void g2_para_5(int id, int n, double *points);
111void g2_filled_spline(int id, int n, double *points, int o);
112void g2_filled_b_spline(int id, int n, double *points, int o);
113void g2_filled_raspln(int id, int n, double *points, double tn);
114void g2_filled_para_3(int id, int n, double *points);
115void g2_filled_para_5(int id, int n, double *points);
116
117
118int g2_open_FIG(const char *file_name);
119<#
120
121#+have-x11
122#>
123#include <g2_X11.h>
124<#
125
126#+have-x11
127#>?
128int g2_open_X11(int width, int height);
129
130int g2_open_X11X(int width, int height,
131                 int x, int y,
132                 char *window_name, char *icon_name,
133                 unsigned ___byte *icon_data,
134                 int icon_width, int icon_height);
135<#
136
137#>?
138/**
139 *  g2 paper type.
140 *
141 * \ingroup PS
142 */
143enum g2_PS_paper {              /*      Name           Size(Pt)   */
144 g2_A0,                         /**< A0                 2384 x 3370 */
145 g2_A1,                         /**< A1                 1684 x 2384 */
146 g2_A2,                         /**< A2                 1191 x 1684 */
147 g2_A3,                         /**< A3                  842 x 1191 */
148 g2_A4,                         /**< A4                  595 x  842 */
149 g2_A5,                         /**< A5                  420 x  595 */
150 g2_A6,                         /**< A6                  297 x  420 */
151 g2_A7,                         /**< A7                  210 x  297 */
152 g2_A8,                         /**< A8                  148 x  210 */
153 g2_A9,                         /**< A9                  105 x  148 */
154 g2_B0,                         /**< B0                 2920 x 4127 */
155 g2_B1,                         /**< B1                 2064 x 2920 */
156 g2_B2,                         /**< B2                 1460 x 2064 */
157 g2_B3,                         /**< B3                 1032 x 1460 */
158 g2_B4,                         /**< B4                  729 x 1032 */
159 g2_B5,                         /**< B5                  516 x  729 */
160 g2_B6,                         /**< B6                  363 x  516 */
161 g2_B7,                         /**< B7                  258 x  363 */
162 g2_B8,                         /**< B8                  181 x  258 */
163 g2_B9,                         /**< B9                  127 x  181 */
164 g2_B10,                        /**< B10                  91 x  127 */
165 g2_Comm_10_Envelope,           /**< Comm #10 Envelope   297 x  684 */
166 g2_C5_Envelope,                /**< C5 Envelope         461 x  648 */
167 g2_DL_Envelope,                /**< DL Envelope         312 x  624 */
168 g2_Folio,                      /**< Folio               595 x  935 */
169 g2_Executive,                  /**< Executive           522 x  756 */
170 g2_Letter,                     /**< Letter              612 x  792 */
171 g2_Legal,                      /**< Legal               612 x 1008 */
172 g2_Ledger,                     /**< Ledger             1224 x  792 */
173 g2_Tabloid                     /**< Tabloid             792 x 1224 */
174};
175
176   
177/**
178 *  g2 paper orientation.
179 *
180 * \ingroup PS
181 */
182enum g2_PS_orientation {
183    g2_PS_land,                 /**< landscape */
184    g2_PS_port                  /**< portrait */
185};
186
187/*
188 *  g2 Format
189 */
190enum g2_PS_format {
191    g2_PS_PostScript,                   /* PostScript  */
192    g2_PS_EPSF,                         /* EPSF format */
193    g2_PS_EPSF_CLIP                     /* EPSF format with predefined Bounding Box*/
194};
195
196int g2_open_PS(const char *file_name,
197                   enum g2_PS_paper paper,
198                   enum g2_PS_orientation orientation);
199
200int g2_open_EPSF(const char *file_name);
201
202int g2_open_EPSF_CLIP(const char *file_name,
203                        long width, long height);
204
205<#
206
207#+have-gd
208#>
209#include <g2_gd.h>
210<#
211#+have-gd
212#>?
213enum g2_gd_type {
214    g2_gd_jpeg = 0,     /**< jpeg */
215    g2_gd_png  = 1      /**< png */
216};
217
218
219int  g2_open_gd(const char *filename, int width, int height,enum g2_gd_type gd_type);
220<#
221
222(cond-expand 
223 ((not have-gd)
224  (define (stub loc)
225    (lambda _
226      (error loc "This procedure requires libgd to be installed")))
227  (define g2:gd-png (stub 'g2:gd-png))
228  (define g2:gd-jpeg (stub 'g2:gd-jpeg))
229  (define g2:open-gd (stub 'g2:open-gd))))
230
231); end module
Note: See TracBrowser for help on using the repository browser.