2008-12-03 05:40:16 +00:00
|
|
|
#ifndef PIXEL_H
|
|
|
|
#define PIXEL_H
|
|
|
|
|
|
|
|
#define LINEBYTES (((NUM_COLS-1)/8)+1)
|
|
|
|
|
|
|
|
extern unsigned char shl_table[];
|
|
|
|
extern unsigned char pixmap[NUMPLANE][NUM_ROWS][LINEBYTES];
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
unsigned char x;
|
|
|
|
unsigned char y;
|
|
|
|
} pixel;
|
|
|
|
|
|
|
|
|
2011-02-23 10:34:41 +00:00
|
|
|
typedef enum {up, right, down, left} direction;
|
2008-12-03 05:40:16 +00:00
|
|
|
typedef struct {
|
|
|
|
pixel pos;
|
|
|
|
direction dir;
|
|
|
|
enum{clear=0, set=1} mode;
|
|
|
|
} cursor;
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
* Pixel routines
|
|
|
|
*/
|
2011-02-23 10:34:41 +00:00
|
|
|
|
|
|
|
unsigned char get_pixel(pixel p);
|
|
|
|
|
|
|
|
static inline pixel next_pixel(pixel pix, direction dir){
|
|
|
|
static char const nDelta[] = {0, -1, 0, 1, 0};
|
|
|
|
return (pixel){pix.x + nDelta[dir], pix.y + nDelta[dir + 1]};
|
|
|
|
}
|
|
|
|
|
2011-02-24 23:13:01 +00:00
|
|
|
|
2011-02-23 10:34:41 +00:00
|
|
|
static inline unsigned char get_next_pixel(pixel p, direction dir){
|
|
|
|
return get_pixel(next_pixel(p, dir));
|
|
|
|
}
|
|
|
|
|
2011-02-24 23:13:01 +00:00
|
|
|
|
2011-02-23 10:34:41 +00:00
|
|
|
static inline direction direction_r(direction dir){
|
|
|
|
return (dir + 1) % 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-12-03 05:40:16 +00:00
|
|
|
void clear_screen(unsigned char value);
|
|
|
|
|
2009-02-18 22:26:46 +00:00
|
|
|
|
2011-02-24 23:13:01 +00:00
|
|
|
void setpixel(pixel p, unsigned char value);
|
|
|
|
#define clearpixel(p) setpixel(p, 0);
|
2009-02-18 22:26:46 +00:00
|
|
|
|
|
|
|
|
2008-12-03 05:40:16 +00:00
|
|
|
void shift_pixmap_l();
|
|
|
|
|
|
|
|
|
2011-02-23 10:34:41 +00:00
|
|
|
static inline void set_cursor(cursor* cur, pixel p){
|
|
|
|
cur->pos = p;
|
|
|
|
setpixel(p, cur->mode ? 3 : 0);
|
|
|
|
}
|
2008-12-03 05:40:16 +00:00
|
|
|
|
|
|
|
#endif // PIXEL_H
|