(module g2 (qpcirc qprect g2:poly-line g2:set-background g2:arc g2:filled-arc g2:ld g2:set-ld g2:string g2:set-qp g2:set-coordinate-system g2:set-dash g2:close g2:move-r g2:line-to g2:pen g2:flush g2:set-line-width g2:clear g2:set-auto-flush g2:allocate-basic-colors g2:image g2:detach g2:polygon g2:filled-polygon g2:open-vd g2:plot g2:reset-palette g2:clear-palette g2:spline g2:b-spline g2:filled-spline g2:filled-b-spline g2:set-font-size g2:plot-r g2:save g2:move g2:ink g2:raspln g2:filled-raspln g2:attach g2:line g2:triangle g2:filled-triangle g2:circle g2:filled-circle g2:rectangle g2:filled-rectangle g2:ellipse g2:filled-ellipse g2:line g2:para-3 g2:para-5 g2:filled-para-3 g2:filled-para-5 g2:plot-qp g2:query-pointer g2:ps-land g2:ps-port g2:a0 g2:a1 g2:a2 g2:a3 g2:a4 g2:a5 g2:a6 g2:a7 g2:a8 g2:a9 g2:b0 g2:b1 g2:b2 g2:b3 g2:b4 g2:b5 g2:b6 g2:b7 g2:b8 g2:b9 g2:b10 g2:dl-envelope g2:c5-envelope g2:comm-10-envelope g2:folio g2:executive g2:legal g2:letter g2:ledger g2:tabloid g2:ps-epsf g2:ps-epsf-clip g2:ps-post-script g2:open-ps g2:open-epsf g2:open-epsf-clip g2:open-fig g2:gd-jpeg g2:gd-png g2:open-gd g2:open-x11 g2:open-x11x) (import chicken scheme foreign) (use easyffi) #> #include #include <# #+have-fig (foreign-declare "#include ") #>? ___declare(default_renaming, "") ___declare(substitute, "g2-;g2:") ___declare(export_constants, yes) enum QPshape { QPrect, /**< rectangular quasi pixel */ QPcirc /**< circle as a quasi pixel */ }; int g2_open_vd(void); void g2_attach(int vd_dev, int dev); void g2_detach(int vd_dev, int dev); void g2_close(int dev); void g2_set_auto_flush(int dev, ___bool on_off); void g2_flush(int dev); void g2_save(int dev); void g2_set_coordinate_system(int dev, double x_origin, double y_origin, double x_mul, double y_mul); int g2_ld(); void g2_set_ld(int dev); int g2_ink(int pd_dev, double red, double green, double blue); void g2_pen(int dev, int color); void g2_set_dash(int dev, int N, double *dashes); void g2_set_font_size(int dev, double size); void g2_set_line_width(int dev, double w); void g2_clear_palette(int dev); void g2_reset_palette(int dev); void g2_allocate_basic_colors(int dev); void g2_clear(int dev); void g2_set_background(int dev, int color); void g2_move(int dev, double x, double y); void g2_move_r(int dev, double dx, double dy); void g2_plot(int dev, double x, double y); void g2_plot_r(int dev, double dx, double dy); void g2_line(int dev, double x1, double y1, double x2, double y2); void g2_line_r(int dev, double dx, double dy); void g2_line_to(int dev, double x, double y); void g2_poly_line(int dev, int N_pt, double *points); void g2_triangle(int dev, double x1, double y1, double x2, double y2, double x3, double y3); void g2_filled_triangle(int dev, double x1, double y1, double x2, double y2, double x3, double y3); void g2_rectangle(int dev, double x1, double y1, double x2, double y2); void g2_filled_rectangle(int dev, double x1, double y1, double x2, double y2); void g2_polygon(int dev, int N_pt, double *points); void g2_filled_polygon(int dev, int N_pt, double *points); void g2_circle(int dev, double x, double y, double r); void g2_filled_circle(int dev, double x, double y, double r); void g2_ellipse(int dev, double x, double y, double r1, double r2); void g2_filled_ellipse(int dev, double x, double y, double r1, double r2); void g2_arc(int dev, double x, double y, double r1, double r2, double a1, double a2); void g2_filled_arc(int dev, double x, double y, double r1, double r2, double a1, double a2); void g2_string(int dev, double x, double y, const char *text); void g2_image(int dev, double x, double y, int x_size, int y_size, int *pens); void g2_set_QP(int dev, double d, enum QPshape shape); void g2_plot_QP(int dev, double x, double y); void g2_query_pointer(int dev, ___out double *x, ___out double *y, ___out unsigned int *button); void g2_spline(int id, int n, double *points, int o); void g2_b_spline(int id, int n, double *points, int o); void g2_raspln(int id, int n, double *points, double tn); void g2_para_3(int id, int n, double *points); void g2_para_5(int id, int n, double *points); void g2_filled_spline(int id, int n, double *points, int o); void g2_filled_b_spline(int id, int n, double *points, int o); void g2_filled_raspln(int id, int n, double *points, double tn); void g2_filled_para_3(int id, int n, double *points); void g2_filled_para_5(int id, int n, double *points); <# #+have-x11 #> #include <# #+have-x11 #>? int g2_open_X11(int width, int height); int g2_open_X11X(int width, int height, int x, int y, char *window_name, char *icon_name, unsigned ___byte *icon_data, int icon_width, int icon_height); <# #+have-fig #>? int g2_open_FIG(const char *file_name); <# (cond-expand ((not have-fig) (define (stub loc) (lambda _ (error loc "This procedure requires FIG support in libg2"))) (define g2:open-fig (stub 'g2:open-FIG))) (else)) (cond-expand ((not have-x11) (define (stub loc) (lambda _ (error loc "This procedure requires libX11 to be installed"))) (define g2:open-x11 (stub 'g2:open-x11)) (define g2:open-x11x (stub 'g2:open-x11x))) (else)) #>? /** * g2 paper type. * * \ingroup PS */ enum g2_PS_paper { /* Name Size(Pt) */ g2_A0, /**< A0 2384 x 3370 */ g2_A1, /**< A1 1684 x 2384 */ g2_A2, /**< A2 1191 x 1684 */ g2_A3, /**< A3 842 x 1191 */ g2_A4, /**< A4 595 x 842 */ g2_A5, /**< A5 420 x 595 */ g2_A6, /**< A6 297 x 420 */ g2_A7, /**< A7 210 x 297 */ g2_A8, /**< A8 148 x 210 */ g2_A9, /**< A9 105 x 148 */ g2_B0, /**< B0 2920 x 4127 */ g2_B1, /**< B1 2064 x 2920 */ g2_B2, /**< B2 1460 x 2064 */ g2_B3, /**< B3 1032 x 1460 */ g2_B4, /**< B4 729 x 1032 */ g2_B5, /**< B5 516 x 729 */ g2_B6, /**< B6 363 x 516 */ g2_B7, /**< B7 258 x 363 */ g2_B8, /**< B8 181 x 258 */ g2_B9, /**< B9 127 x 181 */ g2_B10, /**< B10 91 x 127 */ g2_Comm_10_Envelope, /**< Comm #10 Envelope 297 x 684 */ g2_C5_Envelope, /**< C5 Envelope 461 x 648 */ g2_DL_Envelope, /**< DL Envelope 312 x 624 */ g2_Folio, /**< Folio 595 x 935 */ g2_Executive, /**< Executive 522 x 756 */ g2_Letter, /**< Letter 612 x 792 */ g2_Legal, /**< Legal 612 x 1008 */ g2_Ledger, /**< Ledger 1224 x 792 */ g2_Tabloid /**< Tabloid 792 x 1224 */ }; /** * g2 paper orientation. * * \ingroup PS */ enum g2_PS_orientation { g2_PS_land, /**< landscape */ g2_PS_port /**< portrait */ }; /* * g2 Format */ enum g2_PS_format { g2_PS_PostScript, /* PostScript */ g2_PS_EPSF, /* EPSF format */ g2_PS_EPSF_CLIP /* EPSF format with predefined Bounding Box*/ }; int g2_open_PS(const char *file_name, enum g2_PS_paper paper, enum g2_PS_orientation orientation); int g2_open_EPSF(const char *file_name); int g2_open_EPSF_CLIP(const char *file_name, long width, long height); <# #+have-gd #> #include <# #+have-gd #>? enum g2_gd_type { g2_gd_jpeg = 0, /**< jpeg */ g2_gd_png = 1 /**< png */ }; int g2_open_gd(const char *filename, int width, int height,enum g2_gd_type gd_type); <# (cond-expand ((not have-gd) (define (stub loc) (lambda _ (error loc "This procedure requires libgd to be installed"))) (define g2:gd-png (stub 'g2:gd-png)) (define g2:gd-jpeg (stub 'g2:gd-jpeg)) (define g2:open-gd (stub 'g2:open-gd))) (else)) ); end module