{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- /No description available in the introspection data./

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

module GI.Gsk.Objects.BroadwayRenderer
    ( 

-- * Exported types
    BroadwayRenderer(..)                    ,
    IsBroadwayRenderer                      ,
    toBroadwayRenderer                      ,
    noBroadwayRenderer                      ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveBroadwayRendererMethod           ,
#endif


-- ** new #method:new#

    broadwayRendererNew                     ,




    ) 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.GClosure as B.GClosure
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.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
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 GHC.OverloadedLabels as OL

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gsk.Objects.Renderer as Gsk.Renderer

-- | Memory-managed wrapper type.
newtype BroadwayRenderer = BroadwayRenderer (ManagedPtr BroadwayRenderer)
    deriving (BroadwayRenderer -> BroadwayRenderer -> Bool
(BroadwayRenderer -> BroadwayRenderer -> Bool)
-> (BroadwayRenderer -> BroadwayRenderer -> Bool)
-> Eq BroadwayRenderer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BroadwayRenderer -> BroadwayRenderer -> Bool
$c/= :: BroadwayRenderer -> BroadwayRenderer -> Bool
== :: BroadwayRenderer -> BroadwayRenderer -> Bool
$c== :: BroadwayRenderer -> BroadwayRenderer -> Bool
Eq)
foreign import ccall "gsk_broadway_renderer_get_type"
    c_gsk_broadway_renderer_get_type :: IO GType

instance GObject BroadwayRenderer where
    gobjectType :: IO GType
gobjectType = IO GType
c_gsk_broadway_renderer_get_type
    

-- | Convert 'BroadwayRenderer' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue BroadwayRenderer where
    toGValue :: BroadwayRenderer -> IO GValue
toGValue o :: BroadwayRenderer
o = do
        GType
gtype <- IO GType
c_gsk_broadway_renderer_get_type
        BroadwayRenderer
-> (Ptr BroadwayRenderer -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr BroadwayRenderer
o (GType
-> (GValue -> Ptr BroadwayRenderer -> IO ())
-> Ptr BroadwayRenderer
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr BroadwayRenderer -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO BroadwayRenderer
fromGValue gv :: GValue
gv = do
        Ptr BroadwayRenderer
ptr <- GValue -> IO (Ptr BroadwayRenderer)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr BroadwayRenderer)
        (ManagedPtr BroadwayRenderer -> BroadwayRenderer)
-> Ptr BroadwayRenderer -> IO BroadwayRenderer
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr BroadwayRenderer -> BroadwayRenderer
BroadwayRenderer Ptr BroadwayRenderer
ptr
        
    

-- | Type class for types which can be safely cast to `BroadwayRenderer`, for instance with `toBroadwayRenderer`.
class (GObject o, O.IsDescendantOf BroadwayRenderer o) => IsBroadwayRenderer o
instance (GObject o, O.IsDescendantOf BroadwayRenderer o) => IsBroadwayRenderer o

instance O.HasParentTypes BroadwayRenderer
type instance O.ParentTypes BroadwayRenderer = '[Gsk.Renderer.Renderer, GObject.Object.Object]

-- | Cast to `BroadwayRenderer`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toBroadwayRenderer :: (MonadIO m, IsBroadwayRenderer o) => o -> m BroadwayRenderer
toBroadwayRenderer :: o -> m BroadwayRenderer
toBroadwayRenderer = IO BroadwayRenderer -> m BroadwayRenderer
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO BroadwayRenderer -> m BroadwayRenderer)
-> (o -> IO BroadwayRenderer) -> o -> m BroadwayRenderer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr BroadwayRenderer -> BroadwayRenderer)
-> o -> IO BroadwayRenderer
forall o o'.
(HasCallStack, GObject o, GObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
unsafeCastTo ManagedPtr BroadwayRenderer -> BroadwayRenderer
BroadwayRenderer

-- | A convenience alias for `Nothing` :: `Maybe` `BroadwayRenderer`.
noBroadwayRenderer :: Maybe BroadwayRenderer
noBroadwayRenderer :: Maybe BroadwayRenderer
noBroadwayRenderer = Maybe BroadwayRenderer
forall a. Maybe a
Nothing

#if defined(ENABLE_OVERLOADING)
type family ResolveBroadwayRendererMethod (t :: Symbol) (o :: *) :: * where
    ResolveBroadwayRendererMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveBroadwayRendererMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveBroadwayRendererMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveBroadwayRendererMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveBroadwayRendererMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveBroadwayRendererMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveBroadwayRendererMethod "isRealized" o = Gsk.Renderer.RendererIsRealizedMethodInfo
    ResolveBroadwayRendererMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveBroadwayRendererMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveBroadwayRendererMethod "realize" o = Gsk.Renderer.RendererRealizeMethodInfo
    ResolveBroadwayRendererMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveBroadwayRendererMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveBroadwayRendererMethod "render" o = Gsk.Renderer.RendererRenderMethodInfo
    ResolveBroadwayRendererMethod "renderTexture" o = Gsk.Renderer.RendererRenderTextureMethodInfo
    ResolveBroadwayRendererMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveBroadwayRendererMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveBroadwayRendererMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveBroadwayRendererMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveBroadwayRendererMethod "unrealize" o = Gsk.Renderer.RendererUnrealizeMethodInfo
    ResolveBroadwayRendererMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveBroadwayRendererMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveBroadwayRendererMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveBroadwayRendererMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveBroadwayRendererMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveBroadwayRendererMethod "getSurface" o = Gsk.Renderer.RendererGetSurfaceMethodInfo
    ResolveBroadwayRendererMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveBroadwayRendererMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveBroadwayRendererMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveBroadwayRendererMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveBroadwayRendererMethod t BroadwayRenderer, O.MethodInfo info BroadwayRenderer p) => OL.IsLabel t (BroadwayRenderer -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList BroadwayRenderer
type instance O.AttributeList BroadwayRenderer = BroadwayRendererAttributeList
type BroadwayRendererAttributeList = ('[ '("realized", Gsk.Renderer.RendererRealizedPropertyInfo), '("surface", Gsk.Renderer.RendererSurfacePropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

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

#endif

-- method BroadwayRenderer::new
-- method type : Constructor
-- Args: []
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Gsk" , name = "BroadwayRenderer" })
-- throws : False
-- Skip return : False

foreign import ccall "gsk_broadway_renderer_new" gsk_broadway_renderer_new :: 
    IO (Ptr BroadwayRenderer)

-- | Creates a new Broadway renderer.
-- 
-- The Broadway renderer is the default renderer for the broadway backend.
-- It will only work with broadway surfaces, otherwise it will fail the
-- call to @/gdk_renderer_realize()/@.
-- 
-- This function is only available when GTK was compiled with Broadway
-- support.
broadwayRendererNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m BroadwayRenderer
    -- ^ __Returns:__ a new Broadway renderer.
broadwayRendererNew :: m BroadwayRenderer
broadwayRendererNew  = IO BroadwayRenderer -> m BroadwayRenderer
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO BroadwayRenderer -> m BroadwayRenderer)
-> IO BroadwayRenderer -> m BroadwayRenderer
forall a b. (a -> b) -> a -> b
$ do
    Ptr BroadwayRenderer
result <- IO (Ptr BroadwayRenderer)
gsk_broadway_renderer_new
    Text -> Ptr BroadwayRenderer -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "broadwayRendererNew" Ptr BroadwayRenderer
result
    BroadwayRenderer
result' <- ((ManagedPtr BroadwayRenderer -> BroadwayRenderer)
-> Ptr BroadwayRenderer -> IO BroadwayRenderer
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr BroadwayRenderer -> BroadwayRenderer
BroadwayRenderer) Ptr BroadwayRenderer
result
    BroadwayRenderer -> IO BroadwayRenderer
forall (m :: * -> *) a. Monad m => a -> m a
return BroadwayRenderer
result'

#if defined(ENABLE_OVERLOADING)
#endif