flipHorizontal function

Image flipHorizontal(
  1. Image src
)

Flip the src image horizontally.

Implementation

Image flipHorizontal(Image src) {
  final numFrames = src.numFrames;
  for (var i = 0; i < numFrames; ++i) {
    final frame = src.frames[i];
    final w = frame.width;
    final h = frame.height;
    final w2 = w ~/ 2;
    if (src.hasPalette) {
      for (var y = 0; y < h; ++y) {
        for (var x = 0, x2 = w - 1; x < w2; ++x, --x2) {
          final p1 = frame.getPixel(x, y);
          final p2 = frame.getPixel(x2, y);
          final t = p1.index;
          p1.index = p2.index;
          p2.index = t;
        }
      }
    } else {
      for (var y = 0; y < h; ++y) {
        for (var x = 0, x2 = w - 1; x < w2; ++x, --x2) {
          final p1 = frame.getPixel(x, y);
          final p2 = frame.getPixel(x2, y);
          var t = p1.r;
          p1.r = p2.r;
          p2.r = t;

          t = p1.g;
          p1.g = p2.g;
          p2.g = t;

          t = p1.b;
          p1.b = p2.b;
          p2.b = t;

          t = p1.a;
          p1.a = p2.a;
          p2.a = t;
        }
      }
    }
  }
  return src;
}