[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)); 
}