module Amby.Theme
( Theme
, mutedTheme
, deepTheme
, cleanTheme
, getBgColor
, getPlotBgColor
, getGridLineColor
, getColorCycle
, getFontFamily
, getFontSize
)
where
import Data.Colour
import Data.Colour.SRGB
import Data.Default.Class
data Theme = Theme
{ bgColor :: AlphaColour Double
, plotBgColor :: AlphaColour Double
, gridLineColor :: AlphaColour Double
, fontFamily :: String
, fontSize :: Double
, colorCycle :: [AlphaColour Double]
}
instance Default Theme where
def = deepTheme
mutedTheme :: Theme
mutedTheme = Theme
{ bgColor = opaque (sRGB24read "#FFFFFF")
, plotBgColor = opaque (sRGB24read "#EAEAF2")
, gridLineColor = opaque (sRGB24read "#FFFFFF")
, fontFamily = "Verdana"
, fontSize = 14
, colorCycle =
[ opaque (sRGB24read "#4878CF")
, opaque (sRGB24read "#6ACC65")
, opaque (sRGB24read "#D65F5F")
, opaque (sRGB24read "#B47CC7")
, opaque (sRGB24read "#C4AD66")
, opaque (sRGB24read "#77BEDB")
]
}
deepTheme :: Theme
deepTheme = Theme
{ bgColor = opaque (sRGB24read "#FFFFFF")
, plotBgColor = opaque (sRGB24read "#EAEAF2")
, gridLineColor = opaque (sRGB24read "#FFFFFF")
, fontFamily = "Verdana"
, fontSize = 14
, colorCycle =
[ opaque (sRGB24read "#4C72B0")
, opaque (sRGB24read "#55A868")
, opaque (sRGB24read "#C44E52")
, opaque (sRGB24read "#8172B2")
, opaque (sRGB24read "#CCB974")
, opaque (sRGB24read "#64B5CD")
]
}
cleanTheme :: Theme
cleanTheme = def
{ bgColor = opaque (sRGB24read "#FFFFFF")
, plotBgColor = opaque (sRGB24read "#FFFFFF")
, gridLineColor = opaque (sRGB24read "#EEEEEE")
, colorCycle =
[ opaque (sRGB24read "#1776B6")
, opaque (sRGB24read "#FF962A")
, opaque (sRGB24read "#24A122")
, opaque (sRGB24read "#CF0407")
, opaque (sRGB24read "#9564BF")
]
}
getBgColor :: Theme -> AlphaColour Double
getBgColor = bgColor
getPlotBgColor :: Theme -> AlphaColour Double
getPlotBgColor = plotBgColor
getGridLineColor :: Theme -> AlphaColour Double
getGridLineColor = gridLineColor
getColorCycle :: Theme -> [AlphaColour Double]
getColorCycle = colorCycle
getFontFamily :: Theme -> String
getFontFamily = fontFamily
getFontSize :: Theme -> Double
getFontSize = fontSize