 /* 
  * UAE - The Un*x Amiga Emulator
  * 
  * Interface to the graphics system (X, SVGAlib)
  * 
  * (c) 1995 Bernd Schmidt
  */

typedef long int xcolnr;

typedef (*allocfunc_type)(int, int, int, xcolnr *);

extern xcolnr xcolors[4096];

extern int buttonstate[3];
extern int newmousecounters;
extern int lastmx, lastmy;

extern int graphics_init(void);
extern void graphics_leave(void);
extern void handle_events(void);
extern void setup_brkhandler(void);

extern void flush_line(int);
extern void flush_block(int, int);
extern void flush_screen(int, int);
extern void calc_adjustment(void);

extern int debuggable(void);
extern int needmousehack(void);
extern void togglemouse(void);
extern void LED(int);

extern unsigned long doMask(int p, int bits, int shift);
extern void alloc_colors256(int (*)(int, int, int, xcolnr *));
extern void alloc_colors64k(int, int, int, int, int, int);
extern void setup_greydither(int bits, allocfunc_type allocfunc);
extern void setup_dither(int bits, allocfunc_type allocfunc);
#ifndef X86_ASSEMBLY
extern void DitherLine(UBYTE *l, UWORD *r4g4b4, int x, int y, UWORD len, int bits);
#else
extern void DitherLine(UBYTE *l, UWORD *r4g4b4, int x, int y, UWORD len, int bits) __asm__("DitherLine");
#endif

struct vidbuf_description
{
    char *bufmem;
    int rowbytes;
    int pixbytes;
    int maxblocklines;
    int maxlinetoscr;
    int x_adjust;
    int maxline;
};

extern struct vidbuf_description gfxvidinfo;
