{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

'GI.WebKit.Objects.ViewportAttributes.ViewportAttributes' offers the viewport properties to user agents to
control the viewport layout. It contains the viewport size, initial scale with limits,
and information about whether a user is able to scale the contents in the viewport.
This makes a web page fit the device screen.

The 'GI.WebKit.Objects.WebView.WebView'::@/viewport-attributes-changed/@ signal will be emitted with 'GI.WebKit.Objects.ViewportAttributes.ViewportAttributes'
when the viewport attributes are updated in the case of loading web pages contain
the viewport properties and calling webkit_viewport_attributes_recompute.

If the device size, available size, desktop width, or device DPI needs to be changed due to
a consequence of an explicit browser request (caused by screen rotation, resizing, or similar reasons),
You should call @/webkit_viewport_attributes_recompute/@ to recompute the viewport properties and
override those values in the handler of 'GI.WebKit.Objects.WebView.WebView'::@/viewport-attributes-recompute-requested/@ signal.

For more information on the viewport properties, refer to the Safari reference library at
http:\/\/developer.apple.com\/safari\/library\/documentation\/appleapplications\/reference\/safarihtmlref\/articles\/metatags.html

\<informalexample>\<programlisting>
\/\<!-- -->* Connect to the viewport-attributes-changes signal *\<!-- -->\/
WebKitViewportAttributes* attributes = webkit_web_view_get_viewport_attributes (web_view);
g_signal_connect (web_view, \"viewport-attributes-recompute-requested\", G_CALLBACK (viewport_recompute_cb), window);
g_signal_connect (web_view, \"viewport-attributes-changed\", G_CALLBACK (viewport_changed_cb), window);
g_signal_connect (attributes, \"notify::valid\", G_CALLBACK (viewport_valid_changed_cb), web_view);

\/\<!-- -->* Handle the viewport-attributes-recompute-requested signal to override the device width *\<!-- -->\/
static void
viewport_recompute_cb (WebKitWebView* web_view, WebKitViewportAttributes* attributes, GtkWidget* window)
{
    int override_available_width = 480;
    g_object_set (G_OBJECT(attributes), \"available-width\", override_available_width, NULL);
}

\/\<!-- -->* Handle the viewport-attributes-changed signal to recompute the initial scale factor *\<!-- -->\/
static void
viewport_changed_cb (WebKitWebView* web_view, WebKitViewportAttributes* attributes, gpointer data)
{
    gfloat initialScale;
    g_object_get (G_OBJECT (atributes), \"initial-scale-factor\", &initialScale, NULL);
    webkit_web_view_set_zoom_level (web_view, initialScale);
}

\/\<!-- -->* Handle the notify::valid signal to initialize the zoom level *\<!-- -->\/
static void
viewport_valid_changed_cb (WebKitViewportAttributes* attributes, GParamSpec* pspec, WebKitWebView* web_view)
{
    gboolean is_valid;
    g_object_get (attributes, \"valid\", &is_valid, NULL);
    if (!is_valid)
        webkit_web_view_set_zoom_level (web_view, 1.0);
}
\<\/programlisting>\<\/informalexample>
-}

module GI.WebKit.Objects.ViewportAttributes
    ( 

-- * Exported types
    ViewportAttributes(..)                  ,
    IsViewportAttributes                    ,
    toViewportAttributes                    ,
    noViewportAttributes                    ,


 -- * Methods
-- ** recompute #method:recompute#
    ViewportAttributesRecomputeMethodInfo   ,
    viewportAttributesRecompute             ,




 -- * Properties
-- ** availableHeight #attr:availableHeight#
    ViewportAttributesAvailableHeightPropertyInfo,
    constructViewportAttributesAvailableHeight,
    getViewportAttributesAvailableHeight    ,
    setViewportAttributesAvailableHeight    ,
    viewportAttributesAvailableHeight       ,


-- ** availableWidth #attr:availableWidth#
    ViewportAttributesAvailableWidthPropertyInfo,
    constructViewportAttributesAvailableWidth,
    getViewportAttributesAvailableWidth     ,
    setViewportAttributesAvailableWidth     ,
    viewportAttributesAvailableWidth        ,


-- ** desktopWidth #attr:desktopWidth#
    ViewportAttributesDesktopWidthPropertyInfo,
    constructViewportAttributesDesktopWidth ,
    getViewportAttributesDesktopWidth       ,
    setViewportAttributesDesktopWidth       ,
    viewportAttributesDesktopWidth          ,


-- ** deviceDpi #attr:deviceDpi#
    ViewportAttributesDeviceDpiPropertyInfo ,
    constructViewportAttributesDeviceDpi    ,
    getViewportAttributesDeviceDpi          ,
    setViewportAttributesDeviceDpi          ,
    viewportAttributesDeviceDpi             ,


-- ** deviceHeight #attr:deviceHeight#
    ViewportAttributesDeviceHeightPropertyInfo,
    constructViewportAttributesDeviceHeight ,
    getViewportAttributesDeviceHeight       ,
    setViewportAttributesDeviceHeight       ,
    viewportAttributesDeviceHeight          ,


-- ** devicePixelRatio #attr:devicePixelRatio#
    ViewportAttributesDevicePixelRatioPropertyInfo,
    getViewportAttributesDevicePixelRatio   ,
    viewportAttributesDevicePixelRatio      ,


-- ** deviceWidth #attr:deviceWidth#
    ViewportAttributesDeviceWidthPropertyInfo,
    constructViewportAttributesDeviceWidth  ,
    getViewportAttributesDeviceWidth        ,
    setViewportAttributesDeviceWidth        ,
    viewportAttributesDeviceWidth           ,


-- ** height #attr:height#
    ViewportAttributesHeightPropertyInfo    ,
    getViewportAttributesHeight             ,
    viewportAttributesHeight                ,


-- ** initialScaleFactor #attr:initialScaleFactor#
    ViewportAttributesInitialScaleFactorPropertyInfo,
    getViewportAttributesInitialScaleFactor ,
    viewportAttributesInitialScaleFactor    ,


-- ** maximumScaleFactor #attr:maximumScaleFactor#
    ViewportAttributesMaximumScaleFactorPropertyInfo,
    getViewportAttributesMaximumScaleFactor ,
    viewportAttributesMaximumScaleFactor    ,


-- ** minimumScaleFactor #attr:minimumScaleFactor#
    ViewportAttributesMinimumScaleFactorPropertyInfo,
    getViewportAttributesMinimumScaleFactor ,
    viewportAttributesMinimumScaleFactor    ,


-- ** userScalable #attr:userScalable#
    ViewportAttributesUserScalablePropertyInfo,
    getViewportAttributesUserScalable       ,
    viewportAttributesUserScalable          ,


-- ** valid #attr:valid#
    ViewportAttributesValidPropertyInfo     ,
    getViewportAttributesValid              ,
    viewportAttributesValid                 ,


-- ** width #attr:width#
    ViewportAttributesWidthPropertyInfo     ,
    getViewportAttributesWidth              ,
    viewportAttributesWidth                 ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object

newtype ViewportAttributes = ViewportAttributes (ManagedPtr ViewportAttributes)
foreign import ccall "webkit_viewport_attributes_get_type"
    c_webkit_viewport_attributes_get_type :: IO GType

instance GObject ViewportAttributes where
    gobjectType _ = c_webkit_viewport_attributes_get_type
    

class GObject o => IsViewportAttributes o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError ViewportAttributes a) =>
    IsViewportAttributes a
#endif
instance IsViewportAttributes ViewportAttributes
instance GObject.Object.IsObject ViewportAttributes

toViewportAttributes :: IsViewportAttributes o => o -> IO ViewportAttributes
toViewportAttributes = unsafeCastTo ViewportAttributes

noViewportAttributes :: Maybe ViewportAttributes
noViewportAttributes = Nothing

type family ResolveViewportAttributesMethod (t :: Symbol) (o :: *) :: * where
    ResolveViewportAttributesMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveViewportAttributesMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveViewportAttributesMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveViewportAttributesMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveViewportAttributesMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveViewportAttributesMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveViewportAttributesMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveViewportAttributesMethod "recompute" o = ViewportAttributesRecomputeMethodInfo
    ResolveViewportAttributesMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveViewportAttributesMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveViewportAttributesMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveViewportAttributesMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveViewportAttributesMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveViewportAttributesMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveViewportAttributesMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveViewportAttributesMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveViewportAttributesMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveViewportAttributesMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveViewportAttributesMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveViewportAttributesMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveViewportAttributesMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveViewportAttributesMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveViewportAttributesMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveViewportAttributesMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveViewportAttributesMethod t ViewportAttributes, O.MethodInfo info ViewportAttributes p) => O.IsLabelProxy t (ViewportAttributes -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveViewportAttributesMethod t ViewportAttributes, O.MethodInfo info ViewportAttributes p) => O.IsLabel t (ViewportAttributes -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

-- VVV Prop "available-height"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesAvailableHeight :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesAvailableHeight obj = liftIO $ getObjectPropertyInt32 obj "available-height"

setViewportAttributesAvailableHeight :: (MonadIO m, IsViewportAttributes o) => o -> Int32 -> m ()
setViewportAttributesAvailableHeight obj val = liftIO $ setObjectPropertyInt32 obj "available-height" val

constructViewportAttributesAvailableHeight :: (IsViewportAttributes o) => Int32 -> IO (GValueConstruct o)
constructViewportAttributesAvailableHeight val = constructObjectPropertyInt32 "available-height" val

data ViewportAttributesAvailableHeightPropertyInfo
instance AttrInfo ViewportAttributesAvailableHeightPropertyInfo where
    type AttrAllowedOps ViewportAttributesAvailableHeightPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesAvailableHeightPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ViewportAttributesAvailableHeightPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesAvailableHeightPropertyInfo = Int32
    type AttrLabel ViewportAttributesAvailableHeightPropertyInfo = "available-height"
    type AttrOrigin ViewportAttributesAvailableHeightPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesAvailableHeight
    attrSet _ = setViewportAttributesAvailableHeight
    attrConstruct _ = constructViewportAttributesAvailableHeight
    attrClear _ = undefined

-- VVV Prop "available-width"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesAvailableWidth :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesAvailableWidth obj = liftIO $ getObjectPropertyInt32 obj "available-width"

setViewportAttributesAvailableWidth :: (MonadIO m, IsViewportAttributes o) => o -> Int32 -> m ()
setViewportAttributesAvailableWidth obj val = liftIO $ setObjectPropertyInt32 obj "available-width" val

constructViewportAttributesAvailableWidth :: (IsViewportAttributes o) => Int32 -> IO (GValueConstruct o)
constructViewportAttributesAvailableWidth val = constructObjectPropertyInt32 "available-width" val

data ViewportAttributesAvailableWidthPropertyInfo
instance AttrInfo ViewportAttributesAvailableWidthPropertyInfo where
    type AttrAllowedOps ViewportAttributesAvailableWidthPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesAvailableWidthPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ViewportAttributesAvailableWidthPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesAvailableWidthPropertyInfo = Int32
    type AttrLabel ViewportAttributesAvailableWidthPropertyInfo = "available-width"
    type AttrOrigin ViewportAttributesAvailableWidthPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesAvailableWidth
    attrSet _ = setViewportAttributesAvailableWidth
    attrConstruct _ = constructViewportAttributesAvailableWidth
    attrClear _ = undefined

-- VVV Prop "desktop-width"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesDesktopWidth :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesDesktopWidth obj = liftIO $ getObjectPropertyInt32 obj "desktop-width"

setViewportAttributesDesktopWidth :: (MonadIO m, IsViewportAttributes o) => o -> Int32 -> m ()
setViewportAttributesDesktopWidth obj val = liftIO $ setObjectPropertyInt32 obj "desktop-width" val

constructViewportAttributesDesktopWidth :: (IsViewportAttributes o) => Int32 -> IO (GValueConstruct o)
constructViewportAttributesDesktopWidth val = constructObjectPropertyInt32 "desktop-width" val

data ViewportAttributesDesktopWidthPropertyInfo
instance AttrInfo ViewportAttributesDesktopWidthPropertyInfo where
    type AttrAllowedOps ViewportAttributesDesktopWidthPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesDesktopWidthPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ViewportAttributesDesktopWidthPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesDesktopWidthPropertyInfo = Int32
    type AttrLabel ViewportAttributesDesktopWidthPropertyInfo = "desktop-width"
    type AttrOrigin ViewportAttributesDesktopWidthPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesDesktopWidth
    attrSet _ = setViewportAttributesDesktopWidth
    attrConstruct _ = constructViewportAttributesDesktopWidth
    attrClear _ = undefined

-- VVV Prop "device-dpi"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesDeviceDpi :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesDeviceDpi obj = liftIO $ getObjectPropertyInt32 obj "device-dpi"

setViewportAttributesDeviceDpi :: (MonadIO m, IsViewportAttributes o) => o -> Int32 -> m ()
setViewportAttributesDeviceDpi obj val = liftIO $ setObjectPropertyInt32 obj "device-dpi" val

constructViewportAttributesDeviceDpi :: (IsViewportAttributes o) => Int32 -> IO (GValueConstruct o)
constructViewportAttributesDeviceDpi val = constructObjectPropertyInt32 "device-dpi" val

data ViewportAttributesDeviceDpiPropertyInfo
instance AttrInfo ViewportAttributesDeviceDpiPropertyInfo where
    type AttrAllowedOps ViewportAttributesDeviceDpiPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesDeviceDpiPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ViewportAttributesDeviceDpiPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesDeviceDpiPropertyInfo = Int32
    type AttrLabel ViewportAttributesDeviceDpiPropertyInfo = "device-dpi"
    type AttrOrigin ViewportAttributesDeviceDpiPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesDeviceDpi
    attrSet _ = setViewportAttributesDeviceDpi
    attrConstruct _ = constructViewportAttributesDeviceDpi
    attrClear _ = undefined

-- VVV Prop "device-height"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesDeviceHeight :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesDeviceHeight obj = liftIO $ getObjectPropertyInt32 obj "device-height"

setViewportAttributesDeviceHeight :: (MonadIO m, IsViewportAttributes o) => o -> Int32 -> m ()
setViewportAttributesDeviceHeight obj val = liftIO $ setObjectPropertyInt32 obj "device-height" val

constructViewportAttributesDeviceHeight :: (IsViewportAttributes o) => Int32 -> IO (GValueConstruct o)
constructViewportAttributesDeviceHeight val = constructObjectPropertyInt32 "device-height" val

data ViewportAttributesDeviceHeightPropertyInfo
instance AttrInfo ViewportAttributesDeviceHeightPropertyInfo where
    type AttrAllowedOps ViewportAttributesDeviceHeightPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesDeviceHeightPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ViewportAttributesDeviceHeightPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesDeviceHeightPropertyInfo = Int32
    type AttrLabel ViewportAttributesDeviceHeightPropertyInfo = "device-height"
    type AttrOrigin ViewportAttributesDeviceHeightPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesDeviceHeight
    attrSet _ = setViewportAttributesDeviceHeight
    attrConstruct _ = constructViewportAttributesDeviceHeight
    attrClear _ = undefined

-- VVV Prop "device-pixel-ratio"
   -- Type: TBasicType TFloat
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesDevicePixelRatio :: (MonadIO m, IsViewportAttributes o) => o -> m Float
getViewportAttributesDevicePixelRatio obj = liftIO $ getObjectPropertyFloat obj "device-pixel-ratio"

data ViewportAttributesDevicePixelRatioPropertyInfo
instance AttrInfo ViewportAttributesDevicePixelRatioPropertyInfo where
    type AttrAllowedOps ViewportAttributesDevicePixelRatioPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesDevicePixelRatioPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesDevicePixelRatioPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesDevicePixelRatioPropertyInfo = Float
    type AttrLabel ViewportAttributesDevicePixelRatioPropertyInfo = "device-pixel-ratio"
    type AttrOrigin ViewportAttributesDevicePixelRatioPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesDevicePixelRatio
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "device-width"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesDeviceWidth :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesDeviceWidth obj = liftIO $ getObjectPropertyInt32 obj "device-width"

setViewportAttributesDeviceWidth :: (MonadIO m, IsViewportAttributes o) => o -> Int32 -> m ()
setViewportAttributesDeviceWidth obj val = liftIO $ setObjectPropertyInt32 obj "device-width" val

constructViewportAttributesDeviceWidth :: (IsViewportAttributes o) => Int32 -> IO (GValueConstruct o)
constructViewportAttributesDeviceWidth val = constructObjectPropertyInt32 "device-width" val

data ViewportAttributesDeviceWidthPropertyInfo
instance AttrInfo ViewportAttributesDeviceWidthPropertyInfo where
    type AttrAllowedOps ViewportAttributesDeviceWidthPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesDeviceWidthPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ViewportAttributesDeviceWidthPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesDeviceWidthPropertyInfo = Int32
    type AttrLabel ViewportAttributesDeviceWidthPropertyInfo = "device-width"
    type AttrOrigin ViewportAttributesDeviceWidthPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesDeviceWidth
    attrSet _ = setViewportAttributesDeviceWidth
    attrConstruct _ = constructViewportAttributesDeviceWidth
    attrClear _ = undefined

-- VVV Prop "height"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesHeight :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesHeight obj = liftIO $ getObjectPropertyInt32 obj "height"

data ViewportAttributesHeightPropertyInfo
instance AttrInfo ViewportAttributesHeightPropertyInfo where
    type AttrAllowedOps ViewportAttributesHeightPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesHeightPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesHeightPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesHeightPropertyInfo = Int32
    type AttrLabel ViewportAttributesHeightPropertyInfo = "height"
    type AttrOrigin ViewportAttributesHeightPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesHeight
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "initial-scale-factor"
   -- Type: TBasicType TFloat
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesInitialScaleFactor :: (MonadIO m, IsViewportAttributes o) => o -> m Float
getViewportAttributesInitialScaleFactor obj = liftIO $ getObjectPropertyFloat obj "initial-scale-factor"

data ViewportAttributesInitialScaleFactorPropertyInfo
instance AttrInfo ViewportAttributesInitialScaleFactorPropertyInfo where
    type AttrAllowedOps ViewportAttributesInitialScaleFactorPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesInitialScaleFactorPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesInitialScaleFactorPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesInitialScaleFactorPropertyInfo = Float
    type AttrLabel ViewportAttributesInitialScaleFactorPropertyInfo = "initial-scale-factor"
    type AttrOrigin ViewportAttributesInitialScaleFactorPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesInitialScaleFactor
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "maximum-scale-factor"
   -- Type: TBasicType TFloat
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesMaximumScaleFactor :: (MonadIO m, IsViewportAttributes o) => o -> m Float
getViewportAttributesMaximumScaleFactor obj = liftIO $ getObjectPropertyFloat obj "maximum-scale-factor"

data ViewportAttributesMaximumScaleFactorPropertyInfo
instance AttrInfo ViewportAttributesMaximumScaleFactorPropertyInfo where
    type AttrAllowedOps ViewportAttributesMaximumScaleFactorPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesMaximumScaleFactorPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesMaximumScaleFactorPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesMaximumScaleFactorPropertyInfo = Float
    type AttrLabel ViewportAttributesMaximumScaleFactorPropertyInfo = "maximum-scale-factor"
    type AttrOrigin ViewportAttributesMaximumScaleFactorPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesMaximumScaleFactor
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "minimum-scale-factor"
   -- Type: TBasicType TFloat
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesMinimumScaleFactor :: (MonadIO m, IsViewportAttributes o) => o -> m Float
getViewportAttributesMinimumScaleFactor obj = liftIO $ getObjectPropertyFloat obj "minimum-scale-factor"

data ViewportAttributesMinimumScaleFactorPropertyInfo
instance AttrInfo ViewportAttributesMinimumScaleFactorPropertyInfo where
    type AttrAllowedOps ViewportAttributesMinimumScaleFactorPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesMinimumScaleFactorPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesMinimumScaleFactorPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesMinimumScaleFactorPropertyInfo = Float
    type AttrLabel ViewportAttributesMinimumScaleFactorPropertyInfo = "minimum-scale-factor"
    type AttrOrigin ViewportAttributesMinimumScaleFactorPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesMinimumScaleFactor
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "user-scalable"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesUserScalable :: (MonadIO m, IsViewportAttributes o) => o -> m Bool
getViewportAttributesUserScalable obj = liftIO $ getObjectPropertyBool obj "user-scalable"

data ViewportAttributesUserScalablePropertyInfo
instance AttrInfo ViewportAttributesUserScalablePropertyInfo where
    type AttrAllowedOps ViewportAttributesUserScalablePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesUserScalablePropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesUserScalablePropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesUserScalablePropertyInfo = Bool
    type AttrLabel ViewportAttributesUserScalablePropertyInfo = "user-scalable"
    type AttrOrigin ViewportAttributesUserScalablePropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesUserScalable
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "valid"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesValid :: (MonadIO m, IsViewportAttributes o) => o -> m Bool
getViewportAttributesValid obj = liftIO $ getObjectPropertyBool obj "valid"

data ViewportAttributesValidPropertyInfo
instance AttrInfo ViewportAttributesValidPropertyInfo where
    type AttrAllowedOps ViewportAttributesValidPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesValidPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesValidPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesValidPropertyInfo = Bool
    type AttrLabel ViewportAttributesValidPropertyInfo = "valid"
    type AttrOrigin ViewportAttributesValidPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesValid
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "width"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getViewportAttributesWidth :: (MonadIO m, IsViewportAttributes o) => o -> m Int32
getViewportAttributesWidth obj = liftIO $ getObjectPropertyInt32 obj "width"

data ViewportAttributesWidthPropertyInfo
instance AttrInfo ViewportAttributesWidthPropertyInfo where
    type AttrAllowedOps ViewportAttributesWidthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ViewportAttributesWidthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint ViewportAttributesWidthPropertyInfo = IsViewportAttributes
    type AttrGetType ViewportAttributesWidthPropertyInfo = Int32
    type AttrLabel ViewportAttributesWidthPropertyInfo = "width"
    type AttrOrigin ViewportAttributesWidthPropertyInfo = ViewportAttributes
    attrGet _ = getViewportAttributesWidth
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList ViewportAttributes
type instance O.AttributeList ViewportAttributes = ViewportAttributesAttributeList
type ViewportAttributesAttributeList = ('[ '("availableHeight", ViewportAttributesAvailableHeightPropertyInfo), '("availableWidth", ViewportAttributesAvailableWidthPropertyInfo), '("desktopWidth", ViewportAttributesDesktopWidthPropertyInfo), '("deviceDpi", ViewportAttributesDeviceDpiPropertyInfo), '("deviceHeight", ViewportAttributesDeviceHeightPropertyInfo), '("devicePixelRatio", ViewportAttributesDevicePixelRatioPropertyInfo), '("deviceWidth", ViewportAttributesDeviceWidthPropertyInfo), '("height", ViewportAttributesHeightPropertyInfo), '("initialScaleFactor", ViewportAttributesInitialScaleFactorPropertyInfo), '("maximumScaleFactor", ViewportAttributesMaximumScaleFactorPropertyInfo), '("minimumScaleFactor", ViewportAttributesMinimumScaleFactorPropertyInfo), '("userScalable", ViewportAttributesUserScalablePropertyInfo), '("valid", ViewportAttributesValidPropertyInfo), '("width", ViewportAttributesWidthPropertyInfo)] :: [(Symbol, *)])

viewportAttributesAvailableHeight :: AttrLabelProxy "availableHeight"
viewportAttributesAvailableHeight = AttrLabelProxy

viewportAttributesAvailableWidth :: AttrLabelProxy "availableWidth"
viewportAttributesAvailableWidth = AttrLabelProxy

viewportAttributesDesktopWidth :: AttrLabelProxy "desktopWidth"
viewportAttributesDesktopWidth = AttrLabelProxy

viewportAttributesDeviceDpi :: AttrLabelProxy "deviceDpi"
viewportAttributesDeviceDpi = AttrLabelProxy

viewportAttributesDeviceHeight :: AttrLabelProxy "deviceHeight"
viewportAttributesDeviceHeight = AttrLabelProxy

viewportAttributesDevicePixelRatio :: AttrLabelProxy "devicePixelRatio"
viewportAttributesDevicePixelRatio = AttrLabelProxy

viewportAttributesDeviceWidth :: AttrLabelProxy "deviceWidth"
viewportAttributesDeviceWidth = AttrLabelProxy

viewportAttributesHeight :: AttrLabelProxy "height"
viewportAttributesHeight = AttrLabelProxy

viewportAttributesInitialScaleFactor :: AttrLabelProxy "initialScaleFactor"
viewportAttributesInitialScaleFactor = AttrLabelProxy

viewportAttributesMaximumScaleFactor :: AttrLabelProxy "maximumScaleFactor"
viewportAttributesMaximumScaleFactor = AttrLabelProxy

viewportAttributesMinimumScaleFactor :: AttrLabelProxy "minimumScaleFactor"
viewportAttributesMinimumScaleFactor = AttrLabelProxy

viewportAttributesUserScalable :: AttrLabelProxy "userScalable"
viewportAttributesUserScalable = AttrLabelProxy

viewportAttributesValid :: AttrLabelProxy "valid"
viewportAttributesValid = AttrLabelProxy

viewportAttributesWidth :: AttrLabelProxy "width"
viewportAttributesWidth = AttrLabelProxy

type instance O.SignalList ViewportAttributes = ViewportAttributesSignalList
type ViewportAttributesSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method ViewportAttributes::recompute
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "viewportAttributes", argType = TInterface (Name {namespace = "WebKit", name = "ViewportAttributes"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitViewportAttributes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_viewport_attributes_recompute" webkit_viewport_attributes_recompute :: 
    Ptr ViewportAttributes ->               -- viewportAttributes : TInterface (Name {namespace = "WebKit", name = "ViewportAttributes"})
    IO ()

{- |
Recompute the optimal viewport attributes and emit the viewport-attribute-changed signal.
The viewport-attributes-recompute-requested signal also will be handled to override
the device size, available size, desktop width, or device DPI.

@since 1.3.8
-}
viewportAttributesRecompute ::
    (B.CallStack.HasCallStack, MonadIO m, IsViewportAttributes a) =>
    a
    {- ^ /@viewportAttributes@/: a 'GI.WebKit.Objects.ViewportAttributes.ViewportAttributes' -}
    -> m ()
viewportAttributesRecompute viewportAttributes = liftIO $ do
    viewportAttributes' <- unsafeManagedPtrCastPtr viewportAttributes
    webkit_viewport_attributes_recompute viewportAttributes'
    touchManagedPtr viewportAttributes
    return ()

data ViewportAttributesRecomputeMethodInfo
instance (signature ~ (m ()), MonadIO m, IsViewportAttributes a) => O.MethodInfo ViewportAttributesRecomputeMethodInfo a signature where
    overloadedMethod _ = viewportAttributesRecompute