rem: unsigned long r, g, b, dr, dg, db;
add: long r, g, b, dr, dg, db;
context: renderHGradient(unsigned width, unsigned height, int r0, int g0, int b0, 		int rf, int gf, int bf){        int i;    unsigned long r, g, b, dr, dg, db;    unsigned lineSize = width*3;    RImage *image;    unsigned char *ptr;    image = RCreateImage(width, height, False);    if (!image) {	return NULL;    }    ptr = image->data;    r = r0 << 16;    g = g0 << 16;    b = b0 << 16;        dr = ((rf-r0)<<16)/(int)width;    dg = ((gf-g0)<<16)/(int)width;    db = ((bf-b0)<<16)/(int)width;    /* render the first line */    for (i=0; i<width; i++) {	*(ptr++) = (unsigned char)(r>>16);	*(ptr++) = (unsigned char)(g>>16);	*(ptr++) = (unsigned char)(b>>16);	r += dr;	g += dg;	b += db;    }    /* copy the first line to the other lines */    for (i=1; i<height; i++) {	memcpy(&(image->data[i*lineSize]), image->data, lineSize);    }    return image;}