#ifndef HEADER_GDRAW_H
#define HEADER_GDRAW_H

#include <stdio.h>
#include <assert.h>
#include <pthread.h>
#include <X11/Xlib.h>
#include <libguile.h>

typedef enum { false, true } bool;

// gdraw variables which give access to the window
extern Display*  gd_display;
extern Window    gd_window;
extern Drawable  gd_drawable;
extern GC        gd_gc;
extern GC        gd_window_gc;
extern Visual*   gd_visual;
extern int       gd_screen;
extern int       gd_init;
extern XSetWindowAttributes gd_attributes;
extern unsigned long gd_attributemask;
extern int       gd_use_doublebuffer;
extern int       gd_mouse_x;
extern int       gd_mouse_y;
extern pthread_t    gd_thread_id;

void  gd_check_init();
void  gd_clear_screen ();
void  gd_flip_screen ();
void  gd_no_init_error ();

void  gd_init_screen (int width, int height, bool doublebuffer);
int   gd_get_width ();
int   gd_get_height ();
void  gd_clear_screen ();
void  gd_flip_screen ();
void  gd_set_fg_color (int color);
int   gd_get_mouse_x ();
int   gd_get_mouse_y ();
int   gd_get_mouse_button (int number);
void  gd_set_bg_color (int color);
void  gd_flush_screen ();
void  gd_sync_screen ();
void  gd_draw_rect (int x1, int y1, int width, int height, bool fill);
void  gd_draw_line (int x1, int y1, int x2, int y2); 
void  gd_draw_string (int x, int y, const char* str);

#endif /* HEADER_GDRAW_H */

/* EOF */

