buildGradient method

  1. @override
PdfPattern buildGradient(
  1. SvgOperation op,
  2. PdfGraphics canvas,
  3. List<PdfColor?> colors
)
override

Implementation

@override
PdfPattern buildGradient(
    SvgOperation op, PdfGraphics canvas, List<PdfColor?> colors) {
  final mat = canvas.getTransform();

  if (gradientUnits != GradientUnits.userSpaceOnUse) {
    final bb = op.boundingBox();
    mat
      ..translate(bb.x, bb.y)
      ..scale(bb.width, bb.height);
  }

  if (transform.isNotEmpty) {
    mat.multiply(transform.matrix!);
  }

  return PdfShadingPattern(
    op.painter.document,
    shading: PdfShading(
      op.painter.document,
      shadingType: PdfShadingType.axial,
      function: PdfBaseFunction.colorsAndStops(
        op.painter.document,
        colors,
        stops,
      ),
      start: PdfPoint(x1 ?? 0, y1 ?? 0),
      end: PdfPoint(x2 ?? 1, y2 ?? 0),
      extendStart: true,
      extendEnd: true,
    ),
    matrix: mat,
  );
}