{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.WaveShaperNode
       (setCurve, getCurve, setOversample, getOversample,
        WaveShaperNode(..), gTypeWaveShaperNode)
       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/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
setCurve ::
         (MonadDOM m, IsFloat32Array val) => WaveShaperNode -> val -> m ()
setCurve :: forall (m :: * -> *) val.
(MonadDOM m, IsFloat32Array val) =>
WaveShaperNode -> val -> m ()
setCurve WaveShaperNode
self val
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (WaveShaperNode
self WaveShaperNode
-> Getting (DOM ()) WaveShaperNode (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
"curve" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
getCurve :: (MonadDOM m) => WaveShaperNode -> m Float32Array
getCurve :: forall (m :: * -> *).
MonadDOM m =>
WaveShaperNode -> m Float32Array
getCurve WaveShaperNode
self
  = DOM Float32Array -> m Float32Array
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((WaveShaperNode
self WaveShaperNode
-> Getting (JSM JSVal) WaveShaperNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WaveShaperNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"curve") JSM JSVal -> (JSVal -> DOM Float32Array) -> DOM Float32Array
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 Float32Array
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
getOversample :: (MonadDOM m) => WaveShaperNode -> m OverSampleType
getOversample :: forall (m :: * -> *).
MonadDOM m =>
WaveShaperNode -> m OverSampleType
getOversample WaveShaperNode
self
  = DOM OverSampleType -> m OverSampleType
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((WaveShaperNode
self WaveShaperNode
-> Getting (JSM JSVal) WaveShaperNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter WaveShaperNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"oversample") JSM JSVal -> (JSVal -> DOM OverSampleType) -> DOM OverSampleType
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 OverSampleType
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)