{-# LINE 1 "src/Graphics/Cairo/Drawing/Text.hsc" #-} {-# LANGUAGE BlockArguments #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Graphics.Cairo.Drawing.Text ( cairoSelectFontFace, cairoSetFontSize, cairoShowText, cairoTextExtents ) where import Foreign.Ptr import Foreign.Marshal import Foreign.Storable import Foreign.C import Control.Monad.Primitive import Data.Word import qualified Data.ByteString as BS import qualified Data.Text as T import qualified Data.Text.Encoding as T import Graphics.Cairo.Types import Graphics.Cairo.Values import Data.CairoContext foreign import ccall "cairo_select_font_face" c_cairo_select_font_face :: Ptr (CairoT r s) -> CString -> Word32 -> Word32 -> IO () {-# LINE 29 "src/Graphics/Cairo/Drawing/Text.hsc" #-} cairoSelectFontFace :: PrimMonad m => CairoT r (PrimState m) -> T.Text -> CairoFontSlantT -> CairoFontWeightT -> m () cairoSelectFontFace :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> Text -> CairoFontSlantT -> CairoFontWeightT -> m () cairoSelectFontFace CairoT r (PrimState m) cr Text ff (CairoFontSlantT Word32 sl) (CairoFontWeightT Word32 wt) = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Text -> (CString -> IO ()) -> IO () forall a. Text -> (CString -> IO a) -> IO a encode Text ff \CString cs -> Ptr (CairoT r (PrimState m)) -> CString -> Word32 -> Word32 -> IO () forall r s. Ptr (CairoT r s) -> CString -> Word32 -> Word32 -> IO () c_cairo_select_font_face Ptr (CairoT r (PrimState m)) pcr CString cs Word32 sl Word32 wt foreign import ccall "cairo_set_font_size" c_cairo_set_font_size :: Ptr (CairoT r s) -> Double -> IO () {-# LINE 38 "src/Graphics/Cairo/Drawing/Text.hsc" #-} cairoSetFontSize :: PrimMonad m => CairoT r (PrimState m) -> Double -> m () {-# LINE 40 "src/Graphics/Cairo/Drawing/Text.hsc" #-} cairoSetFontSize cr fs = withCairoT cr \pcr -> c_cairo_set_font_size pcr fs foreign import ccall "cairo_text_extents" c_cairo_text_extents :: Ptr (CairoT r s) -> CString -> Ptr CairoTextExtentsT -> IO () cairoTextExtents :: PrimMonad m => CairoT r (PrimState m) -> T.Text -> m CairoTextExtentsT cairoTextExtents :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> Text -> m CairoTextExtentsT cairoTextExtents CairoT r (PrimState m) cr Text t = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO CairoTextExtentsT) -> m CairoTextExtentsT forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Text -> (CString -> IO CairoTextExtentsT) -> IO CairoTextExtentsT forall a. Text -> (CString -> IO a) -> IO a encode Text t \CString cs -> (Ptr CairoTextExtentsT -> IO CairoTextExtentsT) -> IO CairoTextExtentsT forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr CairoTextExtentsT p -> Ptr (CairoT r (PrimState m)) -> CString -> Ptr CairoTextExtentsT -> IO () forall r s. Ptr (CairoT r s) -> CString -> Ptr CairoTextExtentsT -> IO () c_cairo_text_extents Ptr (CairoT r (PrimState m)) pcr CString cs Ptr CairoTextExtentsT p IO () -> IO CairoTextExtentsT -> IO CairoTextExtentsT forall a b. IO a -> IO b -> IO b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> Ptr CairoTextExtentsT -> IO CairoTextExtentsT forall a. Storable a => Ptr a -> IO a peek Ptr CairoTextExtentsT p encode :: T.Text -> (CString -> IO a) -> IO a encode :: forall a. Text -> (CString -> IO a) -> IO a encode Text t = ByteString -> (CString -> IO a) -> IO a forall a. ByteString -> (CString -> IO a) -> IO a BS.useAsCString (ByteString -> (CString -> IO a) -> IO a) -> ByteString -> (CString -> IO a) -> IO a forall a b. (a -> b) -> a -> b $ Text -> ByteString T.encodeUtf8 Text t foreign import ccall "cairo_show_text" c_cairo_show_text :: Ptr (CairoT r s) -> CString -> IO () cairoShowText :: PrimMonad m => CairoT r (PrimState m) -> T.Text -> m () cairoShowText :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> Text -> m () cairoShowText CairoT r (PrimState m) cr Text t = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Text -> (CString -> IO ()) -> IO () forall a. Text -> (CString -> IO a) -> IO a encode Text t \CString cs -> Ptr (CairoT r (PrimState m)) -> CString -> IO () forall r s. Ptr (CairoT r s) -> CString -> IO () c_cairo_show_text Ptr (CairoT r (PrimState m)) pcr CString cs