🛠️ ColorScheme logger
* Added theme logger (basically just prints scheme's colors in Log.i to then use them for new themes in convenient way)
This commit is contained in:
parent
343e5bc8bd
commit
a7f2cc6aba
1 changed files with 76 additions and 0 deletions
|
|
@ -0,0 +1,76 @@
|
||||||
|
package ua.acclorite.book_story.presentation.ui
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
|
import androidx.compose.material3.ColorScheme
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.toArgb
|
||||||
|
|
||||||
|
private const val THEME = "THEME"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function logs all the colors of the colorScheme.
|
||||||
|
* You can use it to extract colors from Material You theme and add it to the app.
|
||||||
|
* Sadly, Material Theme Builder (both figma + site) does not provide many colors,
|
||||||
|
* that's why I have to use Material You theme on the device itself
|
||||||
|
* (which provides tons of different colors and presets of those colors)
|
||||||
|
* to generate and add new themes.
|
||||||
|
*
|
||||||
|
* @param darkTheme Whether the theme is in dark mode.
|
||||||
|
* Changes variable suffix to "Dark" if true, "Light" otherwise.
|
||||||
|
*/
|
||||||
|
fun ColorScheme.logTheme(darkTheme: Boolean): ColorScheme {
|
||||||
|
val suffix = if (darkTheme) "Dark" else "Light"
|
||||||
|
|
||||||
|
fun Color.convertToVal(variableName: String): String {
|
||||||
|
return "private val $variableName$suffix = Color(0x${this.convertToHex()})\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.i(
|
||||||
|
THEME,
|
||||||
|
"Theme:\n" +
|
||||||
|
"------------------------\n" +
|
||||||
|
primary.convertToVal("primary") +
|
||||||
|
onPrimary.convertToVal("onPrimary") +
|
||||||
|
primaryContainer.convertToVal("primaryContainer") +
|
||||||
|
onPrimaryContainer.convertToVal("onPrimaryContainer") +
|
||||||
|
secondary.convertToVal("secondary") +
|
||||||
|
onSecondary.convertToVal("onSecondary") +
|
||||||
|
secondaryContainer.convertToVal("secondaryContainer") +
|
||||||
|
onSecondaryContainer.convertToVal("onSecondaryContainer") +
|
||||||
|
tertiary.convertToVal("tertiary") +
|
||||||
|
onTertiary.convertToVal("onTertiary") +
|
||||||
|
tertiaryContainer.convertToVal("tertiaryContainer") +
|
||||||
|
onTertiaryContainer.convertToVal("onTertiaryContainer") +
|
||||||
|
error.convertToVal("error") +
|
||||||
|
onError.convertToVal("onError") +
|
||||||
|
errorContainer.convertToVal("errorContainer") +
|
||||||
|
onErrorContainer.convertToVal("onErrorContainer") +
|
||||||
|
background.convertToVal("background") +
|
||||||
|
onBackground.convertToVal("onBackground") +
|
||||||
|
surface.convertToVal("surface") +
|
||||||
|
onSurface.convertToVal("onSurface") +
|
||||||
|
surfaceVariant.convertToVal("surfaceVariant") +
|
||||||
|
onSurfaceVariant.convertToVal("onSurfaceVariant") +
|
||||||
|
outline.convertToVal("outline") +
|
||||||
|
outlineVariant.convertToVal("outlineVariant") +
|
||||||
|
scrim.convertToVal("scrim") +
|
||||||
|
inverseSurface.convertToVal("inverseSurface") +
|
||||||
|
inverseOnSurface.convertToVal("inverseOnSurface") +
|
||||||
|
inversePrimary.convertToVal("inversePrimary") +
|
||||||
|
surfaceDim.convertToVal("surfaceDim") +
|
||||||
|
surfaceBright.convertToVal("surfaceBright") +
|
||||||
|
surfaceContainerLowest.convertToVal("surfaceContainerLowest") +
|
||||||
|
surfaceContainerLow.convertToVal("surfaceContainerLow") +
|
||||||
|
surfaceContainer.convertToVal("surfaceContainer") +
|
||||||
|
surfaceContainerHigh.convertToVal("surfaceContainerHigh") +
|
||||||
|
surfaceContainerHighest.convertToVal("surfaceContainerHighest") +
|
||||||
|
"------------------------"
|
||||||
|
)
|
||||||
|
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
|
private fun Color.convertToHex(): String {
|
||||||
|
return toArgb().toHexString(format = HexFormat.UpperCase)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue