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

/No description available in the introspection data./
-}

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

module GI.GtkSource.Objects.GutterRendererText
    (

-- * Exported types
    GutterRendererText(..)                  ,
    IsGutterRendererText                    ,
    toGutterRendererText                    ,
    noGutterRendererText                    ,


 -- * Methods
-- ** measure #method:measure#

#if ENABLE_OVERLOADING
    GutterRendererTextMeasureMethodInfo     ,
#endif
    gutterRendererTextMeasure               ,


-- ** measureMarkup #method:measureMarkup#

#if ENABLE_OVERLOADING
    GutterRendererTextMeasureMarkupMethodInfo,
#endif
    gutterRendererTextMeasureMarkup         ,


-- ** new #method:new#

    gutterRendererTextNew                   ,


-- ** setMarkup #method:setMarkup#

#if ENABLE_OVERLOADING
    GutterRendererTextSetMarkupMethodInfo   ,
#endif
    gutterRendererTextSetMarkup             ,


-- ** setText #method:setText#

#if ENABLE_OVERLOADING
    GutterRendererTextSetTextMethodInfo     ,
#endif
    gutterRendererTextSetText               ,




 -- * Properties
-- ** markup #attr:markup#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    GutterRendererTextMarkupPropertyInfo    ,
#endif
    clearGutterRendererTextMarkup           ,
    constructGutterRendererTextMarkup       ,
    getGutterRendererTextMarkup             ,
#if ENABLE_OVERLOADING
    gutterRendererTextMarkup                ,
#endif
    setGutterRendererTextMarkup             ,


-- ** text #attr:text#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    GutterRendererTextTextPropertyInfo      ,
#endif
    clearGutterRendererTextText             ,
    constructGutterRendererTextText         ,
    getGutterRendererTextText               ,
#if ENABLE_OVERLOADING
    gutterRendererTextText                  ,
#endif
    setGutterRendererTextText               ,




    ) 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.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.GtkSource.Objects.GutterRenderer as GtkSource.GutterRenderer

-- | Memory-managed wrapper type.
newtype GutterRendererText = GutterRendererText (ManagedPtr GutterRendererText)
foreign import ccall "gtk_source_gutter_renderer_text_get_type"
    c_gtk_source_gutter_renderer_text_get_type :: IO GType

instance GObject GutterRendererText where
    gobjectType = c_gtk_source_gutter_renderer_text_get_type


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

instance O.HasParentTypes GutterRendererText
type instance O.ParentTypes GutterRendererText = '[GtkSource.GutterRenderer.GutterRenderer, GObject.Object.Object]

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

-- | A convenience alias for `Nothing` :: `Maybe` `GutterRendererText`.
noGutterRendererText :: Maybe GutterRendererText
noGutterRendererText = Nothing

#if ENABLE_OVERLOADING
type family ResolveGutterRendererTextMethod (t :: Symbol) (o :: *) :: * where
    ResolveGutterRendererTextMethod "activate" o = GtkSource.GutterRenderer.GutterRendererActivateMethodInfo
    ResolveGutterRendererTextMethod "begin" o = GtkSource.GutterRenderer.GutterRendererBeginMethodInfo
    ResolveGutterRendererTextMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveGutterRendererTextMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveGutterRendererTextMethod "draw" o = GtkSource.GutterRenderer.GutterRendererDrawMethodInfo
    ResolveGutterRendererTextMethod "end" o = GtkSource.GutterRenderer.GutterRendererEndMethodInfo
    ResolveGutterRendererTextMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveGutterRendererTextMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveGutterRendererTextMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveGutterRendererTextMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveGutterRendererTextMethod "measure" o = GutterRendererTextMeasureMethodInfo
    ResolveGutterRendererTextMethod "measureMarkup" o = GutterRendererTextMeasureMarkupMethodInfo
    ResolveGutterRendererTextMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveGutterRendererTextMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveGutterRendererTextMethod "queryActivatable" o = GtkSource.GutterRenderer.GutterRendererQueryActivatableMethodInfo
    ResolveGutterRendererTextMethod "queryData" o = GtkSource.GutterRenderer.GutterRendererQueryDataMethodInfo
    ResolveGutterRendererTextMethod "queryTooltip" o = GtkSource.GutterRenderer.GutterRendererQueryTooltipMethodInfo
    ResolveGutterRendererTextMethod "queueDraw" o = GtkSource.GutterRenderer.GutterRendererQueueDrawMethodInfo
    ResolveGutterRendererTextMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveGutterRendererTextMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveGutterRendererTextMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveGutterRendererTextMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveGutterRendererTextMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveGutterRendererTextMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveGutterRendererTextMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveGutterRendererTextMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveGutterRendererTextMethod "getAlignment" o = GtkSource.GutterRenderer.GutterRendererGetAlignmentMethodInfo
    ResolveGutterRendererTextMethod "getAlignmentMode" o = GtkSource.GutterRenderer.GutterRendererGetAlignmentModeMethodInfo
    ResolveGutterRendererTextMethod "getBackground" o = GtkSource.GutterRenderer.GutterRendererGetBackgroundMethodInfo
    ResolveGutterRendererTextMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveGutterRendererTextMethod "getPadding" o = GtkSource.GutterRenderer.GutterRendererGetPaddingMethodInfo
    ResolveGutterRendererTextMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveGutterRendererTextMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveGutterRendererTextMethod "getSize" o = GtkSource.GutterRenderer.GutterRendererGetSizeMethodInfo
    ResolveGutterRendererTextMethod "getView" o = GtkSource.GutterRenderer.GutterRendererGetViewMethodInfo
    ResolveGutterRendererTextMethod "getVisible" o = GtkSource.GutterRenderer.GutterRendererGetVisibleMethodInfo
    ResolveGutterRendererTextMethod "getWindowType" o = GtkSource.GutterRenderer.GutterRendererGetWindowTypeMethodInfo
    ResolveGutterRendererTextMethod "setAlignment" o = GtkSource.GutterRenderer.GutterRendererSetAlignmentMethodInfo
    ResolveGutterRendererTextMethod "setAlignmentMode" o = GtkSource.GutterRenderer.GutterRendererSetAlignmentModeMethodInfo
    ResolveGutterRendererTextMethod "setBackground" o = GtkSource.GutterRenderer.GutterRendererSetBackgroundMethodInfo
    ResolveGutterRendererTextMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveGutterRendererTextMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveGutterRendererTextMethod "setMarkup" o = GutterRendererTextSetMarkupMethodInfo
    ResolveGutterRendererTextMethod "setPadding" o = GtkSource.GutterRenderer.GutterRendererSetPaddingMethodInfo
    ResolveGutterRendererTextMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveGutterRendererTextMethod "setSize" o = GtkSource.GutterRenderer.GutterRendererSetSizeMethodInfo
    ResolveGutterRendererTextMethod "setText" o = GutterRendererTextSetTextMethodInfo
    ResolveGutterRendererTextMethod "setVisible" o = GtkSource.GutterRenderer.GutterRendererSetVisibleMethodInfo
    ResolveGutterRendererTextMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveGutterRendererTextMethod t GutterRendererText, O.MethodInfo info GutterRendererText p) => OL.IsLabel t (GutterRendererText -> 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

-- VVV Prop "markup"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@markup@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' gutterRendererText #markup
@
-}
getGutterRendererTextMarkup :: (MonadIO m, IsGutterRendererText o) => o -> m (Maybe T.Text)
getGutterRendererTextMarkup obj = liftIO $ B.Properties.getObjectPropertyString obj "markup"

{- |
Set the value of the “@markup@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' gutterRendererText [ #markup 'Data.GI.Base.Attributes.:=' value ]
@
-}
setGutterRendererTextMarkup :: (MonadIO m, IsGutterRendererText o) => o -> T.Text -> m ()
setGutterRendererTextMarkup obj val = liftIO $ B.Properties.setObjectPropertyString obj "markup" (Just val)

{- |
Construct a `GValueConstruct` with valid value for the “@markup@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructGutterRendererTextMarkup :: (IsGutterRendererText o) => T.Text -> IO (GValueConstruct o)
constructGutterRendererTextMarkup val = B.Properties.constructObjectPropertyString "markup" (Just val)

{- |
Set the value of the “@markup@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #markup
@
-}
clearGutterRendererTextMarkup :: (MonadIO m, IsGutterRendererText o) => o -> m ()
clearGutterRendererTextMarkup obj = liftIO $ B.Properties.setObjectPropertyString obj "markup" (Nothing :: Maybe T.Text)

#if ENABLE_OVERLOADING
data GutterRendererTextMarkupPropertyInfo
instance AttrInfo GutterRendererTextMarkupPropertyInfo where
    type AttrAllowedOps GutterRendererTextMarkupPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint GutterRendererTextMarkupPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint GutterRendererTextMarkupPropertyInfo = IsGutterRendererText
    type AttrGetType GutterRendererTextMarkupPropertyInfo = (Maybe T.Text)
    type AttrLabel GutterRendererTextMarkupPropertyInfo = "markup"
    type AttrOrigin GutterRendererTextMarkupPropertyInfo = GutterRendererText
    attrGet _ = getGutterRendererTextMarkup
    attrSet _ = setGutterRendererTextMarkup
    attrConstruct _ = constructGutterRendererTextMarkup
    attrClear _ = clearGutterRendererTextMarkup
#endif

-- VVV Prop "text"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@text@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' gutterRendererText #text
@
-}
getGutterRendererTextText :: (MonadIO m, IsGutterRendererText o) => o -> m (Maybe T.Text)
getGutterRendererTextText obj = liftIO $ B.Properties.getObjectPropertyString obj "text"

{- |
Set the value of the “@text@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' gutterRendererText [ #text 'Data.GI.Base.Attributes.:=' value ]
@
-}
setGutterRendererTextText :: (MonadIO m, IsGutterRendererText o) => o -> T.Text -> m ()
setGutterRendererTextText obj val = liftIO $ B.Properties.setObjectPropertyString obj "text" (Just val)

{- |
Construct a `GValueConstruct` with valid value for the “@text@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructGutterRendererTextText :: (IsGutterRendererText o) => T.Text -> IO (GValueConstruct o)
constructGutterRendererTextText val = B.Properties.constructObjectPropertyString "text" (Just val)

{- |
Set the value of the “@text@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #text
@
-}
clearGutterRendererTextText :: (MonadIO m, IsGutterRendererText o) => o -> m ()
clearGutterRendererTextText obj = liftIO $ B.Properties.setObjectPropertyString obj "text" (Nothing :: Maybe T.Text)

#if ENABLE_OVERLOADING
data GutterRendererTextTextPropertyInfo
instance AttrInfo GutterRendererTextTextPropertyInfo where
    type AttrAllowedOps GutterRendererTextTextPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint GutterRendererTextTextPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint GutterRendererTextTextPropertyInfo = IsGutterRendererText
    type AttrGetType GutterRendererTextTextPropertyInfo = (Maybe T.Text)
    type AttrLabel GutterRendererTextTextPropertyInfo = "text"
    type AttrOrigin GutterRendererTextTextPropertyInfo = GutterRendererText
    attrGet _ = getGutterRendererTextText
    attrSet _ = setGutterRendererTextText
    attrConstruct _ = constructGutterRendererTextText
    attrClear _ = clearGutterRendererTextText
#endif

#if ENABLE_OVERLOADING
instance O.HasAttributeList GutterRendererText
type instance O.AttributeList GutterRendererText = GutterRendererTextAttributeList
type GutterRendererTextAttributeList = ('[ '("alignmentMode", GtkSource.GutterRenderer.GutterRendererAlignmentModePropertyInfo), '("backgroundRgba", GtkSource.GutterRenderer.GutterRendererBackgroundRgbaPropertyInfo), '("backgroundSet", GtkSource.GutterRenderer.GutterRendererBackgroundSetPropertyInfo), '("markup", GutterRendererTextMarkupPropertyInfo), '("size", GtkSource.GutterRenderer.GutterRendererSizePropertyInfo), '("text", GutterRendererTextTextPropertyInfo), '("view", GtkSource.GutterRenderer.GutterRendererViewPropertyInfo), '("visible", GtkSource.GutterRenderer.GutterRendererVisiblePropertyInfo), '("windowType", GtkSource.GutterRenderer.GutterRendererWindowTypePropertyInfo), '("xalign", GtkSource.GutterRenderer.GutterRendererXalignPropertyInfo), '("xpad", GtkSource.GutterRenderer.GutterRendererXpadPropertyInfo), '("yalign", GtkSource.GutterRenderer.GutterRendererYalignPropertyInfo), '("ypad", GtkSource.GutterRenderer.GutterRendererYpadPropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
gutterRendererTextMarkup :: AttrLabelProxy "markup"
gutterRendererTextMarkup = AttrLabelProxy

gutterRendererTextText :: AttrLabelProxy "text"
gutterRendererTextText = AttrLabelProxy

#endif

#if ENABLE_OVERLOADING
type instance O.SignalList GutterRendererText = GutterRendererTextSignalList
type GutterRendererTextSignalList = ('[ '("activate", GtkSource.GutterRenderer.GutterRendererActivateSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("queryActivatable", GtkSource.GutterRenderer.GutterRendererQueryActivatableSignalInfo), '("queryData", GtkSource.GutterRenderer.GutterRendererQueryDataSignalInfo), '("queryTooltip", GtkSource.GutterRenderer.GutterRendererQueryTooltipSignalInfo), '("queueDraw", GtkSource.GutterRenderer.GutterRendererQueueDrawSignalInfo)] :: [(Symbol, *)])

#endif

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

foreign import ccall "gtk_source_gutter_renderer_text_new" gtk_source_gutter_renderer_text_new ::
    IO (Ptr GutterRendererText)

{- |
Create a new 'GI.GtkSource.Objects.GutterRendererText.GutterRendererText'.
-}
gutterRendererTextNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m GutterRendererText
    {- ^ __Returns:__ A 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
gutterRendererTextNew  = liftIO $ do
    result <- gtk_source_gutter_renderer_text_new
    checkUnexpectedReturnNULL "gutterRendererTextNew" result
    result' <- (wrapObject GutterRendererText) result
    return result'

#if ENABLE_OVERLOADING
#endif

-- method GutterRendererText::measure
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRendererText.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the text to measure.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store the width of the text in pixels,\n  or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store the height of the text in\n  pixels, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_text_measure" gtk_source_gutter_renderer_text_measure ::
    Ptr GutterRendererText ->               -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"})
    CString ->                              -- text : TBasicType TUTF8
    Ptr Int32 ->                            -- width : TBasicType TInt
    Ptr Int32 ->                            -- height : TBasicType TInt
    IO ()

{- |
Measures the text provided using the pango layout used by the
'GI.GtkSource.Objects.GutterRendererText.GutterRendererText'.
-}
gutterRendererTextMeasure ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRendererText a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRendererText.GutterRendererText'. -}
    -> T.Text
    {- ^ /@text@/: the text to measure. -}
    -> m ((Int32, Int32))
gutterRendererTextMeasure renderer text = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    text' <- textToCString text
    width <- allocMem :: IO (Ptr Int32)
    height <- allocMem :: IO (Ptr Int32)
    gtk_source_gutter_renderer_text_measure renderer' text' width height
    width' <- peek width
    height' <- peek height
    touchManagedPtr renderer
    freeMem text'
    freeMem width
    freeMem height
    return (width', height')

#if ENABLE_OVERLOADING
data GutterRendererTextMeasureMethodInfo
instance (signature ~ (T.Text -> m ((Int32, Int32))), MonadIO m, IsGutterRendererText a) => O.MethodInfo GutterRendererTextMeasureMethodInfo a signature where
    overloadedMethod _ = gutterRendererTextMeasure

#endif

-- method GutterRendererText::measure_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRendererText.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the pango markup to measure.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store the width of the text in pixels,\n  or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "height", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store the height of the text in\n  pixels, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_text_measure_markup" gtk_source_gutter_renderer_text_measure_markup ::
    Ptr GutterRendererText ->               -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"})
    CString ->                              -- markup : TBasicType TUTF8
    Ptr Int32 ->                            -- width : TBasicType TInt
    Ptr Int32 ->                            -- height : TBasicType TInt
    IO ()

{- |
Measures the pango markup provided using the pango layout used by the
'GI.GtkSource.Objects.GutterRendererText.GutterRendererText'.
-}
gutterRendererTextMeasureMarkup ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRendererText a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRendererText.GutterRendererText'. -}
    -> T.Text
    {- ^ /@markup@/: the pango markup to measure. -}
    -> m ((Int32, Int32))
gutterRendererTextMeasureMarkup renderer markup = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    markup' <- textToCString markup
    width <- allocMem :: IO (Ptr Int32)
    height <- allocMem :: IO (Ptr Int32)
    gtk_source_gutter_renderer_text_measure_markup renderer' markup' width height
    width' <- peek width
    height' <- peek height
    touchManagedPtr renderer
    freeMem markup'
    freeMem width
    freeMem height
    return (width', height')

#if ENABLE_OVERLOADING
data GutterRendererTextMeasureMarkupMethodInfo
instance (signature ~ (T.Text -> m ((Int32, Int32))), MonadIO m, IsGutterRendererText a) => O.MethodInfo GutterRendererTextMeasureMarkupMethodInfo a signature where
    overloadedMethod _ = gutterRendererTextMeasureMarkup

#endif

-- method GutterRendererText::set_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_text_set_markup" gtk_source_gutter_renderer_text_set_markup ::
    Ptr GutterRendererText ->               -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"})
    CString ->                              -- markup : TBasicType TUTF8
    Int32 ->                                -- length : TBasicType TInt
    IO ()

{- |
/No description available in the introspection data./
-}
gutterRendererTextSetMarkup ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRendererText a) =>
    a
    -> T.Text
    -> Int32
    -> m ()
gutterRendererTextSetMarkup renderer markup length_ = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    markup' <- textToCString markup
    gtk_source_gutter_renderer_text_set_markup renderer' markup' length_
    touchManagedPtr renderer
    freeMem markup'
    return ()

#if ENABLE_OVERLOADING
data GutterRendererTextSetMarkupMethodInfo
instance (signature ~ (T.Text -> Int32 -> m ()), MonadIO m, IsGutterRendererText a) => O.MethodInfo GutterRendererTextSetMarkupMethodInfo a signature where
    overloadedMethod _ = gutterRendererTextSetMarkup

#endif

-- method GutterRendererText::set_text
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_text_set_text" gtk_source_gutter_renderer_text_set_text ::
    Ptr GutterRendererText ->               -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRendererText"})
    CString ->                              -- text : TBasicType TUTF8
    Int32 ->                                -- length : TBasicType TInt
    IO ()

{- |
/No description available in the introspection data./
-}
gutterRendererTextSetText ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRendererText a) =>
    a
    -> T.Text
    -> Int32
    -> m ()
gutterRendererTextSetText renderer text length_ = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    text' <- textToCString text
    gtk_source_gutter_renderer_text_set_text renderer' text' length_
    touchManagedPtr renderer
    freeMem text'
    return ()

#if ENABLE_OVERLOADING
data GutterRendererTextSetTextMethodInfo
instance (signature ~ (T.Text -> Int32 -> m ()), MonadIO m, IsGutterRendererText a) => O.MethodInfo GutterRendererTextSetTextMethodInfo a signature where
    overloadedMethod _ = gutterRendererTextSetText

#endif