packages feed

gi-poppler-0.0.34.14: GI/Poppler/Structs/PageTransition.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)

A #PopplerPageTransition structures describes a visual transition
to use when moving between pages during a presentation
-}

module GI.Poppler.Structs.PageTransition
    ( 

-- * Exported types
    PageTransition(..)                      ,
    newZeroPageTransition                   ,
    noPageTransition                        ,


 -- * Methods
-- ** pageTransitionCopy
    PageTransitionCopyMethodInfo            ,
    pageTransitionCopy                      ,


-- ** pageTransitionFree
    PageTransitionFreeMethodInfo            ,
    pageTransitionFree                      ,


-- ** pageTransitionNew
    pageTransitionNew                       ,




 -- * Properties
-- ** Alignment
    pageTransitionAlignment                 ,
    pageTransitionReadAlignment             ,
    pageTransitionWriteAlignment            ,


-- ** Angle
    pageTransitionAngle                     ,
    pageTransitionReadAngle                 ,
    pageTransitionWriteAngle                ,


-- ** Direction
    pageTransitionDirection                 ,
    pageTransitionReadDirection             ,
    pageTransitionWriteDirection            ,


-- ** Duration
    pageTransitionDuration                  ,
    pageTransitionReadDuration              ,
    pageTransitionWriteDuration             ,


-- ** Rectangular
    pageTransitionReadRectangular           ,
    pageTransitionRectangular               ,
    pageTransitionWriteRectangular          ,


-- ** Scale
    pageTransitionReadScale                 ,
    pageTransitionScale                     ,
    pageTransitionWriteScale                ,


-- ** Type
    pageTransitionReadType                  ,
    pageTransitionType                      ,
    pageTransitionWriteType                 ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
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

newtype PageTransition = PageTransition (ForeignPtr PageTransition)
foreign import ccall "poppler_page_transition_get_type" c_poppler_page_transition_get_type :: 
    IO GType

instance BoxedObject PageTransition where
    boxedType _ = c_poppler_page_transition_get_type

-- | Construct a `PageTransition` struct initialized to zero.
newZeroPageTransition :: MonadIO m => m PageTransition
newZeroPageTransition = liftIO $ callocBoxedBytes 40 >>= wrapBoxed PageTransition

instance tag ~ 'AttrSet => Constructible PageTransition tag where
    new _ attrs = do
        o <- newZeroPageTransition
        GI.Attributes.set o attrs
        return o


noPageTransition :: Maybe PageTransition
noPageTransition = Nothing

pageTransitionReadType :: MonadIO m => PageTransition -> m PageTransitionType
pageTransitionReadType s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

pageTransitionWriteType :: MonadIO m => PageTransition -> PageTransitionType -> m ()
pageTransitionWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 0) (val' :: CUInt)

data PageTransitionTypeFieldInfo
instance AttrInfo PageTransitionTypeFieldInfo where
    type AttrAllowedOps PageTransitionTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint PageTransitionTypeFieldInfo = (~) PageTransitionType
    type AttrBaseTypeConstraint PageTransitionTypeFieldInfo = (~) PageTransition
    type AttrGetType PageTransitionTypeFieldInfo = PageTransitionType
    type AttrLabel PageTransitionTypeFieldInfo = "type"
    attrGet _ = pageTransitionReadType
    attrSet _ = pageTransitionWriteType
    attrConstruct = undefined
    attrClear _ = undefined

pageTransitionType :: AttrLabelProxy "type"
pageTransitionType = AttrLabelProxy


pageTransitionReadAlignment :: MonadIO m => PageTransition -> m PageTransitionAlignment
pageTransitionReadAlignment s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

pageTransitionWriteAlignment :: MonadIO m => PageTransition -> PageTransitionAlignment -> m ()
pageTransitionWriteAlignment s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 4) (val' :: CUInt)

data PageTransitionAlignmentFieldInfo
instance AttrInfo PageTransitionAlignmentFieldInfo where
    type AttrAllowedOps PageTransitionAlignmentFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint PageTransitionAlignmentFieldInfo = (~) PageTransitionAlignment
    type AttrBaseTypeConstraint PageTransitionAlignmentFieldInfo = (~) PageTransition
    type AttrGetType PageTransitionAlignmentFieldInfo = PageTransitionAlignment
    type AttrLabel PageTransitionAlignmentFieldInfo = "alignment"
    attrGet _ = pageTransitionReadAlignment
    attrSet _ = pageTransitionWriteAlignment
    attrConstruct = undefined
    attrClear _ = undefined

pageTransitionAlignment :: AttrLabelProxy "alignment"
pageTransitionAlignment = AttrLabelProxy


pageTransitionReadDirection :: MonadIO m => PageTransition -> m PageTransitionDirection
pageTransitionReadDirection s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

pageTransitionWriteDirection :: MonadIO m => PageTransition -> PageTransitionDirection -> m ()
pageTransitionWriteDirection s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 8) (val' :: CUInt)

data PageTransitionDirectionFieldInfo
instance AttrInfo PageTransitionDirectionFieldInfo where
    type AttrAllowedOps PageTransitionDirectionFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint PageTransitionDirectionFieldInfo = (~) PageTransitionDirection
    type AttrBaseTypeConstraint PageTransitionDirectionFieldInfo = (~) PageTransition
    type AttrGetType PageTransitionDirectionFieldInfo = PageTransitionDirection
    type AttrLabel PageTransitionDirectionFieldInfo = "direction"
    attrGet _ = pageTransitionReadDirection
    attrSet _ = pageTransitionWriteDirection
    attrConstruct = undefined
    attrClear _ = undefined

pageTransitionDirection :: AttrLabelProxy "direction"
pageTransitionDirection = AttrLabelProxy


pageTransitionReadDuration :: MonadIO m => PageTransition -> m Int32
pageTransitionReadDuration s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 12) :: IO Int32
    return val

pageTransitionWriteDuration :: MonadIO m => PageTransition -> Int32 -> m ()
pageTransitionWriteDuration s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 12) (val :: Int32)

data PageTransitionDurationFieldInfo
instance AttrInfo PageTransitionDurationFieldInfo where
    type AttrAllowedOps PageTransitionDurationFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint PageTransitionDurationFieldInfo = (~) Int32
    type AttrBaseTypeConstraint PageTransitionDurationFieldInfo = (~) PageTransition
    type AttrGetType PageTransitionDurationFieldInfo = Int32
    type AttrLabel PageTransitionDurationFieldInfo = "duration"
    attrGet _ = pageTransitionReadDuration
    attrSet _ = pageTransitionWriteDuration
    attrConstruct = undefined
    attrClear _ = undefined

pageTransitionDuration :: AttrLabelProxy "duration"
pageTransitionDuration = AttrLabelProxy


pageTransitionReadAngle :: MonadIO m => PageTransition -> m Int32
pageTransitionReadAngle s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int32
    return val

pageTransitionWriteAngle :: MonadIO m => PageTransition -> Int32 -> m ()
pageTransitionWriteAngle s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: Int32)

data PageTransitionAngleFieldInfo
instance AttrInfo PageTransitionAngleFieldInfo where
    type AttrAllowedOps PageTransitionAngleFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint PageTransitionAngleFieldInfo = (~) Int32
    type AttrBaseTypeConstraint PageTransitionAngleFieldInfo = (~) PageTransition
    type AttrGetType PageTransitionAngleFieldInfo = Int32
    type AttrLabel PageTransitionAngleFieldInfo = "angle"
    attrGet _ = pageTransitionReadAngle
    attrSet _ = pageTransitionWriteAngle
    attrConstruct = undefined
    attrClear _ = undefined

pageTransitionAngle :: AttrLabelProxy "angle"
pageTransitionAngle = AttrLabelProxy


pageTransitionReadScale :: MonadIO m => PageTransition -> m Double
pageTransitionReadScale s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CDouble
    let val' = realToFrac val
    return val'

pageTransitionWriteScale :: MonadIO m => PageTransition -> Double -> m ()
pageTransitionWriteScale s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = realToFrac val
    poke (ptr `plusPtr` 24) (val' :: CDouble)

data PageTransitionScaleFieldInfo
instance AttrInfo PageTransitionScaleFieldInfo where
    type AttrAllowedOps PageTransitionScaleFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint PageTransitionScaleFieldInfo = (~) Double
    type AttrBaseTypeConstraint PageTransitionScaleFieldInfo = (~) PageTransition
    type AttrGetType PageTransitionScaleFieldInfo = Double
    type AttrLabel PageTransitionScaleFieldInfo = "scale"
    attrGet _ = pageTransitionReadScale
    attrSet _ = pageTransitionWriteScale
    attrConstruct = undefined
    attrClear _ = undefined

pageTransitionScale :: AttrLabelProxy "scale"
pageTransitionScale = AttrLabelProxy


pageTransitionReadRectangular :: MonadIO m => PageTransition -> m Bool
pageTransitionReadRectangular s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CInt
    let val' = (/= 0) val
    return val'

pageTransitionWriteRectangular :: MonadIO m => PageTransition -> Bool -> m ()
pageTransitionWriteRectangular s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 32) (val' :: CInt)

data PageTransitionRectangularFieldInfo
instance AttrInfo PageTransitionRectangularFieldInfo where
    type AttrAllowedOps PageTransitionRectangularFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint PageTransitionRectangularFieldInfo = (~) Bool
    type AttrBaseTypeConstraint PageTransitionRectangularFieldInfo = (~) PageTransition
    type AttrGetType PageTransitionRectangularFieldInfo = Bool
    type AttrLabel PageTransitionRectangularFieldInfo = "rectangular"
    attrGet _ = pageTransitionReadRectangular
    attrSet _ = pageTransitionWriteRectangular
    attrConstruct = undefined
    attrClear _ = undefined

pageTransitionRectangular :: AttrLabelProxy "rectangular"
pageTransitionRectangular = AttrLabelProxy



type instance AttributeList PageTransition = PageTransitionAttributeList
type PageTransitionAttributeList = ('[ '("type", PageTransitionTypeFieldInfo), '("alignment", PageTransitionAlignmentFieldInfo), '("direction", PageTransitionDirectionFieldInfo), '("duration", PageTransitionDurationFieldInfo), '("angle", PageTransitionAngleFieldInfo), '("scale", PageTransitionScaleFieldInfo), '("rectangular", PageTransitionRectangularFieldInfo)] :: [(Symbol, *)])

-- method PageTransition::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface "Poppler" "PageTransition")
-- throws : False
-- Skip return : False

foreign import ccall "poppler_page_transition_new" poppler_page_transition_new :: 
    IO (Ptr PageTransition)


pageTransitionNew ::
    (MonadIO m) =>
    m PageTransition                        -- result
pageTransitionNew  = liftIO $ do
    result <- poppler_page_transition_new
    checkUnexpectedReturnNULL "poppler_page_transition_new" result
    result' <- (wrapBoxed PageTransition) result
    return result'

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

foreign import ccall "poppler_page_transition_copy" poppler_page_transition_copy :: 
    Ptr PageTransition ->                   -- _obj : TInterface "Poppler" "PageTransition"
    IO (Ptr PageTransition)


pageTransitionCopy ::
    (MonadIO m) =>
    PageTransition                          -- _obj
    -> m PageTransition                     -- result
pageTransitionCopy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- poppler_page_transition_copy _obj'
    checkUnexpectedReturnNULL "poppler_page_transition_copy" result
    result' <- (wrapBoxed PageTransition) result
    touchManagedPtr _obj
    return result'

data PageTransitionCopyMethodInfo
instance (signature ~ (m PageTransition), MonadIO m) => MethodInfo PageTransitionCopyMethodInfo PageTransition signature where
    overloadedMethod _ = pageTransitionCopy

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

foreign import ccall "poppler_page_transition_free" poppler_page_transition_free :: 
    Ptr PageTransition ->                   -- _obj : TInterface "Poppler" "PageTransition"
    IO ()


pageTransitionFree ::
    (MonadIO m) =>
    PageTransition                          -- _obj
    -> m ()                                 -- result
pageTransitionFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    poppler_page_transition_free _obj'
    touchManagedPtr _obj
    return ()

data PageTransitionFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo PageTransitionFreeMethodInfo PageTransition signature where
    overloadedMethod _ = pageTransitionFree

type family ResolvePageTransitionMethod (t :: Symbol) (o :: *) :: * where
    ResolvePageTransitionMethod "copy" o = PageTransitionCopyMethodInfo
    ResolvePageTransitionMethod "free" o = PageTransitionFreeMethodInfo
    ResolvePageTransitionMethod l o = MethodResolutionFailed l o

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

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