glance/app/DrawingColors.hs

107 lines
2.6 KiB
Haskell

module DrawingColors (
ColorStyle(..)
, colorScheme
, colorOnBlackScheme
, whiteOnBlackScheme
, randomColorScheme
) where
import Diagrams.Prelude hiding ((&), (#))
{-# ANN module "HLint: ignore Unnecessary hiding" #-}
-- COLO(U)RS --
colorScheme :: ColorStyle Double
colorScheme = colorOnBlackScheme
data ColorStyle a = ColorStyle {
backgroundC :: Colour a,
lineC :: Colour a,
textBoxTextC :: Colour a,
textBoxC :: Colour a,
apply0C :: Colour a,
apply1C :: Colour a,
boolC :: Colour a,
lamArgResC :: Colour a,
regionPerimC :: Colour a,
caseRhsC :: Colour a,
patternC :: Colour a,
patternTextC :: Colour a,
bindTextBoxC :: Colour a,
bindTextBoxTextC :: Colour a,
edgeListC :: [Colour a],
nestingC :: [Colour a]
}
colorOnBlackScheme :: (Floating a, Ord a) => ColorStyle a
colorOnBlackScheme = ColorStyle {
backgroundC = black,
lineC = white,
--lineC = lightgray,
textBoxTextC = white,
textBoxC = white,
apply0C = red,
apply1C = cyan,
boolC = orange,
lamArgResC = lightSlightlyPurpleBlue,
regionPerimC = lime,
caseRhsC = slightlyGreenYellow,
patternC = lightMagenta,
patternTextC = cyan,
bindTextBoxC = reddishOrange,
bindTextBoxTextC = lightGreen,
edgeListC = [white, lime, reddishOrange, lightPurple, yellow, lightBlue],
nestingC = cycle [red, reddishOrange, yellow]
}
where
slightlyGreenYellow = sRGB24 212 255 0
lightMagenta = sRGB24 255 94 255
lightSlightlyPurpleBlue = sRGB24 109 87 255
reddishOrange = sRGB24 255 119 0
--lightBlue = sRGB24 126 127 255
lightBlue = sRGB24 35 156 255
lightPurple = sRGB24 208 137 255
lightGreen = sRGB24 180 255 145
whiteOnBlackScheme :: (Floating a, Ord a) => ColorStyle a
whiteOnBlackScheme = ColorStyle {
backgroundC = black,
lineC = white,
textBoxTextC = white,
textBoxC = white,
apply0C = white,
apply1C = white,
boolC = white,
lamArgResC = white,
regionPerimC = white,
caseRhsC = white,
patternC = white,
patternTextC = white,
bindTextBoxC = white,
bindTextBoxTextC = white,
edgeListC = [white],
nestingC = repeat white
}
-- Use this to test that all of the colors use the colorScheme
randomColorScheme :: (Floating a, Ord a) => ColorStyle a
randomColorScheme = ColorStyle {
backgroundC = darkorchid,
lineC = yellow,
textBoxTextC = blue,
textBoxC = magenta,
apply0C = orange,
apply1C = green,
boolC = lightpink,
lamArgResC = red,
regionPerimC = cyan,
caseRhsC = red,
patternC = olive,
patternTextC = coral,
bindTextBoxC = maroon,
bindTextBoxTextC = lime,
edgeListC = [wheat],
nestingC = cycle [red, yellow, purple, pink, lightblue, magenta]
}