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

module GI.Gtk.Objects.Image
    ( 

-- * Exported types
    Image(..)                               ,
    ImageK                                  ,
    toImage                                 ,
    noImage                                 ,


 -- * Methods
-- ** imageClear
    imageClear                              ,


-- ** imageGetAnimation
    imageGetAnimation                       ,


-- ** imageGetGicon
    imageGetGicon                           ,


-- ** imageGetIconName
    imageGetIconName                        ,


-- ** imageGetIconSet
    imageGetIconSet                         ,


-- ** imageGetPixbuf
    imageGetPixbuf                          ,


-- ** imageGetPixelSize
    imageGetPixelSize                       ,


-- ** imageGetStock
    imageGetStock                           ,


-- ** imageGetStorageType
    imageGetStorageType                     ,


-- ** imageNew
    imageNew                                ,


-- ** imageNewFromAnimation
    imageNewFromAnimation                   ,


-- ** imageNewFromFile
    imageNewFromFile                        ,


-- ** imageNewFromGicon
    imageNewFromGicon                       ,


-- ** imageNewFromIconName
    imageNewFromIconName                    ,


-- ** imageNewFromIconSet
    imageNewFromIconSet                     ,


-- ** imageNewFromPixbuf
    imageNewFromPixbuf                      ,


-- ** imageNewFromResource
    imageNewFromResource                    ,


-- ** imageNewFromStock
    imageNewFromStock                       ,


-- ** imageNewFromSurface
    imageNewFromSurface                     ,


-- ** imageSetFromAnimation
    imageSetFromAnimation                   ,


-- ** imageSetFromFile
    imageSetFromFile                        ,


-- ** imageSetFromGicon
    imageSetFromGicon                       ,


-- ** imageSetFromIconName
    imageSetFromIconName                    ,


-- ** imageSetFromIconSet
    imageSetFromIconSet                     ,


-- ** imageSetFromPixbuf
    imageSetFromPixbuf                      ,


-- ** imageSetFromResource
    imageSetFromResource                    ,


-- ** imageSetFromStock
    imageSetFromStock                       ,


-- ** imageSetFromSurface
    imageSetFromSurface                     ,


-- ** imageSetPixelSize
    imageSetPixelSize                       ,




 -- * Properties
-- ** File
    ImageFilePropertyInfo                   ,
    constructImageFile                      ,
    getImageFile                            ,
    setImageFile                            ,


-- ** Gicon
    ImageGiconPropertyInfo                  ,
    constructImageGicon                     ,
    getImageGicon                           ,
    setImageGicon                           ,


-- ** IconName
    ImageIconNamePropertyInfo               ,
    constructImageIconName                  ,
    getImageIconName                        ,
    setImageIconName                        ,


-- ** IconSet
    ImageIconSetPropertyInfo                ,
    constructImageIconSet                   ,
    getImageIconSet                         ,
    setImageIconSet                         ,


-- ** IconSize
    ImageIconSizePropertyInfo               ,
    constructImageIconSize                  ,
    getImageIconSize                        ,
    setImageIconSize                        ,


-- ** Pixbuf
    ImagePixbufPropertyInfo                 ,
    constructImagePixbuf                    ,
    getImagePixbuf                          ,
    setImagePixbuf                          ,


-- ** PixbufAnimation
    ImagePixbufAnimationPropertyInfo        ,
    constructImagePixbufAnimation           ,
    getImagePixbufAnimation                 ,
    setImagePixbufAnimation                 ,


-- ** PixelSize
    ImagePixelSizePropertyInfo              ,
    constructImagePixelSize                 ,
    getImagePixelSize                       ,
    setImagePixelSize                       ,


-- ** Resource
    ImageResourcePropertyInfo               ,
    constructImageResource                  ,
    getImageResource                        ,
    setImageResource                        ,


-- ** Stock
    ImageStockPropertyInfo                  ,
    constructImageStock                     ,
    getImageStock                           ,
    setImageStock                           ,


-- ** StorageType
    ImageStorageTypePropertyInfo            ,
    getImageStorageType                     ,


-- ** Surface
    ImageSurfacePropertyInfo                ,
    constructImageSurface                   ,
    getImageSurface                         ,
    setImageSurface                         ,


-- ** UseFallback
    ImageUseFallbackPropertyInfo            ,
    constructImageUseFallback               ,
    getImageUseFallback                     ,
    setImageUseFallback                     ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.Atk as Atk
import qualified GI.GObject as GObject
import qualified GI.GdkPixbuf as GdkPixbuf
import qualified GI.Gio as Gio
import qualified GI.Cairo as Cairo

newtype Image = Image (ForeignPtr Image)
foreign import ccall "gtk_image_get_type"
    c_gtk_image_get_type :: IO GType

type instance ParentTypes Image = ImageParentTypes
type ImageParentTypes = '[Misc, Widget, GObject.Object, Atk.ImplementorIface, Buildable]

instance GObject Image where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_image_get_type
    

class GObject o => ImageK o
instance (GObject o, IsDescendantOf Image o) => ImageK o

toImage :: ImageK o => o -> IO Image
toImage = unsafeCastTo Image

noImage :: Maybe Image
noImage = Nothing

-- VVV Prop "file"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getImageFile :: (MonadIO m, ImageK o) => o -> m T.Text
getImageFile obj = liftIO $ getObjectPropertyString obj "file"

setImageFile :: (MonadIO m, ImageK o) => o -> T.Text -> m ()
setImageFile obj val = liftIO $ setObjectPropertyString obj "file" val

constructImageFile :: T.Text -> IO ([Char], GValue)
constructImageFile val = constructObjectPropertyString "file" val

data ImageFilePropertyInfo
instance AttrInfo ImageFilePropertyInfo where
    type AttrAllowedOps ImageFilePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageFilePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ImageFilePropertyInfo = ImageK
    type AttrGetType ImageFilePropertyInfo = T.Text
    type AttrLabel ImageFilePropertyInfo = "Image::file"
    attrGet _ = getImageFile
    attrSet _ = setImageFile
    attrConstruct _ = constructImageFile

-- VVV Prop "gicon"
   -- Type: TInterface "Gio" "Icon"
   -- Flags: [PropertyReadable,PropertyWritable]

getImageGicon :: (MonadIO m, ImageK o) => o -> m Gio.Icon
getImageGicon obj = liftIO $ getObjectPropertyObject obj "gicon" Gio.Icon

setImageGicon :: (MonadIO m, ImageK o, Gio.IconK a) => o -> a -> m ()
setImageGicon obj val = liftIO $ setObjectPropertyObject obj "gicon" val

constructImageGicon :: (Gio.IconK a) => a -> IO ([Char], GValue)
constructImageGicon val = constructObjectPropertyObject "gicon" val

data ImageGiconPropertyInfo
instance AttrInfo ImageGiconPropertyInfo where
    type AttrAllowedOps ImageGiconPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageGiconPropertyInfo = Gio.IconK
    type AttrBaseTypeConstraint ImageGiconPropertyInfo = ImageK
    type AttrGetType ImageGiconPropertyInfo = Gio.Icon
    type AttrLabel ImageGiconPropertyInfo = "Image::gicon"
    attrGet _ = getImageGicon
    attrSet _ = setImageGicon
    attrConstruct _ = constructImageGicon

-- VVV Prop "icon-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getImageIconName :: (MonadIO m, ImageK o) => o -> m T.Text
getImageIconName obj = liftIO $ getObjectPropertyString obj "icon-name"

setImageIconName :: (MonadIO m, ImageK o) => o -> T.Text -> m ()
setImageIconName obj val = liftIO $ setObjectPropertyString obj "icon-name" val

constructImageIconName :: T.Text -> IO ([Char], GValue)
constructImageIconName val = constructObjectPropertyString "icon-name" val

data ImageIconNamePropertyInfo
instance AttrInfo ImageIconNamePropertyInfo where
    type AttrAllowedOps ImageIconNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageIconNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ImageIconNamePropertyInfo = ImageK
    type AttrGetType ImageIconNamePropertyInfo = T.Text
    type AttrLabel ImageIconNamePropertyInfo = "Image::icon-name"
    attrGet _ = getImageIconName
    attrSet _ = setImageIconName
    attrConstruct _ = constructImageIconName

-- VVV Prop "icon-set"
   -- Type: TInterface "Gtk" "IconSet"
   -- Flags: [PropertyReadable,PropertyWritable]

getImageIconSet :: (MonadIO m, ImageK o) => o -> m IconSet
getImageIconSet obj = liftIO $ getObjectPropertyBoxed obj "icon-set" IconSet

setImageIconSet :: (MonadIO m, ImageK o) => o -> IconSet -> m ()
setImageIconSet obj val = liftIO $ setObjectPropertyBoxed obj "icon-set" val

constructImageIconSet :: IconSet -> IO ([Char], GValue)
constructImageIconSet val = constructObjectPropertyBoxed "icon-set" val

data ImageIconSetPropertyInfo
instance AttrInfo ImageIconSetPropertyInfo where
    type AttrAllowedOps ImageIconSetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageIconSetPropertyInfo = (~) IconSet
    type AttrBaseTypeConstraint ImageIconSetPropertyInfo = ImageK
    type AttrGetType ImageIconSetPropertyInfo = IconSet
    type AttrLabel ImageIconSetPropertyInfo = "Image::icon-set"
    attrGet _ = getImageIconSet
    attrSet _ = setImageIconSet
    attrConstruct _ = constructImageIconSet

-- VVV Prop "icon-size"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getImageIconSize :: (MonadIO m, ImageK o) => o -> m Int32
getImageIconSize obj = liftIO $ getObjectPropertyCInt obj "icon-size"

setImageIconSize :: (MonadIO m, ImageK o) => o -> Int32 -> m ()
setImageIconSize obj val = liftIO $ setObjectPropertyCInt obj "icon-size" val

constructImageIconSize :: Int32 -> IO ([Char], GValue)
constructImageIconSize val = constructObjectPropertyCInt "icon-size" val

data ImageIconSizePropertyInfo
instance AttrInfo ImageIconSizePropertyInfo where
    type AttrAllowedOps ImageIconSizePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageIconSizePropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ImageIconSizePropertyInfo = ImageK
    type AttrGetType ImageIconSizePropertyInfo = Int32
    type AttrLabel ImageIconSizePropertyInfo = "Image::icon-size"
    attrGet _ = getImageIconSize
    attrSet _ = setImageIconSize
    attrConstruct _ = constructImageIconSize

-- VVV Prop "pixbuf"
   -- Type: TInterface "GdkPixbuf" "Pixbuf"
   -- Flags: [PropertyReadable,PropertyWritable]

getImagePixbuf :: (MonadIO m, ImageK o) => o -> m GdkPixbuf.Pixbuf
getImagePixbuf obj = liftIO $ getObjectPropertyObject obj "pixbuf" GdkPixbuf.Pixbuf

setImagePixbuf :: (MonadIO m, ImageK o, GdkPixbuf.PixbufK a) => o -> a -> m ()
setImagePixbuf obj val = liftIO $ setObjectPropertyObject obj "pixbuf" val

constructImagePixbuf :: (GdkPixbuf.PixbufK a) => a -> IO ([Char], GValue)
constructImagePixbuf val = constructObjectPropertyObject "pixbuf" val

data ImagePixbufPropertyInfo
instance AttrInfo ImagePixbufPropertyInfo where
    type AttrAllowedOps ImagePixbufPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImagePixbufPropertyInfo = GdkPixbuf.PixbufK
    type AttrBaseTypeConstraint ImagePixbufPropertyInfo = ImageK
    type AttrGetType ImagePixbufPropertyInfo = GdkPixbuf.Pixbuf
    type AttrLabel ImagePixbufPropertyInfo = "Image::pixbuf"
    attrGet _ = getImagePixbuf
    attrSet _ = setImagePixbuf
    attrConstruct _ = constructImagePixbuf

-- VVV Prop "pixbuf-animation"
   -- Type: TInterface "GdkPixbuf" "PixbufAnimation"
   -- Flags: [PropertyReadable,PropertyWritable]

getImagePixbufAnimation :: (MonadIO m, ImageK o) => o -> m GdkPixbuf.PixbufAnimation
getImagePixbufAnimation obj = liftIO $ getObjectPropertyObject obj "pixbuf-animation" GdkPixbuf.PixbufAnimation

setImagePixbufAnimation :: (MonadIO m, ImageK o, GdkPixbuf.PixbufAnimationK a) => o -> a -> m ()
setImagePixbufAnimation obj val = liftIO $ setObjectPropertyObject obj "pixbuf-animation" val

constructImagePixbufAnimation :: (GdkPixbuf.PixbufAnimationK a) => a -> IO ([Char], GValue)
constructImagePixbufAnimation val = constructObjectPropertyObject "pixbuf-animation" val

data ImagePixbufAnimationPropertyInfo
instance AttrInfo ImagePixbufAnimationPropertyInfo where
    type AttrAllowedOps ImagePixbufAnimationPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImagePixbufAnimationPropertyInfo = GdkPixbuf.PixbufAnimationK
    type AttrBaseTypeConstraint ImagePixbufAnimationPropertyInfo = ImageK
    type AttrGetType ImagePixbufAnimationPropertyInfo = GdkPixbuf.PixbufAnimation
    type AttrLabel ImagePixbufAnimationPropertyInfo = "Image::pixbuf-animation"
    attrGet _ = getImagePixbufAnimation
    attrSet _ = setImagePixbufAnimation
    attrConstruct _ = constructImagePixbufAnimation

-- VVV Prop "pixel-size"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getImagePixelSize :: (MonadIO m, ImageK o) => o -> m Int32
getImagePixelSize obj = liftIO $ getObjectPropertyCInt obj "pixel-size"

setImagePixelSize :: (MonadIO m, ImageK o) => o -> Int32 -> m ()
setImagePixelSize obj val = liftIO $ setObjectPropertyCInt obj "pixel-size" val

constructImagePixelSize :: Int32 -> IO ([Char], GValue)
constructImagePixelSize val = constructObjectPropertyCInt "pixel-size" val

data ImagePixelSizePropertyInfo
instance AttrInfo ImagePixelSizePropertyInfo where
    type AttrAllowedOps ImagePixelSizePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImagePixelSizePropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ImagePixelSizePropertyInfo = ImageK
    type AttrGetType ImagePixelSizePropertyInfo = Int32
    type AttrLabel ImagePixelSizePropertyInfo = "Image::pixel-size"
    attrGet _ = getImagePixelSize
    attrSet _ = setImagePixelSize
    attrConstruct _ = constructImagePixelSize

-- VVV Prop "resource"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getImageResource :: (MonadIO m, ImageK o) => o -> m T.Text
getImageResource obj = liftIO $ getObjectPropertyString obj "resource"

setImageResource :: (MonadIO m, ImageK o) => o -> T.Text -> m ()
setImageResource obj val = liftIO $ setObjectPropertyString obj "resource" val

constructImageResource :: T.Text -> IO ([Char], GValue)
constructImageResource val = constructObjectPropertyString "resource" val

data ImageResourcePropertyInfo
instance AttrInfo ImageResourcePropertyInfo where
    type AttrAllowedOps ImageResourcePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageResourcePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ImageResourcePropertyInfo = ImageK
    type AttrGetType ImageResourcePropertyInfo = T.Text
    type AttrLabel ImageResourcePropertyInfo = "Image::resource"
    attrGet _ = getImageResource
    attrSet _ = setImageResource
    attrConstruct _ = constructImageResource

-- VVV Prop "stock"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getImageStock :: (MonadIO m, ImageK o) => o -> m T.Text
getImageStock obj = liftIO $ getObjectPropertyString obj "stock"

setImageStock :: (MonadIO m, ImageK o) => o -> T.Text -> m ()
setImageStock obj val = liftIO $ setObjectPropertyString obj "stock" val

constructImageStock :: T.Text -> IO ([Char], GValue)
constructImageStock val = constructObjectPropertyString "stock" val

data ImageStockPropertyInfo
instance AttrInfo ImageStockPropertyInfo where
    type AttrAllowedOps ImageStockPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageStockPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint ImageStockPropertyInfo = ImageK
    type AttrGetType ImageStockPropertyInfo = T.Text
    type AttrLabel ImageStockPropertyInfo = "Image::stock"
    attrGet _ = getImageStock
    attrSet _ = setImageStock
    attrConstruct _ = constructImageStock

-- VVV Prop "storage-type"
   -- Type: TInterface "Gtk" "ImageType"
   -- Flags: [PropertyReadable]

getImageStorageType :: (MonadIO m, ImageK o) => o -> m ImageType
getImageStorageType obj = liftIO $ getObjectPropertyEnum obj "storage-type"

data ImageStorageTypePropertyInfo
instance AttrInfo ImageStorageTypePropertyInfo where
    type AttrAllowedOps ImageStorageTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint ImageStorageTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint ImageStorageTypePropertyInfo = ImageK
    type AttrGetType ImageStorageTypePropertyInfo = ImageType
    type AttrLabel ImageStorageTypePropertyInfo = "Image::storage-type"
    attrGet _ = getImageStorageType
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "surface"
   -- Type: TInterface "cairo" "Surface"
   -- Flags: [PropertyReadable,PropertyWritable]

getImageSurface :: (MonadIO m, ImageK o) => o -> m Cairo.Surface
getImageSurface obj = liftIO $ getObjectPropertyBoxed obj "surface" Cairo.Surface

setImageSurface :: (MonadIO m, ImageK o) => o -> Cairo.Surface -> m ()
setImageSurface obj val = liftIO $ setObjectPropertyBoxed obj "surface" val

constructImageSurface :: Cairo.Surface -> IO ([Char], GValue)
constructImageSurface val = constructObjectPropertyBoxed "surface" val

data ImageSurfacePropertyInfo
instance AttrInfo ImageSurfacePropertyInfo where
    type AttrAllowedOps ImageSurfacePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageSurfacePropertyInfo = (~) Cairo.Surface
    type AttrBaseTypeConstraint ImageSurfacePropertyInfo = ImageK
    type AttrGetType ImageSurfacePropertyInfo = Cairo.Surface
    type AttrLabel ImageSurfacePropertyInfo = "Image::surface"
    attrGet _ = getImageSurface
    attrSet _ = setImageSurface
    attrConstruct _ = constructImageSurface

-- VVV Prop "use-fallback"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getImageUseFallback :: (MonadIO m, ImageK o) => o -> m Bool
getImageUseFallback obj = liftIO $ getObjectPropertyBool obj "use-fallback"

setImageUseFallback :: (MonadIO m, ImageK o) => o -> Bool -> m ()
setImageUseFallback obj val = liftIO $ setObjectPropertyBool obj "use-fallback" val

constructImageUseFallback :: Bool -> IO ([Char], GValue)
constructImageUseFallback val = constructObjectPropertyBool "use-fallback" val

data ImageUseFallbackPropertyInfo
instance AttrInfo ImageUseFallbackPropertyInfo where
    type AttrAllowedOps ImageUseFallbackPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ImageUseFallbackPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint ImageUseFallbackPropertyInfo = ImageK
    type AttrGetType ImageUseFallbackPropertyInfo = Bool
    type AttrLabel ImageUseFallbackPropertyInfo = "Image::use-fallback"
    attrGet _ = getImageUseFallback
    attrSet _ = setImageUseFallback
    attrConstruct _ = constructImageUseFallback

type instance AttributeList Image = ImageAttributeList
type ImageAttributeList = ('[ '("app-paintable", WidgetAppPaintablePropertyInfo), '("can-default", WidgetCanDefaultPropertyInfo), '("can-focus", WidgetCanFocusPropertyInfo), '("composite-child", WidgetCompositeChildPropertyInfo), '("double-buffered", WidgetDoubleBufferedPropertyInfo), '("events", WidgetEventsPropertyInfo), '("expand", WidgetExpandPropertyInfo), '("file", ImageFilePropertyInfo), '("gicon", ImageGiconPropertyInfo), '("halign", WidgetHalignPropertyInfo), '("has-default", WidgetHasDefaultPropertyInfo), '("has-focus", WidgetHasFocusPropertyInfo), '("has-tooltip", WidgetHasTooltipPropertyInfo), '("height-request", WidgetHeightRequestPropertyInfo), '("hexpand", WidgetHexpandPropertyInfo), '("hexpand-set", WidgetHexpandSetPropertyInfo), '("icon-name", ImageIconNamePropertyInfo), '("icon-set", ImageIconSetPropertyInfo), '("icon-size", ImageIconSizePropertyInfo), '("is-focus", WidgetIsFocusPropertyInfo), '("margin", WidgetMarginPropertyInfo), '("margin-bottom", WidgetMarginBottomPropertyInfo), '("margin-end", WidgetMarginEndPropertyInfo), '("margin-left", WidgetMarginLeftPropertyInfo), '("margin-right", WidgetMarginRightPropertyInfo), '("margin-start", WidgetMarginStartPropertyInfo), '("margin-top", WidgetMarginTopPropertyInfo), '("name", WidgetNamePropertyInfo), '("no-show-all", WidgetNoShowAllPropertyInfo), '("opacity", WidgetOpacityPropertyInfo), '("parent", WidgetParentPropertyInfo), '("pixbuf", ImagePixbufPropertyInfo), '("pixbuf-animation", ImagePixbufAnimationPropertyInfo), '("pixel-size", ImagePixelSizePropertyInfo), '("receives-default", WidgetReceivesDefaultPropertyInfo), '("resource", ImageResourcePropertyInfo), '("scale-factor", WidgetScaleFactorPropertyInfo), '("sensitive", WidgetSensitivePropertyInfo), '("stock", ImageStockPropertyInfo), '("storage-type", ImageStorageTypePropertyInfo), '("style", WidgetStylePropertyInfo), '("surface", ImageSurfacePropertyInfo), '("tooltip-markup", WidgetTooltipMarkupPropertyInfo), '("tooltip-text", WidgetTooltipTextPropertyInfo), '("use-fallback", ImageUseFallbackPropertyInfo), '("valign", WidgetValignPropertyInfo), '("vexpand", WidgetVexpandPropertyInfo), '("vexpand-set", WidgetVexpandSetPropertyInfo), '("visible", WidgetVisiblePropertyInfo), '("width-request", WidgetWidthRequestPropertyInfo), '("window", WidgetWindowPropertyInfo), '("xalign", MiscXalignPropertyInfo), '("xpad", MiscXpadPropertyInfo), '("yalign", MiscYalignPropertyInfo), '("ypad", MiscYpadPropertyInfo)] :: [(Symbol, *)])

type instance SignalList Image = ImageSignalList
type ImageSignalList = ('[ '("accel-closures-changed", WidgetAccelClosuresChangedSignalInfo), '("button-press-event", WidgetButtonPressEventSignalInfo), '("button-release-event", WidgetButtonReleaseEventSignalInfo), '("can-activate-accel", WidgetCanActivateAccelSignalInfo), '("child-notify", WidgetChildNotifySignalInfo), '("composited-changed", WidgetCompositedChangedSignalInfo), '("configure-event", WidgetConfigureEventSignalInfo), '("damage-event", WidgetDamageEventSignalInfo), '("delete-event", WidgetDeleteEventSignalInfo), '("destroy", WidgetDestroySignalInfo), '("destroy-event", WidgetDestroyEventSignalInfo), '("direction-changed", WidgetDirectionChangedSignalInfo), '("drag-begin", WidgetDragBeginSignalInfo), '("drag-data-delete", WidgetDragDataDeleteSignalInfo), '("drag-data-get", WidgetDragDataGetSignalInfo), '("drag-data-received", WidgetDragDataReceivedSignalInfo), '("drag-drop", WidgetDragDropSignalInfo), '("drag-end", WidgetDragEndSignalInfo), '("drag-failed", WidgetDragFailedSignalInfo), '("drag-leave", WidgetDragLeaveSignalInfo), '("drag-motion", WidgetDragMotionSignalInfo), '("draw", WidgetDrawSignalInfo), '("enter-notify-event", WidgetEnterNotifyEventSignalInfo), '("event", WidgetEventSignalInfo), '("event-after", WidgetEventAfterSignalInfo), '("focus", WidgetFocusSignalInfo), '("focus-in-event", WidgetFocusInEventSignalInfo), '("focus-out-event", WidgetFocusOutEventSignalInfo), '("grab-broken-event", WidgetGrabBrokenEventSignalInfo), '("grab-focus", WidgetGrabFocusSignalInfo), '("grab-notify", WidgetGrabNotifySignalInfo), '("hide", WidgetHideSignalInfo), '("hierarchy-changed", WidgetHierarchyChangedSignalInfo), '("key-press-event", WidgetKeyPressEventSignalInfo), '("key-release-event", WidgetKeyReleaseEventSignalInfo), '("keynav-failed", WidgetKeynavFailedSignalInfo), '("leave-notify-event", WidgetLeaveNotifyEventSignalInfo), '("map", WidgetMapSignalInfo), '("map-event", WidgetMapEventSignalInfo), '("mnemonic-activate", WidgetMnemonicActivateSignalInfo), '("motion-notify-event", WidgetMotionNotifyEventSignalInfo), '("move-focus", WidgetMoveFocusSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("parent-set", WidgetParentSetSignalInfo), '("popup-menu", WidgetPopupMenuSignalInfo), '("property-notify-event", WidgetPropertyNotifyEventSignalInfo), '("proximity-in-event", WidgetProximityInEventSignalInfo), '("proximity-out-event", WidgetProximityOutEventSignalInfo), '("query-tooltip", WidgetQueryTooltipSignalInfo), '("realize", WidgetRealizeSignalInfo), '("screen-changed", WidgetScreenChangedSignalInfo), '("scroll-event", WidgetScrollEventSignalInfo), '("selection-clear-event", WidgetSelectionClearEventSignalInfo), '("selection-get", WidgetSelectionGetSignalInfo), '("selection-notify-event", WidgetSelectionNotifyEventSignalInfo), '("selection-received", WidgetSelectionReceivedSignalInfo), '("selection-request-event", WidgetSelectionRequestEventSignalInfo), '("show", WidgetShowSignalInfo), '("show-help", WidgetShowHelpSignalInfo), '("size-allocate", WidgetSizeAllocateSignalInfo), '("state-changed", WidgetStateChangedSignalInfo), '("state-flags-changed", WidgetStateFlagsChangedSignalInfo), '("style-set", WidgetStyleSetSignalInfo), '("style-updated", WidgetStyleUpdatedSignalInfo), '("touch-event", WidgetTouchEventSignalInfo), '("unmap", WidgetUnmapSignalInfo), '("unmap-event", WidgetUnmapEventSignalInfo), '("unrealize", WidgetUnrealizeSignalInfo), '("visibility-notify-event", WidgetVisibilityNotifyEventSignalInfo), '("window-state-event", WidgetWindowStateEventSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Image::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new" gtk_image_new :: 
    IO (Ptr Image)


imageNew ::
    (MonadIO m) =>
    m Image
imageNew  = liftIO $ do
    result <- gtk_image_new
    checkUnexpectedReturnNULL "gtk_image_new" result
    result' <- (newObject Image) result
    return result'

-- method Image::new_from_animation
-- method type : Constructor
-- Args : [Arg {argName = "animation", argType = TInterface "GdkPixbuf" "PixbufAnimation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "animation", argType = TInterface "GdkPixbuf" "PixbufAnimation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_animation" gtk_image_new_from_animation :: 
    Ptr GdkPixbuf.PixbufAnimation ->        -- animation : TInterface "GdkPixbuf" "PixbufAnimation"
    IO (Ptr Image)


imageNewFromAnimation ::
    (MonadIO m, GdkPixbuf.PixbufAnimationK a) =>
    a ->                                    -- animation
    m Image
imageNewFromAnimation animation = liftIO $ do
    let animation' = unsafeManagedPtrCastPtr animation
    result <- gtk_image_new_from_animation animation'
    checkUnexpectedReturnNULL "gtk_image_new_from_animation" result
    result' <- (newObject Image) result
    touchManagedPtr animation
    return result'

-- method Image::new_from_file
-- method type : Constructor
-- Args : [Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_file" gtk_image_new_from_file :: 
    CString ->                              -- filename : TBasicType TFileName
    IO (Ptr Image)


imageNewFromFile ::
    (MonadIO m) =>
    [Char] ->                               -- filename
    m Image
imageNewFromFile filename = liftIO $ do
    filename' <- stringToCString filename
    result <- gtk_image_new_from_file filename'
    checkUnexpectedReturnNULL "gtk_image_new_from_file" result
    result' <- (newObject Image) result
    freeMem filename'
    return result'

-- method Image::new_from_gicon
-- method type : Constructor
-- Args : [Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_gicon" gtk_image_new_from_gicon :: 
    Ptr Gio.Icon ->                         -- icon : TInterface "Gio" "Icon"
    Int32 ->                                -- size : TBasicType TInt32
    IO (Ptr Image)


imageNewFromGicon ::
    (MonadIO m, Gio.IconK a) =>
    a ->                                    -- icon
    Int32 ->                                -- size
    m Image
imageNewFromGicon icon size = liftIO $ do
    let icon' = unsafeManagedPtrCastPtr icon
    result <- gtk_image_new_from_gicon icon' size
    checkUnexpectedReturnNULL "gtk_image_new_from_gicon" result
    result' <- (newObject Image) result
    touchManagedPtr icon
    return result'

-- method Image::new_from_icon_name
-- method type : Constructor
-- Args : [Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_icon_name" gtk_image_new_from_icon_name :: 
    CString ->                              -- icon_name : TBasicType TUTF8
    Int32 ->                                -- size : TBasicType TInt32
    IO (Ptr Image)


imageNewFromIconName ::
    (MonadIO m) =>
    T.Text ->                               -- icon_name
    Int32 ->                                -- size
    m Image
imageNewFromIconName icon_name size = liftIO $ do
    icon_name' <- textToCString icon_name
    result <- gtk_image_new_from_icon_name icon_name' size
    checkUnexpectedReturnNULL "gtk_image_new_from_icon_name" result
    result' <- (newObject Image) result
    freeMem icon_name'
    return result'

-- method Image::new_from_icon_set
-- method type : Constructor
-- Args : [Arg {argName = "icon_set", argType = TInterface "Gtk" "IconSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "icon_set", argType = TInterface "Gtk" "IconSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_icon_set" gtk_image_new_from_icon_set :: 
    Ptr IconSet ->                          -- icon_set : TInterface "Gtk" "IconSet"
    Int32 ->                                -- size : TBasicType TInt32
    IO (Ptr Image)

{-# DEPRECATED imageNewFromIconSet ["(Since version 3.10)","Use gtk_image_new_from_icon_name() instead."]#-}
imageNewFromIconSet ::
    (MonadIO m) =>
    IconSet ->                              -- icon_set
    Int32 ->                                -- size
    m Image
imageNewFromIconSet icon_set size = liftIO $ do
    let icon_set' = unsafeManagedPtrGetPtr icon_set
    result <- gtk_image_new_from_icon_set icon_set' size
    checkUnexpectedReturnNULL "gtk_image_new_from_icon_set" result
    result' <- (newObject Image) result
    touchManagedPtr icon_set
    return result'

-- method Image::new_from_pixbuf
-- method type : Constructor
-- Args : [Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_pixbuf" gtk_image_new_from_pixbuf :: 
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    IO (Ptr Image)


imageNewFromPixbuf ::
    (MonadIO m, GdkPixbuf.PixbufK a) =>
    Maybe (a) ->                            -- pixbuf
    m Image
imageNewFromPixbuf pixbuf = liftIO $ do
    maybePixbuf <- case pixbuf of
        Nothing -> return nullPtr
        Just jPixbuf -> do
            let jPixbuf' = unsafeManagedPtrCastPtr jPixbuf
            return jPixbuf'
    result <- gtk_image_new_from_pixbuf maybePixbuf
    checkUnexpectedReturnNULL "gtk_image_new_from_pixbuf" result
    result' <- (newObject Image) result
    whenJust pixbuf touchManagedPtr
    return result'

-- method Image::new_from_resource
-- method type : Constructor
-- Args : [Arg {argName = "resource_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "resource_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_resource" gtk_image_new_from_resource :: 
    CString ->                              -- resource_path : TBasicType TUTF8
    IO (Ptr Image)


imageNewFromResource ::
    (MonadIO m) =>
    T.Text ->                               -- resource_path
    m Image
imageNewFromResource resource_path = liftIO $ do
    resource_path' <- textToCString resource_path
    result <- gtk_image_new_from_resource resource_path'
    checkUnexpectedReturnNULL "gtk_image_new_from_resource" result
    result' <- (newObject Image) result
    freeMem resource_path'
    return result'

-- method Image::new_from_stock
-- method type : Constructor
-- Args : [Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_stock" gtk_image_new_from_stock :: 
    CString ->                              -- stock_id : TBasicType TUTF8
    Int32 ->                                -- size : TBasicType TInt32
    IO (Ptr Image)

{-# DEPRECATED imageNewFromStock ["(Since version 3.10)","Use gtk_image_new_from_icon_name() instead."]#-}
imageNewFromStock ::
    (MonadIO m) =>
    T.Text ->                               -- stock_id
    Int32 ->                                -- size
    m Image
imageNewFromStock stock_id size = liftIO $ do
    stock_id' <- textToCString stock_id
    result <- gtk_image_new_from_stock stock_id' size
    checkUnexpectedReturnNULL "gtk_image_new_from_stock" result
    result' <- (newObject Image) result
    freeMem stock_id'
    return result'

-- method Image::new_from_surface
-- method type : Constructor
-- Args : [Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Image"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_new_from_surface" gtk_image_new_from_surface :: 
    Ptr Cairo.Surface ->                    -- surface : TInterface "cairo" "Surface"
    IO (Ptr Image)


imageNewFromSurface ::
    (MonadIO m) =>
    Maybe (Cairo.Surface) ->                -- surface
    m Image
imageNewFromSurface surface = liftIO $ do
    maybeSurface <- case surface of
        Nothing -> return nullPtr
        Just jSurface -> do
            let jSurface' = unsafeManagedPtrGetPtr jSurface
            return jSurface'
    result <- gtk_image_new_from_surface maybeSurface
    checkUnexpectedReturnNULL "gtk_image_new_from_surface" result
    result' <- (newObject Image) result
    whenJust surface touchManagedPtr
    return result'

-- method Image::clear
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_clear" gtk_image_clear :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    IO ()


imageClear ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m ()
imageClear _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_image_clear _obj'
    touchManagedPtr _obj
    return ()

-- method Image::get_animation
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "PixbufAnimation"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_animation" gtk_image_get_animation :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    IO (Ptr GdkPixbuf.PixbufAnimation)


imageGetAnimation ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m GdkPixbuf.PixbufAnimation
imageGetAnimation _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_image_get_animation _obj'
    checkUnexpectedReturnNULL "gtk_image_get_animation" result
    result' <- (newObject GdkPixbuf.PixbufAnimation) result
    touchManagedPtr _obj
    return result'

-- method Image::get_gicon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "gicon", argType = TInterface "Gio" "Icon", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_gicon" gtk_image_get_gicon :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr (Ptr Gio.Icon) ->                   -- gicon : TInterface "Gio" "Icon"
    Ptr Int32 ->                            -- size : TBasicType TInt32
    IO ()


imageGetGicon ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m (Gio.Icon,Int32)
imageGetGicon _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gicon <- allocMem :: IO (Ptr (Ptr Gio.Icon))
    size <- allocMem :: IO (Ptr Int32)
    gtk_image_get_gicon _obj' gicon size
    gicon' <- peek gicon
    gicon'' <- (newObject Gio.Icon) gicon'
    size' <- peek size
    touchManagedPtr _obj
    freeMem gicon
    freeMem size
    return (gicon'', size')

-- method Image::get_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_icon_name" gtk_image_get_icon_name :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr CString ->                          -- icon_name : TBasicType TUTF8
    Ptr Int32 ->                            -- size : TBasicType TInt32
    IO ()


imageGetIconName ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m (T.Text,Int32)
imageGetIconName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    icon_name <- allocMem :: IO (Ptr CString)
    size <- allocMem :: IO (Ptr Int32)
    gtk_image_get_icon_name _obj' icon_name size
    icon_name' <- peek icon_name
    icon_name'' <- cstringToText icon_name'
    size' <- peek size
    touchManagedPtr _obj
    freeMem icon_name
    freeMem size
    return (icon_name'', size')

-- method Image::get_icon_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_set", argType = TInterface "Gtk" "IconSet", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_icon_set" gtk_image_get_icon_set :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr (Ptr IconSet) ->                    -- icon_set : TInterface "Gtk" "IconSet"
    Ptr Int32 ->                            -- size : TBasicType TInt32
    IO ()

{-# DEPRECATED imageGetIconSet ["(Since version 3.10)","Use gtk_image_get_icon_name() instead."]#-}
imageGetIconSet ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m (IconSet,Int32)
imageGetIconSet _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    icon_set <- allocMem :: IO (Ptr (Ptr IconSet))
    size <- allocMem :: IO (Ptr Int32)
    gtk_image_get_icon_set _obj' icon_set size
    icon_set' <- peek icon_set
    icon_set'' <- (newBoxed IconSet) icon_set'
    size' <- peek size
    touchManagedPtr _obj
    freeMem icon_set
    freeMem size
    return (icon_set'', size')

-- method Image::get_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_pixbuf" gtk_image_get_pixbuf :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    IO (Ptr GdkPixbuf.Pixbuf)


imageGetPixbuf ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m GdkPixbuf.Pixbuf
imageGetPixbuf _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_image_get_pixbuf _obj'
    checkUnexpectedReturnNULL "gtk_image_get_pixbuf" result
    result' <- (newObject GdkPixbuf.Pixbuf) result
    touchManagedPtr _obj
    return result'

-- method Image::get_pixel_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_pixel_size" gtk_image_get_pixel_size :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    IO Int32


imageGetPixelSize ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m Int32
imageGetPixelSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_image_get_pixel_size _obj'
    touchManagedPtr _obj
    return result

-- method Image::get_stock
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_stock" gtk_image_get_stock :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr CString ->                          -- stock_id : TBasicType TUTF8
    Ptr Int32 ->                            -- size : TBasicType TInt32
    IO ()

{-# DEPRECATED imageGetStock ["(Since version 3.10)","Use gtk_image_get_icon_name() instead."]#-}
imageGetStock ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m (T.Text,Int32)
imageGetStock _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    stock_id <- allocMem :: IO (Ptr CString)
    size <- allocMem :: IO (Ptr Int32)
    gtk_image_get_stock _obj' stock_id size
    stock_id' <- peek stock_id
    stock_id'' <- cstringToText stock_id'
    size' <- peek size
    touchManagedPtr _obj
    freeMem stock_id
    freeMem size
    return (stock_id'', size')

-- method Image::get_storage_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "ImageType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_get_storage_type" gtk_image_get_storage_type :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    IO CUInt


imageGetStorageType ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    m ImageType
imageGetStorageType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_image_get_storage_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Image::set_from_animation
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "animation", argType = TInterface "GdkPixbuf" "PixbufAnimation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "animation", argType = TInterface "GdkPixbuf" "PixbufAnimation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_animation" gtk_image_set_from_animation :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr GdkPixbuf.PixbufAnimation ->        -- animation : TInterface "GdkPixbuf" "PixbufAnimation"
    IO ()


imageSetFromAnimation ::
    (MonadIO m, ImageK a, GdkPixbuf.PixbufAnimationK b) =>
    a ->                                    -- _obj
    b ->                                    -- animation
    m ()
imageSetFromAnimation _obj animation = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let animation' = unsafeManagedPtrCastPtr animation
    gtk_image_set_from_animation _obj' animation'
    touchManagedPtr _obj
    touchManagedPtr animation
    return ()

-- method Image::set_from_file
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "filename", argType = TBasicType TFileName, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_file" gtk_image_set_from_file :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    CString ->                              -- filename : TBasicType TFileName
    IO ()


imageSetFromFile ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    Maybe ([Char]) ->                       -- filename
    m ()
imageSetFromFile _obj filename = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeFilename <- case filename of
        Nothing -> return nullPtr
        Just jFilename -> do
            jFilename' <- stringToCString jFilename
            return jFilename'
    gtk_image_set_from_file _obj' maybeFilename
    touchManagedPtr _obj
    freeMem maybeFilename
    return ()

-- method Image::set_from_gicon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_gicon" gtk_image_set_from_gicon :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr Gio.Icon ->                         -- icon : TInterface "Gio" "Icon"
    Int32 ->                                -- size : TBasicType TInt32
    IO ()


imageSetFromGicon ::
    (MonadIO m, ImageK a, Gio.IconK b) =>
    a ->                                    -- _obj
    b ->                                    -- icon
    Int32 ->                                -- size
    m ()
imageSetFromGicon _obj icon size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let icon' = unsafeManagedPtrCastPtr icon
    gtk_image_set_from_gicon _obj' icon' size
    touchManagedPtr _obj
    touchManagedPtr icon
    return ()

-- method Image::set_from_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_icon_name" gtk_image_set_from_icon_name :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    CString ->                              -- icon_name : TBasicType TUTF8
    Int32 ->                                -- size : TBasicType TInt32
    IO ()


imageSetFromIconName ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- icon_name
    Int32 ->                                -- size
    m ()
imageSetFromIconName _obj icon_name size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    icon_name' <- textToCString icon_name
    gtk_image_set_from_icon_name _obj' icon_name' size
    touchManagedPtr _obj
    freeMem icon_name'
    return ()

-- method Image::set_from_icon_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_set", argType = TInterface "Gtk" "IconSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_set", argType = TInterface "Gtk" "IconSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_icon_set" gtk_image_set_from_icon_set :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr IconSet ->                          -- icon_set : TInterface "Gtk" "IconSet"
    Int32 ->                                -- size : TBasicType TInt32
    IO ()

{-# DEPRECATED imageSetFromIconSet ["(Since version 3.10)","Use gtk_image_set_from_icon_name() instead."]#-}
imageSetFromIconSet ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    IconSet ->                              -- icon_set
    Int32 ->                                -- size
    m ()
imageSetFromIconSet _obj icon_set size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let icon_set' = unsafeManagedPtrGetPtr icon_set
    gtk_image_set_from_icon_set _obj' icon_set' size
    touchManagedPtr _obj
    touchManagedPtr icon_set
    return ()

-- method Image::set_from_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_pixbuf" gtk_image_set_from_pixbuf :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    IO ()


imageSetFromPixbuf ::
    (MonadIO m, ImageK a, GdkPixbuf.PixbufK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- pixbuf
    m ()
imageSetFromPixbuf _obj pixbuf = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybePixbuf <- case pixbuf of
        Nothing -> return nullPtr
        Just jPixbuf -> do
            let jPixbuf' = unsafeManagedPtrCastPtr jPixbuf
            return jPixbuf'
    gtk_image_set_from_pixbuf _obj' maybePixbuf
    touchManagedPtr _obj
    whenJust pixbuf touchManagedPtr
    return ()

-- method Image::set_from_resource
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "resource_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "resource_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_resource" gtk_image_set_from_resource :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    CString ->                              -- resource_path : TBasicType TUTF8
    IO ()


imageSetFromResource ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- resource_path
    m ()
imageSetFromResource _obj resource_path = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeResource_path <- case resource_path of
        Nothing -> return nullPtr
        Just jResource_path -> do
            jResource_path' <- textToCString jResource_path
            return jResource_path'
    gtk_image_set_from_resource _obj' maybeResource_path
    touchManagedPtr _obj
    freeMem maybeResource_path
    return ()

-- method Image::set_from_stock
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_stock" gtk_image_set_from_stock :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    CString ->                              -- stock_id : TBasicType TUTF8
    Int32 ->                                -- size : TBasicType TInt32
    IO ()

{-# DEPRECATED imageSetFromStock ["(Since version 3.10)","Use gtk_image_set_from_icon_name() instead."]#-}
imageSetFromStock ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- stock_id
    Int32 ->                                -- size
    m ()
imageSetFromStock _obj stock_id size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    stock_id' <- textToCString stock_id
    gtk_image_set_from_stock _obj' stock_id' size
    touchManagedPtr _obj
    freeMem stock_id'
    return ()

-- method Image::set_from_surface
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "surface", argType = TInterface "cairo" "Surface", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_from_surface" gtk_image_set_from_surface :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Ptr Cairo.Surface ->                    -- surface : TInterface "cairo" "Surface"
    IO ()


imageSetFromSurface ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    Cairo.Surface ->                        -- surface
    m ()
imageSetFromSurface _obj surface = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let surface' = unsafeManagedPtrGetPtr surface
    gtk_image_set_from_surface _obj' surface'
    touchManagedPtr _obj
    touchManagedPtr surface
    return ()

-- method Image::set_pixel_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixel_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Image", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixel_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_image_set_pixel_size" gtk_image_set_pixel_size :: 
    Ptr Image ->                            -- _obj : TInterface "Gtk" "Image"
    Int32 ->                                -- pixel_size : TBasicType TInt32
    IO ()


imageSetPixelSize ::
    (MonadIO m, ImageK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- pixel_size
    m ()
imageSetPixelSize _obj pixel_size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_image_set_pixel_size _obj' pixel_size
    touchManagedPtr _obj
    return ()