colorTransform method
Implementation
void colorTransform(Rectangle<num> rectangle, ColorTransform transform) {
final isLittleEndianSystem = env.isLittleEndianSystem;
final redMultiplier = (1024 * transform.redMultiplier).toInt();
final greenMultiplier = (1024 * transform.greenMultiplier).toInt();
final blueMultiplier = (1024 * transform.blueMultiplier).toInt();
final alphaMultiplier = (1024 * transform.alphaMultiplier).toInt();
final redOffset = transform.redOffset;
final greenOffset = transform.greenOffset;
final blueOffset = transform.blueOffset;
final alphaOffset = transform.alphaOffset;
final mulitplier0 = isLittleEndianSystem ? redMultiplier : alphaMultiplier;
final mulitplier1 = isLittleEndianSystem ? greenMultiplier : blueMultiplier;
final mulitplier2 = isLittleEndianSystem ? blueMultiplier : greenMultiplier;
final mulitplier3 = isLittleEndianSystem ? alphaMultiplier : redMultiplier;
final offset0 = isLittleEndianSystem ? redOffset : alphaOffset;
final offset1 = isLittleEndianSystem ? greenOffset : blueOffset;
final offset2 = isLittleEndianSystem ? blueOffset : greenOffset;
final offset3 = isLittleEndianSystem ? alphaOffset : redOffset;
final renderTextureQuad = bitmapData.renderTextureQuad.cut(rectangle);
final imageData = renderTextureQuad.getImageData();
final data = imageData.data;
for (var i = 0; i <= data.length - 4; i += 4) {
final c0 = data[i + 0];
final c1 = data[i + 1];
final c2 = data[i + 2];
final c3 = data[i + 3];
data[i + 0] = offset0 + (((c0 * mulitplier0) | 0) >> 10);
data[i + 1] = offset1 + (((c1 * mulitplier1) | 0) >> 10);
data[i + 2] = offset2 + (((c2 * mulitplier2) | 0) >> 10);
data[i + 3] = offset3 + (((c3 * mulitplier3) | 0) >> 10);
}
renderTextureQuad.putImageData(imageData);
}