|
@@ -177,23 +177,29 @@ OLIVECDEF Olivec_Canvas olivec_subcanvas(Olivec_Canvas oc, int x, int y, int w,
|
|
return oc;
|
|
return oc;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#define OLIVEC_RED(color) (((color)&0x000000FF)>>(8*0))
|
|
|
|
+#define OLIVEC_GREEN(color) (((color)&0x0000FF00)>>(8*1))
|
|
|
|
+#define OLIVEC_BLUE(color) (((color)&0x00FF0000)>>(8*2))
|
|
|
|
+#define OLIVEC_ALPHA(color) (((color)&0xFF000000)>>(8*3))
|
|
|
|
+#define OLIVEC_RGBA(r, g, b, a) ((((r)&0xFF)<<(8*0)) | (((g)&0xFF)<<(8*1)) | (((b)&0xFF)<<(8*2)) | (((a)&0xFF)<<(8*3)))
|
|
|
|
+
|
|
OLIVECDEF void olivec_blend_color(uint32_t *c1, uint32_t c2)
|
|
OLIVECDEF void olivec_blend_color(uint32_t *c1, uint32_t c2)
|
|
{
|
|
{
|
|
- uint32_t r1 = ((*c1)>>(0*8))&0xFF;
|
|
|
|
- uint32_t g1 = ((*c1)>>(1*8))&0xFF;
|
|
|
|
- uint32_t b1 = ((*c1)>>(2*8))&0xFF;
|
|
|
|
- uint32_t a1 = ((*c1)>>(3*8))&0xFF;
|
|
|
|
|
|
+ uint32_t r1 = OLIVEC_RED(*c1); // ((*c1)>>(0*8))&0xFF;
|
|
|
|
+ uint32_t g1 = OLIVEC_GREEN(*c1); // ((*c1)>>(1*8))&0xFF;
|
|
|
|
+ uint32_t b1 = OLIVEC_BLUE(*c1); // ((*c1)>>(2*8))&0xFF;
|
|
|
|
+ uint32_t a1 = OLIVEC_ALPHA(*c1); // ((*c1)>>(3*8))&0xFF;
|
|
|
|
|
|
- uint32_t r2 = (c2>>(0*8))&0xFF;
|
|
|
|
- uint32_t g2 = (c2>>(1*8))&0xFF;
|
|
|
|
- uint32_t b2 = (c2>>(2*8))&0xFF;
|
|
|
|
- uint32_t a2 = (c2>>(3*8))&0xFF;
|
|
|
|
|
|
+ uint32_t r2 = OLIVEC_RED(c2); //(c2>>(0*8))&0xFF;
|
|
|
|
+ uint32_t g2 = OLIVEC_GREEN(c2); //(c2>>(1*8))&0xFF;
|
|
|
|
+ uint32_t b2 = OLIVEC_BLUE(c2); //(c2>>(2*8))&0xFF;
|
|
|
|
+ uint32_t a2 = OLIVEC_ALPHA(c2); //(c2>>(3*8))&0xFF;
|
|
|
|
|
|
r1 = (r1*(255 - a2) + r2*a2)/255; if (r1 > 255) r1 = 255;
|
|
r1 = (r1*(255 - a2) + r2*a2)/255; if (r1 > 255) r1 = 255;
|
|
g1 = (g1*(255 - a2) + g2*a2)/255; if (g1 > 255) g1 = 255;
|
|
g1 = (g1*(255 - a2) + g2*a2)/255; if (g1 > 255) g1 = 255;
|
|
b1 = (b1*(255 - a2) + b2*a2)/255; if (b1 > 255) b1 = 255;
|
|
b1 = (b1*(255 - a2) + b2*a2)/255; if (b1 > 255) b1 = 255;
|
|
|
|
|
|
- *c1 = (r1<<(0*8)) | (g1<<(1*8)) | (b1<<(2*8)) | (a1<<(3*8));
|
|
|
|
|
|
+ *c1 = OLIVEC_RGBA(r1, g1, b1, a1);
|
|
}
|
|
}
|
|
|
|
|
|
OLIVECDEF void olivec_fill(Olivec_Canvas oc, uint32_t color)
|
|
OLIVECDEF void olivec_fill(Olivec_Canvas oc, uint32_t color)
|