paint method

  1. @override
void paint(
  1. Context context,
  2. PdfRect box
)
override

Implementation

@override
void paint(Context context, PdfRect box) {
  final _image = image.resolve(context, box.size, dpi: dpi);

  final imageSize = PdfPoint(
    _image.width.toDouble(),
    _image.height.toDouble(),
  );
  final sizes = applyBoxFit(fit, imageSize, box.size);
  final scaleX = sizes.destination!.x / sizes.source!.x;
  final scaleY = sizes.destination!.y / sizes.source!.y;
  final sourceRect = alignment.inscribe(
    sizes.source!,
    PdfRect.fromPoints(PdfPoint.zero, imageSize),
  );
  final destinationRect = alignment.inscribe(sizes.destination!, box);
  final mat =
      Matrix4.translationValues(
          destinationRect.left,
          destinationRect.bottom,
          0,
        )
        ..scaleByDouble(scaleX, scaleY, 1, 1)
        ..translateByDouble(-sourceRect.left, -sourceRect.bottom, 0, 1);

  context.canvas
    ..saveContext()
    ..drawBox(box)
    ..clipPath()
    ..setTransform(mat)
    ..drawImage(_image, 0, 0, imageSize.x, imageSize.y)
    ..restoreContext();
}