aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/component/style/Color.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/reading/component/style/Color.scala')
-rw-r--r--src/main/scala/reading/component/style/Color.scala53
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))
}