{- |
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.PangoCairo.Objects.FcFontMap
    ( 

-- * Exported types
    FcFontMap(..)                           ,
    IsFcFontMap                             ,
    toFcFontMap                             ,
    noFcFontMap                             ,


    ) where

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

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

import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Pango.Objects.FontMap as Pango.FontMap
import {-# SOURCE #-} qualified GI.PangoCairo.Interfaces.FontMap as PangoCairo.FontMap

newtype FcFontMap = FcFontMap (ManagedPtr FcFontMap)
foreign import ccall "pango_cairo_fc_font_map_get_type"
    c_pango_cairo_fc_font_map_get_type :: IO GType

instance GObject FcFontMap where
    gobjectType _ = c_pango_cairo_fc_font_map_get_type
    

class GObject o => IsFcFontMap o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError FcFontMap a) =>
    IsFcFontMap a
#endif
instance IsFcFontMap FcFontMap
instance Pango.FontMap.IsFontMap FcFontMap
instance GObject.Object.IsObject FcFontMap
instance PangoCairo.FontMap.IsFontMap FcFontMap

toFcFontMap :: IsFcFontMap o => o -> IO FcFontMap
toFcFontMap = unsafeCastTo FcFontMap

noFcFontMap :: Maybe FcFontMap
noFcFontMap = Nothing

type family ResolveFcFontMapMethod (t :: Symbol) (o :: *) :: * where
    ResolveFcFontMapMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveFcFontMapMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveFcFontMapMethod "changed" o = Pango.FontMap.FontMapChangedMethodInfo
    ResolveFcFontMapMethod "createContext" o = Pango.FontMap.FontMapCreateContextMethodInfo
    ResolveFcFontMapMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveFcFontMapMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveFcFontMapMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveFcFontMapMethod "listFamilies" o = Pango.FontMap.FontMapListFamiliesMethodInfo
    ResolveFcFontMapMethod "loadFont" o = Pango.FontMap.FontMapLoadFontMethodInfo
    ResolveFcFontMapMethod "loadFontset" o = Pango.FontMap.FontMapLoadFontsetMethodInfo
    ResolveFcFontMapMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveFcFontMapMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveFcFontMapMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveFcFontMapMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveFcFontMapMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveFcFontMapMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveFcFontMapMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveFcFontMapMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveFcFontMapMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveFcFontMapMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveFcFontMapMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveFcFontMapMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveFcFontMapMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveFcFontMapMethod "getFontType" o = PangoCairo.FontMap.FontMapGetFontTypeMethodInfo
    ResolveFcFontMapMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveFcFontMapMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveFcFontMapMethod "getResolution" o = PangoCairo.FontMap.FontMapGetResolutionMethodInfo
    ResolveFcFontMapMethod "getSerial" o = Pango.FontMap.FontMapGetSerialMethodInfo
    ResolveFcFontMapMethod "getShapeEngineType" o = Pango.FontMap.FontMapGetShapeEngineTypeMethodInfo
    ResolveFcFontMapMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveFcFontMapMethod "setDefault" o = PangoCairo.FontMap.FontMapSetDefaultMethodInfo
    ResolveFcFontMapMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveFcFontMapMethod "setResolution" o = PangoCairo.FontMap.FontMapSetResolutionMethodInfo
    ResolveFcFontMapMethod l o = O.MethodResolutionFailed l o

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

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

instance O.HasAttributeList FcFontMap
type instance O.AttributeList FcFontMap = FcFontMapAttributeList
type FcFontMapAttributeList = ('[ ] :: [(Symbol, *)])

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