packages feed

jsaddle-dom-0.10.0.0: src/JSDOM/Generated/AudioBufferOptions.hs

{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
module JSDOM.Generated.AudioBufferOptions
       (newAudioBufferOptions, setNumberOfChannels, getNumberOfChannels, getNumberOfChannelsUnsafe, getNumberOfChannelsUnchecked, setLength, getLength, setSampleRate, getSampleRate, AudioBufferOptions(..), gTypeAudioBufferOptions)
       where
import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
import qualified Prelude as P
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
import JSDOM.Types
import qualified JSDOM.Types as Types
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Generated.Enums

-- | <https://webaudio.github.io/web-audio-api/#AudioBufferOptions AudioBufferOptions specification>
newAudioBufferOptions :: (MonadDOM m) => Word -> Float -> m AudioBufferOptions
newAudioBufferOptions length sampleRate = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "length" (toJSVal length)) P.>> (o ^. jss "sampleRate" (toJSVal sampleRate)) P.>> P.return o)) >>= fromJSValUnchecked))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
setNumberOfChannels :: (MonadDOM m) => AudioBufferOptions -> Word -> m ()
setNumberOfChannels self val = liftDOM (void (self ^. jss "numberOfChannels" (toJSVal val)))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
getNumberOfChannels :: (MonadDOM m) => AudioBufferOptions -> m (Maybe Word)
getNumberOfChannels self = liftDOM (((self ^. js "numberOfChannels") >>= fromJSValUnchecked))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
getNumberOfChannelsUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferOptions -> m Word
getNumberOfChannelsUnsafe self = liftDOM ((((self ^. js "numberOfChannels") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
getNumberOfChannelsUnchecked :: (MonadDOM m) => AudioBufferOptions -> m Word
getNumberOfChannelsUnchecked self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-length AudioBufferOptions.length specification>
setLength :: (MonadDOM m) => AudioBufferOptions -> Word -> m ()
setLength self val = liftDOM (void (self ^. jss "length" (toJSVal val)))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-length AudioBufferOptions.length specification>
getLength :: (MonadDOM m) => AudioBufferOptions -> m Word
getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-samplerate AudioBufferOptions.sampleRate specification>
setSampleRate :: (MonadDOM m) => AudioBufferOptions -> Float -> m ()
setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))

-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-samplerate AudioBufferOptions.sampleRate specification>
getSampleRate :: (MonadDOM m) => AudioBufferOptions -> m Float
getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))