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

Contains information found when looking up an icon in
an icon theme.
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.Gtk.Objects.IconInfo
    (

-- * Exported types
    IconInfo(..)                            ,
    IsIconInfo                              ,
    toIconInfo                              ,
    noIconInfo                              ,


 -- * Methods
-- ** getAttachPoints #method:getAttachPoints#

#if ENABLE_OVERLOADING
    IconInfoGetAttachPointsMethodInfo       ,
#endif
    iconInfoGetAttachPoints                 ,


-- ** getBaseScale #method:getBaseScale#

#if ENABLE_OVERLOADING
    IconInfoGetBaseScaleMethodInfo          ,
#endif
    iconInfoGetBaseScale                    ,


-- ** getBaseSize #method:getBaseSize#

#if ENABLE_OVERLOADING
    IconInfoGetBaseSizeMethodInfo           ,
#endif
    iconInfoGetBaseSize                     ,


-- ** getBuiltinPixbuf #method:getBuiltinPixbuf#

#if ENABLE_OVERLOADING
    IconInfoGetBuiltinPixbufMethodInfo      ,
#endif
    iconInfoGetBuiltinPixbuf                ,


-- ** getDisplayName #method:getDisplayName#

#if ENABLE_OVERLOADING
    IconInfoGetDisplayNameMethodInfo        ,
#endif
    iconInfoGetDisplayName                  ,


-- ** getEmbeddedRect #method:getEmbeddedRect#

#if ENABLE_OVERLOADING
    IconInfoGetEmbeddedRectMethodInfo       ,
#endif
    iconInfoGetEmbeddedRect                 ,


-- ** getFilename #method:getFilename#

#if ENABLE_OVERLOADING
    IconInfoGetFilenameMethodInfo           ,
#endif
    iconInfoGetFilename                     ,


-- ** isSymbolic #method:isSymbolic#

#if ENABLE_OVERLOADING
    IconInfoIsSymbolicMethodInfo            ,
#endif
    iconInfoIsSymbolic                      ,


-- ** loadIcon #method:loadIcon#

#if ENABLE_OVERLOADING
    IconInfoLoadIconMethodInfo              ,
#endif
    iconInfoLoadIcon                        ,


-- ** loadIconAsync #method:loadIconAsync#

#if ENABLE_OVERLOADING
    IconInfoLoadIconAsyncMethodInfo         ,
#endif
    iconInfoLoadIconAsync                   ,


-- ** loadIconFinish #method:loadIconFinish#

#if ENABLE_OVERLOADING
    IconInfoLoadIconFinishMethodInfo        ,
#endif
    iconInfoLoadIconFinish                  ,


-- ** loadSurface #method:loadSurface#

#if ENABLE_OVERLOADING
    IconInfoLoadSurfaceMethodInfo           ,
#endif
    iconInfoLoadSurface                     ,


-- ** loadSymbolic #method:loadSymbolic#

#if ENABLE_OVERLOADING
    IconInfoLoadSymbolicMethodInfo          ,
#endif
    iconInfoLoadSymbolic                    ,


-- ** loadSymbolicAsync #method:loadSymbolicAsync#

#if ENABLE_OVERLOADING
    IconInfoLoadSymbolicAsyncMethodInfo     ,
#endif
    iconInfoLoadSymbolicAsync               ,


-- ** loadSymbolicFinish #method:loadSymbolicFinish#

#if ENABLE_OVERLOADING
    IconInfoLoadSymbolicFinishMethodInfo    ,
#endif
    iconInfoLoadSymbolicFinish              ,


-- ** loadSymbolicForContext #method:loadSymbolicForContext#

#if ENABLE_OVERLOADING
    IconInfoLoadSymbolicForContextMethodInfo,
#endif
    iconInfoLoadSymbolicForContext          ,


-- ** loadSymbolicForContextAsync #method:loadSymbolicForContextAsync#

#if ENABLE_OVERLOADING
    IconInfoLoadSymbolicForContextAsyncMethodInfo,
#endif
    iconInfoLoadSymbolicForContextAsync     ,


-- ** loadSymbolicForContextFinish #method:loadSymbolicForContextFinish#

#if ENABLE_OVERLOADING
    IconInfoLoadSymbolicForContextFinishMethodInfo,
#endif
    iconInfoLoadSymbolicForContextFinish    ,


-- ** loadSymbolicForStyle #method:loadSymbolicForStyle#

#if ENABLE_OVERLOADING
    IconInfoLoadSymbolicForStyleMethodInfo  ,
#endif
    iconInfoLoadSymbolicForStyle            ,


-- ** newForPixbuf #method:newForPixbuf#

    iconInfoNewForPixbuf                    ,


-- ** setRawCoordinates #method:setRawCoordinates#

#if ENABLE_OVERLOADING
    IconInfoSetRawCoordinatesMethodInfo     ,
#endif
    iconInfoSetRawCoordinates               ,




    ) 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.GValue as B.GValue
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.Cairo.Structs.Surface as Cairo.Surface
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gdk.Objects.Window as Gdk.Window
import qualified GI.Gdk.Structs.Point as Gdk.Point
import qualified GI.Gdk.Structs.RGBA as Gdk.RGBA
import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle
import qualified GI.GdkPixbuf.Objects.Pixbuf as GdkPixbuf.Pixbuf
import qualified GI.Gio.Callbacks as Gio.Callbacks
import qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult
import qualified GI.Gio.Objects.Cancellable as Gio.Cancellable
import {-# SOURCE #-} qualified GI.Gtk.Enums as Gtk.Enums
import {-# SOURCE #-} qualified GI.Gtk.Objects.IconTheme as Gtk.IconTheme
import {-# SOURCE #-} qualified GI.Gtk.Objects.Style as Gtk.Style
import {-# SOURCE #-} qualified GI.Gtk.Objects.StyleContext as Gtk.StyleContext

-- | Memory-managed wrapper type.
newtype IconInfo = IconInfo (ManagedPtr IconInfo)
foreign import ccall "gtk_icon_info_get_type"
    c_gtk_icon_info_get_type :: IO GType

instance GObject IconInfo where
    gobjectType _ = c_gtk_icon_info_get_type


-- | Type class for types which can be safely cast to `IconInfo`, for instance with `toIconInfo`.
class GObject o => IsIconInfo o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError IconInfo a) =>
    IsIconInfo a
#endif
instance IsIconInfo IconInfo
instance GObject.Object.IsObject IconInfo

-- | Cast to `IconInfo`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toIconInfo :: (MonadIO m, IsIconInfo o) => o -> m IconInfo
toIconInfo = liftIO . unsafeCastTo IconInfo

-- | A convenience alias for `Nothing` :: `Maybe` `IconInfo`.
noIconInfo :: Maybe IconInfo
noIconInfo = Nothing

#if ENABLE_OVERLOADING
type family ResolveIconInfoMethod (t :: Symbol) (o :: *) :: * where
    ResolveIconInfoMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveIconInfoMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveIconInfoMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveIconInfoMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveIconInfoMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveIconInfoMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveIconInfoMethod "isSymbolic" o = IconInfoIsSymbolicMethodInfo
    ResolveIconInfoMethod "loadIcon" o = IconInfoLoadIconMethodInfo
    ResolveIconInfoMethod "loadIconAsync" o = IconInfoLoadIconAsyncMethodInfo
    ResolveIconInfoMethod "loadIconFinish" o = IconInfoLoadIconFinishMethodInfo
    ResolveIconInfoMethod "loadSurface" o = IconInfoLoadSurfaceMethodInfo
    ResolveIconInfoMethod "loadSymbolic" o = IconInfoLoadSymbolicMethodInfo
    ResolveIconInfoMethod "loadSymbolicAsync" o = IconInfoLoadSymbolicAsyncMethodInfo
    ResolveIconInfoMethod "loadSymbolicFinish" o = IconInfoLoadSymbolicFinishMethodInfo
    ResolveIconInfoMethod "loadSymbolicForContext" o = IconInfoLoadSymbolicForContextMethodInfo
    ResolveIconInfoMethod "loadSymbolicForContextAsync" o = IconInfoLoadSymbolicForContextAsyncMethodInfo
    ResolveIconInfoMethod "loadSymbolicForContextFinish" o = IconInfoLoadSymbolicForContextFinishMethodInfo
    ResolveIconInfoMethod "loadSymbolicForStyle" o = IconInfoLoadSymbolicForStyleMethodInfo
    ResolveIconInfoMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveIconInfoMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveIconInfoMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveIconInfoMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveIconInfoMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveIconInfoMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveIconInfoMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveIconInfoMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveIconInfoMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveIconInfoMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveIconInfoMethod "getAttachPoints" o = IconInfoGetAttachPointsMethodInfo
    ResolveIconInfoMethod "getBaseScale" o = IconInfoGetBaseScaleMethodInfo
    ResolveIconInfoMethod "getBaseSize" o = IconInfoGetBaseSizeMethodInfo
    ResolveIconInfoMethod "getBuiltinPixbuf" o = IconInfoGetBuiltinPixbufMethodInfo
    ResolveIconInfoMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveIconInfoMethod "getDisplayName" o = IconInfoGetDisplayNameMethodInfo
    ResolveIconInfoMethod "getEmbeddedRect" o = IconInfoGetEmbeddedRectMethodInfo
    ResolveIconInfoMethod "getFilename" o = IconInfoGetFilenameMethodInfo
    ResolveIconInfoMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveIconInfoMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveIconInfoMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveIconInfoMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveIconInfoMethod "setRawCoordinates" o = IconInfoSetRawCoordinatesMethodInfo
    ResolveIconInfoMethod l o = O.MethodResolutionFailed l o

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

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

#endif

#if ENABLE_OVERLOADING
instance O.HasAttributeList IconInfo
type instance O.AttributeList IconInfo = IconInfoAttributeList
type IconInfoAttributeList = ('[ ] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
#endif

#if ENABLE_OVERLOADING
type instance O.SignalList IconInfo = IconInfoSignalList
type IconInfoSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method IconInfo::new_for_pixbuf
-- method type : Constructor
-- Args : [Arg {argCName = "icon_theme", argType = TInterface (Name {namespace = "Gtk", name = "IconTheme"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconTheme", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pixbuf", argType = TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the pixbuf to wrap in a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "IconInfo"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_new_for_pixbuf" gtk_icon_info_new_for_pixbuf ::
    Ptr Gtk.IconTheme.IconTheme ->          -- icon_theme : TInterface (Name {namespace = "Gtk", name = "IconTheme"})
    Ptr GdkPixbuf.Pixbuf.Pixbuf ->          -- pixbuf : TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"})
    IO (Ptr IconInfo)

{- |
Creates a 'GI.Gtk.Objects.IconInfo.IconInfo' for a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf'.

/Since: 2.14/
-}
iconInfoNewForPixbuf ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.IconTheme.IsIconTheme a, GdkPixbuf.Pixbuf.IsPixbuf b) =>
    a
    {- ^ /@iconTheme@/: a 'GI.Gtk.Objects.IconTheme.IconTheme' -}
    -> b
    {- ^ /@pixbuf@/: the pixbuf to wrap in a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m IconInfo
    {- ^ __Returns:__ a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
iconInfoNewForPixbuf iconTheme pixbuf = liftIO $ do
    iconTheme' <- unsafeManagedPtrCastPtr iconTheme
    pixbuf' <- unsafeManagedPtrCastPtr pixbuf
    result <- gtk_icon_info_new_for_pixbuf iconTheme' pixbuf'
    checkUnexpectedReturnNULL "iconInfoNewForPixbuf" result
    result' <- (wrapObject IconInfo) result
    touchManagedPtr iconTheme
    touchManagedPtr pixbuf
    return result'

#if ENABLE_OVERLOADING
#endif

-- method IconInfo::get_attach_points
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "points", argType = TCArray False (-1) 2 (TInterface (Name {namespace = "Gdk", name = "Point"})), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store pointer\n    to an array of points, or %NULL free the array of points with g_free().", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_points", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store the number of points in @points,\n    or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : [Arg {argCName = "n_points", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store the number of points in @points,\n    or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_get_attach_points" gtk_icon_info_get_attach_points ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr (Ptr Gdk.Point.Point) ->            -- points : TCArray False (-1) 2 (TInterface (Name {namespace = "Gdk", name = "Point"}))
    Ptr Int32 ->                            -- n_points : TBasicType TInt
    IO CInt

{-# DEPRECATED iconInfoGetAttachPoints ["(Since version 3.14)","Attachment points are deprecated"] #-}
{- |
This function is deprecated and always returns 'False'.

/Since: 2.4/
-}
iconInfoGetAttachPoints ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m ((Bool, [Gdk.Point.Point]))
    {- ^ __Returns:__ 'False' -}
iconInfoGetAttachPoints iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    points <- allocMem :: IO (Ptr (Ptr Gdk.Point.Point))
    nPoints <- allocMem :: IO (Ptr Int32)
    result <- gtk_icon_info_get_attach_points iconInfo' points nPoints
    nPoints' <- peek nPoints
    let result' = (/= 0) result
    points' <- peek points
    points'' <- (unpackBlockArrayWithLength 8 nPoints') points'
    points''' <- mapM (wrapPtr Gdk.Point.Point) points''
    freeMem points'
    touchManagedPtr iconInfo
    freeMem points
    freeMem nPoints
    return (result', points''')

#if ENABLE_OVERLOADING
data IconInfoGetAttachPointsMethodInfo
instance (signature ~ (m ((Bool, [Gdk.Point.Point]))), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoGetAttachPointsMethodInfo a signature where
    overloadedMethod _ = iconInfoGetAttachPoints

#endif

-- method IconInfo::get_base_scale
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_get_base_scale" gtk_icon_info_get_base_scale ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    IO Int32

{- |
Gets the base scale for the icon. The base scale is a scale
for the icon that was specified by the icon theme creator.
For instance an icon drawn for a high-dpi screen with window
scale 2 for a base size of 32 will be 64 pixels tall and have
a base scale of 2.

/Since: 3.10/
-}
iconInfoGetBaseScale ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m Int32
    {- ^ __Returns:__ the base scale -}
iconInfoGetBaseScale iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    result <- gtk_icon_info_get_base_scale iconInfo'
    touchManagedPtr iconInfo
    return result

#if ENABLE_OVERLOADING
data IconInfoGetBaseScaleMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoGetBaseScaleMethodInfo a signature where
    overloadedMethod _ = iconInfoGetBaseScale

#endif

-- method IconInfo::get_base_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_get_base_size" gtk_icon_info_get_base_size ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    IO Int32

{- |
Gets the base size for the icon. The base size
is a size for the icon that was specified by
the icon theme creator. This may be different
than the actual size of image; an example of
this is small emblem icons that can be attached
to a larger icon. These icons will be given
the same base size as the larger icons to which
they are attached.

Note that for scaled icons the base size does
not include the base scale.

/Since: 2.4/
-}
iconInfoGetBaseSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m Int32
    {- ^ __Returns:__ the base size, or 0, if no base
    size is known for the icon. -}
iconInfoGetBaseSize iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    result <- gtk_icon_info_get_base_size iconInfo'
    touchManagedPtr iconInfo
    return result

#if ENABLE_OVERLOADING
data IconInfoGetBaseSizeMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoGetBaseSizeMethodInfo a signature where
    overloadedMethod _ = iconInfoGetBaseSize

#endif

-- method IconInfo::get_builtin_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_get_builtin_pixbuf" gtk_icon_info_get_builtin_pixbuf ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{-# DEPRECATED iconInfoGetBuiltinPixbuf ["(Since version 3.14)","This function is deprecated, use","    'GI.Gtk.Objects.IconTheme.iconThemeAddResourcePath' instead of builtin icons."] #-}
{- |
Gets the built-in image for this icon, if any. To allow GTK+ to use
built in icon images, you must pass the 'GI.Gtk.Flags.IconLookupFlagsUseBuiltin'
to 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'.

/Since: 2.4/
-}
iconInfoGetBuiltinPixbuf ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m (Maybe GdkPixbuf.Pixbuf.Pixbuf)
    {- ^ __Returns:__ the built-in image pixbuf, or 'Nothing'.
    No extra reference is added to the returned pixbuf, so if
    you want to keep it around, you must use 'GI.GObject.Objects.Object.objectRef'.
    The returned image must not be modified. -}
iconInfoGetBuiltinPixbuf iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    result <- gtk_icon_info_get_builtin_pixbuf iconInfo'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- (newObject GdkPixbuf.Pixbuf.Pixbuf) result'
        return result''
    touchManagedPtr iconInfo
    return maybeResult

#if ENABLE_OVERLOADING
data IconInfoGetBuiltinPixbufMethodInfo
instance (signature ~ (m (Maybe GdkPixbuf.Pixbuf.Pixbuf)), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoGetBuiltinPixbufMethodInfo a signature where
    overloadedMethod _ = iconInfoGetBuiltinPixbuf

#endif

-- method IconInfo::get_display_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_get_display_name" gtk_icon_info_get_display_name ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    IO CString

{-# DEPRECATED iconInfoGetDisplayName ["(Since version 3.14)","Display names are deprecated"] #-}
{- |
This function is deprecated and always returns 'Nothing'.

/Since: 2.4/
-}
iconInfoGetDisplayName ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m T.Text
    {- ^ __Returns:__ 'Nothing' -}
iconInfoGetDisplayName iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    result <- gtk_icon_info_get_display_name iconInfo'
    checkUnexpectedReturnNULL "iconInfoGetDisplayName" result
    result' <- cstringToText result
    touchManagedPtr iconInfo
    return result'

#if ENABLE_OVERLOADING
data IconInfoGetDisplayNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoGetDisplayNameMethodInfo a signature where
    overloadedMethod _ = iconInfoGetDisplayName

#endif

-- method IconInfo::get_embedded_rect
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rectangle", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GdkRectangle in which to store embedded\n  rectangle coordinates; coordinates are only stored\n  when this function returns %TRUE.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_get_embedded_rect" gtk_icon_info_get_embedded_rect ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gdk.Rectangle.Rectangle ->          -- rectangle : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    IO CInt

{-# DEPRECATED iconInfoGetEmbeddedRect ["(Since version 3.14)","Embedded rectangles are deprecated"] #-}
{- |
This function is deprecated and always returns 'False'.

/Since: 2.4/
-}
iconInfoGetEmbeddedRect ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m ((Bool, Gdk.Rectangle.Rectangle))
    {- ^ __Returns:__ 'False' -}
iconInfoGetEmbeddedRect iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    rectangle <- callocBoxedBytes 16 :: IO (Ptr Gdk.Rectangle.Rectangle)
    result <- gtk_icon_info_get_embedded_rect iconInfo' rectangle
    let result' = (/= 0) result
    rectangle' <- (wrapBoxed Gdk.Rectangle.Rectangle) rectangle
    touchManagedPtr iconInfo
    return (result', rectangle')

#if ENABLE_OVERLOADING
data IconInfoGetEmbeddedRectMethodInfo
instance (signature ~ (m ((Bool, Gdk.Rectangle.Rectangle))), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoGetEmbeddedRectMethodInfo a signature where
    overloadedMethod _ = iconInfoGetEmbeddedRect

#endif

-- method IconInfo::get_filename
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TFileName)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_get_filename" gtk_icon_info_get_filename ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    IO CString

{- |
Gets the filename for the icon. If the 'GI.Gtk.Flags.IconLookupFlagsUseBuiltin'
flag was passed to 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon', there may be no
filename if a builtin icon is returned; in this case, you should
use 'GI.Gtk.Objects.IconInfo.iconInfoGetBuiltinPixbuf'.

/Since: 2.4/
-}
iconInfoGetFilename ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m (Maybe [Char])
    {- ^ __Returns:__ the filename for the icon, or 'Nothing'
    if 'GI.Gtk.Objects.IconInfo.iconInfoGetBuiltinPixbuf' should be used instead.
    The return value is owned by GTK+ and should not be modified
    or freed. -}
iconInfoGetFilename iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    result <- gtk_icon_info_get_filename iconInfo'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToString result'
        return result''
    touchManagedPtr iconInfo
    return maybeResult

#if ENABLE_OVERLOADING
data IconInfoGetFilenameMethodInfo
instance (signature ~ (m (Maybe [Char])), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoGetFilenameMethodInfo a signature where
    overloadedMethod _ = iconInfoGetFilename

#endif

-- method IconInfo::is_symbolic
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_is_symbolic" gtk_icon_info_is_symbolic ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    IO CInt

{- |
Checks if the icon is symbolic or not. This currently uses only
the file name and not the file contents for determining this.
This behaviour may change in the future.

/Since: 3.12/
-}
iconInfoIsSymbolic ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the icon is symbolic, 'False' otherwise -}
iconInfoIsSymbolic iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    result <- gtk_icon_info_is_symbolic iconInfo'
    let result' = (/= 0) result
    touchManagedPtr iconInfo
    return result'

#if ENABLE_OVERLOADING
data IconInfoIsSymbolicMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoIsSymbolicMethodInfo a signature where
    overloadedMethod _ = iconInfoIsSymbolic

#endif

-- method IconInfo::load_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_icon" gtk_icon_info_load_icon ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{- |
Renders an icon previously looked up in an icon theme using
'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'; the size will be based on the size
passed to 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'. Note that the resulting
pixbuf may not be exactly this size; an icon theme may have icons
that differ slightly from their nominal sizes, and in addition GTK+
will avoid scaling icons that it considers sufficiently close to the
requested size or for which the source image would have to be scaled
up too far. (This maintains sharpness.). This behaviour can be changed
by passing the 'GI.Gtk.Flags.IconLookupFlagsForceSize' flag when obtaining
the 'GI.Gtk.Objects.IconInfo.IconInfo'. If this flag has been specified, the pixbuf
returned by this function will be scaled to the exact size.

/Since: 2.4/
-}
iconInfoLoadIcon ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> m GdkPixbuf.Pixbuf.Pixbuf
    {- ^ __Returns:__ the rendered icon; this may be a newly
    created icon or a new reference to an internal icon, so you must
    not modify the icon. Use 'GI.GObject.Objects.Object.objectUnref' to release your reference
    to the icon. /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadIcon iconInfo = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    onException (do
        result <- propagateGError $ gtk_icon_info_load_icon iconInfo'
        checkUnexpectedReturnNULL "iconInfoLoadIcon" result
        result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
        touchManagedPtr iconInfo
        return result'
     ) (do
        return ()
     )

#if ENABLE_OVERLOADING
data IconInfoLoadIconMethodInfo
instance (signature ~ (m GdkPixbuf.Pixbuf.Pixbuf), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoLoadIconMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadIcon

#endif

-- method IconInfo::load_icon_async
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "optional #GCancellable object, %NULL to ignore", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GAsyncReadyCallback to call when the\n    request is satisfied", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data to pass to callback function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_load_icon_async" gtk_icon_info_load_icon_async ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gio.Cancellable.Cancellable ->      -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"})
    FunPtr Gio.Callbacks.C_AsyncReadyCallback -> -- callback : TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

{- |
Asynchronously load, render and scale an icon previously looked up
from the icon theme using 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'.

For more details, see 'GI.Gtk.Objects.IconInfo.iconInfoLoadIcon' which is the synchronous
version of this call.

/Since: 3.8/
-}
iconInfoLoadIconAsync ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gio.Cancellable.IsCancellable b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> Maybe (b)
    {- ^ /@cancellable@/: optional 'GI.Gio.Objects.Cancellable.Cancellable' object, 'Nothing' to ignore -}
    -> Maybe (Gio.Callbacks.AsyncReadyCallback)
    {- ^ /@callback@/: a 'GI.Gio.Callbacks.AsyncReadyCallback' to call when the
    request is satisfied -}
    -> m ()
iconInfoLoadIconAsync iconInfo cancellable callback = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    maybeCancellable <- case cancellable of
        Nothing -> return nullPtr
        Just jCancellable -> do
            jCancellable' <- unsafeManagedPtrCastPtr jCancellable
            return jCancellable'
    maybeCallback <- case callback of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jCallback -> do
            ptrcallback <- callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
            jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
            poke ptrcallback jCallback'
            return jCallback'
    let userData = nullPtr
    gtk_icon_info_load_icon_async iconInfo' maybeCancellable maybeCallback userData
    touchManagedPtr iconInfo
    whenJust cancellable touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data IconInfoLoadIconAsyncMethodInfo
instance (signature ~ (Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsIconInfo a, Gio.Cancellable.IsCancellable b) => O.MethodInfo IconInfoLoadIconAsyncMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadIconAsync

#endif

-- method IconInfo::load_icon_finish
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "res", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_icon_finish" gtk_icon_info_load_icon_finish ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gio.AsyncResult.AsyncResult ->      -- res : TInterface (Name {namespace = "Gio", name = "AsyncResult"})
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{- |
Finishes an async icon load, see 'GI.Gtk.Objects.IconInfo.iconInfoLoadIconAsync'.

/Since: 3.8/
-}
iconInfoLoadIconFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gio.AsyncResult.IsAsyncResult b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> b
    {- ^ /@res@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' -}
    -> m GdkPixbuf.Pixbuf.Pixbuf
    {- ^ __Returns:__ the rendered icon; this may be a newly
    created icon or a new reference to an internal icon, so you must
    not modify the icon. Use 'GI.GObject.Objects.Object.objectUnref' to release your reference
    to the icon. /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadIconFinish iconInfo res = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    res' <- unsafeManagedPtrCastPtr res
    onException (do
        result <- propagateGError $ gtk_icon_info_load_icon_finish iconInfo' res'
        checkUnexpectedReturnNULL "iconInfoLoadIconFinish" result
        result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
        touchManagedPtr iconInfo
        touchManagedPtr res
        return result'
     ) (do
        return ()
     )

#if ENABLE_OVERLOADING
data IconInfoLoadIconFinishMethodInfo
instance (signature ~ (b -> m GdkPixbuf.Pixbuf.Pixbuf), MonadIO m, IsIconInfo a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo IconInfoLoadIconFinishMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadIconFinish

#endif

-- method IconInfo::load_surface
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "for_window", argType = TInterface (Name {namespace = "Gdk", name = "Window"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "#GdkWindow to optimize drawing for, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "cairo", name = "Surface"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_surface" gtk_icon_info_load_surface ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gdk.Window.Window ->                -- for_window : TInterface (Name {namespace = "Gdk", name = "Window"})
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr Cairo.Surface.Surface)

{- |
Renders an icon previously looked up in an icon theme using
'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'; the size will be based on the size
passed to 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'. Note that the resulting
surface may not be exactly this size; an icon theme may have icons
that differ slightly from their nominal sizes, and in addition GTK+
will avoid scaling icons that it considers sufficiently close to the
requested size or for which the source image would have to be scaled
up too far. (This maintains sharpness.). This behaviour can be changed
by passing the 'GI.Gtk.Flags.IconLookupFlagsForceSize' flag when obtaining
the 'GI.Gtk.Objects.IconInfo.IconInfo'. If this flag has been specified, the pixbuf
returned by this function will be scaled to the exact size.

/Since: 3.10/
-}
iconInfoLoadSurface ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gdk.Window.IsWindow b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> Maybe (b)
    {- ^ /@forWindow@/: 'GI.Gdk.Objects.Window.Window' to optimize drawing for, or 'Nothing' -}
    -> m Cairo.Surface.Surface
    {- ^ __Returns:__ the rendered icon; this may be a newly
    created icon or a new reference to an internal icon, so you must
    not modify the icon. Use @/cairo_surface_destroy()/@ to release your
    reference to the icon. /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadSurface iconInfo forWindow = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    maybeForWindow <- case forWindow of
        Nothing -> return nullPtr
        Just jForWindow -> do
            jForWindow' <- unsafeManagedPtrCastPtr jForWindow
            return jForWindow'
    onException (do
        result <- propagateGError $ gtk_icon_info_load_surface iconInfo' maybeForWindow
        checkUnexpectedReturnNULL "iconInfoLoadSurface" result
        result' <- (wrapBoxed Cairo.Surface.Surface) result
        touchManagedPtr iconInfo
        whenJust forWindow touchManagedPtr
        return result'
     ) (do
        return ()
     )

#if ENABLE_OVERLOADING
data IconInfoLoadSurfaceMethodInfo
instance (signature ~ (Maybe (b) -> m Cairo.Surface.Surface), MonadIO m, IsIconInfo a, Gdk.Window.IsWindow b) => O.MethodInfo IconInfoLoadSurfaceMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSurface

#endif

-- method IconInfo::load_symbolic
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fg", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the foreground color of the icon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "success_color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the warning color\n    of the icon or %NULL to use the default color", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "warning_color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the warning color\n    of the icon or %NULL to use the default color", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "error_color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the error color\n    of the icon or %NULL to use the default color (allow-none)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "was_symbolic", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #gboolean, returns whether the\n    loaded icon was a symbolic one and whether the @fg color was\n    applied to it.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_symbolic" gtk_icon_info_load_symbolic ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gdk.RGBA.RGBA ->                    -- fg : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr Gdk.RGBA.RGBA ->                    -- success_color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr Gdk.RGBA.RGBA ->                    -- warning_color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr Gdk.RGBA.RGBA ->                    -- error_color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr CInt ->                             -- was_symbolic : TBasicType TBoolean
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{- |
Loads an icon, modifying it to match the system colours for the foreground,
success, warning and error colors provided. If the icon is not a symbolic
one, the function will return the result from 'GI.Gtk.Objects.IconInfo.iconInfoLoadIcon'.

This allows loading symbolic icons that will match the system theme.

Unless you are implementing a widget, you will want to use
'GI.Gio.Objects.ThemedIcon.themedIconNewWithDefaultFallbacks' to load the icon.

As implementation details, the icon loaded needs to be of SVG type,
contain the “symbolic” term as the last component of the icon name,
and use the “fg”, “success”, “warning” and “error” CSS styles in the
SVG file itself.

See the <http://www.freedesktop.org/wiki/SymbolicIcons Symbolic Icons Specification>
for more information about symbolic icons.

/Since: 3.0/
-}
iconInfoLoadSymbolic ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> Gdk.RGBA.RGBA
    {- ^ /@fg@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the foreground color of the icon -}
    -> Maybe (Gdk.RGBA.RGBA)
    {- ^ /@successColor@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the warning color
    of the icon or 'Nothing' to use the default color -}
    -> Maybe (Gdk.RGBA.RGBA)
    {- ^ /@warningColor@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the warning color
    of the icon or 'Nothing' to use the default color -}
    -> Maybe (Gdk.RGBA.RGBA)
    {- ^ /@errorColor@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the error color
    of the icon or 'Nothing' to use the default color (allow-none) -}
    -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))
    {- ^ __Returns:__ a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf' representing the loaded icon /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadSymbolic iconInfo fg successColor warningColor errorColor = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    fg' <- unsafeManagedPtrGetPtr fg
    maybeSuccessColor <- case successColor of
        Nothing -> return nullPtr
        Just jSuccessColor -> do
            jSuccessColor' <- unsafeManagedPtrGetPtr jSuccessColor
            return jSuccessColor'
    maybeWarningColor <- case warningColor of
        Nothing -> return nullPtr
        Just jWarningColor -> do
            jWarningColor' <- unsafeManagedPtrGetPtr jWarningColor
            return jWarningColor'
    maybeErrorColor <- case errorColor of
        Nothing -> return nullPtr
        Just jErrorColor -> do
            jErrorColor' <- unsafeManagedPtrGetPtr jErrorColor
            return jErrorColor'
    wasSymbolic <- allocMem :: IO (Ptr CInt)
    onException (do
        result <- propagateGError $ gtk_icon_info_load_symbolic iconInfo' fg' maybeSuccessColor maybeWarningColor maybeErrorColor wasSymbolic
        checkUnexpectedReturnNULL "iconInfoLoadSymbolic" result
        result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
        wasSymbolic' <- peek wasSymbolic
        let wasSymbolic'' = (/= 0) wasSymbolic'
        touchManagedPtr iconInfo
        touchManagedPtr fg
        whenJust successColor touchManagedPtr
        whenJust warningColor touchManagedPtr
        whenJust errorColor touchManagedPtr
        freeMem wasSymbolic
        return (result', wasSymbolic'')
     ) (do
        freeMem wasSymbolic
     )

#if ENABLE_OVERLOADING
data IconInfoLoadSymbolicMethodInfo
instance (signature ~ (Gdk.RGBA.RGBA -> Maybe (Gdk.RGBA.RGBA) -> Maybe (Gdk.RGBA.RGBA) -> Maybe (Gdk.RGBA.RGBA) -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoLoadSymbolicMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSymbolic

#endif

-- method IconInfo::load_symbolic_async
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fg", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the foreground color of the icon", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "success_color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the warning color\n    of the icon or %NULL to use the default color", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "warning_color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the warning color\n    of the icon or %NULL to use the default color", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "error_color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkRGBA representing the error color\n    of the icon or %NULL to use the default color (allow-none)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "optional #GCancellable object,\n    %NULL to ignore", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GAsyncReadyCallback to call when the\n    request is satisfied", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 7, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data to pass to callback function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_load_symbolic_async" gtk_icon_info_load_symbolic_async ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gdk.RGBA.RGBA ->                    -- fg : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr Gdk.RGBA.RGBA ->                    -- success_color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr Gdk.RGBA.RGBA ->                    -- warning_color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr Gdk.RGBA.RGBA ->                    -- error_color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    Ptr Gio.Cancellable.Cancellable ->      -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"})
    FunPtr Gio.Callbacks.C_AsyncReadyCallback -> -- callback : TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

{- |
Asynchronously load, render and scale a symbolic icon previously looked up
from the icon theme using 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'.

For more details, see 'GI.Gtk.Objects.IconInfo.iconInfoLoadSymbolic' which is the synchronous
version of this call.

/Since: 3.8/
-}
iconInfoLoadSymbolicAsync ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gio.Cancellable.IsCancellable b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> Gdk.RGBA.RGBA
    {- ^ /@fg@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the foreground color of the icon -}
    -> Maybe (Gdk.RGBA.RGBA)
    {- ^ /@successColor@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the warning color
    of the icon or 'Nothing' to use the default color -}
    -> Maybe (Gdk.RGBA.RGBA)
    {- ^ /@warningColor@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the warning color
    of the icon or 'Nothing' to use the default color -}
    -> Maybe (Gdk.RGBA.RGBA)
    {- ^ /@errorColor@/: a 'GI.Gdk.Structs.RGBA.RGBA' representing the error color
    of the icon or 'Nothing' to use the default color (allow-none) -}
    -> Maybe (b)
    {- ^ /@cancellable@/: optional 'GI.Gio.Objects.Cancellable.Cancellable' object,
    'Nothing' to ignore -}
    -> Maybe (Gio.Callbacks.AsyncReadyCallback)
    {- ^ /@callback@/: a 'GI.Gio.Callbacks.AsyncReadyCallback' to call when the
    request is satisfied -}
    -> m ()
iconInfoLoadSymbolicAsync iconInfo fg successColor warningColor errorColor cancellable callback = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    fg' <- unsafeManagedPtrGetPtr fg
    maybeSuccessColor <- case successColor of
        Nothing -> return nullPtr
        Just jSuccessColor -> do
            jSuccessColor' <- unsafeManagedPtrGetPtr jSuccessColor
            return jSuccessColor'
    maybeWarningColor <- case warningColor of
        Nothing -> return nullPtr
        Just jWarningColor -> do
            jWarningColor' <- unsafeManagedPtrGetPtr jWarningColor
            return jWarningColor'
    maybeErrorColor <- case errorColor of
        Nothing -> return nullPtr
        Just jErrorColor -> do
            jErrorColor' <- unsafeManagedPtrGetPtr jErrorColor
            return jErrorColor'
    maybeCancellable <- case cancellable of
        Nothing -> return nullPtr
        Just jCancellable -> do
            jCancellable' <- unsafeManagedPtrCastPtr jCancellable
            return jCancellable'
    maybeCallback <- case callback of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jCallback -> do
            ptrcallback <- callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
            jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
            poke ptrcallback jCallback'
            return jCallback'
    let userData = nullPtr
    gtk_icon_info_load_symbolic_async iconInfo' fg' maybeSuccessColor maybeWarningColor maybeErrorColor maybeCancellable maybeCallback userData
    touchManagedPtr iconInfo
    touchManagedPtr fg
    whenJust successColor touchManagedPtr
    whenJust warningColor touchManagedPtr
    whenJust errorColor touchManagedPtr
    whenJust cancellable touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data IconInfoLoadSymbolicAsyncMethodInfo
instance (signature ~ (Gdk.RGBA.RGBA -> Maybe (Gdk.RGBA.RGBA) -> Maybe (Gdk.RGBA.RGBA) -> Maybe (Gdk.RGBA.RGBA) -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsIconInfo a, Gio.Cancellable.IsCancellable b) => O.MethodInfo IconInfoLoadSymbolicAsyncMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSymbolicAsync

#endif

-- method IconInfo::load_symbolic_finish
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "res", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "was_symbolic", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #gboolean, returns whether the\n    loaded icon was a symbolic one and whether the @fg color was\n    applied to it.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_symbolic_finish" gtk_icon_info_load_symbolic_finish ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gio.AsyncResult.AsyncResult ->      -- res : TInterface (Name {namespace = "Gio", name = "AsyncResult"})
    Ptr CInt ->                             -- was_symbolic : TBasicType TBoolean
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{- |
Finishes an async icon load, see 'GI.Gtk.Objects.IconInfo.iconInfoLoadSymbolicAsync'.

/Since: 3.8/
-}
iconInfoLoadSymbolicFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gio.AsyncResult.IsAsyncResult b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> b
    {- ^ /@res@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' -}
    -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))
    {- ^ __Returns:__ the rendered icon; this may be a newly
    created icon or a new reference to an internal icon, so you must
    not modify the icon. Use 'GI.GObject.Objects.Object.objectUnref' to release your reference
    to the icon. /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadSymbolicFinish iconInfo res = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    res' <- unsafeManagedPtrCastPtr res
    wasSymbolic <- allocMem :: IO (Ptr CInt)
    onException (do
        result <- propagateGError $ gtk_icon_info_load_symbolic_finish iconInfo' res' wasSymbolic
        checkUnexpectedReturnNULL "iconInfoLoadSymbolicFinish" result
        result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
        wasSymbolic' <- peek wasSymbolic
        let wasSymbolic'' = (/= 0) wasSymbolic'
        touchManagedPtr iconInfo
        touchManagedPtr res
        freeMem wasSymbolic
        return (result', wasSymbolic'')
     ) (do
        freeMem wasSymbolic
     )

#if ENABLE_OVERLOADING
data IconInfoLoadSymbolicFinishMethodInfo
instance (signature ~ (b -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))), MonadIO m, IsIconInfo a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo IconInfoLoadSymbolicFinishMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSymbolicFinish

#endif

-- method IconInfo::load_symbolic_for_context
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "StyleContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStyleContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "was_symbolic", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #gboolean, returns whether the\n    loaded icon was a symbolic one and whether the @fg color was\n    applied to it.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_symbolic_for_context" gtk_icon_info_load_symbolic_for_context ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gtk.StyleContext.StyleContext ->    -- context : TInterface (Name {namespace = "Gtk", name = "StyleContext"})
    Ptr CInt ->                             -- was_symbolic : TBasicType TBoolean
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{- |
Loads an icon, modifying it to match the system colors for the foreground,
success, warning and error colors provided. If the icon is not a symbolic
one, the function will return the result from 'GI.Gtk.Objects.IconInfo.iconInfoLoadIcon'.
This function uses the regular foreground color and the symbolic colors
with the names “success_color”, “warning_color” and “error_color” from
the context.

This allows loading symbolic icons that will match the system theme.

See 'GI.Gtk.Objects.IconInfo.iconInfoLoadSymbolic' for more details.

/Since: 3.0/
-}
iconInfoLoadSymbolicForContext ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gtk.StyleContext.IsStyleContext b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> b
    {- ^ /@context@/: a 'GI.Gtk.Objects.StyleContext.StyleContext' -}
    -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))
    {- ^ __Returns:__ a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf' representing the loaded icon /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadSymbolicForContext iconInfo context = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    context' <- unsafeManagedPtrCastPtr context
    wasSymbolic <- allocMem :: IO (Ptr CInt)
    onException (do
        result <- propagateGError $ gtk_icon_info_load_symbolic_for_context iconInfo' context' wasSymbolic
        checkUnexpectedReturnNULL "iconInfoLoadSymbolicForContext" result
        result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
        wasSymbolic' <- peek wasSymbolic
        let wasSymbolic'' = (/= 0) wasSymbolic'
        touchManagedPtr iconInfo
        touchManagedPtr context
        freeMem wasSymbolic
        return (result', wasSymbolic'')
     ) (do
        freeMem wasSymbolic
     )

#if ENABLE_OVERLOADING
data IconInfoLoadSymbolicForContextMethodInfo
instance (signature ~ (b -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))), MonadIO m, IsIconInfo a, Gtk.StyleContext.IsStyleContext b) => O.MethodInfo IconInfoLoadSymbolicForContextMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSymbolicForContext

#endif

-- method IconInfo::load_symbolic_for_context_async
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "StyleContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStyleContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "optional #GCancellable object,\n    %NULL to ignore", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GAsyncReadyCallback to call when the\n    request is satisfied", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data to pass to callback function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_load_symbolic_for_context_async" gtk_icon_info_load_symbolic_for_context_async ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gtk.StyleContext.StyleContext ->    -- context : TInterface (Name {namespace = "Gtk", name = "StyleContext"})
    Ptr Gio.Cancellable.Cancellable ->      -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"})
    FunPtr Gio.Callbacks.C_AsyncReadyCallback -> -- callback : TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

{- |
Asynchronously load, render and scale a symbolic icon previously
looked up from the icon theme using 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon'.

For more details, see 'GI.Gtk.Objects.IconInfo.iconInfoLoadSymbolicForContext'
which is the synchronous version of this call.

/Since: 3.8/
-}
iconInfoLoadSymbolicForContextAsync ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gtk.StyleContext.IsStyleContext b, Gio.Cancellable.IsCancellable c) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> b
    {- ^ /@context@/: a 'GI.Gtk.Objects.StyleContext.StyleContext' -}
    -> Maybe (c)
    {- ^ /@cancellable@/: optional 'GI.Gio.Objects.Cancellable.Cancellable' object,
    'Nothing' to ignore -}
    -> Maybe (Gio.Callbacks.AsyncReadyCallback)
    {- ^ /@callback@/: a 'GI.Gio.Callbacks.AsyncReadyCallback' to call when the
    request is satisfied -}
    -> m ()
iconInfoLoadSymbolicForContextAsync iconInfo context cancellable callback = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    context' <- unsafeManagedPtrCastPtr context
    maybeCancellable <- case cancellable of
        Nothing -> return nullPtr
        Just jCancellable -> do
            jCancellable' <- unsafeManagedPtrCastPtr jCancellable
            return jCancellable'
    maybeCallback <- case callback of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jCallback -> do
            ptrcallback <- callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
            jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
            poke ptrcallback jCallback'
            return jCallback'
    let userData = nullPtr
    gtk_icon_info_load_symbolic_for_context_async iconInfo' context' maybeCancellable maybeCallback userData
    touchManagedPtr iconInfo
    touchManagedPtr context
    whenJust cancellable touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data IconInfoLoadSymbolicForContextAsyncMethodInfo
instance (signature ~ (b -> Maybe (c) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsIconInfo a, Gtk.StyleContext.IsStyleContext b, Gio.Cancellable.IsCancellable c) => O.MethodInfo IconInfoLoadSymbolicForContextAsyncMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSymbolicForContextAsync

#endif

-- method IconInfo::load_symbolic_for_context_finish
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo from gtk_icon_theme_lookup_icon()", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "res", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "was_symbolic", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #gboolean, returns whether the\n    loaded icon was a symbolic one and whether the @fg color was\n    applied to it.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_symbolic_for_context_finish" gtk_icon_info_load_symbolic_for_context_finish ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gio.AsyncResult.AsyncResult ->      -- res : TInterface (Name {namespace = "Gio", name = "AsyncResult"})
    Ptr CInt ->                             -- was_symbolic : TBasicType TBoolean
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{- |
Finishes an async icon load, see 'GI.Gtk.Objects.IconInfo.iconInfoLoadSymbolicForContextAsync'.

/Since: 3.8/
-}
iconInfoLoadSymbolicForContextFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gio.AsyncResult.IsAsyncResult b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' from 'GI.Gtk.Objects.IconTheme.iconThemeLookupIcon' -}
    -> b
    {- ^ /@res@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' -}
    -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))
    {- ^ __Returns:__ the rendered icon; this may be a newly
    created icon or a new reference to an internal icon, so you must
    not modify the icon. Use 'GI.GObject.Objects.Object.objectUnref' to release your reference
    to the icon. /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadSymbolicForContextFinish iconInfo res = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    res' <- unsafeManagedPtrCastPtr res
    wasSymbolic <- allocMem :: IO (Ptr CInt)
    onException (do
        result <- propagateGError $ gtk_icon_info_load_symbolic_for_context_finish iconInfo' res' wasSymbolic
        checkUnexpectedReturnNULL "iconInfoLoadSymbolicForContextFinish" result
        result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
        wasSymbolic' <- peek wasSymbolic
        let wasSymbolic'' = (/= 0) wasSymbolic'
        touchManagedPtr iconInfo
        touchManagedPtr res
        freeMem wasSymbolic
        return (result', wasSymbolic'')
     ) (do
        freeMem wasSymbolic
     )

#if ENABLE_OVERLOADING
data IconInfoLoadSymbolicForContextFinishMethodInfo
instance (signature ~ (b -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))), MonadIO m, IsIconInfo a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo IconInfoLoadSymbolicForContextFinishMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSymbolicForContextFinish

#endif

-- method IconInfo::load_symbolic_for_style
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "style", argType = TInterface (Name {namespace = "Gtk", name = "Style"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkStyle to take the colors from", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface (Name {namespace = "Gtk", name = "StateType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the widget state to use for colors", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "was_symbolic", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #gboolean, returns whether the\n    loaded icon was a symbolic one and whether the @fg color was\n    applied to it.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GdkPixbuf", name = "Pixbuf"}))
-- throws : True
-- Skip return : False

foreign import ccall "gtk_icon_info_load_symbolic_for_style" gtk_icon_info_load_symbolic_for_style ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    Ptr Gtk.Style.Style ->                  -- style : TInterface (Name {namespace = "Gtk", name = "Style"})
    CUInt ->                                -- state : TInterface (Name {namespace = "Gtk", name = "StateType"})
    Ptr CInt ->                             -- was_symbolic : TBasicType TBoolean
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GdkPixbuf.Pixbuf.Pixbuf)

{-# DEPRECATED iconInfoLoadSymbolicForStyle ["(Since version 3.0)","Use 'GI.Gtk.Objects.IconInfo.iconInfoLoadSymbolicForContext' instead"] #-}
{- |
Loads an icon, modifying it to match the system colours for the foreground,
success, warning and error colors provided. If the icon is not a symbolic
one, the function will return the result from 'GI.Gtk.Objects.IconInfo.iconInfoLoadIcon'.

This allows loading symbolic icons that will match the system theme.

See 'GI.Gtk.Objects.IconInfo.iconInfoLoadSymbolic' for more details.

/Since: 3.0/
-}
iconInfoLoadSymbolicForStyle ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a, Gtk.Style.IsStyle b) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> b
    {- ^ /@style@/: a 'GI.Gtk.Objects.Style.Style' to take the colors from -}
    -> Gtk.Enums.StateType
    {- ^ /@state@/: the widget state to use for colors -}
    -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))
    {- ^ __Returns:__ a 'GI.GdkPixbuf.Objects.Pixbuf.Pixbuf' representing the loaded icon /(Can throw 'Data.GI.Base.GError.GError')/ -}
iconInfoLoadSymbolicForStyle iconInfo style state = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    style' <- unsafeManagedPtrCastPtr style
    let state' = (fromIntegral . fromEnum) state
    wasSymbolic <- allocMem :: IO (Ptr CInt)
    onException (do
        result <- propagateGError $ gtk_icon_info_load_symbolic_for_style iconInfo' style' state' wasSymbolic
        checkUnexpectedReturnNULL "iconInfoLoadSymbolicForStyle" result
        result' <- (wrapObject GdkPixbuf.Pixbuf.Pixbuf) result
        wasSymbolic' <- peek wasSymbolic
        let wasSymbolic'' = (/= 0) wasSymbolic'
        touchManagedPtr iconInfo
        touchManagedPtr style
        freeMem wasSymbolic
        return (result', wasSymbolic'')
     ) (do
        freeMem wasSymbolic
     )

#if ENABLE_OVERLOADING
data IconInfoLoadSymbolicForStyleMethodInfo
instance (signature ~ (b -> Gtk.Enums.StateType -> m ((GdkPixbuf.Pixbuf.Pixbuf, Bool))), MonadIO m, IsIconInfo a, Gtk.Style.IsStyle b) => O.MethodInfo IconInfoLoadSymbolicForStyleMethodInfo a signature where
    overloadedMethod _ = iconInfoLoadSymbolicForStyle

#endif

-- method IconInfo::set_raw_coordinates
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "icon_info", argType = TInterface (Name {namespace = "Gtk", name = "IconInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkIconInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "raw_coordinates", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether the coordinates of embedded rectangles\n    and attached points should be returned in their original\n    (unscaled) form.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_icon_info_set_raw_coordinates" gtk_icon_info_set_raw_coordinates ::
    Ptr IconInfo ->                         -- icon_info : TInterface (Name {namespace = "Gtk", name = "IconInfo"})
    CInt ->                                 -- raw_coordinates : TBasicType TBoolean
    IO ()

{-# DEPRECATED iconInfoSetRawCoordinates ["(Since version 3.14)","Embedded rectangles and attachment points are deprecated"] #-}
{- |
Sets whether the coordinates returned by 'GI.Gtk.Objects.IconInfo.iconInfoGetEmbeddedRect'
and 'GI.Gtk.Objects.IconInfo.iconInfoGetAttachPoints' should be returned in their
original form as specified in the icon theme, instead of scaled
appropriately for the pixbuf returned by 'GI.Gtk.Objects.IconInfo.iconInfoLoadIcon'.

Raw coordinates are somewhat strange; they are specified to be with
respect to the unscaled pixmap for PNG and XPM icons, but for SVG
icons, they are in a 1000x1000 coordinate space that is scaled
to the final size of the icon.  You can determine if the icon is an SVG
icon by using 'GI.Gtk.Objects.IconInfo.iconInfoGetFilename', and seeing if it is non-'Nothing'
and ends in “.svg”.

This function is provided primarily to allow compatibility wrappers
for older API\'s, and is not expected to be useful for applications.

/Since: 2.4/
-}
iconInfoSetRawCoordinates ::
    (B.CallStack.HasCallStack, MonadIO m, IsIconInfo a) =>
    a
    {- ^ /@iconInfo@/: a 'GI.Gtk.Objects.IconInfo.IconInfo' -}
    -> Bool
    {- ^ /@rawCoordinates@/: whether the coordinates of embedded rectangles
    and attached points should be returned in their original
    (unscaled) form. -}
    -> m ()
iconInfoSetRawCoordinates iconInfo rawCoordinates = liftIO $ do
    iconInfo' <- unsafeManagedPtrCastPtr iconInfo
    let rawCoordinates' = (fromIntegral . fromEnum) rawCoordinates
    gtk_icon_info_set_raw_coordinates iconInfo' rawCoordinates'
    touchManagedPtr iconInfo
    return ()

#if ENABLE_OVERLOADING
data IconInfoSetRawCoordinatesMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsIconInfo a) => O.MethodInfo IconInfoSetRawCoordinatesMethodInfo a signature where
    overloadedMethod _ = iconInfoSetRawCoordinates

#endif