parse method

void parse(
  1. XmlElement rootElement
)

Parses XML attributes to configure this polyline rendering instruction.

Processes XML attributes such as stroke properties, bitmap sources, line caps, joins, and other styling parameters from the theme definition.

rootElement XML element containing the polyline instruction attributes

Implementation

void parse(XmlElement rootElement) {
  for (var element in rootElement.attributes) {
    String name = element.name.toString();
    String value = element.value;

    if (Renderinstruction.SRC == name) {
      bitmapSrc = value;
    } else if (Renderinstruction.DISPLAY == name) {
      display = MapDisplay.values.firstWhere((e) => e.toString().toLowerCase().contains(value));
    } else if (Renderinstruction.PRIORITY == name) {
      priority = int.parse(value);
    } else if (Renderinstruction.DY == name) {
      setDy(double.parse(value));
    } else if (Renderinstruction.SCALE == name) {
      setScaleFromValue(value);
      if (scale == Scale.NONE) {
        setBitmapMinZoomLevel(65535);
      }
    } else if (Renderinstruction.ID == name) {
      id = value;
    } else if (Renderinstruction.STROKE == name) {
      setStrokeColorFromNumber(XmlUtils.getColor(value));
    } else if (Renderinstruction.STROKE_DASHARRAY == name) {
      List<double> dashArray = parseFloatArray(name, value);
      if (MapsforgeSettingsMgr().getUserScaleFactor() != 1) {
        for (int f = 0; f < dashArray.length; ++f) {
          dashArray[f] = dashArray[f] * MapsforgeSettingsMgr().getUserScaleFactor();
        }
      }
      setStrokeDashArray(dashArray);
    } else if (Renderinstruction.STROKE_LINECAP == name) {
      setStrokeCap(MapCap.values.firstWhere((e) => e.toString().toLowerCase().contains(value)));
    } else if (Renderinstruction.STROKE_LINEJOIN == name) {
      setStrokeJoin(MapJoin.values.firstWhere((e) => e.toString().toLowerCase().contains(value)));
    } else if (Renderinstruction.STROKE_WIDTH == name) {
      setStrokeWidth(XmlUtils.parseNonNegativeFloat(name, value));
    } else if (Renderinstruction.SYMBOL_HEIGHT == name) {
      setBitmapHeight(XmlUtils.parseNonNegativeInteger(name, value));
    } else if (Renderinstruction.SYMBOL_PERCENT == name) {
      setBitmapPercent(XmlUtils.parseNonNegativeInteger(name, value));
    } else if (Renderinstruction.SYMBOL_SCALING == name) {
      // no-op
    } else if (Renderinstruction.SYMBOL_WIDTH == name) {
      setBitmapWidth(XmlUtils.parseNonNegativeInteger(name, value));
    } else {
      throw Exception("Parsing problems $name=$value");
    }
  }
}