~alcinnz/Mondrian

ref: 8e840900a34a462f221f86aa7c0345ada46a1827 Mondrian/lib/Graphics/Rendering/Rect/CSS/Background.hs -rw-r--r-- 922 bytes
8e840900 — Adrian Cochrane Handle initial colour values. 1 year, 4 months ago
                                                                                
a3455462 Adrian Cochrane
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{-# LANGUAGE OverloadedStrings #-}
module Graphics.Rendering.Rect.CSS.Background (Backgrounds(..)) where

import Stylist (PropertyParser(..), parseUnorderedShorthand)
import Graphics.Rendering.Rect.CSS.Colour (ColourPallet, parseColour)
import Data.Colour (AlphaColour, transparent)

data Backgrounds = Backgrounds {
    pallet :: ColourPallet,
    colour :: AlphaColour Double
}

instance PropertyParser Backgrounds where
    temp = Backgrounds { pallet = temp, colour = transparent }
    inherit _ = temp
    priority _ = []

    longhand _ self@Backgrounds{ pallet = c } "background-color" toks
        | Just ([], val) <- parseColour c toks = Just self { colour = val }
    longhand _ _ _ _ = Nothing

    shorthand self "background" toks = parseUnorderedShorthand self [
        "background-color"
      ] toks
    shorthand self key val | Just _ <- longhand self self key val = [(key, val)]
        | otherwise = []