in platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgTextElementAttrMapping.kt [24:78]
override fun setAttribute(target: Text, name: String, value: Any?) {
when (name) {
"font-size" -> target.fontSize = value?.asPxSize ?: DEFAULT_FONT_SIZE
"font-family" -> target.fontFamily = value?.asFontFamily ?: DEFAULT_FONT_FAMILY
"font-style" -> target.fontSlant = when(value) {
"italic" -> FontSlant.ITALIC
else -> FontSlant.UPRIGHT // normal and others
}
"font-weight" -> target.fontWeight = when(value) {
"bold" -> FontWeight.BOLD
else -> FontWeight.NORMAL // normal and others
}
SvgTextElement.X.name -> target.x = value?.asFloat ?: 0.0f
SvgTextElement.Y.name -> target.y = value?.asFloat ?: 0.0f
SvgTextContent.TEXT_ANCHOR.name -> {
val svgTextAnchor = value as String?
when (svgTextAnchor) {
SvgConstants.SVG_TEXT_ANCHOR_END -> target.textAlignment = HorizontalAlignment.RIGHT
SvgConstants.SVG_TEXT_ANCHOR_MIDDLE -> target.textAlignment = HorizontalAlignment.CENTER
SvgConstants.SVG_TEXT_ANCHOR_START -> target.textAlignment = HorizontalAlignment.LEFT
else -> println("Unknown alignment")
}
}
SvgTextContent.TEXT_DY.name -> {
when (value) {
SVG_TEXT_DY_TOP -> target.textOrigin = VerticalAlignment.TOP
SVG_TEXT_DY_CENTER -> target.textOrigin = VerticalAlignment.CENTER
else -> throw IllegalStateException("Unexpected text 'dy' value: $value")
}
}
SvgShape.FILL.name -> target.fill = toColor(value)
SvgShape.FILL_OPACITY.name -> target.fillOpacity = value!!.asFloat
SvgShape.STROKE.name -> target.stroke = toColor(value)
SvgShape.STROKE_OPACITY.name -> target.strokeOpacity = value!!.asFloat
SvgShape.STROKE_WIDTH.name -> target.strokeWidth = value!!.asFloat
SvgConstants.SVG_STROKE_DASHARRAY_ATTRIBUTE -> {
val strokeDashArray = (value as String).split(",").map(String::toFloat)
target.strokeDashArray = strokeDashArray
}
SvgConstants.SVG_STYLE_ATTRIBUTE -> {
splitStyle(value as? String)
.forEach { (attr, value) ->
setAttribute(target, attr, value)
}
}
else -> super.setAttribute(target, name, value)
}
}