SvgUse.fromXml constructor

SvgUse.fromXml(
  1. XmlElement element,
  2. SvgPainter painter,
  3. SvgBrush brush
)

Implementation

factory SvgUse.fromXml(
  XmlElement element,
  SvgPainter painter,
  SvgBrush brush,
) {
  final _brush = SvgBrush.fromXml(element, brush, painter);

  final width =
      SvgParser.getNumeric(element, 'width', _brush, defaultValue: 0)!
          .sizeValue;
  final height =
      SvgParser.getNumeric(element, 'height', _brush, defaultValue: 0)!
          .sizeValue;
  final x =
      SvgParser.getNumeric(element, 'x', _brush, defaultValue: 0)!.sizeValue;
  final y =
      SvgParser.getNumeric(element, 'y', _brush, defaultValue: 0)!.sizeValue;

  SvgOperation? href;
  final hrefAttr = element.getAttribute('href') ??
      element.getAttribute('href', namespace: 'http://www.w3.org/1999/xlink');

  if (hrefAttr != null) {
    final hrefElement = painter.parser.findById(hrefAttr.substring(1));
    if (hrefElement != null) {
      href = SvgOperation.fromXml(hrefElement, painter, _brush);
    }
  }

  return SvgUse(
    x,
    y,
    width,
    height,
    href,
    _brush,
    SvgClipPath.fromXml(element, painter, _brush),
    SvgTransform.fromXml(element),
    painter,
  );
}