{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.HTMLCanvasElement
       (getContext, getContext_, getContextUnsafe, getContextUnchecked,
        toDataURL, toDataURL_, toBlob', captureStream, captureStream_,
        setWidth, getWidth, setHeight, getHeight, HTMLCanvasElement(..),
        gTypeHTMLCanvasElement)
       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/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
getContext ::
           (MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
             HTMLCanvasElement ->
               contextId -> [arguments] -> m (Maybe RenderingContext)
getContext :: forall (m :: * -> *) contextId arguments.
(MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
HTMLCanvasElement
-> contextId -> [arguments] -> m (Maybe RenderingContext)
getContext HTMLCanvasElement
self contextId
contextId [arguments]
arguments
  = DOM (Maybe RenderingContext) -> m (Maybe RenderingContext)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getContext"
          [contextId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal contextId
contextId, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([arguments] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [arguments]
arguments)])
         JSM JSVal
-> (JSVal -> DOM (Maybe RenderingContext))
-> DOM (Maybe RenderingContext)
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe RenderingContext)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
getContext_ ::
            (MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
              HTMLCanvasElement -> contextId -> [arguments] -> m ()
getContext_ :: forall (m :: * -> *) contextId arguments.
(MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
HTMLCanvasElement -> contextId -> [arguments] -> m ()
getContext_ HTMLCanvasElement
self contextId
contextId [arguments]
arguments
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getContext"
            [contextId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal contextId
contextId, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([arguments] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [arguments]
arguments)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
getContextUnsafe ::
                 (MonadDOM m, ToJSString contextId, ToJSVal arguments,
                  HasCallStack) =>
                   HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
getContextUnsafe :: forall (m :: * -> *) contextId arguments.
(MonadDOM m, ToJSString contextId, ToJSVal arguments,
 HasCallStack) =>
HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
getContextUnsafe HTMLCanvasElement
self contextId
contextId [arguments]
arguments
  = DOM RenderingContext -> m RenderingContext
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getContext"
           [contextId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal contextId
contextId, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([arguments] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [arguments]
arguments)])
          JSM JSVal
-> (JSVal -> DOM (Maybe RenderingContext))
-> DOM (Maybe RenderingContext)
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe RenderingContext)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)
         DOM (Maybe RenderingContext)
-> (Maybe RenderingContext -> DOM RenderingContext)
-> DOM RenderingContext
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= DOM RenderingContext
-> (RenderingContext -> DOM RenderingContext)
-> Maybe RenderingContext
-> DOM RenderingContext
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (String -> DOM RenderingContext
forall a. HasCallStack => String -> a
Prelude.error String
"Nothing to return") RenderingContext -> DOM RenderingContext
forall a. a -> JSM a
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
getContextUnchecked ::
                    (MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
                      HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
getContextUnchecked :: forall (m :: * -> *) contextId arguments.
(MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
getContextUnchecked HTMLCanvasElement
self contextId
contextId [arguments]
arguments
  = DOM RenderingContext -> m RenderingContext
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getContext"
          [contextId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal contextId
contextId, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([arguments] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [arguments]
arguments)])
         JSM JSVal
-> (JSVal -> DOM RenderingContext) -> DOM RenderingContext
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM RenderingContext
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
toDataURL ::
          (MonadDOM m, ToJSString type', FromJSString result) =>
            HTMLCanvasElement -> Maybe type' -> m result
toDataURL :: forall (m :: * -> *) type' result.
(MonadDOM m, ToJSString type', FromJSString result) =>
HTMLCanvasElement -> Maybe type' -> m result
toDataURL HTMLCanvasElement
self Maybe type'
type'
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"toDataURL" [Maybe type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe type'
type']) JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
toDataURL_ ::
           (MonadDOM m, ToJSString type') =>
             HTMLCanvasElement -> Maybe type' -> m ()
toDataURL_ :: forall (m :: * -> *) type'.
(MonadDOM m, ToJSString type') =>
HTMLCanvasElement -> Maybe type' -> m ()
toDataURL_ HTMLCanvasElement
self Maybe type'
type'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"toDataURL" [Maybe type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe type'
type']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toBlob Mozilla HTMLCanvasElement.toBlob documentation> 
toBlob' ::
        (MonadDOM m, ToJSString type', ToJSVal quality) =>
          HTMLCanvasElement ->
            BlobCallback -> Maybe type' -> Maybe quality -> m ()
toBlob' :: forall (m :: * -> *) type' quality.
(MonadDOM m, ToJSString type', ToJSVal quality) =>
HTMLCanvasElement
-> BlobCallback -> Maybe type' -> Maybe quality -> m ()
toBlob' HTMLCanvasElement
self BlobCallback
callback Maybe type'
type' Maybe quality
quality
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"toBlob"
            [BlobCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal BlobCallback
callback, Maybe type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe type'
type', Maybe quality -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe quality
quality]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
captureStream ::
              (MonadDOM m) => HTMLCanvasElement -> Maybe Double -> m MediaStream
captureStream :: forall (m :: * -> *).
MonadDOM m =>
HTMLCanvasElement -> Maybe Double -> m MediaStream
captureStream HTMLCanvasElement
self Maybe Double
frameRequestRate
  = DOM MediaStream -> m MediaStream
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"captureStream" [Maybe Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Double
frameRequestRate]) JSM JSVal -> (JSVal -> DOM MediaStream) -> DOM MediaStream
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM MediaStream
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
captureStream_ ::
               (MonadDOM m) => HTMLCanvasElement -> Maybe Double -> m ()
captureStream_ :: forall (m :: * -> *).
MonadDOM m =>
HTMLCanvasElement -> Maybe Double -> m ()
captureStream_ HTMLCanvasElement
self Maybe Double
frameRequestRate
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"captureStream" [Maybe Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Double
frameRequestRate]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
setWidth :: (MonadDOM m) => HTMLCanvasElement -> Word -> m ()
setWidth :: forall (m :: * -> *).
MonadDOM m =>
HTMLCanvasElement -> Word -> m ()
setWidth HTMLCanvasElement
self Word
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (HTMLCanvasElement
self HTMLCanvasElement
-> Getting (DOM ()) HTMLCanvasElement (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. String
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss String
"width" (Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
getWidth :: (MonadDOM m) => HTMLCanvasElement -> m Word
getWidth :: forall (m :: * -> *). MonadDOM m => HTMLCanvasElement -> m Word
getWidth HTMLCanvasElement
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (Double -> Word
forall b. Integral b => Double -> b
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Word) -> JSM Double -> DOM Word
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter HTMLCanvasElement (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"width") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
setHeight :: (MonadDOM m) => HTMLCanvasElement -> Word -> m ()
setHeight :: forall (m :: * -> *).
MonadDOM m =>
HTMLCanvasElement -> Word -> m ()
setHeight HTMLCanvasElement
self Word
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (HTMLCanvasElement
self HTMLCanvasElement
-> Getting (DOM ()) HTMLCanvasElement (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. String
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss String
"height" (Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
getHeight :: (MonadDOM m) => HTMLCanvasElement -> m Word
getHeight :: forall (m :: * -> *). MonadDOM m => HTMLCanvasElement -> m Word
getHeight HTMLCanvasElement
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (Double -> Word
forall b. Integral b => Double -> b
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Word) -> JSM Double -> DOM Word
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((HTMLCanvasElement
self HTMLCanvasElement
-> Getting (JSM JSVal) HTMLCanvasElement (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter HTMLCanvasElement (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"height") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))