/*
 * Graphic Library for Wonder Witch
 */

#ifndef GRAPH_H
#define GRAPH_H

#define GRAPH_CHAR_WIDTH  28
#define GRAPH_CHAR_HEIGHT 18
#define GRAPH_CHAR_UNIT    8

typedef enum {
  GRAPH_DIRECT = 0,
  GRAPH_BUFFERED,
} g_mode_t;

#define GRAPH_ERR (0)
#define GRAPH_OK  (!(GRAPH_ERR))

typedef WORD g_font_t[GRAPH_CHAR_UNIT];
typedef DWORD g_cfont_t[GRAPH_CHAR_UNIT];
typedef BYTE t_font_t[GRAPH_CHAR_UNIT];

g_mode_t g_setmode(g_mode_t);
g_mode_t g_getmode(void);

int g_init(int, int);

void g_clear(void);
void g_flush(void);

void g_plot(int, int, int);
void g_line(int, int, int, int, int);
void g_box(int, int, int, int, int);
void g_box_fill(int, int, int, int, int);
void g_circle(int, int, int, int);
void g_circle_fill(int, int, int, int);
void g_oval(int, int, int, int, int);
void g_oval_fill(int, int, int, int, int);
void g_solid_line(int, int, int, int, int, int);

int g_put_char(int, int, int, int);
int g_put_string(int, int, int, char far*);
int g_put_stringn(int, int, int, char far*, int);
int g_put_numeric(int, int, int, int, int, int);

void g_save_buffer(int, int, int, int, g_font_t far*);
void g_restore_buffer(int ,int ,int, int, g_font_t far*);
#endif /* GRAPH_H */

