{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SVGPreserveAspectRatio
       (pattern SVG_PRESERVEASPECTRATIO_UNKNOWN,
        pattern SVG_PRESERVEASPECTRATIO_NONE,
        pattern SVG_PRESERVEASPECTRATIO_XMINYMIN,
        pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN,
        pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN,
        pattern SVG_PRESERVEASPECTRATIO_XMINYMID,
        pattern SVG_PRESERVEASPECTRATIO_XMIDYMID,
        pattern SVG_PRESERVEASPECTRATIO_XMAXYMID,
        pattern SVG_PRESERVEASPECTRATIO_XMINYMAX,
        pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX,
        pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX,
        pattern SVG_MEETORSLICE_UNKNOWN, pattern SVG_MEETORSLICE_MEET,
        pattern SVG_MEETORSLICE_SLICE, setAlign, getAlign, setMeetOrSlice,
        getMeetOrSlice, SVGPreserveAspectRatio(..),
        gTypeSVGPreserveAspectRatio)
       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 $bSVG_PRESERVEASPECTRATIO_UNKNOWN :: a
$mSVG_PRESERVEASPECTRATIO_UNKNOWN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_UNKNOWN = 0
pattern $bSVG_PRESERVEASPECTRATIO_NONE :: a
$mSVG_PRESERVEASPECTRATIO_NONE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_NONE = 1
pattern $bSVG_PRESERVEASPECTRATIO_XMINYMIN :: a
$mSVG_PRESERVEASPECTRATIO_XMINYMIN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMINYMIN = 2
pattern $bSVG_PRESERVEASPECTRATIO_XMIDYMIN :: a
$mSVG_PRESERVEASPECTRATIO_XMIDYMIN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3
pattern $bSVG_PRESERVEASPECTRATIO_XMAXYMIN :: a
$mSVG_PRESERVEASPECTRATIO_XMAXYMIN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4
pattern $bSVG_PRESERVEASPECTRATIO_XMINYMID :: a
$mSVG_PRESERVEASPECTRATIO_XMINYMID :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMINYMID = 5
pattern $bSVG_PRESERVEASPECTRATIO_XMIDYMID :: a
$mSVG_PRESERVEASPECTRATIO_XMIDYMID :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMIDYMID = 6
pattern $bSVG_PRESERVEASPECTRATIO_XMAXYMID :: a
$mSVG_PRESERVEASPECTRATIO_XMAXYMID :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMAXYMID = 7
pattern $bSVG_PRESERVEASPECTRATIO_XMINYMAX :: a
$mSVG_PRESERVEASPECTRATIO_XMINYMAX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMINYMAX = 8
pattern $bSVG_PRESERVEASPECTRATIO_XMIDYMAX :: a
$mSVG_PRESERVEASPECTRATIO_XMIDYMAX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9
pattern $bSVG_PRESERVEASPECTRATIO_XMAXYMAX :: a
$mSVG_PRESERVEASPECTRATIO_XMAXYMAX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
pattern $bSVG_MEETORSLICE_UNKNOWN :: a
$mSVG_MEETORSLICE_UNKNOWN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_MEETORSLICE_UNKNOWN = 0
pattern $bSVG_MEETORSLICE_MEET :: a
$mSVG_MEETORSLICE_MEET :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_MEETORSLICE_MEET = 1
pattern $bSVG_MEETORSLICE_SLICE :: a
$mSVG_MEETORSLICE_SLICE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SVG_MEETORSLICE_SLICE = 2

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
getMeetOrSlice :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
getMeetOrSlice :: SVGPreserveAspectRatio -> m Word
getMeetOrSlice SVGPreserveAspectRatio
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
<$> ((SVGPreserveAspectRatio
self SVGPreserveAspectRatio
-> Getting (JSM JSVal) SVGPreserveAspectRatio (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter SVGPreserveAspectRatio (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"meetOrSlice") 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))