static void composite_in_argb_mmx (uint32_t *dest, uint32_t *src, uint8_t *mask, int n) { int i; for(i=0;i<n;i++){ dest[i] = ARGB( COMPOSITE_IN(ARGB_A(src[i]), mask[i]), COMPOSITE_IN(ARGB_R(src[i]), mask[i]), COMPOSITE_IN(ARGB_G(src[i]), mask[i]), COMPOSITE_IN(ARGB_B(src[i]), mask[i])); } }
void PolyColl::Render(const Vector& xOffset, u_int ARGBfill, u_int ARGBline, const Vector* axVertices, int iNumVertices) { #define ARGB_A(u) (((u)>>24) & 0x000000FF) #define ARGB_R(u) (((u)>>16) & 0x000000FF) #define ARGB_G(u) (((u)>> 8) & 0x000000FF) #define ARGB_B(u) (((u)>> 0) & 0x000000FF) if (!axVertices) return; glPushMatrix(); glTranslatef(xOffset.x, xOffset.y, 0.0f); glColor4ub(ARGB_R(ARGBfill), ARGB_G(ARGBfill), ARGB_B(ARGBfill), ARGB_A(ARGBfill)); glBegin(GL_TRIANGLE_FAN); for(int i = 0; i < iNumVertices; i ++) { glVertex2f(axVertices[i].x, axVertices[i].y); } glVertex2f(axVertices[0].x, axVertices[0].y); glEnd(); if (ARGBline != 0) { glColor4ub(ARGB_R(ARGBline), ARGB_G(ARGBline), ARGB_B(ARGBline), ARGB_A(ARGBline)); glBegin(GL_LINE_LOOP); for(int i = 0; i < iNumVertices; i ++) { glVertex2f(axVertices[i].x, axVertices[i].y); } glVertex2f(axVertices[0].x, axVertices[0].y); glEnd(); } glPopMatrix(); }