in platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgTransformParser.kt [34:80]
fun parseSvgTransform(svgTransform: String): List<Matrix33> {
val results = parseTransform(svgTransform)
val transforms = ArrayList<Matrix33>()
for (res in results) {
val transform: Matrix33 =
when (res.name) {
SvgTransform.SCALE -> {
val scaleX = res.getParam(SCALE_X)!!
val scaleY = res.getParam(SCALE_Y) ?: scaleX
Matrix33.makeScale(scaleX, scaleY)
}
SvgTransform.SKEW_X -> {
val angle = res.getParam(SKEW_X_ANGLE)!!
val factor = sin(toRadians(angle))
Matrix33.makeSkew(factor, 0.0f)
}
SvgTransform.SKEW_Y -> {
val angle = res.getParam(SKEW_Y_ANGLE)!!
val factor = sin(toRadians(angle))
Matrix33.makeSkew(0.0f, factor)
}
SvgTransform.ROTATE -> {
val angle = res.getParam(ROTATE_ANGLE)!!
val pivotX = if (res.paramCount == 3) res.getParam(ROTATE_X)!! else 0.0f
val pivotY = if (res.paramCount == 3) res.getParam(ROTATE_Y)!! else 0.0f
Matrix33.makeRotate(angle, pivotX, pivotY)
}
SvgTransform.TRANSLATE -> {
val dX = res.getParam(TRANSLATE_X)!!
val dY = res.getParam(TRANSLATE_Y) ?: 0.0f
Matrix33.makeTranslate(dX, dY)
}
SvgTransform.MATRIX -> error("UNSUPPORTED: We don't use MATRIX")
else -> throw IllegalArgumentException("Unknown transform: " + res.name)
}
transforms.add(transform)
}
return transforms
}