parseFill method

DrawablePaint? parseFill(
  1. Rect bounds,
  2. DrawablePaint? parentFill,
  3. Color? defaultFillColor,
  4. Color? currentColor,
)

Parses a fill attribute.

Implementation

DrawablePaint? parseFill(
  Rect bounds,
  DrawablePaint? parentFill,
  Color? defaultFillColor,
  Color? currentColor,
) {
  final String rawFill = attribute('fill', def: '')!;
  final String? rawFillOpacity = attribute('fill-opacity', def: '1.0');
  final String? rawOpacity = attribute('opacity', def: '');
  double opacity = parseDouble(rawFillOpacity)!.clamp(0.0, 1.0).toDouble();
  if (rawOpacity != '') {
    opacity *= parseDouble(rawOpacity)!.clamp(0.0, 1.0);
  }

  if (rawFill.startsWith('url')) {
    return _getDefinitionPaint(
      _key,
      PaintingStyle.fill,
      rawFill,
      _definitions,
      bounds,
      opacity: opacity,
    );
  }

  final Color? fillColor = _determineFillColor(
    parentFill?.color,
    rawFill,
    opacity,
    rawOpacity != '' || rawFillOpacity != '',
    defaultFillColor,
    currentColor,
  );

  if (rawFill == '' &&
      (fillColor == null || parentFill == DrawablePaint.empty)) {
    return null;
  }
  if (rawFill == 'none') {
    return DrawablePaint.empty;
  }

  return DrawablePaint(
    PaintingStyle.fill,
    color: fillColor,
  );
}