packages feed

gi-pango-0.1.38.15: GI/Pango/Structs/Analysis.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)

The #PangoAnalysis structure stores information about
the properties of a segment of text.
-}

module GI.Pango.Structs.Analysis
    ( 

-- * Exported types
    Analysis(..)                            ,
    newZeroAnalysis                         ,
    noAnalysis                              ,


 -- * Properties
-- ** ExtraAttrs
    analysisClearExtraAttrs                 ,
    analysisExtraAttrs                      ,
    analysisReadExtraAttrs                  ,
    analysisWriteExtraAttrs                 ,


-- ** Flags
    analysisFlags                           ,
    analysisReadFlags                       ,
    analysisWriteFlags                      ,


-- ** Font
    analysisClearFont                       ,
    analysisFont                            ,
    analysisReadFont                        ,
    analysisWriteFont                       ,


-- ** Gravity
    analysisGravity                         ,
    analysisReadGravity                     ,
    analysisWriteGravity                    ,


-- ** LangEngine
    analysisClearLangEngine                 ,
    analysisLangEngine                      ,
    analysisReadLangEngine                  ,
    analysisWriteLangEngine                 ,


-- ** Language
    analysisClearLanguage                   ,
    analysisLanguage                        ,
    analysisReadLanguage                    ,
    analysisWriteLanguage                   ,


-- ** Level
    analysisLevel                           ,
    analysisReadLevel                       ,
    analysisWriteLevel                      ,


-- ** Script
    analysisReadScript                      ,
    analysisScript                          ,
    analysisWriteScript                     ,


-- ** ShapeEngine
    analysisClearShapeEngine                ,
    analysisReadShapeEngine                 ,
    analysisShapeEngine                     ,
    analysisWriteShapeEngine                ,




    ) 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.Pango.Types
import GI.Pango.Callbacks

newtype Analysis = Analysis (ForeignPtr Analysis)
instance WrappedPtr Analysis where
    wrappedPtrCalloc = callocBytes 48
    wrappedPtrCopy = copyPtr 48
    wrappedPtrFree = Just ptr_to_g_free

-- | Construct a `Analysis` struct initialized to zero.
newZeroAnalysis :: MonadIO m => m Analysis
newZeroAnalysis = liftIO $ wrappedPtrCalloc >>= wrapPtr Analysis

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


noAnalysis :: Maybe Analysis
noAnalysis = Nothing

analysisReadShapeEngine :: MonadIO m => Analysis -> m (Maybe EngineShape)
analysisReadShapeEngine s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr EngineShape)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newObject EngineShape) val'
        return val''
    return result

analysisWriteShapeEngine :: MonadIO m => Analysis -> Ptr EngineShape -> m ()
analysisWriteShapeEngine s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: Ptr EngineShape)

analysisClearShapeEngine :: MonadIO m => Analysis -> m ()
analysisClearShapeEngine s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (nullPtr :: Ptr EngineShape)

data AnalysisShapeEngineFieldInfo
instance AttrInfo AnalysisShapeEngineFieldInfo where
    type AttrAllowedOps AnalysisShapeEngineFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AnalysisShapeEngineFieldInfo = (~) (Ptr EngineShape)
    type AttrBaseTypeConstraint AnalysisShapeEngineFieldInfo = (~) Analysis
    type AttrGetType AnalysisShapeEngineFieldInfo = Maybe EngineShape
    type AttrLabel AnalysisShapeEngineFieldInfo = "shape_engine"
    attrGet _ = analysisReadShapeEngine
    attrSet _ = analysisWriteShapeEngine
    attrConstruct = undefined
    attrClear _ = analysisClearShapeEngine

analysisShapeEngine :: AttrLabelProxy "shapeEngine"
analysisShapeEngine = AttrLabelProxy


analysisReadLangEngine :: MonadIO m => Analysis -> m (Maybe EngineLang)
analysisReadLangEngine s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr EngineLang)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newObject EngineLang) val'
        return val''
    return result

analysisWriteLangEngine :: MonadIO m => Analysis -> Ptr EngineLang -> m ()
analysisWriteLangEngine s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (val :: Ptr EngineLang)

analysisClearLangEngine :: MonadIO m => Analysis -> m ()
analysisClearLangEngine s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (nullPtr :: Ptr EngineLang)

data AnalysisLangEngineFieldInfo
instance AttrInfo AnalysisLangEngineFieldInfo where
    type AttrAllowedOps AnalysisLangEngineFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AnalysisLangEngineFieldInfo = (~) (Ptr EngineLang)
    type AttrBaseTypeConstraint AnalysisLangEngineFieldInfo = (~) Analysis
    type AttrGetType AnalysisLangEngineFieldInfo = Maybe EngineLang
    type AttrLabel AnalysisLangEngineFieldInfo = "lang_engine"
    attrGet _ = analysisReadLangEngine
    attrSet _ = analysisWriteLangEngine
    attrConstruct = undefined
    attrClear _ = analysisClearLangEngine

analysisLangEngine :: AttrLabelProxy "langEngine"
analysisLangEngine = AttrLabelProxy


analysisReadFont :: MonadIO m => Analysis -> m (Maybe Font)
analysisReadFont s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Font)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newObject Font) val'
        return val''
    return result

analysisWriteFont :: MonadIO m => Analysis -> Ptr Font -> m ()
analysisWriteFont s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: Ptr Font)

analysisClearFont :: MonadIO m => Analysis -> m ()
analysisClearFont s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Font)

data AnalysisFontFieldInfo
instance AttrInfo AnalysisFontFieldInfo where
    type AttrAllowedOps AnalysisFontFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AnalysisFontFieldInfo = (~) (Ptr Font)
    type AttrBaseTypeConstraint AnalysisFontFieldInfo = (~) Analysis
    type AttrGetType AnalysisFontFieldInfo = Maybe Font
    type AttrLabel AnalysisFontFieldInfo = "font"
    attrGet _ = analysisReadFont
    attrSet _ = analysisWriteFont
    attrConstruct = undefined
    attrClear _ = analysisClearFont

analysisFont :: AttrLabelProxy "font"
analysisFont = AttrLabelProxy


analysisReadLevel :: MonadIO m => Analysis -> m Word8
analysisReadLevel s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO Word8
    return val

analysisWriteLevel :: MonadIO m => Analysis -> Word8 -> m ()
analysisWriteLevel s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (val :: Word8)

data AnalysisLevelFieldInfo
instance AttrInfo AnalysisLevelFieldInfo where
    type AttrAllowedOps AnalysisLevelFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnalysisLevelFieldInfo = (~) Word8
    type AttrBaseTypeConstraint AnalysisLevelFieldInfo = (~) Analysis
    type AttrGetType AnalysisLevelFieldInfo = Word8
    type AttrLabel AnalysisLevelFieldInfo = "level"
    attrGet _ = analysisReadLevel
    attrSet _ = analysisWriteLevel
    attrConstruct = undefined
    attrClear _ = undefined

analysisLevel :: AttrLabelProxy "level"
analysisLevel = AttrLabelProxy


analysisReadGravity :: MonadIO m => Analysis -> m Word8
analysisReadGravity s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 25) :: IO Word8
    return val

analysisWriteGravity :: MonadIO m => Analysis -> Word8 -> m ()
analysisWriteGravity s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 25) (val :: Word8)

data AnalysisGravityFieldInfo
instance AttrInfo AnalysisGravityFieldInfo where
    type AttrAllowedOps AnalysisGravityFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnalysisGravityFieldInfo = (~) Word8
    type AttrBaseTypeConstraint AnalysisGravityFieldInfo = (~) Analysis
    type AttrGetType AnalysisGravityFieldInfo = Word8
    type AttrLabel AnalysisGravityFieldInfo = "gravity"
    attrGet _ = analysisReadGravity
    attrSet _ = analysisWriteGravity
    attrConstruct = undefined
    attrClear _ = undefined

analysisGravity :: AttrLabelProxy "gravity"
analysisGravity = AttrLabelProxy


analysisReadFlags :: MonadIO m => Analysis -> m Word8
analysisReadFlags s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 26) :: IO Word8
    return val

analysisWriteFlags :: MonadIO m => Analysis -> Word8 -> m ()
analysisWriteFlags s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 26) (val :: Word8)

data AnalysisFlagsFieldInfo
instance AttrInfo AnalysisFlagsFieldInfo where
    type AttrAllowedOps AnalysisFlagsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnalysisFlagsFieldInfo = (~) Word8
    type AttrBaseTypeConstraint AnalysisFlagsFieldInfo = (~) Analysis
    type AttrGetType AnalysisFlagsFieldInfo = Word8
    type AttrLabel AnalysisFlagsFieldInfo = "flags"
    attrGet _ = analysisReadFlags
    attrSet _ = analysisWriteFlags
    attrConstruct = undefined
    attrClear _ = undefined

analysisFlags :: AttrLabelProxy "flags"
analysisFlags = AttrLabelProxy


analysisReadScript :: MonadIO m => Analysis -> m Word8
analysisReadScript s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 27) :: IO Word8
    return val

analysisWriteScript :: MonadIO m => Analysis -> Word8 -> m ()
analysisWriteScript s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 27) (val :: Word8)

data AnalysisScriptFieldInfo
instance AttrInfo AnalysisScriptFieldInfo where
    type AttrAllowedOps AnalysisScriptFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AnalysisScriptFieldInfo = (~) Word8
    type AttrBaseTypeConstraint AnalysisScriptFieldInfo = (~) Analysis
    type AttrGetType AnalysisScriptFieldInfo = Word8
    type AttrLabel AnalysisScriptFieldInfo = "script"
    attrGet _ = analysisReadScript
    attrSet _ = analysisWriteScript
    attrConstruct = undefined
    attrClear _ = undefined

analysisScript :: AttrLabelProxy "script"
analysisScript = AttrLabelProxy


analysisReadLanguage :: MonadIO m => Analysis -> m (Maybe Language)
analysisReadLanguage s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr Language)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newBoxed Language) val'
        return val''
    return result

analysisWriteLanguage :: MonadIO m => Analysis -> Ptr Language -> m ()
analysisWriteLanguage s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 32) (val :: Ptr Language)

analysisClearLanguage :: MonadIO m => Analysis -> m ()
analysisClearLanguage s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 32) (nullPtr :: Ptr Language)

data AnalysisLanguageFieldInfo
instance AttrInfo AnalysisLanguageFieldInfo where
    type AttrAllowedOps AnalysisLanguageFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AnalysisLanguageFieldInfo = (~) (Ptr Language)
    type AttrBaseTypeConstraint AnalysisLanguageFieldInfo = (~) Analysis
    type AttrGetType AnalysisLanguageFieldInfo = Maybe Language
    type AttrLabel AnalysisLanguageFieldInfo = "language"
    attrGet _ = analysisReadLanguage
    attrSet _ = analysisWriteLanguage
    attrConstruct = undefined
    attrClear _ = analysisClearLanguage

analysisLanguage :: AttrLabelProxy "language"
analysisLanguage = AttrLabelProxy


analysisReadExtraAttrs :: MonadIO m => Analysis -> m ([Ptr ()])
analysisReadExtraAttrs s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO (Ptr (GSList (Ptr ())))
    val' <- unpackGSList val
    return val'

analysisWriteExtraAttrs :: MonadIO m => Analysis -> Ptr (GSList (Ptr ())) -> m ()
analysisWriteExtraAttrs s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 40) (val :: Ptr (GSList (Ptr ())))

analysisClearExtraAttrs :: MonadIO m => Analysis -> m ()
analysisClearExtraAttrs s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 40) (nullPtr :: Ptr (GSList (Ptr ())))

data AnalysisExtraAttrsFieldInfo
instance AttrInfo AnalysisExtraAttrsFieldInfo where
    type AttrAllowedOps AnalysisExtraAttrsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AnalysisExtraAttrsFieldInfo = (~) (Ptr (GSList (Ptr ())))
    type AttrBaseTypeConstraint AnalysisExtraAttrsFieldInfo = (~) Analysis
    type AttrGetType AnalysisExtraAttrsFieldInfo = [Ptr ()]
    type AttrLabel AnalysisExtraAttrsFieldInfo = "extra_attrs"
    attrGet _ = analysisReadExtraAttrs
    attrSet _ = analysisWriteExtraAttrs
    attrConstruct = undefined
    attrClear _ = analysisClearExtraAttrs

analysisExtraAttrs :: AttrLabelProxy "extraAttrs"
analysisExtraAttrs = AttrLabelProxy



type instance AttributeList Analysis = AnalysisAttributeList
type AnalysisAttributeList = ('[ '("shapeEngine", AnalysisShapeEngineFieldInfo), '("langEngine", AnalysisLangEngineFieldInfo), '("font", AnalysisFontFieldInfo), '("level", AnalysisLevelFieldInfo), '("gravity", AnalysisGravityFieldInfo), '("flags", AnalysisFlagsFieldInfo), '("script", AnalysisScriptFieldInfo), '("language", AnalysisLanguageFieldInfo), '("extraAttrs", AnalysisExtraAttrsFieldInfo)] :: [(Symbol, *)])

type family ResolveAnalysisMethod (t :: Symbol) (o :: *) :: * where
    ResolveAnalysisMethod l o = MethodResolutionFailed l o

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

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