resolveRect method

PdfTopLeftRect resolveRect(
  1. PdfCoordinateTransformer transformer,
  2. PdfPoint size
)

Area taken up by the stamp, in "top-left" coordinates.

Implementation

PdfTopLeftRect resolveRect(
  PdfCoordinateTransformer transformer,
  PdfPoint size,
) {
  final origin = position;
  if (origin != null) {
    return PdfTopLeftRect(origin.x, origin.y, size.x, size.y);
  }

  final available = PdfPoint(
    transformer.displayWidth,
    transformer.displayHeight,
  );

  final double left;
  switch (anchor) {
    case PdfStampAnchor.topLeft:
    case PdfStampAnchor.centerLeft:
    case PdfStampAnchor.bottomLeft:
      left = marginX;
    case PdfStampAnchor.topCenter:
    case PdfStampAnchor.center:
    case PdfStampAnchor.bottomCenter:
      left = (available.x - size.x) / 2;
    case PdfStampAnchor.topRight:
    case PdfStampAnchor.centerRight:
    case PdfStampAnchor.bottomRight:
      left = available.x - size.x - marginX;
  }

  final double top;
  switch (anchor) {
    case PdfStampAnchor.topLeft:
    case PdfStampAnchor.topCenter:
    case PdfStampAnchor.topRight:
      top = marginY;
    case PdfStampAnchor.centerLeft:
    case PdfStampAnchor.center:
    case PdfStampAnchor.centerRight:
      top = (available.y - size.y) / 2;
    case PdfStampAnchor.bottomLeft:
    case PdfStampAnchor.bottomCenter:
    case PdfStampAnchor.bottomRight:
      top = available.y - size.y - marginY;
  }

  return PdfTopLeftRect(left, top, size.x, size.y);
}