commonMain.jetbrains.datalore.plot.config.theme.ThemeConfig.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lets-plot-common Show documentation
Show all versions of lets-plot-common Show documentation
Lets-Plot JVM package without rendering part
/*
* 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.plot.config.theme
import jetbrains.datalore.plot.builder.defaultTheme.DefaultTheme
import jetbrains.datalore.plot.builder.defaultTheme.values.ThemeOption
import jetbrains.datalore.plot.builder.defaultTheme.values.ThemeOption.ELEMENT_BLANK
import jetbrains.datalore.plot.builder.defaultTheme.values.ThemeValues
import jetbrains.datalore.plot.builder.theme.Theme
import jetbrains.datalore.plot.config.Option
class ThemeConfig constructor(
themeSettings: Map = emptyMap()
) {
val theme: Theme
init {
val themeName = themeSettings.getOrElse(Option.Meta.NAME) { ThemeOption.Name.LP_MINIMAL }.toString()
val baselineValues = ThemeValues.forName(themeName)
// Make sure all values are converted to proper objects.
@Suppress("NAME_SHADOWING")
val userOptions: Map = themeSettings.mapValues { (key, value) ->
val value = convertElementBlank(value)
LegendThemeConfig.convertValue(key, value)
}
val effectiveOptions: Map = baselineValues + userOptions
theme = DefaultTheme(effectiveOptions)
}
companion object {
/**
* Converts a simple "blank" string to a 'blank element'.
*/
private fun convertElementBlank(value: Any): Any {
if (value is String && value == ThemeOption.ELEMENT_BLANK_SHORTHAND) {
return ELEMENT_BLANK
}
if (value is Map<*, *> && value["name"] == "blank") {
return ELEMENT_BLANK
}
return value
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy