cairo-0.13.0.0: Graphics/Rendering/Cairo/Internal/Utilities.chs
{-# LANGUAGE FlexibleInstances #-}
-----------------------------------------------------------------------------
-- |
-- Module : Graphics.Rendering.Cairo.Internal.Utilities
-- Copyright : (c) Paolo Martini 2005
-- License : BSD-style (see cairo/COPYRIGHT)
--
-- Maintainer : p.martini@neuralnoise.com
-- Stability : experimental
-- Portability : portable
--
-- http://cairographics.org/manual/Support.html
-----------------------------------------------------------------------------
module Graphics.Rendering.Cairo.Internal.Utilities where
{#import Graphics.Rendering.Cairo.Types#}
import Foreign
import Foreign.C
#if __GLASGOW_HASKELL__ >= 707
import System.IO.Unsafe (unsafePerformIO)
#endif
import Codec.Binary.UTF8.String
import Data.Char (ord, chr)
import Data.Text (Text)
import qualified Data.Text.Foreign as T (withCStringLen)
{#context lib="cairo" prefix="cairo"#}
{#fun status_to_string as statusToString { cFromEnum `Status' } -> `String'#}
{#fun pure version as version {} -> `Int'#}
{#fun pure version_string as versionString {} -> `String'#}
class CairoString s where
withUTFString :: s -> (CString -> IO a) -> IO a
instance CairoString [Char] where
withUTFString = withCAString . encodeString
instance CairoString Text where
withUTFString s f = T.withCStringLen s (f . fst)