getPixel32 method

int getPixel32(
  1. num x,
  2. num y
)

Implementation

int getPixel32(num x, num y) {
  var r = 0, g = 0, b = 0, a = 0;

  final rectangle = Rectangle<num>(x, y, 1, 1);
  final renderTextureQuad = bitmapData.renderTextureQuad.clip(rectangle);
  if (renderTextureQuad.sourceRectangle.isEmpty) return Color.Transparent;

  final isLittleEndianSystem = env.isLittleEndianSystem;
  final imageData = renderTextureQuad.getImageData();
  final pixels = imageData.width * imageData.height;
  final data = imageData.data;

  for (var i = 0; i <= data.length - 4; i += 4) {
    r += isLittleEndianSystem ? data[i + 0] : data[i + 3];
    g += isLittleEndianSystem ? data[i + 1] : data[i + 2];
    b += isLittleEndianSystem ? data[i + 2] : data[i + 1];
    a += isLittleEndianSystem ? data[i + 3] : data[i + 0];
  }

  r = r ~/ pixels;
  g = g ~/ pixels;
  b = b ~/ pixels;
  a = a ~/ pixels;

  return (a << 24) + (r << 16) + (g << 8) + b;
}