-----------------------------------------------------------------------------
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
-----------------------------------------------------------------------------
module THREE.DataArrayTexture
  ( -- * Types
    DataArrayTexture (..)
    -- * Constructors
  , THREE.DataArrayTexture.new
    -- * Properties
  , wrapR
  , layerUpdates
    -- * Methods
  , addLayerUpdate
  , clearLayerUpdates
  ) where
-----------------------------------------------------------------------------
import           Miso
-----------------------------------------------------------------------------
import           THREE.Constants.Textures
import           THREE.EventDispatcher
import           THREE.Internal as THREE
import           THREE.Texture
-----------------------------------------------------------------------------
-- | https://threejs.org/docs/#api/en/textures/DataArrayTexture
newtype DataArrayTexture
  = DataArrayTexture
  { DataArrayTexture -> JSVal
unDataArrayTexture :: JSVal
  } deriving newtype (DataArrayTexture -> IO [JSVal]
(DataArrayTexture -> IO [JSVal]) -> ToArgs DataArrayTexture
forall args. (args -> IO [JSVal]) -> ToArgs args
$ctoArgs :: DataArrayTexture -> IO [JSVal]
toArgs :: DataArrayTexture -> IO [JSVal]
ToArgs, DataArrayTexture -> IO Object
(DataArrayTexture -> IO Object) -> ToObject DataArrayTexture
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: DataArrayTexture -> IO Object
toObject :: DataArrayTexture -> IO Object
ToObject, DataArrayTexture -> IO JSVal
(DataArrayTexture -> IO JSVal) -> ToJSVal DataArrayTexture
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: DataArrayTexture -> IO JSVal
toJSVal :: DataArrayTexture -> IO JSVal
ToJSVal)
    deriving anyclass (ToObject DataArrayTexture
ToJSVal DataArrayTexture
Method DataArrayTexture (MisoString, Function) ()
Method DataArrayTexture Object ()
(ToObject DataArrayTexture, ToJSVal DataArrayTexture) =>
Method DataArrayTexture (MisoString, Function) ()
-> Method DataArrayTexture (MisoString, Function) ()
-> Method DataArrayTexture (MisoString, Function) ()
-> Method DataArrayTexture Object ()
-> EventDispatcher DataArrayTexture
forall object.
(ToObject object, ToJSVal object) =>
Method object (MisoString, Function) ()
-> Method object (MisoString, Function) ()
-> Method object (MisoString, Function) ()
-> Method object Object ()
-> EventDispatcher object
$caddEventListener :: Method DataArrayTexture (MisoString, Function) ()
addEventListener :: Method DataArrayTexture (MisoString, Function) ()
$chasEventListener :: Method DataArrayTexture (MisoString, Function) ()
hasEventListener :: Method DataArrayTexture (MisoString, Function) ()
$cremoveEventListener :: Method DataArrayTexture (MisoString, Function) ()
removeEventListener :: Method DataArrayTexture (MisoString, Function) ()
$cdispatchEvent :: Method DataArrayTexture Object ()
dispatchEvent :: Method DataArrayTexture Object ()
EventDispatcher, Property DataArrayTexture Bool
Property DataArrayTexture Double
Property DataArrayTexture Int
Property DataArrayTexture [Object]
Property DataArrayTexture (Maybe Function)
Property DataArrayTexture MisoString
Property DataArrayTexture Object
Property DataArrayTexture ColorSpace
Property DataArrayTexture Formats
Property DataArrayTexture InternalFormats
Property DataArrayTexture MappingModes
Property DataArrayTexture Types
Property DataArrayTexture UvChannel
Property DataArrayTexture WrappingModes
Property DataArrayTexture MagnificationFilters
Property DataArrayTexture MinificationFilters
Property DataArrayTexture Matrix3
Property DataArrayTexture Source
Property DataArrayTexture Vector2
ReadOnly DataArrayTexture Int
ReadOnly DataArrayTexture MisoString
EventDispatcher DataArrayTexture
Method DataArrayTexture () ()
Method DataArrayTexture Object Object
FromJSVal DataArrayTexture =>
Method DataArrayTexture () DataArrayTexture
EventDispatcher DataArrayTexture =>
ReadOnly DataArrayTexture Int
-> ReadOnly DataArrayTexture MisoString
-> Property DataArrayTexture MisoString
-> Property DataArrayTexture Object
-> Property DataArrayTexture [Object]
-> Property DataArrayTexture MappingModes
-> Property DataArrayTexture UvChannel
-> Property DataArrayTexture WrappingModes
-> Property DataArrayTexture WrappingModes
-> Property DataArrayTexture MagnificationFilters
-> Property DataArrayTexture MinificationFilters
-> Property DataArrayTexture Double
-> Property DataArrayTexture Formats
-> Property DataArrayTexture InternalFormats
-> Property DataArrayTexture Types
-> Property DataArrayTexture Vector2
-> Property DataArrayTexture Vector2
-> Property DataArrayTexture Double
-> Property DataArrayTexture Vector2
-> Property DataArrayTexture Bool
-> Property DataArrayTexture Matrix3
-> Property DataArrayTexture Bool
-> Property DataArrayTexture Bool
-> Property DataArrayTexture Bool
-> Property DataArrayTexture Int
-> Property DataArrayTexture ColorSpace
-> Property DataArrayTexture Int
-> Property DataArrayTexture (Maybe Function)
-> Property DataArrayTexture Bool
-> Property DataArrayTexture Object
-> Property DataArrayTexture Source
-> Method DataArrayTexture () ()
-> (FromJSVal DataArrayTexture =>
    Method DataArrayTexture () DataArrayTexture)
-> Method DataArrayTexture Object Object
-> Method DataArrayTexture () ()
-> Method DataArrayTexture Vector2 Vector2
-> TextureClass DataArrayTexture
Method DataArrayTexture Vector2 Vector2
forall texture.
EventDispatcher texture =>
ReadOnly texture Int
-> ReadOnly texture MisoString
-> Property texture MisoString
-> Property texture Object
-> Property texture [Object]
-> Property texture MappingModes
-> Property texture UvChannel
-> Property texture WrappingModes
-> Property texture WrappingModes
-> Property texture MagnificationFilters
-> Property texture MinificationFilters
-> Property texture Double
-> Property texture Formats
-> Property texture InternalFormats
-> Property texture Types
-> Property texture Vector2
-> Property texture Vector2
-> Property texture Double
-> Property texture Vector2
-> Property texture Bool
-> Property texture Matrix3
-> Property texture Bool
-> Property texture Bool
-> Property texture Bool
-> Property texture Int
-> Property texture ColorSpace
-> Property texture Int
-> Property texture (Maybe Function)
-> Property texture Bool
-> Property texture Object
-> Property texture Source
-> Method texture () ()
-> (FromJSVal texture => Method texture () texture)
-> Method texture Object Object
-> Method texture () ()
-> Method texture Vector2 Vector2
-> TextureClass texture
$cid :: ReadOnly DataArrayTexture Int
id :: ReadOnly DataArrayTexture Int
$cuuid :: ReadOnly DataArrayTexture MisoString
uuid :: ReadOnly DataArrayTexture MisoString
$cname :: Property DataArrayTexture MisoString
name :: Property DataArrayTexture MisoString
$cimage :: Property DataArrayTexture Object
image :: Property DataArrayTexture Object
$cmipmaps :: Property DataArrayTexture [Object]
mipmaps :: Property DataArrayTexture [Object]
$cmapping :: Property DataArrayTexture MappingModes
mapping :: Property DataArrayTexture MappingModes
$cchannel :: Property DataArrayTexture UvChannel
channel :: Property DataArrayTexture UvChannel
$cwrapS :: Property DataArrayTexture WrappingModes
wrapS :: Property DataArrayTexture WrappingModes
$cwrapT :: Property DataArrayTexture WrappingModes
wrapT :: Property DataArrayTexture WrappingModes
$cmagFilter :: Property DataArrayTexture MagnificationFilters
magFilter :: Property DataArrayTexture MagnificationFilters
$cminFilter :: Property DataArrayTexture MinificationFilters
minFilter :: Property DataArrayTexture MinificationFilters
$canisotropy :: Property DataArrayTexture Double
anisotropy :: Property DataArrayTexture Double
$cformat :: Property DataArrayTexture Formats
format :: Property DataArrayTexture Formats
$cinternalFormat :: Property DataArrayTexture InternalFormats
internalFormat :: Property DataArrayTexture InternalFormats
$ctype_ :: Property DataArrayTexture Types
type_ :: Property DataArrayTexture Types
$coffset :: Property DataArrayTexture Vector2
offset :: Property DataArrayTexture Vector2
$crepeat :: Property DataArrayTexture Vector2
repeat :: Property DataArrayTexture Vector2
$crotation :: Property DataArrayTexture Double
rotation :: Property DataArrayTexture Double
$ccenter :: Property DataArrayTexture Vector2
center :: Property DataArrayTexture Vector2
$cmatrixAutoUpdate :: Property DataArrayTexture Bool
matrixAutoUpdate :: Property DataArrayTexture Bool
$cmatrix :: Property DataArrayTexture Matrix3
matrix :: Property DataArrayTexture Matrix3
$cgenerateMipmaps :: Property DataArrayTexture Bool
generateMipmaps :: Property DataArrayTexture Bool
$cpremultiplyAlpha :: Property DataArrayTexture Bool
premultiplyAlpha :: Property DataArrayTexture Bool
$cflipY :: Property DataArrayTexture Bool
flipY :: Property DataArrayTexture Bool
$cunpackAlignment :: Property DataArrayTexture Int
unpackAlignment :: Property DataArrayTexture Int
$ccolorSpace :: Property DataArrayTexture ColorSpace
colorSpace :: Property DataArrayTexture ColorSpace
$cversion :: Property DataArrayTexture Int
version :: Property DataArrayTexture Int
$conUpdate :: Property DataArrayTexture (Maybe Function)
onUpdate :: Property DataArrayTexture (Maybe Function)
$cneedsUpdate :: Property DataArrayTexture Bool
needsUpdate :: Property DataArrayTexture Bool
$cuserData :: Property DataArrayTexture Object
userData :: Property DataArrayTexture Object
$csource :: Property DataArrayTexture Source
source :: Property DataArrayTexture Source
$cupdateMatrix :: Method DataArrayTexture () ()
updateMatrix :: Method DataArrayTexture () ()
$cclone :: FromJSVal DataArrayTexture =>
Method DataArrayTexture () DataArrayTexture
clone :: FromJSVal DataArrayTexture =>
Method DataArrayTexture () DataArrayTexture
$ctoJSON :: Method DataArrayTexture Object Object
toJSON :: Method DataArrayTexture Object Object
$cdispose :: Method DataArrayTexture () ()
dispose :: Method DataArrayTexture () ()
$ctransformUv :: Method DataArrayTexture Vector2 Vector2
transformUv :: Method DataArrayTexture Vector2 Vector2
TextureClass)

instance FromJSVal DataArrayTexture where
  fromJSVal :: JSVal -> IO (Maybe DataArrayTexture)
fromJSVal = Maybe DataArrayTexture -> IO (Maybe DataArrayTexture)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe DataArrayTexture -> IO (Maybe DataArrayTexture))
-> (JSVal -> Maybe DataArrayTexture)
-> JSVal
-> IO (Maybe DataArrayTexture)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DataArrayTexture -> Maybe DataArrayTexture
forall a. a -> Maybe a
Just (DataArrayTexture -> Maybe DataArrayTexture)
-> (JSVal -> DataArrayTexture) -> JSVal -> Maybe DataArrayTexture
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> DataArrayTexture
DataArrayTexture

-- Constructor

new :: (DataArrayTextureNewParams t, ToArgs t) => t -> THREE.Three DataArrayTexture
new :: forall t.
(DataArrayTextureNewParams t, ToArgs t) =>
t -> IO DataArrayTexture
new = (JSVal -> DataArrayTexture)
-> MisoString -> t -> IO DataArrayTexture
forall args con.
ToArgs args =>
(JSVal -> con) -> MisoString -> args -> Three con
THREE.new JSVal -> DataArrayTexture
DataArrayTexture MisoString
"DataArrayTexture"

class DataArrayTextureNewParams t
instance DataArrayTextureNewParams ()
instance DataArrayTextureNewParams Object    -- TODO Object -> TypedArray?
instance DataArrayTextureNewParams (Object, Int)
instance DataArrayTextureNewParams (Object, Int, Int)
instance DataArrayTextureNewParams (Object, Int, Int, Int)

-- Property

wrapR :: Property DataArrayTexture WrappingModes
wrapR :: Property DataArrayTexture WrappingModes
wrapR = MisoString -> Property DataArrayTexture WrappingModes
forall object field.
(ToObject object, ToJSVal field, FromJSVal field) =>
MisoString -> Property object field
property MisoString
"wrapR"

layerUpdates :: Property DataArrayTexture [Int]   -- TODO Set?
layerUpdates :: Property DataArrayTexture [Int]
layerUpdates = MisoString -> Property DataArrayTexture [Int]
forall object field.
(ToObject object, ToJSVal field, FromJSVal field) =>
MisoString -> Property object field
property MisoString
"layerUpdates"

-- Method

addLayerUpdate :: Method DataArrayTexture Int ()
addLayerUpdate :: Method DataArrayTexture Int ()
addLayerUpdate = MisoString -> Method DataArrayTexture Int ()
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"addLayerUpdate"

clearLayerUpdates :: Method DataArrayTexture () ()
clearLayerUpdates :: Method DataArrayTexture () ()
clearLayerUpdates = MisoString -> Method DataArrayTexture () ()
forall object return args.
(FromJSVal return, ToArgs args, ToObject object) =>
MisoString -> Method object args return
method MisoString
"clearLayerUpdates"