diff options
Diffstat (limited to 'otherlibs/graph/libgraph.h')
-rw-r--r-- | otherlibs/graph/libgraph.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/otherlibs/graph/libgraph.h b/otherlibs/graph/libgraph.h new file mode 100644 index 000000000..60b9f6db9 --- /dev/null +++ b/otherlibs/graph/libgraph.h @@ -0,0 +1,57 @@ +#include <stdio.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <mlvalues.h> + +struct canvas { + int w, h; /* Dimensions of the drawable */ + Drawable win; /* The drawable itself */ + GC gc; /* The associated graphics context */ +}; + +Display * grdisplay; /* The display connection */ +int grscreen; /* The screen number */ +Colormap grcolormap; /* The color map */ +struct canvas grwindow; /* The graphics window */ +struct canvas grbstore; /* The pixmap used for backing store */ +int grwhite, grblack; /* Black and white pixels */ +int grx, gry; /* Coordinates of the current point */ +unsigned long grcolor; /* Current drawing color */ +extern XFontStruct * grfont; /* Current font */ + +#define Wcvt(y) (grwindow.h - 1 - (y)) +#define Bcvt(y) (grbstore.h - 1 - (y)) +#define WtoB(y) ((y) + grbstore.h - grwindow.h) +#define min(a,b) ((a) < (b) ? (a) : (b)) +#define max(a,b) ((a) > (b) ? (a) : (b)) + +#define DEFAULT_SCREEN_WIDTH 600 +#define DEFAULT_SCREEN_HEIGHT 450 +#define BORDER_WIDTH 2 +#define WINDOW_NAME "Caml Light graphics" +#define ICON_NAME "Caml Light graphics" +#define DEFAULT_EVENT_MASK \ + (ExposureMask | KeyPressMask | StructureNotifyMask) +#define DEFAULT_FONT "fixed" +#define SIZE_QUEUE 256 + +/* To handle events asynchronously */ +#ifdef HAS_ASYNC_IO +#define USE_ASYNC_IO +#define EVENT_SIGNAL SIGIO +#else +#ifdef HAS_SETITIMER +#define USE_INTERVAL_TIMER +#define EVENT_SIGNAL SIGALRM +#else +#define USE_ALARM +#define EVENT_SIGNAL SIGALRM +#endif +#endif + +void gr_fail(); +void gr_check_open(); +unsigned long gr_pixel_rgb(); +int gr_rgb_pixel(); +void gr_handle_simple_event(); +void gr_enqueue_char(); |