{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.ImageData
(newImageData, newImageData', getWidth, getHeight, getData,
ImageData(..), gTypeImageData)
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
newImageData ::
(MonadDOM m, IsUint8ClampedArray data') =>
data' -> Word -> Maybe Word -> m ImageData
newImageData :: forall (m :: * -> *) data'.
(MonadDOM m, IsUint8ClampedArray data') =>
data' -> Word -> Maybe Word -> m ImageData
newImageData data'
data' Word
sw Maybe Word
sh
= DOM ImageData -> m ImageData
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
(JSVal -> ImageData
ImageData (JSVal -> ImageData) -> JSM JSVal -> DOM ImageData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"ImageData") [data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal data'
data', Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
sw, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
sh])
newImageData' :: (MonadDOM m) => Word -> Word -> m ImageData
newImageData' :: forall (m :: * -> *). MonadDOM m => Word -> Word -> m ImageData
newImageData' Word
sw Word
sh
= DOM ImageData -> m ImageData
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
(JSVal -> ImageData
ImageData (JSVal -> ImageData) -> JSM JSVal -> DOM ImageData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"ImageData") [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
sw, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
sh])
getWidth :: (MonadDOM m) => ImageData -> m Word
getWidth :: forall (m :: * -> *). MonadDOM m => ImageData -> m Word
getWidth ImageData
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
<$> ((ImageData
self ImageData -> Getting (JSM JSVal) ImageData (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ImageData (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))
getHeight :: (MonadDOM m) => ImageData -> m Word
getHeight :: forall (m :: * -> *). MonadDOM m => ImageData -> m Word
getHeight ImageData
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
<$> ((ImageData
self ImageData -> Getting (JSM JSVal) ImageData (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ImageData (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))
getData :: (MonadDOM m) => ImageData -> m Uint8ClampedArray
getData :: forall (m :: * -> *).
MonadDOM m =>
ImageData -> m Uint8ClampedArray
getData ImageData
self = DOM Uint8ClampedArray -> m Uint8ClampedArray
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ImageData
self ImageData -> Getting (JSM JSVal) ImageData (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ImageData (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"data") JSM JSVal
-> (JSVal -> DOM Uint8ClampedArray) -> DOM Uint8ClampedArray
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 Uint8ClampedArray
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)