Exemplo n.º 1
0
/* ------------------------------------------------------------------------- */
static UINT32 alpha_add(
    UINT32 c1,
    UINT32 c2)
{
	UINT32 a1 = ALF(c1);
	UINT32 r1 = RED(c1);
	UINT32 g1 = GRN(c1);
	UINT32 b1 = BLU(c1);
	UINT32 a2 = ALF(c2);
	UINT32 r2 = RED(c2);
	UINT32 g2 = GRN(c2);
	UINT32 b2 = BLU(c2);
	UINT32 a3 = ((a1 * a1 + (255 - a1) * a2) / 255) & 0xff;
	UINT32 r3 = ((a1 * r1 + (255 - a1) * r2) / 255) & 0xff;
	UINT32 g3 = ((a1 * g1 + (255 - a1) * g2) / 255) & 0xff;
	UINT32 b3 = ((a1 * b1 + (255 - a1) * b2) / 255) & 0xff;
	return (a3 << 24) | (r3 << 16) | (g3 << 8) | b3;
}
Exemplo n.º 2
0
static int getPixel( gxCanvas *c,float x,float y ){
	debugCanvas( c );

	x-=.5f;y-=.5f;
	float fx=floor(x),fy=floor(y);
	int ix=fx,iy=fy;fx=x-fx;fy=y-fy;

	int tl=c->getPixel( ix,iy );
	int tr=c->getPixel( ix+1,iy );
	int br=c->getPixel( ix+1,iy+1 );
	int bl=c->getPixel( ix,iy+1 );

	float w1=(1-fx)*(1-fy),w2=fx*(1-fy),w3=(1-fx)*fy,w4=fx*fy;

	float r=RED(tl)*w1+RED(tr)*w2+RED(bl)*w3+RED(br)*w4;
	float g=GRN(tl)*w1+GRN(tr)*w2+GRN(bl)*w3+GRN(br)*w4;
	float b=BLU(tl)*w1+BLU(tr)*w2+BLU(bl)*w3+BLU(br)*w4;

	return (int(r+.5f)<<16)|(int(g+.5f)<<8)|int(b+.5f);
}
Exemplo n.º 3
0
/* ------------------------------------------------------------------------- */
static UINT32 colordist(
    UINT32 c1,
    UINT32 c2)
{
	int d, maxd = 0;
	d = ABS((INT32)(ALF(c1) - ALF(c2)));

	if (d > maxd) maxd = d;

	d = ABS((INT32)(RED(c1) - RED(c2)));

	if (d > maxd) maxd = d;

	d = ABS((INT32)(GRN(c1) - GRN(c2)));

	if (d > maxd) maxd = d;

	d = ABS((INT32)(BLU(c1) - BLU(c2)));

	if (d > maxd) maxd = d;

	return maxd;
}
Exemplo n.º 4
0
Arquivo: opengl.c Projeto: cheque/s3d
void col_apply_weight(double w, GLfloat *gl_c, Color col)
{
  gl_c[0] = w*RED(col); gl_c[1] = w*GRN(col); gl_c[2] = w*BLU(col);
}