in platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgPathAttrMapping.kt [14:42]
override fun setAttribute(target: Path, name: String, value: Any?) {
when (name) {
SvgPathElement.STROKE_MITER_LIMIT.name -> target.strokeMiter = value?.asFloat
SvgPathElement.FILL_RULE.name -> {
val fillRule = when (value) {
SvgPathElement.FillRule.NON_ZERO -> org.jetbrains.skia.PathFillMode.WINDING
SvgPathElement.FillRule.EVEN_ODD -> org.jetbrains.skia.PathFillMode.EVEN_ODD
null -> null
else -> throw IllegalArgumentException("Unknown fill-rule: $value")
}
target.fillRule = fillRule
}
SvgPathElement.D.name -> {
// Can be string (slim path) or SvgPathData
val pathStr = when (value) {
is String -> value
is SvgPathData -> value.toString()
null -> throw IllegalArgumentException("Undefined `path data`")
else -> throw IllegalArgumentException("Unexpected `path data` type: ${value::class.simpleName}")
}
target.skiaPath = makeFromSVGString(pathStr)
}
else -> super.setAttribute(target, name, value)
}
}