diff options
Diffstat (limited to 'src/main/scala/reading/component/style/Color.scala')
-rw-r--r-- | src/main/scala/reading/component/style/Color.scala | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/src/main/scala/reading/component/style/Color.scala b/src/main/scala/reading/component/style/Color.scala index 85498de..1f44eb5 100644 --- a/src/main/scala/reading/component/style/Color.scala +++ b/src/main/scala/reading/component/style/Color.scala @@ -1,16 +1,47 @@ package reading.component.style -import scalacss.Defaults._ +import scala.util.Try + +import scalacss.internal.{ ValueT, Color => ScalaCssColor } + +case class Color(red: Int, green: Int, blue: Int, alpha: Double = 1.0) { + val value: ValueT[ValueT.Color] = ScalaCssColor.rgba(red, green, blue, alpha) + + def lighten(n: Int): Color = + Color( + red = Color.bound(red + n), + green = Color.bound(green + n), + blue = Color.bound(blue + n), + alpha = alpha + ) + + def darken(n: Int): Color = + Color( + red = Color.bound(red - n), + green = Color.bound(green - n), + blue = Color.bound(blue - n), + alpha = alpha + ) +} // http://chir.ag/projects/name-that-color -object Col extends StyleSheet.Inline { - import dsl._ - - val black = c"#000000" - val white = c"#FFFFFF" - val gray = c"#7E7E7E" - val alto = c"#D4D1D1" - val eastBay = c"#505080" - val congoBrown = c"#57363E" - val stiletto = c"#9C3336" +object Color { + val black = Color.fromHex("#000000") + val mickado = Color.fromHex("#2D2510") + val white = Color.fromHex("#FFFFFF") + val gray = Color.fromHex("#808080") + val eastBay = Color.fromHex("#505080") + val congoBrown = Color.fromHex("#57363E") + val stiletto = Color.fromHex("#9C3336") + val englishWalnut = Color.fromHex("#3F2626") + + def fromHex(hex: String, alpha: Double = 1.0) = + Color( + red = Try(Integer.parseInt(hex.slice(1, 3), 16)).getOrElse(0), + green = Try(Integer.parseInt(hex.slice(3, 5), 16)).getOrElse(0), + blue = Try(Integer.parseInt(hex.slice(5, 7), 16)).getOrElse(0), + alpha = alpha + ) + + def bound(n: Int): Int = Math.max(0, Math.min(255, n)) } |