ref: 82b046f36f8084a22bbb5d71edd0edd9179561eb
dir: /os/sa1110/gscreen.h/
typedef struct Cursor Cursor;
typedef struct LCDmode LCDmode;
typedef struct LCDparam LCDparam;
typedef struct Vmode Vmode;
typedef struct Physdisplay Physdisplay;
typedef struct Physcursor Physcursor;
#define CURSWID 16
#define CURSHGT 16
struct Cursor {
Point offset;
uchar clr[CURSWID/BI2BY*CURSHGT];
uchar set[CURSWID/BI2BY*CURSHGT];
};
struct Vmode {
int x; /* 0 -> default or any match for all fields */
int y;
uchar depth;
uchar hz;
};
struct Physdisplay {
uchar* fb; /* frame buffer */
ulong colormap[256][3];
Rectangle r;
int bwid;
void* aux;
Memimage* gscreen;
Memsubfont* memdefont;
Physcursor* cursor;
void* cdata; /* cursor data */
Lock;
Vmode;
};
struct LCDparam {
uchar pbs;
uchar dual;
uchar mono;
uchar active;
uchar hsync_wid;
uchar sol_wait;
uchar eol_wait;
uchar vsync_hgt;
uchar sof_wait;
uchar eof_wait;
uchar lines_per_int;
uchar palette_delay;
uchar acbias_lines;
uchar obits;
uchar vsynclow;
uchar hsynclow;
};
struct LCDmode {
Vmode;
LCDparam;
};
int archlcdmode(LCDmode*);
Vdisplay *lcd_init(LCDmode*);
void lcd_setcolor(ulong, ulong, ulong, ulong);
void lcd_flush(void);
extern void blankscreen(int);
extern void drawblankscreen(int);
extern ulong blanktime;
extern Point mousexy(void);
enum {
Backgnd = 0xFF, /* white */
Foregnd = 0x00, /* black */
};
struct Physcursor {
char* name;
void (*create)(Physdisplay*);
void (*enable)(Physdisplay*);
void (*disable)(Physdisplay*);
void (*load)(Physdisplay*, Cursor*);
int (*move)(Physdisplay*, Point);
void (*destroy)(Physdisplay*);
};