paint method

  1. @override
String paint()
override

Implementation

@override
String paint() {
  StringPathProxy pathProxy = StringPathProxy('path$_elementId');
  writeSvgPathDataToPath(_element.getAttribute('d'), pathProxy);

  var color = ColorParser(_element.getAttribute('fill'));
  var colorStr = color.parse();

  String fillType;
  switch (_element.getAttribute('fill-rule')) {
    case 'evenodd':
      fillType = 'PathFillType.evenOdd';
      break;
    case 'nonzero':
      fillType = 'PathFillType.nonZero';
      break;
    default:
      fillType = '';
  }

  StringBuffer result = StringBuffer();

  result.writeln('Paint paint$_elementId = Paint();');
  if (colorStr != null) {
    result.writeln('paint$_elementId.color = ${color.parse()};');
  }

  var stroke = StrokeParser(
      _element.getAttribute('stroke'),
      _element.getAttribute('stroke-width'),
      _element.getAttribute('stroke-linecap'));

  if (stroke.isStroke) {
    result.writeln('paint$_elementId.style = PaintingStyle.stroke;');

    result.writeln('paint$_elementId.color = ${stroke.strokeColor};');

    if (stroke.strokeWidth != null) {
      result.writeln('paint$_elementId.strokeWidth = ${stroke.strokeWidth};');
    }

    if (stroke.strokeCap != null) {
      result.writeln('paint$_elementId.strokeCap = ${stroke.strokeCap};');
    }
  }

  result.writeln('var path$_elementId = Path();');

  if (fillType.isNotEmpty) {
    result.writeln('path$_elementId.fillType = $fillType;');
  }

  result.writeln(pathProxy.pathBuffer.toString());
  result.writeln('canvas.drawPath(path$_elementId, paint$_elementId);');

  return result.toString();
}