@@ -103,17 +103,17 @@ module Graphics.Canvas
103103 , createRadialGradient
104104 , addColorStop
105105 , setGradientFillStyle
106-
106+
107107 , quadraticCurveTo
108108 , bezierCurveTo
109109 ) where
110110
111- import Prelude
111+ import Prelude ( class Show , Unit , pure , bind , (<$>), (<>), ($), (>>=))
112112
113- import Data.ArrayBuffer.Types
114- import Data.Function
115- import Data.Maybe
116- import Control.Monad.Eff
113+ import Data.ArrayBuffer.Types ( Uint8ClampedArray )
114+ import Data.Function.Uncurried ( Fn3 , runFn3 )
115+ import Data.Maybe ( Maybe (..))
116+ import Control.Monad.Eff ( Eff )
117117import Control.Monad.Eff.Exception.Unsafe (unsafeThrow )
118118
119119-- | The `Canvas` effect denotes computations which read/write from/to the canvas.
@@ -142,7 +142,7 @@ foreign import canvasElementToImageSource :: CanvasElement -> CanvasImageSource
142142-- | Wrapper for asynchronously loading a image file by path and use it in callback, e.g. drawImage
143143foreign import withImage :: forall eff . String -> (CanvasImageSource -> Eff eff Unit ) -> Eff eff Unit
144144
145- foreign import getCanvasElementByIdImpl ::
145+ foreign import getCanvasElementByIdImpl ::
146146 forall r eff . Fn3 String
147147 (CanvasElement -> r )
148148 r
@@ -153,7 +153,7 @@ getCanvasElementById :: forall eff. String -> Eff (canvas :: Canvas | eff) (Mayb
153153getCanvasElementById elId = runFn3 getCanvasElementByIdImpl elId Just Nothing
154154
155155-- | Get the 2D graphics context for a canvas element.
156- foreign import getContext2D :: forall eff . CanvasElement -> Eff (canvas :: Canvas | eff ) Context2D
156+ foreign import getContext2D :: forall eff . CanvasElement -> Eff (canvas :: Canvas | eff ) Context2D
157157
158158-- | Get the canvas width in pixels.
159159foreign import getCanvasWidth :: forall eff . CanvasElement -> Eff (canvas :: Canvas | eff ) Number
@@ -175,7 +175,7 @@ getCanvasDimensions :: forall eff. CanvasElement -> Eff (canvas :: Canvas | eff)
175175getCanvasDimensions ce = do
176176 w <- getCanvasWidth ce
177177 h <- getCanvasHeight ce
178- return {width : w, height : h}
178+ pure {width : w, height : h}
179179
180180-- | Set the canvas dimensions in pixels.
181181setCanvasDimensions :: forall eff . Dimensions -> CanvasElement -> Eff (canvas :: Canvas | eff ) CanvasElement
@@ -216,7 +216,7 @@ foreign import setLineCapImpl :: forall eff. String -> Context2D -> Eff (canvas
216216-- | Set the current line cap type.
217217setLineCap :: forall eff . LineCap -> Context2D -> Eff (canvas :: Canvas | eff ) Context2D
218218setLineCap Round = setLineCapImpl " round"
219- setLineCap Square = setLineCapImpl " square"
219+ setLineCap Square = setLineCapImpl " square"
220220setLineCap Butt = setLineCapImpl " butt"
221221
222222-- Note that we can't re-use `Round` from LineCap, so I've added `Join` to all of these
@@ -350,7 +350,7 @@ foreign import moveTo :: forall eff. Context2D -> Number -> Number -> Eff (canv
350350foreign import closePath :: forall eff . Context2D -> Eff (canvas :: Canvas | eff ) Context2D
351351
352352-- | A convenience function for drawing a stroked path.
353- -- |
353+ -- |
354354-- | For example:
355355-- |
356356-- | ```purescript
@@ -360,15 +360,15 @@ foreign import closePath :: forall eff. Context2D -> Eff (canvas :: Canvas | ef
360360-- | lineTo ctx 10.0 20.0
361361-- | closePath ctx
362362-- | ```
363- strokePath :: forall eff a . Context2D -> Eff (canvas :: Canvas | eff ) a -> Eff (canvas :: Canvas | eff ) a
363+ strokePath :: forall eff a . Context2D -> Eff (canvas :: Canvas | eff ) a -> Eff (canvas :: Canvas | eff ) a
364364strokePath ctx path = do
365365 beginPath ctx
366366 a <- path
367367 stroke ctx
368- return a
368+ pure a
369369
370370-- | A convenience function for drawing a filled path.
371- -- |
371+ -- |
372372-- | For example:
373373-- |
374374-- | ```purescript
@@ -378,12 +378,12 @@ strokePath ctx path = do
378378-- | lineTo ctx 10.0 20.0
379379-- | closePath ctx
380380-- | ```
381- fillPath :: forall eff a . Context2D -> Eff (canvas :: Canvas | eff ) a -> Eff (canvas :: Canvas | eff ) a
381+ fillPath :: forall eff a . Context2D -> Eff (canvas :: Canvas | eff ) a -> Eff (canvas :: Canvas | eff ) a
382382fillPath ctx path = do
383383 beginPath ctx
384384 a <- path
385385 fill ctx
386- return a
386+ pure a
387387
388388-- | A type representing an arc object:
389389-- |
@@ -405,7 +405,7 @@ foreign import arc :: forall eff. Context2D -> Arc -> Eff (canvas :: Canvas | ef
405405-- |
406406-- | - The top-left corner coordinates `x` and `y`,
407407-- | - The width and height `w` and `h`.
408- type Rectangle =
408+ type Rectangle =
409409 { x :: Number
410410 , y :: Number
411411 , w :: Number
@@ -425,7 +425,7 @@ foreign import strokeRect :: forall eff. Context2D -> Rectangle -> Eff (canvas :
425425foreign import clearRect :: forall eff . Context2D -> Rectangle -> Eff (canvas :: Canvas | eff ) Context2D
426426
427427-- | An object representing a scaling transform:
428- -- |
428+ -- |
429429-- | - The scale factors in the `x` and `y` directions, `scaleX` and `scaleY`.
430430type ScaleTransform =
431431 { scaleX :: Number
@@ -439,7 +439,7 @@ foreign import scale :: forall eff. ScaleTransform -> Context2D -> Eff (canvas
439439foreign import rotate :: forall eff . Number -> Context2D -> Eff (canvas :: Canvas | eff ) Context2D
440440
441441-- | An object representing a translation:
442- -- |
442+ -- |
443443-- | - The translation amounts in the `x` and `y` directions, `translateX` and `translateY`.
444444type TranslateTransform =
445445 { translateX :: Number
@@ -485,7 +485,7 @@ textAlign ctx = unsafeParseTextAlign <$> textAlignImpl ctx
485485 unsafeParseTextAlign " center" = AlignCenter
486486 unsafeParseTextAlign " start" = AlignStart
487487 unsafeParseTextAlign " end" = AlignEnd
488- unsafeParseTextAlign align = unsafeThrow $ " invalid TextAlign: " ++ align
488+ unsafeParseTextAlign align = unsafeThrow $ " invalid TextAlign: " <> align
489489 -- ^ dummy to silence compiler warnings
490490
491491foreign import setTextAlignImpl :: forall eff . Context2D -> String -> (Eff (canvas :: Canvas | eff ) Context2D )
@@ -503,7 +503,7 @@ setTextAlign ctx textalign =
503503
504504-- | Text metrics:
505505-- |
506- -- | - The text width in pixels.
506+ -- | - The text width in pixels.
507507type TextMetrics = { width :: Number }
508508
509509-- | Get the current font.
@@ -528,20 +528,20 @@ foreign import save :: forall eff. Context2D -> Eff (canvas :: Canvas | eff) Co
528528foreign import restore :: forall eff . Context2D -> Eff (canvas :: Canvas | eff ) Context2D
529529
530530-- | A convenience function: run the action, preserving the existing context.
531- -- |
531+ -- |
532532-- | For example, outside this block, the fill style is preseved:
533533-- |
534534-- | ```purescript
535535-- | withContext ctx $ do
536536-- | setFillStyle "red" ctx
537537-- | ...
538538-- | ```
539- withContext :: forall eff a . Context2D -> Eff (canvas :: Canvas | eff ) a -> Eff (canvas :: Canvas | eff ) a
539+ withContext :: forall eff a . Context2D -> Eff (canvas :: Canvas | eff ) a -> Eff (canvas :: Canvas | eff ) a
540540withContext ctx action = do
541541 save ctx
542542 a <- action
543543 restore ctx
544- return a
544+ pure a
545545
546546-- | Get image data for a portion of the canvas.
547547foreign import getImageData :: forall eff . Context2D -> Number -> Number -> Number -> Number -> Eff (canvas :: Canvas | eff ) ImageData
0 commit comments