{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.CanvasPath
       (closePath, moveTo, lineTo, quadraticCurveTo, bezierCurveTo, arcTo,
        rect, arc, ellipse, CanvasPath(..), gTypeCanvasPath, IsCanvasPath,
        toCanvasPath)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.closePath Mozilla CanvasPath.closePath documentation> 
closePath :: (MonadDOM m, IsCanvasPath self) => self -> m ()
closePath :: self -> m ()
closePath self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"closePath" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.moveTo Mozilla CanvasPath.moveTo documentation> 
moveTo ::
       (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> m ()
moveTo :: self -> Double -> Double -> m ()
moveTo self
self Double
x Double
y
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"moveTo" [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.lineTo Mozilla CanvasPath.lineTo documentation> 
lineTo ::
       (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> m ()
lineTo :: self -> Double -> Double -> m ()
lineTo self
self Double
x Double
y
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"lineTo" [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.quadraticCurveTo Mozilla CanvasPath.quadraticCurveTo documentation> 
quadraticCurveTo ::
                 (MonadDOM m, IsCanvasPath self) =>
                   self -> Double -> Double -> Double -> Double -> m ()
quadraticCurveTo :: self -> Double -> Double -> Double -> Double -> m ()
quadraticCurveTo self
self Double
cpx Double
cpy Double
x Double
y
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"quadraticCurveTo"
            [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
cpx, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
cpy, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.bezierCurveTo Mozilla CanvasPath.bezierCurveTo documentation> 
bezierCurveTo ::
              (MonadDOM m, IsCanvasPath self) =>
                self ->
                  Double -> Double -> Double -> Double -> Double -> Double -> m ()
bezierCurveTo :: self
-> Double -> Double -> Double -> Double -> Double -> Double -> m ()
bezierCurveTo self
self Double
cp1x Double
cp1y Double
cp2x Double
cp2y Double
x Double
y
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"bezierCurveTo"
            [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
cp1x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
cp1y, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
cp2x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
cp2y, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x,
             Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arcTo Mozilla CanvasPath.arcTo documentation> 
arcTo ::
      (MonadDOM m, IsCanvasPath self) =>
        self -> Double -> Double -> Double -> Double -> Double -> m ()
arcTo :: self -> Double -> Double -> Double -> Double -> Double -> m ()
arcTo self
self Double
x1 Double
y1 Double
x2 Double
y2 Double
radius
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"arcTo"
            [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x1, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y1, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x2, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y2, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
radius]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.rect Mozilla CanvasPath.rect documentation> 
rect ::
     (MonadDOM m, IsCanvasPath self) =>
       self -> Double -> Double -> Double -> Double -> m ()
rect :: self -> Double -> Double -> Double -> Double -> m ()
rect self
self Double
x Double
y Double
w Double
h
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"rect"
            [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
w, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
h]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arc Mozilla CanvasPath.arc documentation> 
arc ::
    (MonadDOM m, IsCanvasPath self) =>
      self ->
        Double -> Double -> Double -> Double -> Double -> Bool -> m ()
arc :: self
-> Double -> Double -> Double -> Double -> Double -> Bool -> m ()
arc self
self Double
x Double
y Double
radius Double
startAngle Double
endAngle Bool
anticlockwise
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"arc"
            [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
radius, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
startAngle,
             Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
endAngle, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
anticlockwise]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.ellipse Mozilla CanvasPath.ellipse documentation> 
ellipse ::
        (MonadDOM m, IsCanvasPath self) =>
          self ->
            Double ->
              Double ->
                Double -> Double -> Double -> Double -> Double -> Bool -> m ()
ellipse :: self
-> Double
-> Double
-> Double
-> Double
-> Double
-> Double
-> Double
-> Bool
-> m ()
ellipse self
self Double
x Double
y Double
radiusX Double
radiusY Double
rotation Double
startAngle Double
endAngle
  Bool
anticlockwise
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> CanvasPath
forall o. IsCanvasPath o => o -> CanvasPath
toCanvasPath self
self) CanvasPath
-> Getting (JSM JSVal) CanvasPath (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"ellipse"
            [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
radiusX, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
radiusY,
             Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
rotation, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
startAngle, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
endAngle,
             Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
anticlockwise]))