gi-pango-0.1.38.15: GI/Pango/Structs/AttrSize.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 #PangoAttrSize structure is used to represent attributes which
set font size.
-}
module GI.Pango.Structs.AttrSize
(
-- * Exported types
AttrSize(..) ,
newZeroAttrSize ,
noAttrSize ,
-- * Methods
-- ** attrSizeNew
attrSizeNew ,
-- * Properties
-- ** Absolute
attrSizeAbsolute ,
attrSizeReadAbsolute ,
attrSizeWriteAbsolute ,
-- ** Attr
attrSizeAttr ,
attrSizeClearAttr ,
attrSizeReadAttr ,
attrSizeWriteAttr ,
-- ** Size
attrSizeReadSize ,
attrSizeSize ,
attrSizeWriteSize ,
) 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 AttrSize = AttrSize (ForeignPtr AttrSize)
instance WrappedPtr AttrSize where
wrappedPtrCalloc = callocBytes 24
wrappedPtrCopy = copyPtr 24
wrappedPtrFree = Just ptr_to_g_free
-- | Construct a `AttrSize` struct initialized to zero.
newZeroAttrSize :: MonadIO m => m AttrSize
newZeroAttrSize = liftIO $ wrappedPtrCalloc >>= wrapPtr AttrSize
instance tag ~ 'AttrSet => Constructible AttrSize tag where
new _ attrs = do
o <- newZeroAttrSize
GI.Attributes.set o attrs
return o
noAttrSize :: Maybe AttrSize
noAttrSize = Nothing
attrSizeReadAttr :: MonadIO m => AttrSize -> m (Maybe Attribute)
attrSizeReadAttr s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO (Ptr Attribute)
result <- convertIfNonNull val $ \val' -> do
val'' <- (newPtr Attribute) val'
return val''
return result
attrSizeWriteAttr :: MonadIO m => AttrSize -> Ptr Attribute -> m ()
attrSizeWriteAttr s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Ptr Attribute)
attrSizeClearAttr :: MonadIO m => AttrSize -> m ()
attrSizeClearAttr s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (nullPtr :: Ptr Attribute)
data AttrSizeAttrFieldInfo
instance AttrInfo AttrSizeAttrFieldInfo where
type AttrAllowedOps AttrSizeAttrFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint AttrSizeAttrFieldInfo = (~) (Ptr Attribute)
type AttrBaseTypeConstraint AttrSizeAttrFieldInfo = (~) AttrSize
type AttrGetType AttrSizeAttrFieldInfo = Maybe Attribute
type AttrLabel AttrSizeAttrFieldInfo = "attr"
attrGet _ = attrSizeReadAttr
attrSet _ = attrSizeWriteAttr
attrConstruct = undefined
attrClear _ = attrSizeClearAttr
attrSizeAttr :: AttrLabelProxy "attr"
attrSizeAttr = AttrLabelProxy
attrSizeReadSize :: MonadIO m => AttrSize -> m Int32
attrSizeReadSize s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO Int32
return val
attrSizeWriteSize :: MonadIO m => AttrSize -> Int32 -> m ()
attrSizeWriteSize s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (val :: Int32)
data AttrSizeSizeFieldInfo
instance AttrInfo AttrSizeSizeFieldInfo where
type AttrAllowedOps AttrSizeSizeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AttrSizeSizeFieldInfo = (~) Int32
type AttrBaseTypeConstraint AttrSizeSizeFieldInfo = (~) AttrSize
type AttrGetType AttrSizeSizeFieldInfo = Int32
type AttrLabel AttrSizeSizeFieldInfo = "size"
attrGet _ = attrSizeReadSize
attrSet _ = attrSizeWriteSize
attrConstruct = undefined
attrClear _ = undefined
attrSizeSize :: AttrLabelProxy "size"
attrSizeSize = AttrLabelProxy
attrSizeReadAbsolute :: MonadIO m => AttrSize -> m Word32
attrSizeReadAbsolute s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 20) :: IO Word32
return val
attrSizeWriteAbsolute :: MonadIO m => AttrSize -> Word32 -> m ()
attrSizeWriteAbsolute s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 20) (val :: Word32)
data AttrSizeAbsoluteFieldInfo
instance AttrInfo AttrSizeAbsoluteFieldInfo where
type AttrAllowedOps AttrSizeAbsoluteFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AttrSizeAbsoluteFieldInfo = (~) Word32
type AttrBaseTypeConstraint AttrSizeAbsoluteFieldInfo = (~) AttrSize
type AttrGetType AttrSizeAbsoluteFieldInfo = Word32
type AttrLabel AttrSizeAbsoluteFieldInfo = "absolute"
attrGet _ = attrSizeReadAbsolute
attrSet _ = attrSizeWriteAbsolute
attrConstruct = undefined
attrClear _ = undefined
attrSizeAbsolute :: AttrLabelProxy "absolute"
attrSizeAbsolute = AttrLabelProxy
type instance AttributeList AttrSize = AttrSizeAttributeList
type AttrSizeAttributeList = ('[ '("attr", AttrSizeAttrFieldInfo), '("size", AttrSizeSizeFieldInfo), '("absolute", AttrSizeAbsoluteFieldInfo)] :: [(Symbol, *)])
-- method AttrSize::new
-- method type : MemberFunction
-- Args : [Arg {argCName = "size", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Pango" "Attribute")
-- throws : False
-- Skip return : False
foreign import ccall "pango_attr_size_new" pango_attr_size_new ::
Int32 -> -- size : TBasicType TInt
IO (Ptr Attribute)
attrSizeNew ::
(MonadIO m) =>
Int32 -- size
-> m Attribute -- result
attrSizeNew size = liftIO $ do
result <- pango_attr_size_new size
checkUnexpectedReturnNULL "pango_attr_size_new" result
result' <- (wrapPtr Attribute) result
return result'
type family ResolveAttrSizeMethod (t :: Symbol) (o :: *) :: * where
ResolveAttrSizeMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveAttrSizeMethod t AttrSize, MethodInfo info AttrSize p) => IsLabelProxy t (AttrSize -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveAttrSizeMethod t AttrSize, MethodInfo info AttrSize p) => IsLabel t (AttrSize -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif