rotateLayer method

void rotateLayer({
  1. required Layer layer,
  2. required bool beforeIsFlipX,
  3. required double newImgW,
  4. required double newImgH,
  5. required double rotationScale,
  6. required double rotationRadian,
  7. required double rotationAngle,
})

Rotate a layer.

This method rotates a layer based on various factors, including flip and angle.

Implementation

void rotateLayer({
  required Layer layer,
  required bool beforeIsFlipX,
  required double newImgW,
  required double newImgH,
  required double rotationScale,
  required double rotationRadian,
  required double rotationAngle,
}) {
  if (beforeIsFlipX) {
    layer.rotation -= rotationRadian;
  } else {
    layer.rotation += rotationRadian;
  }

  if (rotationAngle == 90) {
    layer.scale /= rotationScale;
    layer.offset = Offset(
      newImgW - layer.offset.dy / rotationScale,
      layer.offset.dx / rotationScale,
    );
  } else if (rotationAngle == 180) {
    layer.offset = Offset(
      newImgW - layer.offset.dx,
      newImgH - layer.offset.dy,
    );
  } else if (rotationAngle == 270) {
    layer.scale /= rotationScale;
    layer.offset = Offset(
      layer.offset.dy / rotationScale,
      newImgH - layer.offset.dx / rotationScale,
    );
  }
}