All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.jetbrains.datalore.vis.svg.SvgPathData.kt Maven / Gradle / Ivy

There is a newer version: 3.2.0
Show newest version
/*
 * Copyright (c) 2019. JetBrains s.r.o.
 * Use of this source code is governed by the MIT license that can be found in the LICENSE file.
 */

package jetbrains.datalore.vis.svg

class SvgPathData internal constructor(private val myPathData: String) {

    enum class Action(private val myChar: Char) {
        MOVE_TO('m'),
        LINE_TO('l'),
        HORIZONTAL_LINE_TO('h'),
        VERTICAL_LINE_TO('v'),
        CURVE_TO('c'),
        SMOOTH_CURVE_TO('s'),
        QUADRATIC_BEZIER_CURVE_TO('q'),
        SMOOTH_QUADRATIC_BEZIER_CURVE_TO('t'),
        ELLIPTICAL_ARC('a'),
        CLOSE_PATH('z');

        fun relativeCmd(): Char {
            return myChar
        }

        fun absoluteCmd(): Char {
            return myChar.uppercaseChar()
        }

        companion object {

            private val MAP = HashMap()

            init {
                for (v in values()) {
                    MAP[v.absoluteCmd()] = v
                    MAP[v.relativeCmd()] = v
                }
            }

            operator fun get(c: Char): Action {
                if (MAP.containsKey(c)) {
                    return MAP[c]!!
                }
                throw IllegalArgumentException("No enum constant " + Action::class + "@myChar." + c)
            }
        }
    }

    override fun toString(): String {
        return myPathData
    }

    companion object {
        val EMPTY = SvgPathData("")
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy