import '../color.dart'; | |
import '../image.dart'; | |
/** | |
* Remap the color channels of the image. | |
* [red], [green], [blue] and [alpha] should be set to one of the following: | |
* [RED], [GREEN], [BLUE] or [ALPHA]. For example, | |
* remapColors(src, red: GREEN, green: RED); | |
* will swap the red and green channels of the image. | |
*/ | |
Image remapColors(Image src, | |
{int red: RED, | |
int green: GREEN, | |
int blue: BLUE, | |
int alpha: ALPHA}) { | |
List<int> l = [0, 0, 0, 0, 0]; | |
var p = src.getBytes(); | |
for (int i = 0, len = p.length; i < len; i += 4) { | |
l[0] = p[i]; | |
l[1] = p[i + 1]; | |
l[2] = p[i + 2]; | |
l[3] = p[i + 3]; | |
if (red == LUMINANCE || green == LUMINANCE || blue == LUMINANCE || | |
alpha == LUMINANCE) { | |
l[4] = getLuminanceRGB(l[0], l[1], l[2]); | |
} | |
p[i] = l[red]; | |
p[i + 1] = l[green]; | |
p[i + 2] = l[blue]; | |
p[i + 3] = l[alpha]; | |
} | |
return src; | |
} |