flipVertical function

Image flipVertical(
  1. Image src
)

Flip the src image vertically.

Implementation

Image flipVertical(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 h2 = h ~/ 2;
    if (src.hasPalette) {
      for (var y = 0, y2 = h - 1; y < h2; ++y, --y2) {
        for (var x = 0; x < w; ++x) {
          final p1 = frame.getPixel(x, y);
          final p2 = frame.getPixel(x, y2);
          final t = p1.index;
          p1.index = p2.index;
          p2.index = t;
        }
      }
    } else {
      for (var y = 0, y2 = h - 1; y < h2; ++y, --y2) {
        for (var x = 0; x < w; ++x) {
          final p1 = frame.getPixel(x, y);
          final p2 = frame.getPixel(x, y2);
          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;
}