分类:
2008-10-15 16:40:08
//================================================================
int fclamp0255 (int nvalue) {return max (0, min (0xff, nvalue));} // 饱和到0--255
class fcobjimage
{
public :
invert () ;
adjustrgb (int r, int g, int b) ;
} ;
//================================================================
void fcobjimage::invert ()
{
if ((gethandle() == null) (colorbits() < 24))
return ;
int nspan = colorbits() / 8 ; // 每象素字节数3, 4
for (int y=0 ; y < height() ; y++)
{
byte * ppixel = getbits (y) ;
for (int x=0 ; x < width() ; x++, ppixel += nspan)
{
ppixel[0] = ~ppixel[0] ;
ppixel[1] = ~ppixel[1] ;
ppixel[2] = ~ppixel[2] ;
}
}
}
//================================================================
void fcobjimage::adjustrgb (int r, int g, int b)
{
if ((gethandle() == null) (colorbits() < 24))
return ;
int nspan = colorbits() / 8 ; // 每象素字节数3, 4
for (int y=0 ; y < height() ; y++)
{
byte * ppixel = getbits (y) ;
for (int x=0 ; x < width() ; x++, ppixel += nspan)
{
ppixel[0] = fclamp0255 (ppixel[0] + b) ;
ppixel[1] = fclamp0255 (ppixel[1] + g) ;
ppixel[2] = fclamp0255 (ppixel[2] + r) ;
}
}
}
//================================================================