{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SVGLength
       (newValueSpecifiedUnits, convertToSpecifiedUnits,
        pattern SVG_LENGTHTYPE_UNKNOWN, pattern SVG_LENGTHTYPE_NUMBER,
        pattern SVG_LENGTHTYPE_PERCENTAGE, pattern SVG_LENGTHTYPE_EMS,
        pattern SVG_LENGTHTYPE_EXS, pattern SVG_LENGTHTYPE_PX,
        pattern SVG_LENGTHTYPE_CM, pattern SVG_LENGTHTYPE_MM,
        pattern SVG_LENGTHTYPE_IN, pattern SVG_LENGTHTYPE_PT,
        pattern SVG_LENGTHTYPE_PC, getUnitType, setValue, getValue,
        setValueInSpecifiedUnits, getValueInSpecifiedUnits,
        setValueAsString, getValueAsString, SVGLength(..), gTypeSVGLength)
       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/SVGLength.newValueSpecifiedUnits Mozilla SVGLength.newValueSpecifiedUnits documentation> 
newValueSpecifiedUnits ::
                       (MonadDOM m) => SVGLength -> Word -> Float -> m ()
newValueSpecifiedUnits :: SVGLength -> Word -> Float -> m ()
newValueSpecifiedUnits SVGLength
self Word
unitType Float
valueInSpecifiedUnits
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SVGLength
self SVGLength -> Getting (JSM JSVal) SVGLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"newValueSpecifiedUnits"
            [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
unitType, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
valueInSpecifiedUnits]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.convertToSpecifiedUnits Mozilla SVGLength.convertToSpecifiedUnits documentation> 
convertToSpecifiedUnits ::
                        (MonadDOM m) => SVGLength -> Word -> m ()
convertToSpecifiedUnits :: SVGLength -> Word -> m ()
convertToSpecifiedUnits SVGLength
self Word
unitType
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SVGLength
self SVGLength -> Getting (JSM JSVal) SVGLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"convertToSpecifiedUnits" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
unitType]))
pattern $bSVG_LENGTHTYPE_UNKNOWN :: a
$mSVG_LENGTHTYPE_UNKNOWN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_UNKNOWN = 0
pattern $bSVG_LENGTHTYPE_NUMBER :: a
$mSVG_LENGTHTYPE_NUMBER :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_NUMBER = 1
pattern $bSVG_LENGTHTYPE_PERCENTAGE :: a
$mSVG_LENGTHTYPE_PERCENTAGE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_PERCENTAGE = 2
pattern $bSVG_LENGTHTYPE_EMS :: a
$mSVG_LENGTHTYPE_EMS :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_EMS = 3
pattern $bSVG_LENGTHTYPE_EXS :: a
$mSVG_LENGTHTYPE_EXS :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_EXS = 4
pattern $bSVG_LENGTHTYPE_PX :: a
$mSVG_LENGTHTYPE_PX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_PX = 5
pattern $bSVG_LENGTHTYPE_CM :: a
$mSVG_LENGTHTYPE_CM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_CM = 6
pattern $bSVG_LENGTHTYPE_MM :: a
$mSVG_LENGTHTYPE_MM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_MM = 7
pattern $bSVG_LENGTHTYPE_IN :: a
$mSVG_LENGTHTYPE_IN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_IN = 8
pattern $bSVG_LENGTHTYPE_PT :: a
$mSVG_LENGTHTYPE_PT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_PT = 9
pattern $bSVG_LENGTHTYPE_PC :: a
$mSVG_LENGTHTYPE_PC :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_LENGTHTYPE_PC = 10

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.unitType Mozilla SVGLength.unitType documentation> 
getUnitType :: (MonadDOM m) => SVGLength -> m Word
getUnitType :: SVGLength -> m Word
getUnitType SVGLength
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (Double -> Word
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
<$> ((SVGLength
self SVGLength -> Getting (JSM JSVal) SVGLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter SVGLength (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"unitType") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
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/SVGLength.value Mozilla SVGLength.value documentation> 
setValue :: (MonadDOM m) => SVGLength -> Float -> m ()
setValue :: SVGLength -> Float -> m ()
setValue SVGLength
self Float
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (SVGLength
self SVGLength -> Getting (DOM ()) SVGLength (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> 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 [Char]
"value" (Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
getValue :: (MonadDOM m) => SVGLength -> m Float
getValue :: SVGLength -> m Float
getValue SVGLength
self
  = DOM Float -> m Float
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (Double -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac (Double -> Float) -> JSM Double -> DOM Float
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((SVGLength
self SVGLength -> Getting (JSM JSVal) SVGLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter SVGLength (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"value") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
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/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
setValueInSpecifiedUnits ::
                         (MonadDOM m) => SVGLength -> Float -> m ()
setValueInSpecifiedUnits :: SVGLength -> Float -> m ()
setValueInSpecifiedUnits SVGLength
self Float
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (SVGLength
self SVGLength -> Getting (DOM ()) SVGLength (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> 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 [Char]
"valueInSpecifiedUnits" (Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
getValueInSpecifiedUnits :: (MonadDOM m) => SVGLength -> m Float
getValueInSpecifiedUnits :: SVGLength -> m Float
getValueInSpecifiedUnits SVGLength
self
  = DOM Float -> m Float
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac (Double -> Float) -> JSM Double -> DOM Float
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         ((SVGLength
self SVGLength -> Getting (JSM JSVal) SVGLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter SVGLength (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"valueInSpecifiedUnits") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
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/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
setValueAsString ::
                 (MonadDOM m, ToJSString val) => SVGLength -> val -> m ()
setValueAsString :: SVGLength -> val -> m ()
setValueAsString SVGLength
self val
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (SVGLength
self SVGLength -> Getting (DOM ()) SVGLength (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> 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 [Char]
"valueAsString" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
getValueAsString ::
                 (MonadDOM m, FromJSString result) => SVGLength -> m result
getValueAsString :: SVGLength -> m result
getValueAsString SVGLength
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((SVGLength
self SVGLength -> Getting (JSM JSVal) SVGLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter SVGLength (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"valueAsString") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)