override fun setAttribute()

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)
        }
    }