0 | module Text.CSS.Angle
 1 |
 2 | %default total
 3 |
 4 | public export
 5 | data Angle : Type where
 6 |   Deg  : Double -> Angle
 7 |   Rad  : Double -> Angle
 8 |   Grad : Double -> Angle
 9 |   Turn : Double -> Angle
10 |
11 | export
12 | Interpolation Angle where
13 |   interpolate (Deg x)  = show x ++ "deg"
14 |   interpolate (Rad x)  = show x ++ "rad"
15 |   interpolate (Grad x) = show x ++ "grad"
16 |   interpolate (Turn x) = show x ++ "turn"
17 |
18 | export %inline
19 | deg : Cast Angle a => Double -> a
20 | deg = cast . Deg
21 |
22 | export %inline
23 | rad : Cast Angle a => Double -> a
24 | rad = cast . Rad
25 |
26 | export %inline
27 | grad : Cast Angle a => Double -> a
28 | grad = cast . Grad
29 |
30 | export %inline
31 | turn : Cast Angle a => Double -> a
32 | turn = cast . Turn
33 |
34 | export %inline
35 | (.deg) : Cast Angle a => Double -> a
36 | (.deg) = deg
37 |
38 | export %inline
39 | (.rad) : Cast Angle a => Double -> a
40 | (.rad) = rad
41 |
42 | export %inline
43 | (.grad) : Cast Angle a => Double -> a
44 | (.grad) = grad
45 |
46 | export %inline
47 | (.turn) : Cast Angle a => Double -> a
48 | (.turn) = turn
49 |