0 | module Rhone.Canvas.Style
 1 |
 2 | import JS
 3 | import Text.CSS.Color
 4 | import Web.Html
 5 |
 6 | %default total
 7 |
 8 | public export
 9 | data Style : Type where
10 |   Fill         : Color -> Style
11 |   Stroke       : Color -> Style
12 |   LineWidth    : Double -> Style
13 |   Font         : String -> Style
14 |   Direction    : CanvasDirection -> Style
15 |   TextAlign    : CanvasTextAlign -> Style
16 |   TextBaseline : CanvasTextBaseline -> Style
17 |
18 | --------------------------------------------------------------------------------
19 | --          IO
20 | --------------------------------------------------------------------------------
21 |
22 | export
23 | apply : CanvasRenderingContext2D -> Style -> JSIO ()
24 | apply ctxt (Fill c)         = fillStyle ctxt    .= inject (interpolate c)
25 | apply ctxt (Stroke c)       = strokeStyle ctxt  .= inject (interpolate c)
26 | apply ctxt (LineWidth v)    = lineWidth ctxt    .= v
27 | apply ctxt (Font v)         = font ctxt         .= v
28 | apply ctxt (Direction v)    = direction ctxt    .= v
29 | apply ctxt (TextAlign v)    = textAlign ctxt    .= v
30 | apply ctxt (TextBaseline v) = textBaseline ctxt .= v
31 |