{- |
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(..)                            ,
    noAnalysis                              ,


 -- * Properties
-- ** ExtraAttrs
    analysisReadExtraAttrs                  ,


-- ** Flags
    analysisReadFlags                       ,


-- ** Font
    analysisReadFont                        ,


-- ** Gravity
    analysisReadGravity                     ,


-- ** LangEngine
    analysisReadLangEngine                  ,


-- ** Language
    analysisReadLanguage                    ,


-- ** Level
    analysisReadLevel                       ,


-- ** Script
    analysisReadScript                      ,


-- ** ShapeEngine
    analysisReadShapeEngine                 ,




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

newtype Analysis = Analysis (ForeignPtr Analysis)
noAnalysis :: Maybe Analysis
noAnalysis = Nothing

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

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

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

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

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

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

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

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

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