0 | module Web.Canvas.Shape
2 | import Data.Linear.Token
3 | import Web.Canvas.Angle
4 | import Web.Canvas.Hints
5 | import Web.Internal.HtmlPrim
9 | parameters {auto cr : CanvasRect}
11 | clearRect : (x,y,width,height : Double) -> IO1 ()
12 | clearRect x y width height = ffi $
prim__clearRect cr x y width height
15 | fillRect : (x,y,width,height : Double) -> IO1 ()
16 | fillRect x y width height = ffi $
prim__fillRect cr x y width height
19 | strokeRect : (x,y,width,height : Double) -> IO1 ()
20 | strokeRect x y width height = ffi $
prim__strokeRect cr x y width height
22 | parameters {auto cp : CanvasPath}
27 | -> (radius : Double)
28 | -> (startAngle, endAngle : Angle)
29 | -> {default false counterclockwise : Boolean}
32 | ffi $
prim__arc cp x y r sa.radians ea.radians (def counterclockwise)
35 | arcTo : (x1,y1,x2,y2,radius : Double) -> IO1 ()
36 | arcTo x1 y1 x2 y2 r = ffi $
prim__arcTo cp x1 y1 x2 y2 r
39 | circle : (x,y,radius : Double) -> IO1 ()
40 | circle x y r = arc x y r (rad 0) (rad $
2 * pi)
43 | bezierCurveTo : (cp1x, cp1y, cp2x, cp2y, x, y : Double) -> IO1 ()
44 | bezierCurveTo cp1x cp1y cp2x cp2y x y =
45 | ffi $
prim__bezierCurveTo cp cp1x cp1y cp2x cp2y x y
49 | closePath = ffi $
prim__closePath cp
54 | -> (radiusX, radiusY : Double)
55 | -> (rotation : Angle)
56 | -> (startAngle, endAngle : Angle)
57 | -> {default false counterclockwise : Boolean}
59 | ellipse x y rx ry rot sa ea =
60 | ffi $
prim__ellipse cp x y rx ry
61 | rot.radians sa.radians ea.radians
62 | (def counterclockwise)
65 | lineTo : (x,y : Double) -> IO1 ()
66 | lineTo x y = ffi $
prim__lineTo cp x y
69 | moveTo : (x,y : Double) -> IO1 ()
70 | moveTo x y = ffi $
prim__moveTo cp x y
73 | rect : (x,y,width,height : Double) -> IO1 ()
74 | rect x y width height = ffi $
prim__rect cp x y width height
77 | quadraticCurveTo : (cpx, cpy, x, y : Double) -> IO1 ()
78 | quadraticCurveTo cpx cpy x y =
79 | ffi $
prim__quadraticCurveTo cp cpx cpy x y
81 | parameters {auto cp : CanvasDrawPath}
85 | beginPath = ffi $
prim__beginPath cp
89 | clip = ffi $
prim__clip cp undef
93 | fill = ffi $
prim__fill cp undef
97 | stroke = ffi $
prim__stroke cp
99 | parameters {auto cs : CanvasText}
105 | -> {default undef maxWidth : UndefOr Double}
107 | fillText txt x y = ffi $
prim__fillText cs txt x y maxWidth
113 | -> {default undef maxWidth : UndefOr Double}
115 | strokeText txt x y = ffi $
prim__strokeText cs txt x y maxWidth