|
Author |
Topic: Blending colors (Read 2698 times) |
|
Glen Murphy
|
Blending colors
« on: Oct 30th, 2002, 10:06am » |
|
The 'blend' function takes two colours as input, and blends them according to the alpha value you supply. int blend(int org, int col, int alpha) { // org is original colour // col is colour to add // alpha is a value between 0 and 255, // where 0 makes 'col' completely opaque int r1=(org&0x0000ff); int g1=(org&0x00ff00); int b1=(org&0xff0000); int r2=(col&0x0000ff); int g2=(col&0x00ff00); int b2=(col&0xff0000); int r3=(((alpha*(r1-r2)) >>8 )+r2)&0x000000ff; int g3=(((alpha*(g1-g2)) >>8 )+g2)&0x0000ff00; int b3=(((alpha*(b1-b2)) >>8 )+b2)&0x00ff0000; return (r3)|(g3)|(b3); } // The following code shows an example of this // in action. It uses a pixel buffer because // background() can't seem to take an int value // eg 0x00ff0000 int pix[] = new int[320*320]; void setup() { size(320, 320); for(int i=0; i<320*320; i++) { pix[i] = 0xff0000; } } void loop() { for(int i=0; i<320*320; i++) { pix[i] = blend(pix[i], 0x0000ff, 254); setPixel(i%320, (int)(i/320), pix[i]); } }
|
« Last Edit: Oct 31st, 2002, 12:42am by Processing » |
|
|
|
|
|