{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Pango.Structs.Color
(
Color(..) ,
newZeroColor ,
#if defined(ENABLE_OVERLOADING)
ResolveColorMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
ColorCopyMethodInfo ,
#endif
colorCopy ,
#if defined(ENABLE_OVERLOADING)
ColorFreeMethodInfo ,
#endif
colorFree ,
#if defined(ENABLE_OVERLOADING)
ColorParseMethodInfo ,
#endif
colorParse ,
#if defined(ENABLE_OVERLOADING)
ColorToStringMethodInfo ,
#endif
colorToString ,
#if defined(ENABLE_OVERLOADING)
color_blue ,
#endif
getColorBlue ,
setColorBlue ,
#if defined(ENABLE_OVERLOADING)
color_green ,
#endif
getColorGreen ,
setColorGreen ,
#if defined(ENABLE_OVERLOADING)
color_red ,
#endif
getColorRed ,
setColorRed ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
newtype Color = Color (SP.ManagedPtr Color)
deriving (Color -> Color -> Bool
(Color -> Color -> Bool) -> (Color -> Color -> Bool) -> Eq Color
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Color -> Color -> Bool
$c/= :: Color -> Color -> Bool
== :: Color -> Color -> Bool
$c== :: Color -> Color -> Bool
Eq)
instance SP.ManagedPtrNewtype Color where
toManagedPtr :: Color -> ManagedPtr Color
toManagedPtr (Color ManagedPtr Color
p) = ManagedPtr Color
p
foreign import ccall "pango_color_get_type" c_pango_color_get_type ::
IO GType
type instance O.ParentTypes Color = '[]
instance O.HasParentTypes Color
instance B.Types.TypedObject Color where
glibType :: IO GType
glibType = IO GType
c_pango_color_get_type
instance B.Types.GBoxed Color
instance B.GValue.IsGValue Color where
toGValue :: Color -> IO GValue
toGValue Color
o = do
GType
gtype <- IO GType
c_pango_color_get_type
Color -> (Ptr Color -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Color
o (GType -> (GValue -> Ptr Color -> IO ()) -> Ptr Color -> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr Color -> IO ()
forall a. GValue -> Ptr a -> IO ()
B.GValue.set_boxed)
fromGValue :: GValue -> IO Color
fromGValue GValue
gv = do
Ptr Color
ptr <- GValue -> IO (Ptr Color)
forall b. GValue -> IO (Ptr b)
B.GValue.get_boxed GValue
gv :: IO (Ptr Color)
(ManagedPtr Color -> Color) -> Ptr Color -> IO Color
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr Color -> Color
Color Ptr Color
ptr
newZeroColor :: MonadIO m => m Color
newZeroColor :: m Color
newZeroColor = IO Color -> m Color
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Color -> m Color) -> IO Color -> m Color
forall a b. (a -> b) -> a -> b
$ Int -> IO (Ptr Color)
forall a. GBoxed a => Int -> IO (Ptr a)
callocBoxedBytes Int
6 IO (Ptr Color) -> (Ptr Color -> IO Color) -> IO Color
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr Color -> Color) -> Ptr Color -> IO Color
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Color -> Color
Color
instance tag ~ 'AttrSet => Constructible Color tag where
new :: (ManagedPtr Color -> Color) -> [AttrOp Color tag] -> m Color
new ManagedPtr Color -> Color
_ [AttrOp Color tag]
attrs = do
Color
o <- m Color
forall (m :: * -> *). MonadIO m => m Color
newZeroColor
Color -> [AttrOp Color 'AttrSet] -> m ()
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set Color
o [AttrOp Color tag]
[AttrOp Color 'AttrSet]
attrs
Color -> m Color
forall (m :: * -> *) a. Monad m => a -> m a
return Color
o
getColorRed :: MonadIO m => Color -> m Word16
getColorRed :: Color -> m Word16
getColorRed Color
s = IO Word16 -> m Word16
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word16 -> m Word16) -> IO Word16 -> m Word16
forall a b. (a -> b) -> a -> b
$ Color -> (Ptr Color -> IO Word16) -> IO Word16
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Color
s ((Ptr Color -> IO Word16) -> IO Word16)
-> (Ptr Color -> IO Word16) -> IO Word16
forall a b. (a -> b) -> a -> b
$ \Ptr Color
ptr -> do
Word16
val <- Ptr Word16 -> IO Word16
forall a. Storable a => Ptr a -> IO a
peek (Ptr Color
ptr Ptr Color -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) :: IO Word16
Word16 -> IO Word16
forall (m :: * -> *) a. Monad m => a -> m a
return Word16
val
setColorRed :: MonadIO m => Color -> Word16 -> m ()
setColorRed :: Color -> Word16 -> m ()
setColorRed Color
s Word16
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Color -> (Ptr Color -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Color
s ((Ptr Color -> IO ()) -> IO ()) -> (Ptr Color -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Color
ptr -> do
Ptr Word16 -> Word16 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Color
ptr Ptr Color -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) (Word16
val :: Word16)
#if defined(ENABLE_OVERLOADING)
data ColorRedFieldInfo
instance AttrInfo ColorRedFieldInfo where
type AttrBaseTypeConstraint ColorRedFieldInfo = (~) Color
type AttrAllowedOps ColorRedFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ColorRedFieldInfo = (~) Word16
type AttrTransferTypeConstraint ColorRedFieldInfo = (~)Word16
type AttrTransferType ColorRedFieldInfo = Word16
type AttrGetType ColorRedFieldInfo = Word16
type AttrLabel ColorRedFieldInfo = "red"
type AttrOrigin ColorRedFieldInfo = Color
attrGet = getColorRed
attrSet = setColorRed
attrConstruct = undefined
attrClear = undefined
attrTransfer _ v = do
return v
color_red :: AttrLabelProxy "red"
color_red = AttrLabelProxy
#endif
getColorGreen :: MonadIO m => Color -> m Word16
getColorGreen :: Color -> m Word16
getColorGreen Color
s = IO Word16 -> m Word16
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word16 -> m Word16) -> IO Word16 -> m Word16
forall a b. (a -> b) -> a -> b
$ Color -> (Ptr Color -> IO Word16) -> IO Word16
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Color
s ((Ptr Color -> IO Word16) -> IO Word16)
-> (Ptr Color -> IO Word16) -> IO Word16
forall a b. (a -> b) -> a -> b
$ \Ptr Color
ptr -> do
Word16
val <- Ptr Word16 -> IO Word16
forall a. Storable a => Ptr a -> IO a
peek (Ptr Color
ptr Ptr Color -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
2) :: IO Word16
Word16 -> IO Word16
forall (m :: * -> *) a. Monad m => a -> m a
return Word16
val
setColorGreen :: MonadIO m => Color -> Word16 -> m ()
setColorGreen :: Color -> Word16 -> m ()
setColorGreen Color
s Word16
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Color -> (Ptr Color -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Color
s ((Ptr Color -> IO ()) -> IO ()) -> (Ptr Color -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Color
ptr -> do
Ptr Word16 -> Word16 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Color
ptr Ptr Color -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
2) (Word16
val :: Word16)
#if defined(ENABLE_OVERLOADING)
data ColorGreenFieldInfo
instance AttrInfo ColorGreenFieldInfo where
type AttrBaseTypeConstraint ColorGreenFieldInfo = (~) Color
type AttrAllowedOps ColorGreenFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ColorGreenFieldInfo = (~) Word16
type AttrTransferTypeConstraint ColorGreenFieldInfo = (~)Word16
type AttrTransferType ColorGreenFieldInfo = Word16
type AttrGetType ColorGreenFieldInfo = Word16
type AttrLabel ColorGreenFieldInfo = "green"
type AttrOrigin ColorGreenFieldInfo = Color
attrGet = getColorGreen
attrSet = setColorGreen
attrConstruct = undefined
attrClear = undefined
attrTransfer _ v = do
return v
color_green :: AttrLabelProxy "green"
color_green = AttrLabelProxy
#endif
getColorBlue :: MonadIO m => Color -> m Word16
getColorBlue :: Color -> m Word16
getColorBlue Color
s = IO Word16 -> m Word16
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word16 -> m Word16) -> IO Word16 -> m Word16
forall a b. (a -> b) -> a -> b
$ Color -> (Ptr Color -> IO Word16) -> IO Word16
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Color
s ((Ptr Color -> IO Word16) -> IO Word16)
-> (Ptr Color -> IO Word16) -> IO Word16
forall a b. (a -> b) -> a -> b
$ \Ptr Color
ptr -> do
Word16
val <- Ptr Word16 -> IO Word16
forall a. Storable a => Ptr a -> IO a
peek (Ptr Color
ptr Ptr Color -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4) :: IO Word16
Word16 -> IO Word16
forall (m :: * -> *) a. Monad m => a -> m a
return Word16
val
setColorBlue :: MonadIO m => Color -> Word16 -> m ()
setColorBlue :: Color -> Word16 -> m ()
setColorBlue Color
s Word16
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ Color -> (Ptr Color -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr Color
s ((Ptr Color -> IO ()) -> IO ()) -> (Ptr Color -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Color
ptr -> do
Ptr Word16 -> Word16 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Color
ptr Ptr Color -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4) (Word16
val :: Word16)
#if defined(ENABLE_OVERLOADING)
data ColorBlueFieldInfo
instance AttrInfo ColorBlueFieldInfo where
type AttrBaseTypeConstraint ColorBlueFieldInfo = (~) Color
type AttrAllowedOps ColorBlueFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint ColorBlueFieldInfo = (~) Word16
type AttrTransferTypeConstraint ColorBlueFieldInfo = (~)Word16
type AttrTransferType ColorBlueFieldInfo = Word16
type AttrGetType ColorBlueFieldInfo = Word16
type AttrLabel ColorBlueFieldInfo = "blue"
type AttrOrigin ColorBlueFieldInfo = Color
attrGet = getColorBlue
attrSet = setColorBlue
attrConstruct = undefined
attrClear = undefined
attrTransfer _ v = do
return v
color_blue :: AttrLabelProxy "blue"
color_blue = AttrLabelProxy
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList Color
type instance O.AttributeList Color = ColorAttributeList
type ColorAttributeList = ('[ '("red", ColorRedFieldInfo), '("green", ColorGreenFieldInfo), '("blue", ColorBlueFieldInfo)] :: [(Symbol, *)])
#endif
foreign import ccall "pango_color_copy" pango_color_copy ::
Ptr Color ->
IO (Ptr Color)
colorCopy ::
(B.CallStack.HasCallStack, MonadIO m) =>
Color
-> m (Maybe Color)
colorCopy :: Color -> m (Maybe Color)
colorCopy Color
src = IO (Maybe Color) -> m (Maybe Color)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Color) -> m (Maybe Color))
-> IO (Maybe Color) -> m (Maybe Color)
forall a b. (a -> b) -> a -> b
$ do
Ptr Color
src' <- Color -> IO (Ptr Color)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Color
src
Ptr Color
result <- Ptr Color -> IO (Ptr Color)
pango_color_copy Ptr Color
src'
Maybe Color
maybeResult <- Ptr Color -> (Ptr Color -> IO Color) -> IO (Maybe Color)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr Color
result ((Ptr Color -> IO Color) -> IO (Maybe Color))
-> (Ptr Color -> IO Color) -> IO (Maybe Color)
forall a b. (a -> b) -> a -> b
$ \Ptr Color
result' -> do
Color
result'' <- ((ManagedPtr Color -> Color) -> Ptr Color -> IO Color
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Color -> Color
Color) Ptr Color
result'
Color -> IO Color
forall (m :: * -> *) a. Monad m => a -> m a
return Color
result''
Color -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Color
src
Maybe Color -> IO (Maybe Color)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Color
maybeResult
#if defined(ENABLE_OVERLOADING)
data ColorCopyMethodInfo
instance (signature ~ (m (Maybe Color)), MonadIO m) => O.MethodInfo ColorCopyMethodInfo Color signature where
overloadedMethod = colorCopy
#endif
foreign import ccall "pango_color_free" pango_color_free ::
Ptr Color ->
IO ()
colorFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
Color
-> m ()
colorFree :: Color -> m ()
colorFree Color
color = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr Color
color' <- Color -> IO (Ptr Color)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Color
color
Ptr Color -> IO ()
pango_color_free Ptr Color
color'
Color -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Color
color
() -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data ColorFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo ColorFreeMethodInfo Color signature where
overloadedMethod = colorFree
#endif
foreign import ccall "pango_color_parse" pango_color_parse ::
Ptr Color ->
CString ->
IO CInt
colorParse ::
(B.CallStack.HasCallStack, MonadIO m) =>
Color
-> T.Text
-> m Bool
colorParse :: Color -> Text -> m Bool
colorParse Color
color Text
spec = IO Bool -> m Bool
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
Ptr Color
color' <- Color -> IO (Ptr Color)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Color
color
CString
spec' <- Text -> IO CString
textToCString Text
spec
CInt
result <- Ptr Color -> CString -> IO CInt
pango_color_parse Ptr Color
color' CString
spec'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Color -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Color
color
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
spec'
Bool -> IO Bool
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
data ColorParseMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m) => O.MethodInfo ColorParseMethodInfo Color signature where
overloadedMethod = colorParse
#endif
foreign import ccall "pango_color_to_string" pango_color_to_string ::
Ptr Color ->
IO CString
colorToString ::
(B.CallStack.HasCallStack, MonadIO m) =>
Color
-> m T.Text
colorToString :: Color -> m Text
colorToString Color
color = IO Text -> m Text
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
Ptr Color
color' <- Color -> IO (Ptr Color)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Color
color
CString
result <- Ptr Color -> IO CString
pango_color_to_string Ptr Color
color'
Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"colorToString" CString
result
Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
result
Color -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Color
color
Text -> IO Text
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'
#if defined(ENABLE_OVERLOADING)
data ColorToStringMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo ColorToStringMethodInfo Color signature where
overloadedMethod = colorToString
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveColorMethod (t :: Symbol) (o :: *) :: * where
ResolveColorMethod "copy" o = ColorCopyMethodInfo
ResolveColorMethod "free" o = ColorFreeMethodInfo
ResolveColorMethod "parse" o = ColorParseMethodInfo
ResolveColorMethod "toString" o = ColorToStringMethodInfo
ResolveColorMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveColorMethod t Color, O.MethodInfo info Color p) => OL.IsLabel t (Color -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#endif