{- |
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.Poppler.Objects.Annot
    (

-- * Exported types
    Annot(..)                               ,
    IsAnnot                                 ,
    toAnnot                                 ,
    noAnnot                                 ,


 -- * Methods
-- ** getAnnotType #method:getAnnotType#

#if ENABLE_OVERLOADING
    AnnotGetAnnotTypeMethodInfo             ,
#endif
    annotGetAnnotType                       ,


-- ** getColor #method:getColor#

#if ENABLE_OVERLOADING
    AnnotGetColorMethodInfo                 ,
#endif
    annotGetColor                           ,


-- ** getContents #method:getContents#

#if ENABLE_OVERLOADING
    AnnotGetContentsMethodInfo              ,
#endif
    annotGetContents                        ,


-- ** getFlags #method:getFlags#

#if ENABLE_OVERLOADING
    AnnotGetFlagsMethodInfo                 ,
#endif
    annotGetFlags                           ,


-- ** getModified #method:getModified#

#if ENABLE_OVERLOADING
    AnnotGetModifiedMethodInfo              ,
#endif
    annotGetModified                        ,


-- ** getName #method:getName#

#if ENABLE_OVERLOADING
    AnnotGetNameMethodInfo                  ,
#endif
    annotGetName                            ,


-- ** getPageIndex #method:getPageIndex#

#if ENABLE_OVERLOADING
    AnnotGetPageIndexMethodInfo             ,
#endif
    annotGetPageIndex                       ,


-- ** getRectangle #method:getRectangle#

#if ENABLE_OVERLOADING
    AnnotGetRectangleMethodInfo             ,
#endif
    annotGetRectangle                       ,


-- ** setColor #method:setColor#

#if ENABLE_OVERLOADING
    AnnotSetColorMethodInfo                 ,
#endif
    annotSetColor                           ,


-- ** setContents #method:setContents#

#if ENABLE_OVERLOADING
    AnnotSetContentsMethodInfo              ,
#endif
    annotSetContents                        ,


-- ** setFlags #method:setFlags#

#if ENABLE_OVERLOADING
    AnnotSetFlagsMethodInfo                 ,
#endif
    annotSetFlags                           ,


-- ** setRectangle #method:setRectangle#

#if ENABLE_OVERLOADING
    AnnotSetRectangleMethodInfo             ,
#endif
    annotSetRectangle                       ,




    ) 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.Poppler.Enums as Poppler.Enums
import {-# SOURCE #-} qualified GI.Poppler.Flags as Poppler.Flags
import {-# SOURCE #-} qualified GI.Poppler.Structs.Color as Poppler.Color
import {-# SOURCE #-} qualified GI.Poppler.Structs.Rectangle as Poppler.Rectangle

-- | Memory-managed wrapper type.
newtype Annot = Annot (ManagedPtr Annot)
foreign import ccall "poppler_annot_get_type"
    c_poppler_annot_get_type :: IO GType

instance GObject Annot where
    gobjectType = c_poppler_annot_get_type


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

instance O.HasParentTypes Annot
type instance O.ParentTypes Annot = '[GObject.Object.Object]

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

-- | A convenience alias for `Nothing` :: `Maybe` `Annot`.
noAnnot :: Maybe Annot
noAnnot = Nothing

#if ENABLE_OVERLOADING
type family ResolveAnnotMethod (t :: Symbol) (o :: *) :: * where
    ResolveAnnotMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveAnnotMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveAnnotMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveAnnotMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveAnnotMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveAnnotMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveAnnotMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveAnnotMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveAnnotMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveAnnotMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveAnnotMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveAnnotMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveAnnotMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveAnnotMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveAnnotMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveAnnotMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveAnnotMethod "getAnnotType" o = AnnotGetAnnotTypeMethodInfo
    ResolveAnnotMethod "getColor" o = AnnotGetColorMethodInfo
    ResolveAnnotMethod "getContents" o = AnnotGetContentsMethodInfo
    ResolveAnnotMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveAnnotMethod "getFlags" o = AnnotGetFlagsMethodInfo
    ResolveAnnotMethod "getModified" o = AnnotGetModifiedMethodInfo
    ResolveAnnotMethod "getName" o = AnnotGetNameMethodInfo
    ResolveAnnotMethod "getPageIndex" o = AnnotGetPageIndexMethodInfo
    ResolveAnnotMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveAnnotMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveAnnotMethod "getRectangle" o = AnnotGetRectangleMethodInfo
    ResolveAnnotMethod "setColor" o = AnnotSetColorMethodInfo
    ResolveAnnotMethod "setContents" o = AnnotSetContentsMethodInfo
    ResolveAnnotMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveAnnotMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveAnnotMethod "setFlags" o = AnnotSetFlagsMethodInfo
    ResolveAnnotMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveAnnotMethod "setRectangle" o = AnnotSetRectangleMethodInfo
    ResolveAnnotMethod l o = O.MethodResolutionFailed l o

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

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

#if ENABLE_OVERLOADING
#endif

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

#endif

-- method Annot::get_annot_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Poppler", name = "AnnotType"}))
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_annot_type" poppler_annot_get_annot_type ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    IO CUInt

{- |
Gets the type of /@popplerAnnot@/
-}
annotGetAnnotType ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m Poppler.Enums.AnnotType
    {- ^ __Returns:__ 'GI.Poppler.Enums.AnnotType' of /@popplerAnnot@/. -}
annotGetAnnotType popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    result <- poppler_annot_get_annot_type popplerAnnot'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr popplerAnnot
    return result'

#if ENABLE_OVERLOADING
data AnnotGetAnnotTypeMethodInfo
instance (signature ~ (m Poppler.Enums.AnnotType), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetAnnotTypeMethodInfo a signature where
    overloadedMethod _ = annotGetAnnotType

#endif

-- method Annot::get_color
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Poppler", name = "Color"}))
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_color" poppler_annot_get_color ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    IO (Ptr Poppler.Color.Color)

{- |
Retrieves the color of /@popplerAnnot@/.
-}
annotGetColor ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m Poppler.Color.Color
    {- ^ __Returns:__ a new allocated 'GI.Poppler.Structs.Color.Color' with the color values of
              /@popplerAnnot@/, or 'Nothing'. It must be freed with 'GI.GLib.Functions.free' when done. -}
annotGetColor popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    result <- poppler_annot_get_color popplerAnnot'
    checkUnexpectedReturnNULL "annotGetColor" result
    result' <- (wrapBoxed Poppler.Color.Color) result
    touchManagedPtr popplerAnnot
    return result'

#if ENABLE_OVERLOADING
data AnnotGetColorMethodInfo
instance (signature ~ (m Poppler.Color.Color), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetColorMethodInfo a signature where
    overloadedMethod _ = annotGetColor

#endif

-- method Annot::get_contents
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", 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 "poppler_annot_get_contents" poppler_annot_get_contents ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    IO CString

{- |
Retrieves the contents of /@popplerAnnot@/.
-}
annotGetContents ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m T.Text
    {- ^ __Returns:__ a new allocated string with the contents of /@popplerAnnot@/. It
              must be freed with 'GI.GLib.Functions.free' when done. -}
annotGetContents popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    result <- poppler_annot_get_contents popplerAnnot'
    checkUnexpectedReturnNULL "annotGetContents" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr popplerAnnot
    return result'

#if ENABLE_OVERLOADING
data AnnotGetContentsMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetContentsMethodInfo a signature where
    overloadedMethod _ = annotGetContents

#endif

-- method Annot::get_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Poppler", name = "AnnotFlag"}))
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_flags" poppler_annot_get_flags ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    IO CUInt

{- |
Retrieves the flag field specifying various characteristics of the
/@popplerAnnot@/.
-}
annotGetFlags ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m [Poppler.Flags.AnnotFlag]
    {- ^ __Returns:__ the flag field of /@popplerAnnot@/. -}
annotGetFlags popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    result <- poppler_annot_get_flags popplerAnnot'
    let result' = wordToGFlags result
    touchManagedPtr popplerAnnot
    return result'

#if ENABLE_OVERLOADING
data AnnotGetFlagsMethodInfo
instance (signature ~ (m [Poppler.Flags.AnnotFlag]), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetFlagsMethodInfo a signature where
    overloadedMethod _ = annotGetFlags

#endif

-- method Annot::get_modified
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", 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 "poppler_annot_get_modified" poppler_annot_get_modified ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    IO CString

{- |
Retrieves the last modification data of /@popplerAnnot@/. The returned
string will be either a PDF format date or a text string.
See also @/poppler_date_parse/@()
-}
annotGetModified ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m T.Text
    {- ^ __Returns:__ a new allocated string with the last modification data of
              /@popplerAnnot@/. It must be freed with 'GI.GLib.Functions.free' when done. -}
annotGetModified popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    result <- poppler_annot_get_modified popplerAnnot'
    checkUnexpectedReturnNULL "annotGetModified" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr popplerAnnot
    return result'

#if ENABLE_OVERLOADING
data AnnotGetModifiedMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetModifiedMethodInfo a signature where
    overloadedMethod _ = annotGetModified

#endif

-- method Annot::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", 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 "poppler_annot_get_name" poppler_annot_get_name ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    IO CString

{- |
Retrieves the name of /@popplerAnnot@/.
-}
annotGetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m T.Text
    {- ^ __Returns:__ a new allocated string with the name of /@popplerAnnot@/. It must
              be freed with 'GI.GLib.Functions.free' when done. -}
annotGetName popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    result <- poppler_annot_get_name popplerAnnot'
    checkUnexpectedReturnNULL "annotGetName" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr popplerAnnot
    return result'

#if ENABLE_OVERLOADING
data AnnotGetNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetNameMethodInfo a signature where
    overloadedMethod _ = annotGetName

#endif

-- method Annot::get_page_index
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", 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 "poppler_annot_get_page_index" poppler_annot_get_page_index ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    IO Int32

{- |
Returns the page index to which /@popplerAnnot@/ is associated, or -1 if unknown

/Since: 0.14/
-}
annotGetPageIndex ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m Int32
    {- ^ __Returns:__ page index or -1 -}
annotGetPageIndex popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    result <- poppler_annot_get_page_index popplerAnnot'
    touchManagedPtr popplerAnnot
    return result

#if ENABLE_OVERLOADING
data AnnotGetPageIndexMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetPageIndexMethodInfo a signature where
    overloadedMethod _ = annotGetPageIndex

#endif

-- method Annot::get_rectangle
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "poppler_rect", argType = TInterface (Name {namespace = "Poppler", name = "Rectangle"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerRectangle to store the annotation's coordinates", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_rectangle" poppler_annot_get_rectangle ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    Ptr Poppler.Rectangle.Rectangle ->      -- poppler_rect : TInterface (Name {namespace = "Poppler", name = "Rectangle"})
    IO ()

{- |
Retrieves the rectangle representing the page coordinates where the
annotation /@popplerAnnot@/ is placed.

/Since: 0.26/
-}
annotGetRectangle ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> m (Poppler.Rectangle.Rectangle)
annotGetRectangle popplerAnnot = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    popplerRect <- callocBoxedBytes 32 :: IO (Ptr Poppler.Rectangle.Rectangle)
    poppler_annot_get_rectangle popplerAnnot' popplerRect
    popplerRect' <- (wrapBoxed Poppler.Rectangle.Rectangle) popplerRect
    touchManagedPtr popplerAnnot
    return popplerRect'

#if ENABLE_OVERLOADING
data AnnotGetRectangleMethodInfo
instance (signature ~ (m (Poppler.Rectangle.Rectangle)), MonadIO m, IsAnnot a) => O.MethodInfo AnnotGetRectangleMethodInfo a signature where
    overloadedMethod _ = annotGetRectangle

#endif

-- method Annot::set_color
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "poppler_color", argType = TInterface (Name {namespace = "Poppler", name = "Color"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #PopplerColor, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_color" poppler_annot_set_color ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    Ptr Poppler.Color.Color ->              -- poppler_color : TInterface (Name {namespace = "Poppler", name = "Color"})
    IO ()

{- |
Sets the color of /@popplerAnnot@/.

/Since: 0.16/
-}
annotSetColor ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> Maybe (Poppler.Color.Color)
    {- ^ /@popplerColor@/: a 'GI.Poppler.Structs.Color.Color', or 'Nothing' -}
    -> m ()
annotSetColor popplerAnnot popplerColor = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    maybePopplerColor <- case popplerColor of
        Nothing -> return nullPtr
        Just jPopplerColor -> do
            jPopplerColor' <- unsafeManagedPtrGetPtr jPopplerColor
            return jPopplerColor'
    poppler_annot_set_color popplerAnnot' maybePopplerColor
    touchManagedPtr popplerAnnot
    whenJust popplerColor touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data AnnotSetColorMethodInfo
instance (signature ~ (Maybe (Poppler.Color.Color) -> m ()), MonadIO m, IsAnnot a) => O.MethodInfo AnnotSetColorMethodInfo a signature where
    overloadedMethod _ = annotSetColor

#endif

-- method Annot::set_contents
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "contents", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a text string containing the new contents", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_contents" poppler_annot_set_contents ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    CString ->                              -- contents : TBasicType TUTF8
    IO ()

{- |
Sets the contents of /@popplerAnnot@/ to the given value,
replacing the current contents.

/Since: 0.12/
-}
annotSetContents ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> T.Text
    {- ^ /@contents@/: a text string containing the new contents -}
    -> m ()
annotSetContents popplerAnnot contents = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    contents' <- textToCString contents
    poppler_annot_set_contents popplerAnnot' contents'
    touchManagedPtr popplerAnnot
    freeMem contents'
    return ()

#if ENABLE_OVERLOADING
data AnnotSetContentsMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsAnnot a) => O.MethodInfo AnnotSetContentsMethodInfo a signature where
    overloadedMethod _ = annotSetContents

#endif

-- method Annot::set_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Poppler", name = "AnnotFlag"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnotFlag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_flags" poppler_annot_set_flags ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    CUInt ->                                -- flags : TInterface (Name {namespace = "Poppler", name = "AnnotFlag"})
    IO ()

{- |
Sets the flag field specifying various characteristics of the
/@popplerAnnot@/.

/Since: 0.22/
-}
annotSetFlags ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> [Poppler.Flags.AnnotFlag]
    {- ^ /@flags@/: a 'GI.Poppler.Flags.AnnotFlag' -}
    -> m ()
annotSetFlags popplerAnnot flags = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    let flags' = gflagsToWord flags
    poppler_annot_set_flags popplerAnnot' flags'
    touchManagedPtr popplerAnnot
    return ()

#if ENABLE_OVERLOADING
data AnnotSetFlagsMethodInfo
instance (signature ~ ([Poppler.Flags.AnnotFlag] -> m ()), MonadIO m, IsAnnot a) => O.MethodInfo AnnotSetFlagsMethodInfo a signature where
    overloadedMethod _ = annotSetFlags

#endif

-- method Annot::set_rectangle
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "poppler_annot", argType = TInterface (Name {namespace = "Poppler", name = "Annot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerAnnot", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "poppler_rect", argType = TInterface (Name {namespace = "Poppler", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PopplerRectangle with the new annotation's coordinates", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_rectangle" poppler_annot_set_rectangle ::
    Ptr Annot ->                            -- poppler_annot : TInterface (Name {namespace = "Poppler", name = "Annot"})
    Ptr Poppler.Rectangle.Rectangle ->      -- poppler_rect : TInterface (Name {namespace = "Poppler", name = "Rectangle"})
    IO ()

{- |
Move the annotation to the rectangle representing the page coordinates
where the annotation /@popplerAnnot@/ should be placed.

/Since: 0.26/
-}
annotSetRectangle ::
    (B.CallStack.HasCallStack, MonadIO m, IsAnnot a) =>
    a
    {- ^ /@popplerAnnot@/: a 'GI.Poppler.Objects.Annot.Annot' -}
    -> Poppler.Rectangle.Rectangle
    {- ^ /@popplerRect@/: a 'GI.Poppler.Structs.Rectangle.Rectangle' with the new annotation\'s coordinates -}
    -> m ()
annotSetRectangle popplerAnnot popplerRect = liftIO $ do
    popplerAnnot' <- unsafeManagedPtrCastPtr popplerAnnot
    popplerRect' <- unsafeManagedPtrGetPtr popplerRect
    poppler_annot_set_rectangle popplerAnnot' popplerRect'
    touchManagedPtr popplerAnnot
    touchManagedPtr popplerRect
    return ()

#if ENABLE_OVERLOADING
data AnnotSetRectangleMethodInfo
instance (signature ~ (Poppler.Rectangle.Rectangle -> m ()), MonadIO m, IsAnnot a) => O.MethodInfo AnnotSetRectangleMethodInfo a signature where
    overloadedMethod _ = annotSetRectangle

#endif