Files
kotlin-css-generator/src/commonMain/kotlin/nl/astraeus/css/properties/Measurement.kt

61 lines
1.8 KiB
Kotlin

package nl.astraeus.css.properties
open class Measurement(
value: String
) : CssProperty(value) {
companion object {
val auto = Measurement("auto")
val initial = Measurement("initial")
val inherit = Measurement("inherit")
val normal = Measurement("normal")
fun px(nr: Int) = if (nr == 0) { Measurement("0") } else { Measurement("${nr}px") }
fun px(nr: Double) = nr.px
fun em(nr: Int) = nr.em
fun em(nr: Double) = nr.em
fun prc(nr: Int) = nr.prc
fun prc(nr: Double) = nr.prc
fun pc(nr: Int) = nr.pc
fun pc(nr: Double) = nr.pc
fun cm(nr: Int) = nr.cm
fun cm(nr: Double) = nr.cm
}
}
val Int.px: Measurement
get() = Measurement("${this}${if (this == 0) { "" } else { "px"}}")
val Int.em: Measurement
get() = Measurement("${this}${if (this == 0) { "" } else { "em"}}")
val Int.rem: Measurement
get() = Measurement("${this}${if (this == 0) { "" } else { "rem"}}")
val Int.prc: Measurement
get() = Measurement("${this}%")
val Int.pc: Measurement
get() = Measurement("${this}pc")
val Int.cm: Measurement
get() = Measurement("${this}cm")
fun Int.px(): Measurement = Measurement.px(this)
val Double.px: Measurement
get() = Measurement("${this}px")
val Double.em: Measurement
get() = Measurement("${this}em")
val Double.rem: Measurement
get() = Measurement("${this}rem")
val Double.prc: Measurement
get() = Measurement("${this}%")
val Double.pc: Measurement
get() = Measurement("${this}pc")
val Double.cm: Measurement
get() = Measurement("${this}cm")
fun Double.px(): Measurement = Measurement.px(this)
open class LineHeight(value: String) : CssProperty(value) {
companion object {
val normal = LineHeight("normal")
val initial = LineHeight("initial")
val inherit = LineHeight("inherit")
}
}