{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.WebGPUTextureDescriptor
       (newWebGPUTextureDescriptor, setTextureType, getTextureType,
        setWidth, getWidth, setHeight, getHeight, setSampleCount,
        getSampleCount, setStorageMode, getStorageMode, setUsage, getUsage,
        WebGPUTextureDescriptor(..), gTypeWebGPUTextureDescriptor)
       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/WebGPUTextureDescriptor Mozilla WebGPUTextureDescriptor documentation> 
newWebGPUTextureDescriptor ::
                           (MonadDOM m) =>
                             Word -> Word -> Word -> Bool -> m WebGPUTextureDescriptor
newWebGPUTextureDescriptor :: forall (m :: * -> *).
MonadDOM m =>
Word -> Word -> Word -> Bool -> m WebGPUTextureDescriptor
newWebGPUTextureDescriptor Word
pixelFormat Word
width Word
height Bool
mipmapped
  = DOM WebGPUTextureDescriptor -> m WebGPUTextureDescriptor
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> WebGPUTextureDescriptor
WebGPUTextureDescriptor (JSVal -> WebGPUTextureDescriptor)
-> JSM JSVal -> DOM WebGPUTextureDescriptor
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
"WebGPUTextureDescriptor")
           [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
pixelFormat, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
width, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
height,
            Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
mipmapped])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
setTextureType ::
               (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
setTextureType :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> Word -> m ()
setTextureType WebGPUTextureDescriptor
self Word
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (DOM ()) WebGPUTextureDescriptor (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
"textureType" (Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
getTextureType :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
getTextureType :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> m Word
getTextureType WebGPUTextureDescriptor
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
<$> ((WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (JSM JSVal) WebGPUTextureDescriptor (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WebGPUTextureDescriptor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"textureType") 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/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
setWidth :: (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
setWidth :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> Word -> m ()
setWidth WebGPUTextureDescriptor
self Word
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (DOM ()) WebGPUTextureDescriptor (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/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
getWidth :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
getWidth :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> m Word
getWidth WebGPUTextureDescriptor
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
<$> ((WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (JSM JSVal) WebGPUTextureDescriptor (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WebGPUTextureDescriptor (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/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
setHeight ::
          (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
setHeight :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> Word -> m ()
setHeight WebGPUTextureDescriptor
self Word
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (DOM ()) WebGPUTextureDescriptor (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/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
getHeight :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
getHeight :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> m Word
getHeight WebGPUTextureDescriptor
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
<$> ((WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (JSM JSVal) WebGPUTextureDescriptor (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WebGPUTextureDescriptor (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))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
setSampleCount ::
               (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
setSampleCount :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> Word -> m ()
setSampleCount WebGPUTextureDescriptor
self Word
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (DOM ()) WebGPUTextureDescriptor (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
"sampleCount" (Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
getSampleCount :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
getSampleCount :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> m Word
getSampleCount WebGPUTextureDescriptor
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
<$> ((WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (JSM JSVal) WebGPUTextureDescriptor (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WebGPUTextureDescriptor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"sampleCount") 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/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
setStorageMode ::
               (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
setStorageMode :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> Word -> m ()
setStorageMode WebGPUTextureDescriptor
self Word
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (DOM ()) WebGPUTextureDescriptor (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
"storageMode" (Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
getStorageMode :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
getStorageMode :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> m Word
getStorageMode WebGPUTextureDescriptor
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
<$> ((WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (JSM JSVal) WebGPUTextureDescriptor (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WebGPUTextureDescriptor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"storageMode") 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/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
setUsage :: (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
setUsage :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> Word -> m ()
setUsage WebGPUTextureDescriptor
self Word
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (DOM ()) WebGPUTextureDescriptor (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
"usage" (Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
getUsage :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
getUsage :: forall (m :: * -> *).
MonadDOM m =>
WebGPUTextureDescriptor -> m Word
getUsage WebGPUTextureDescriptor
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
<$> ((WebGPUTextureDescriptor
self WebGPUTextureDescriptor
-> Getting (JSM JSVal) WebGPUTextureDescriptor (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WebGPUTextureDescriptor (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"usage") 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))