[A89] clipping pixels
[Next][Index][Thread]
[A89] clipping pixels
Will this function do what it's supposed to (draw pixels only to video
memory)? It works alright, but how can I be sure that it's not secretly
screwing everything up? I ask because I'm not to familiar with pointers
and pointer arithmetic.
Jon K.
//from the extgraph library
#define EXT_PIXOFFSET(x,y) ((y<<5)-(y<<1)+(x>>3))
#define EXT_PIXADDR(p,x,y) (((unsigned char*)(p))+EXT_PIXOFFSET(x,y))
#define EXT_PIXMASK(x) ((unsigned char)(0x80 >> ((x)&7)))
#define EXT_SETPIX_AM(a,m) (*(a) |= (m))
#define EXT_CLRPIX_AM(a,m) (*(a) &= ~(m))
#define EXT_XORPIX_AM(a,m) (*(a) ^= (m))
#define EXT_GETPIX_AM(a,m) (*(a) & (m))
void SET_CLIP_PIX(int x, int y)
{
unsigned char *addr = EXT_PIXADDR(LCD_MEM,x,y);
if(((void*)addr >= LCD_MEM)&&((void*)addr <= LCD_MEM + LCD_SIZE))
EXT_SETPIX_AM(addr, EXT_PIXMASK(x));
}