1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
/***********************************************************************/
/* */
/* Objective Caml */
/* */
/* Jacob Navia, after Xavier Leroy */
/* */
/* Copyright 2001 Institut National de Recherche en Informatique et */
/* en Automatique. All rights reserved. This file is distributed */
/* under the terms of the GNU Library General Public License, with */
/* the special exception on linking described in file ../../LICENSE. */
/* */
/***********************************************************************/
/* $Id: libgraph.h 6553 2004-07-13 12:25:21Z xleroy $ */
#include <stdio.h>
#include <windows.h>
#include <windowsx.h>
struct canvas {
int w, h; /* Dimensions of the drawable */
HWND win; /* The drawable itself */
HDC gc; /* The associated graphics context */
};
extern HWND grdisplay; /* The display connection */
extern COLORREF grbackground;
extern BOOL grdisplay_mode; /* Display-mode flag */
extern BOOL grremember_mode; /* Remember-mode flag */
extern int grx, gry; /* Coordinates of the current point */
extern int grcolor; /* Current *CAML* drawing color (can be -1) */
extern HFONT * grfont; /* Current font */
extern BOOL direct_rgb;
extern int byte_order;
extern int bitmap_unit;
extern int bits_per_pixel;
#define Wcvt(y) (grwindow.height - 1 - (y))
#define Bcvt(y) (grwindow.height - 1 - (y))
#define WtoB(y) ((y) + WindowRect.bottom - grwindow.h)
#define DEFAULT_SCREEN_WIDTH 1024
#define DEFAULT_SCREEN_HEIGHT 768
#define BORDER_WIDTH 2
#define WINDOW_NAME "Caml graphics"
#define ICON_NAME "Caml graphics"
#define SIZE_QUEUE 256
void gr_fail(char *fmt, char *arg);
void gr_check_open(void);
CAMLprim value caml_gr_set_color(value vcolor);
// Windows specific definitions
extern RECT WindowRect;
extern int grCurrentColor;
typedef struct tagWindow {
HDC gc;
HDC gcBitmap;
HWND hwnd;
HBRUSH CurrentBrush;
HPEN CurrentPen;
DWORD CurrentColor;
int width;
int height;
int grx;
int gry;
HBITMAP hBitmap;
HFONT CurrentFont;
int CurrentFontSize;
HDC tempDC; // For image operations;
} GR_WINDOW;
extern GR_WINDOW grwindow;
HFONT CreationFont(char *name);
extern void caml_gr_init_event_queue(void);
extern void caml_gr_handle_event(UINT msg, WPARAM wParam, LPARAM lParam);
|