paint method

  1. @override
void paint(
  1. Canvas canvas,
  2. Size size,
  3. List<CubicPath> paths
)
override

Paints the given paths onto the canvas.

canvas The canvas to draw on. size The size of the canvas. paths A list of CubicPath objects representing the signature to be drawn.

Implementation

@override
void paint(Canvas canvas, Size size, List<CubicPath> paths) {
  for (final path in paths) {
    // Retrieve drawing parameters from path arguments, with fallbacks
    final type = path.setup.args?['type'] ?? this.type.name;
    final color = Color(path.setup.args?['color'] ?? this.color.toHex32());
    final width = path.setup.args?['width'] ?? this.width;
    final maxWidth = path.setup.args?['max_width'] ?? this.maxWidth;

    HandSignatureDrawer drawer;

    // Select the appropriate drawer based on the 'type' argument
    switch (type) {
      case 'line':
        drawer = LineSignatureDrawer(color: color, width: width);
        break;
      case 'arc':
        drawer = ArcSignatureDrawer(color: color, width: width, maxWidth: maxWidth);
        break;
      case 'shape':
        drawer = ShapeSignatureDrawer(color: color, width: width, maxWidth: maxWidth);
        break;
      default:
        // Default to ShapeSignatureDrawer if type is unknown or not provided
        drawer = ShapeSignatureDrawer(color: color, width: width, maxWidth: maxWidth);
    }

    // Paint the current path using the selected drawer
    drawer.paint(canvas, size, [path]);
  }
}