{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SVGComponentTransferFunctionElement
       (pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN,
        pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY,
        pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE,
        pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE,
        pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR,
        pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA, getType,
        getTableValues, getSlope, getIntercept, getAmplitude, getExponent,
        getOffset, SVGComponentTransferFunctionElement(..),
        gTypeSVGComponentTransferFunctionElement,
        IsSVGComponentTransferFunctionElement,
        toSVGComponentTransferFunctionElement)
       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
pattern $mSVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bSVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN :: forall {a}. (Eq a, Num a) => a
SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
pattern $mSVG_FECOMPONENTTRANSFER_TYPE_IDENTITY :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bSVG_FECOMPONENTTRANSFER_TYPE_IDENTITY :: forall {a}. (Eq a, Num a) => a
SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
pattern $mSVG_FECOMPONENTTRANSFER_TYPE_TABLE :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bSVG_FECOMPONENTTRANSFER_TYPE_TABLE :: forall {a}. (Eq a, Num a) => a
SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2
pattern $mSVG_FECOMPONENTTRANSFER_TYPE_DISCRETE :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bSVG_FECOMPONENTTRANSFER_TYPE_DISCRETE :: forall {a}. (Eq a, Num a) => a
SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3
pattern $mSVG_FECOMPONENTTRANSFER_TYPE_LINEAR :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bSVG_FECOMPONENTTRANSFER_TYPE_LINEAR :: forall {a}. (Eq a, Num a) => a
SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4
pattern $mSVG_FECOMPONENTTRANSFER_TYPE_GAMMA :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bSVG_FECOMPONENTTRANSFER_TYPE_GAMMA :: forall {a}. (Eq a, Num a) => a
SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5

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

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

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

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

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

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

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