ImageClip constructor

ImageClip(
  1. Dimension viewDimension,
  2. Rectangle<num>? viewClip, [
  3. Dimension? _imageDimension
])

Implementation

ImageClip(this.viewDimension, this.viewClip, [this._imageDimension]) {
  if (_imageDimension != null) {
    var wR = viewDimension.width / _imageDimension!.width;
    var hR = viewDimension.height / _imageDimension!.height;

    var r = wR < hR ? wR : hR;

    var w = (_imageDimension!.width * r).toInt();
    var h = (_imageDimension!.height * r).toInt();

    var imgViewRect = Rectangle(
      (viewDimension.width - w) / 2,
      (viewDimension.height - h) / 2,
      w,
      h,
    );

    var imgViewClip = imgViewRect.intersection(viewClip!)!;

    var rInv = 1 / r;

    var imgRect = Rectangle(
      imgViewRect.left * rInv,
      imgViewRect.top * rInv,
      imgViewRect.width * rInv,
      imgViewRect.height * rInv,
    );
    var imgClip = Rectangle(
      (imgViewClip.left * rInv).toInt(),
      (imgViewClip.top * rInv).toInt(),
      (imgViewClip.width * rInv).toInt(),
      (imgViewClip.height * rInv).toInt(),
    );

    imgClip = Rectangle(
      (imgClip.left - imgRect.left).toInt(),
      (imgClip.top - imgRect.top).toInt(),
      imgClip.width.toInt(),
      imgClip.height.toInt(),
    );

    _clip = imgClip;
  } else {
    _imageDimension = viewDimension;
    _clip = viewClip;
  }
}