module Graphics.UI.Gtk.Poppler.Attachment (
AttachmentSave,
Attachment,
AttachmentClass,
attachmentSave,
attachmentSaveToCallback,
) where
import Control.Monad
import Data.Typeable
import System.Glib.FFI
import System.Glib.Flags
import System.Glib.GError
import System.Glib.GObject
import System.Glib.GList
import System.Glib.UTFString
import Graphics.UI.Gtk.Poppler.Enums
import Graphics.UI.Gtk.Abstract.Widget (Rectangle (..), Color (..))
import Graphics.UI.GtkInternals
import Graphics.Rendering.Cairo.Types
import Graphics.UI.Gtk.Poppler.Types
import Graphics.UI.Gtk.Poppler.Structs
type AttachmentSave =
String
-> Int
-> Bool
type TAttachmentSaveFunc = CString -> (CULong) -> Ptr () -> Ptr (Ptr ()) -> IO (CInt)
type AttachmentSaveFunc = FunPtr TAttachmentSaveFunc
foreign import ccall "wrapper" mkAttachmentSaveFunc ::
TAttachmentSaveFunc -> IO AttachmentSaveFunc
attachmentSave :: AttachmentClass attachment => attachment
-> String
-> IO Bool
attachmentSave attachment filename =
liftM toBool $
withUTFString filename $ \ filenamePtr ->
propagateGError ((\(Attachment arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->poppler_attachment_save argPtr1 arg2 arg3) (toAttachment attachment) filenamePtr)
attachmentSaveToCallback :: AttachmentClass attachment => attachment
-> AttachmentSave
-> IO Bool
attachmentSaveToCallback attachment fun =
liftM toBool $ do
funcPtr <- mkAttachmentSaveFunc $ \s i _ _ -> do
str <- peekUTFString s
return (fromBool (fun str (fromIntegral i)))
(\(Attachment arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->poppler_attachment_save_to_callback argPtr1 arg2 arg3 arg4) (toAttachment attachment) funcPtr (castFunPtrToPtr funcPtr) nullPtr
foreign import ccall safe "poppler_attachment_save"
poppler_attachment_save :: ((Ptr Attachment) -> ((Ptr CChar) -> ((Ptr (Ptr ())) -> (IO CInt))))
foreign import ccall safe "poppler_attachment_save_to_callback"
poppler_attachment_save_to_callback :: ((Ptr Attachment) -> ((FunPtr ((Ptr CChar) -> (CULong -> ((Ptr ()) -> ((Ptr (Ptr ())) -> (IO CInt)))))) -> ((Ptr ()) -> ((Ptr (Ptr ())) -> (IO CInt)))))