packages feed

gi-poppler-0.0.34.13: GI/Poppler/Objects/Annot.hs


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

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


 -- * Methods
-- ** annotGetAnnotType
    AnnotGetAnnotTypeMethodInfo             ,
    annotGetAnnotType                       ,


-- ** annotGetColor
    AnnotGetColorMethodInfo                 ,
    annotGetColor                           ,


-- ** annotGetContents
    AnnotGetContentsMethodInfo              ,
    annotGetContents                        ,


-- ** annotGetFlags
    AnnotGetFlagsMethodInfo                 ,
    annotGetFlags                           ,


-- ** annotGetModified
    AnnotGetModifiedMethodInfo              ,
    annotGetModified                        ,


-- ** annotGetName
    AnnotGetNameMethodInfo                  ,
    annotGetName                            ,


-- ** annotGetPageIndex
    AnnotGetPageIndexMethodInfo             ,
    annotGetPageIndex                       ,


-- ** annotGetRectangle
    AnnotGetRectangleMethodInfo             ,
    annotGetRectangle                       ,


-- ** annotSetColor
    AnnotSetColorMethodInfo                 ,
    annotSetColor                           ,


-- ** annotSetContents
    AnnotSetContentsMethodInfo              ,
    annotSetContents                        ,


-- ** annotSetFlags
    AnnotSetFlagsMethodInfo                 ,
    annotSetFlags                           ,


-- ** annotSetRectangle
    AnnotSetRectangleMethodInfo             ,
    annotSetRectangle                       ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Poppler.Types
import GI.Poppler.Callbacks
import qualified GI.GObject as GObject

newtype Annot = Annot (ForeignPtr Annot)
foreign import ccall "poppler_annot_get_type"
    c_poppler_annot_get_type :: IO GType

type instance ParentTypes Annot = AnnotParentTypes
type AnnotParentTypes = '[GObject.Object]

instance GObject Annot where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_poppler_annot_get_type
    

class GObject o => AnnotK o
instance (GObject o, IsDescendantOf Annot o) => AnnotK o

toAnnot :: AnnotK o => o -> IO Annot
toAnnot = unsafeCastTo Annot

noAnnot :: Maybe Annot
noAnnot = Nothing

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

instance (info ~ ResolveAnnotMethod t Annot, MethodInfo info Annot p) => IsLabelProxy t (Annot -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

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

type instance AttributeList Annot = AnnotAttributeList
type AnnotAttributeList = ('[ ] :: [(Symbol, *)])

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

-- method Annot::get_annot_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Poppler" "AnnotType"
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_annot_type" poppler_annot_get_annot_type :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    IO CUInt


annotGetAnnotType ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m AnnotType                          -- result
annotGetAnnotType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- poppler_annot_get_annot_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

data AnnotGetAnnotTypeMethodInfo
instance (signature ~ (m AnnotType), MonadIO m, AnnotK a) => MethodInfo AnnotGetAnnotTypeMethodInfo a signature where
    overloadedMethod _ = annotGetAnnotType

-- method Annot::get_color
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Poppler" "Color"
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_color" poppler_annot_get_color :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    IO (Ptr Color)


annotGetColor ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m Color                              -- result
annotGetColor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- poppler_annot_get_color _obj'
    checkUnexpectedReturnNULL "poppler_annot_get_color" result
    result' <- (wrapBoxed Color) result
    touchManagedPtr _obj
    return result'

data AnnotGetColorMethodInfo
instance (signature ~ (m Color), MonadIO m, AnnotK a) => MethodInfo AnnotGetColorMethodInfo a signature where
    overloadedMethod _ = annotGetColor

-- method Annot::get_contents
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_contents" poppler_annot_get_contents :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    IO CString


annotGetContents ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m T.Text                             -- result
annotGetContents _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- poppler_annot_get_contents _obj'
    checkUnexpectedReturnNULL "poppler_annot_get_contents" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

data AnnotGetContentsMethodInfo
instance (signature ~ (m T.Text), MonadIO m, AnnotK a) => MethodInfo AnnotGetContentsMethodInfo a signature where
    overloadedMethod _ = annotGetContents

-- method Annot::get_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Poppler" "AnnotFlag"
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_flags" poppler_annot_get_flags :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    IO CUInt


annotGetFlags ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m [AnnotFlag]                        -- result
annotGetFlags _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- poppler_annot_get_flags _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

data AnnotGetFlagsMethodInfo
instance (signature ~ (m [AnnotFlag]), MonadIO m, AnnotK a) => MethodInfo AnnotGetFlagsMethodInfo a signature where
    overloadedMethod _ = annotGetFlags

-- method Annot::get_modified
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_modified" poppler_annot_get_modified :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    IO CString


annotGetModified ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m T.Text                             -- result
annotGetModified _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- poppler_annot_get_modified _obj'
    checkUnexpectedReturnNULL "poppler_annot_get_modified" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

data AnnotGetModifiedMethodInfo
instance (signature ~ (m T.Text), MonadIO m, AnnotK a) => MethodInfo AnnotGetModifiedMethodInfo a signature where
    overloadedMethod _ = annotGetModified

-- method Annot::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_name" poppler_annot_get_name :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    IO CString


annotGetName ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m T.Text                             -- result
annotGetName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- poppler_annot_get_name _obj'
    checkUnexpectedReturnNULL "poppler_annot_get_name" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

data AnnotGetNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, AnnotK a) => MethodInfo AnnotGetNameMethodInfo a signature where
    overloadedMethod _ = annotGetName

-- method Annot::get_page_index
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_page_index" poppler_annot_get_page_index :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    IO Int32


annotGetPageIndex ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m Int32                              -- result
annotGetPageIndex _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- poppler_annot_get_page_index _obj'
    touchManagedPtr _obj
    return result

data AnnotGetPageIndexMethodInfo
instance (signature ~ (m Int32), MonadIO m, AnnotK a) => MethodInfo AnnotGetPageIndexMethodInfo a signature where
    overloadedMethod _ = annotGetPageIndex

-- method Annot::get_rectangle
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "poppler_rect", argType = TInterface "Poppler" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_get_rectangle" poppler_annot_get_rectangle :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    Ptr Rectangle ->                        -- poppler_rect : TInterface "Poppler" "Rectangle"
    IO ()


annotGetRectangle ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> m (Rectangle)                        -- result
annotGetRectangle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    popplerRect <- callocBoxedBytes 32 :: IO (Ptr Rectangle)
    poppler_annot_get_rectangle _obj' popplerRect
    popplerRect' <- (wrapBoxed Rectangle) popplerRect
    touchManagedPtr _obj
    return popplerRect'

data AnnotGetRectangleMethodInfo
instance (signature ~ (m (Rectangle)), MonadIO m, AnnotK a) => MethodInfo AnnotGetRectangleMethodInfo a signature where
    overloadedMethod _ = annotGetRectangle

-- method Annot::set_color
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "poppler_color", argType = TInterface "Poppler" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_color" poppler_annot_set_color :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    Ptr Color ->                            -- poppler_color : TInterface "Poppler" "Color"
    IO ()


annotSetColor ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> Maybe (Color)                        -- popplerColor
    -> m ()                                 -- result
annotSetColor _obj popplerColor = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybePopplerColor <- case popplerColor of
        Nothing -> return nullPtr
        Just jPopplerColor -> do
            let jPopplerColor' = unsafeManagedPtrGetPtr jPopplerColor
            return jPopplerColor'
    poppler_annot_set_color _obj' maybePopplerColor
    touchManagedPtr _obj
    whenJust popplerColor touchManagedPtr
    return ()

data AnnotSetColorMethodInfo
instance (signature ~ (Maybe (Color) -> m ()), MonadIO m, AnnotK a) => MethodInfo AnnotSetColorMethodInfo a signature where
    overloadedMethod _ = annotSetColor

-- method Annot::set_contents
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "contents", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_contents" poppler_annot_set_contents :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    CString ->                              -- contents : TBasicType TUTF8
    IO ()


annotSetContents ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> T.Text                               -- contents
    -> m ()                                 -- result
annotSetContents _obj contents = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    contents' <- textToCString contents
    poppler_annot_set_contents _obj' contents'
    touchManagedPtr _obj
    freeMem contents'
    return ()

data AnnotSetContentsMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, AnnotK a) => MethodInfo AnnotSetContentsMethodInfo a signature where
    overloadedMethod _ = annotSetContents

-- method Annot::set_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "Poppler" "AnnotFlag", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_flags" poppler_annot_set_flags :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    CUInt ->                                -- flags : TInterface "Poppler" "AnnotFlag"
    IO ()


annotSetFlags ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> [AnnotFlag]                          -- flags
    -> m ()                                 -- result
annotSetFlags _obj flags = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let flags' = gflagsToWord flags
    poppler_annot_set_flags _obj' flags'
    touchManagedPtr _obj
    return ()

data AnnotSetFlagsMethodInfo
instance (signature ~ ([AnnotFlag] -> m ()), MonadIO m, AnnotK a) => MethodInfo AnnotSetFlagsMethodInfo a signature where
    overloadedMethod _ = annotSetFlags

-- method Annot::set_rectangle
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Poppler" "Annot", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "poppler_rect", argType = TInterface "Poppler" "Rectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "poppler_annot_set_rectangle" poppler_annot_set_rectangle :: 
    Ptr Annot ->                            -- _obj : TInterface "Poppler" "Annot"
    Ptr Rectangle ->                        -- poppler_rect : TInterface "Poppler" "Rectangle"
    IO ()


annotSetRectangle ::
    (MonadIO m, AnnotK a) =>
    a                                       -- _obj
    -> Rectangle                            -- popplerRect
    -> m ()                                 -- result
annotSetRectangle _obj popplerRect = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let popplerRect' = unsafeManagedPtrGetPtr popplerRect
    poppler_annot_set_rectangle _obj' popplerRect'
    touchManagedPtr _obj
    touchManagedPtr popplerRect
    return ()

data AnnotSetRectangleMethodInfo
instance (signature ~ (Rectangle -> m ()), MonadIO m, AnnotK a) => MethodInfo AnnotSetRectangleMethodInfo a signature where
    overloadedMethod _ = annotSetRectangle