{-# LINE 2 "./Graphics/Rendering/Pango/Cairo.chs" #-}
module Graphics.Rendering.Pango.Cairo (
cairoFontMapGetDefault,
cairoFontMapSetResolution,
cairoFontMapGetResolution,
cairoCreateContext,
cairoContextSetResolution,
cairoContextGetResolution,
cairoContextSetFontOptions,
cairoContextGetFontOptions,
setSourceColor,
updateContext,
createLayout,
updateLayout,
showGlyphString,
showLayoutLine,
showLayout,
glyphStringPath,
layoutLinePath,
layoutPath
) where
import Control.Exception (bracket)
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.GObject (wrapNewGObject, makeNewGObject,
objectRef, objectUnref)
import Graphics.Rendering.Pango.Types
{-# LINE 63 "./Graphics/Rendering/Pango/Cairo.chs" #-}
import Graphics.Rendering.Pango.BasicTypes
{-# LINE 64 "./Graphics/Rendering/Pango/Cairo.chs" #-}
import Graphics.Rendering.Pango.Structs ( pangoItemGetFont, Color(..) )
import Graphics.Rendering.Pango.Layout ( layoutSetText )
import Data.IORef
import Graphics.Rendering.Cairo.Types as Cairo
import qualified Graphics.Rendering.Cairo.Internal as Cairo.Internal
import qualified Graphics.Rendering.Cairo as Cairo
import Graphics.Rendering.Cairo.Internal (Render(Render))
import Control.Monad.Reader
import Control.Monad (liftM)
{-# LINE 76 "./Graphics/Rendering/Pango/Cairo.chs" #-}
setSourceColor :: Color -> Render ()
setSourceColor :: Color -> Render ()
setSourceColor (Color Word16
red Word16
green Word16
blue) =
Double -> Double -> Double -> Render ()
Cairo.setSourceRGB
(Word16 -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac Word16
red Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Double
65535.0)
(Word16 -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac Word16
green Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Double
65535.0)
(Word16 -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac Word16
blue Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Double
65535.0)
cairoFontMapGetDefault :: IO FontMap
cairoFontMapGetDefault :: IO FontMap
cairoFontMapGetDefault =
(ForeignPtr FontMap -> FontMap, FinalizerPtr FontMap)
-> IO (Ptr FontMap) -> IO FontMap
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewGObject (ForeignPtr FontMap -> FontMap, FinalizerPtr FontMap)
forall {a}. (ForeignPtr FontMap -> FontMap, FinalizerPtr a)
mkFontMap (IO (Ptr FontMap) -> IO FontMap) -> IO (Ptr FontMap) -> IO FontMap
forall a b. (a -> b) -> a -> b
$ IO (Ptr FontMap)
pango_cairo_font_map_get_default
{-# LINE 107 "./Graphics/Rendering/Pango/Cairo.chs" #-}
cairoFontMapSetResolution :: FontMap -> Double -> IO ()
cairoFontMapSetResolution :: FontMap -> Double -> IO ()
cairoFontMapSetResolution (FontMap ForeignPtr FontMap
fm) Double
dpi =
ForeignPtr FontMap -> (Ptr FontMap -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FontMap
fm ((Ptr FontMap -> IO ()) -> IO ())
-> (Ptr FontMap -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr FontMap
fmPtr ->
Ptr () -> CDouble -> IO ()
pango_cairo_font_map_set_resolution
{-# LINE 116 "./Graphics/Rendering/Pango/Cairo.chs" #-}
(castPtr fmPtr) (Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
dpi)
cairoFontMapGetResolution :: FontMap -> IO Double
cairoFontMapGetResolution :: FontMap -> IO Double
cairoFontMapGetResolution (FontMap ForeignPtr FontMap
fm) = (CDouble -> Double) -> IO CDouble -> IO Double
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac (IO CDouble -> IO Double) -> IO CDouble -> IO Double
forall a b. (a -> b) -> a -> b
$
ForeignPtr FontMap -> (Ptr FontMap -> IO CDouble) -> IO CDouble
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FontMap
fm ((Ptr FontMap -> IO CDouble) -> IO CDouble)
-> (Ptr FontMap -> IO CDouble) -> IO CDouble
forall a b. (a -> b) -> a -> b
$ \Ptr FontMap
fmPtr ->
Ptr () -> IO CDouble
pango_cairo_font_map_get_resolution (Ptr FontMap -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr FontMap
fmPtr)
cairoCreateContext :: Maybe FontMap -> IO PangoContext
cairoCreateContext :: Maybe FontMap -> IO PangoContext
cairoCreateContext (Just (FontMap ForeignPtr FontMap
fm)) = (ForeignPtr PangoContext -> PangoContext,
FinalizerPtr PangoContext)
-> IO (Ptr PangoContext) -> IO PangoContext
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
wrapNewGObject (ForeignPtr PangoContext -> PangoContext,
FinalizerPtr PangoContext)
forall {a}.
(ForeignPtr PangoContext -> PangoContext, FinalizerPtr a)
mkPangoContext (IO (Ptr PangoContext) -> IO PangoContext)
-> IO (Ptr PangoContext) -> IO PangoContext
forall a b. (a -> b) -> a -> b
$
ForeignPtr FontMap
-> (Ptr FontMap -> IO (Ptr PangoContext)) -> IO (Ptr PangoContext)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FontMap
fm ((Ptr FontMap -> IO (Ptr PangoContext)) -> IO (Ptr PangoContext))
-> (Ptr FontMap -> IO (Ptr PangoContext)) -> IO (Ptr PangoContext)
forall a b. (a -> b) -> a -> b
$ \Ptr FontMap
fmPtr ->
Ptr () -> IO (Ptr PangoContext)
pango_cairo_font_map_create_context (Ptr FontMap -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr FontMap
fmPtr)
cairoCreateContext Maybe FontMap
Nothing = do
fmPtr <- IO (Ptr FontMap)
pango_cairo_font_map_get_default
{-# LINE 138 "./Graphics/Rendering/Pango/Cairo.chs" #-}
wrapNewGObject mkPangoContext $
pango_cairo_font_map_create_context (castPtr fmPtr)
cairoContextSetResolution :: PangoContext -> Double -> IO ()
cairoContextSetResolution :: PangoContext -> Double -> IO ()
cairoContextSetResolution PangoContext
pc Double
dpi =
(\(PangoContext ForeignPtr PangoContext
arg1) CDouble
arg2 -> ForeignPtr PangoContext -> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoContext
arg1 ((Ptr PangoContext -> IO ()) -> IO ())
-> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr PangoContext
argPtr1 ->Ptr PangoContext -> CDouble -> IO ()
pango_cairo_context_set_resolution Ptr PangoContext
argPtr1 CDouble
arg2) PangoContext
pc (Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
dpi)
cairoContextGetResolution :: PangoContext -> IO Double
cairoContextGetResolution :: PangoContext -> IO Double
cairoContextGetResolution PangoContext
pc = (CDouble -> Double) -> IO CDouble -> IO Double
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac (IO CDouble -> IO Double) -> IO CDouble -> IO Double
forall a b. (a -> b) -> a -> b
$
(\(PangoContext ForeignPtr PangoContext
arg1) -> ForeignPtr PangoContext
-> (Ptr PangoContext -> IO CDouble) -> IO CDouble
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoContext
arg1 ((Ptr PangoContext -> IO CDouble) -> IO CDouble)
-> (Ptr PangoContext -> IO CDouble) -> IO CDouble
forall a b. (a -> b) -> a -> b
$ \Ptr PangoContext
argPtr1 ->Ptr PangoContext -> IO CDouble
pango_cairo_context_get_resolution Ptr PangoContext
argPtr1) PangoContext
pc
cairoContextSetFontOptions :: PangoContext -> FontOptions -> IO ()
cairoContextSetFontOptions :: PangoContext -> FontOptions -> IO ()
cairoContextSetFontOptions PangoContext
pc FontOptions
fo =
(\(PangoContext ForeignPtr PangoContext
arg1) (FontOptions ForeignPtr FontOptions
arg2) -> ForeignPtr PangoContext -> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoContext
arg1 ((Ptr PangoContext -> IO ()) -> IO ())
-> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr PangoContext
argPtr1 ->ForeignPtr FontOptions -> (Ptr FontOptions -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FontOptions
arg2 ((Ptr FontOptions -> IO ()) -> IO ())
-> (Ptr FontOptions -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr FontOptions
argPtr2 ->Ptr PangoContext -> Ptr FontOptions -> IO ()
pango_cairo_context_set_font_options Ptr PangoContext
argPtr1 Ptr FontOptions
argPtr2) PangoContext
pc FontOptions
fo
cairoContextResetFontOptions :: PangoContext -> IO ()
cairoContextResetFontOptions :: PangoContext -> IO ()
cairoContextResetFontOptions PangoContext
pc =
(\(PangoContext ForeignPtr PangoContext
arg1) (FontOptions ForeignPtr FontOptions
arg2) -> ForeignPtr PangoContext -> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoContext
arg1 ((Ptr PangoContext -> IO ()) -> IO ())
-> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr PangoContext
argPtr1 ->ForeignPtr FontOptions -> (Ptr FontOptions -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr FontOptions
arg2 ((Ptr FontOptions -> IO ()) -> IO ())
-> (Ptr FontOptions -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr FontOptions
argPtr2 ->Ptr PangoContext -> Ptr FontOptions -> IO ()
pango_cairo_context_set_font_options Ptr PangoContext
argPtr1 Ptr FontOptions
argPtr2) PangoContext
pc
(ForeignPtr FontOptions -> FontOptions
Cairo.Internal.FontOptions ForeignPtr FontOptions
forall a. ForeignPtr a
nullForeignPtr)
cairoContextGetFontOptions :: PangoContext -> IO FontOptions
cairoContextGetFontOptions :: PangoContext -> IO FontOptions
cairoContextGetFontOptions PangoContext
pc = do
foPtr <- (\(PangoContext ForeignPtr PangoContext
arg1) -> ForeignPtr PangoContext
-> (Ptr PangoContext -> IO (Ptr FontOptions))
-> IO (Ptr FontOptions)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoContext
arg1 ((Ptr PangoContext -> IO (Ptr FontOptions))
-> IO (Ptr FontOptions))
-> (Ptr PangoContext -> IO (Ptr FontOptions))
-> IO (Ptr FontOptions)
forall a b. (a -> b) -> a -> b
$ \Ptr PangoContext
argPtr1 ->Ptr PangoContext -> IO (Ptr FontOptions)
pango_cairo_context_get_font_options Ptr PangoContext
argPtr1) PangoContext
pc
Cairo.Internal.mkFontOptions foPtr
updateContext :: PangoContext -> Render ()
updateContext :: PangoContext -> Render ()
updateContext PangoContext
pc = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
liftIO $ (\(Cairo Ptr Cairo
arg1) (PangoContext ForeignPtr PangoContext
arg2) -> ForeignPtr PangoContext -> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoContext
arg2 ((Ptr PangoContext -> IO ()) -> IO ())
-> (Ptr PangoContext -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr PangoContext
argPtr2 ->Ptr Cairo -> Ptr PangoContext -> IO ()
pango_cairo_update_context Ptr Cairo
arg1 Ptr PangoContext
argPtr2) cr pc
createLayout :: GlibString string => string -> Render PangoLayout
createLayout :: forall string. GlibString string => string -> Render PangoLayout
createLayout string
text = ReaderT Cairo IO PangoLayout -> Render PangoLayout
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO PangoLayout -> Render PangoLayout)
-> ReaderT Cairo IO PangoLayout -> Render PangoLayout
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
liftIO $ do
layRaw <- wrapNewGObject mkPangoLayoutRaw $
(\(Cairo Ptr Cairo
arg1) -> Ptr Cairo -> IO (Ptr PangoLayoutRaw)
pango_cairo_create_layout Ptr Cairo
arg1) cr
textRef <- newIORef undefined
let pl = (IORef PangoString -> PangoLayoutRaw -> PangoLayout
PangoLayout IORef PangoString
textRef PangoLayoutRaw
layRaw)
layoutSetText pl text
return pl
updateLayout :: PangoLayout -> Render ()
updateLayout :: PangoLayout -> Render ()
updateLayout (PangoLayout IORef PangoString
_ PangoLayoutRaw
lay) = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
liftIO $ (\(Cairo Ptr Cairo
arg1) (PangoLayoutRaw ForeignPtr PangoLayoutRaw
arg2) -> ForeignPtr PangoLayoutRaw -> (Ptr PangoLayoutRaw -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoLayoutRaw
arg2 ((Ptr PangoLayoutRaw -> IO ()) -> IO ())
-> (Ptr PangoLayoutRaw -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr PangoLayoutRaw
argPtr2 ->Ptr Cairo -> Ptr PangoLayoutRaw -> IO ()
pango_cairo_update_layout Ptr Cairo
arg1 Ptr PangoLayoutRaw
argPtr2) cr lay
showGlyphString :: GlyphItem -> Render ()
showGlyphString :: GlyphItem -> Render ()
showGlyphString (GlyphItem PangoItem
pi GlyphStringRaw
gs) = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
font <- liftIO $ pangoItemGetFont pi
liftIO $ (\(Cairo Ptr Cairo
arg1) (Font ForeignPtr Font
arg2) (GlyphStringRaw ForeignPtr GlyphStringRaw
arg3) -> ForeignPtr Font -> (Ptr Font -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Font
arg2 ((Ptr Font -> IO ()) -> IO ()) -> (Ptr Font -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Font
argPtr2 ->ForeignPtr GlyphStringRaw -> (Ptr GlyphStringRaw -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr GlyphStringRaw
arg3 ((Ptr GlyphStringRaw -> IO ()) -> IO ())
-> (Ptr GlyphStringRaw -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr GlyphStringRaw
argPtr3 ->Ptr Cairo -> Ptr Font -> Ptr GlyphStringRaw -> IO ()
pango_cairo_show_glyph_string Ptr Cairo
arg1 Ptr Font
argPtr2 Ptr GlyphStringRaw
argPtr3) cr font gs
showLayoutLine :: LayoutLine -> Render ()
showLayoutLine :: LayoutLine -> Render ()
showLayoutLine (LayoutLine IORef PangoString
_ LayoutLineRaw
ll) = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
liftIO $ (\(Cairo Ptr Cairo
arg1) (LayoutLineRaw ForeignPtr LayoutLineRaw
arg2) -> ForeignPtr LayoutLineRaw -> (Ptr LayoutLineRaw -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr LayoutLineRaw
arg2 ((Ptr LayoutLineRaw -> IO ()) -> IO ())
-> (Ptr LayoutLineRaw -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr LayoutLineRaw
argPtr2 ->Ptr Cairo -> Ptr LayoutLineRaw -> IO ()
pango_cairo_show_layout_line Ptr Cairo
arg1 Ptr LayoutLineRaw
argPtr2) cr ll
showLayout :: PangoLayout -> Render ()
showLayout :: PangoLayout -> Render ()
showLayout (PangoLayout IORef PangoString
_ PangoLayoutRaw
lay) = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
liftIO $ (\(Cairo Ptr Cairo
arg1) (PangoLayoutRaw ForeignPtr PangoLayoutRaw
arg2) -> ForeignPtr PangoLayoutRaw -> (Ptr PangoLayoutRaw -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoLayoutRaw
arg2 ((Ptr PangoLayoutRaw -> IO ()) -> IO ())
-> (Ptr PangoLayoutRaw -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr PangoLayoutRaw
argPtr2 ->Ptr Cairo -> Ptr PangoLayoutRaw -> IO ()
pango_cairo_show_layout Ptr Cairo
arg1 Ptr PangoLayoutRaw
argPtr2) cr lay
glyphStringPath :: GlyphItem -> Render ()
glyphStringPath :: GlyphItem -> Render ()
glyphStringPath (GlyphItem PangoItem
pi GlyphStringRaw
gs) = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
font <- liftIO $ pangoItemGetFont pi
liftIO $ (\(Cairo Ptr Cairo
arg1) (Font ForeignPtr Font
arg2) (GlyphStringRaw ForeignPtr GlyphStringRaw
arg3) -> ForeignPtr Font -> (Ptr Font -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr Font
arg2 ((Ptr Font -> IO ()) -> IO ()) -> (Ptr Font -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr Font
argPtr2 ->ForeignPtr GlyphStringRaw -> (Ptr GlyphStringRaw -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr GlyphStringRaw
arg3 ((Ptr GlyphStringRaw -> IO ()) -> IO ())
-> (Ptr GlyphStringRaw -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr GlyphStringRaw
argPtr3 ->Ptr Cairo -> Ptr Font -> Ptr GlyphStringRaw -> IO ()
pango_cairo_glyph_string_path Ptr Cairo
arg1 Ptr Font
argPtr2 Ptr GlyphStringRaw
argPtr3) cr font gs
layoutLinePath :: LayoutLine -> Render ()
layoutLinePath :: LayoutLine -> Render ()
layoutLinePath (LayoutLine IORef PangoString
_ LayoutLineRaw
ll) = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
liftIO $ (\(Cairo Ptr Cairo
arg1) (LayoutLineRaw ForeignPtr LayoutLineRaw
arg2) -> ForeignPtr LayoutLineRaw -> (Ptr LayoutLineRaw -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr LayoutLineRaw
arg2 ((Ptr LayoutLineRaw -> IO ()) -> IO ())
-> (Ptr LayoutLineRaw -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr LayoutLineRaw
argPtr2 ->Ptr Cairo -> Ptr LayoutLineRaw -> IO ()
pango_cairo_layout_line_path Ptr Cairo
arg1 Ptr LayoutLineRaw
argPtr2) cr ll
layoutPath :: PangoLayout -> Render ()
layoutPath :: PangoLayout -> Render ()
layoutPath (PangoLayout IORef PangoString
_ PangoLayoutRaw
lay) = ReaderT Cairo IO () -> Render ()
forall m. ReaderT Cairo IO m -> Render m
Render (ReaderT Cairo IO () -> Render ())
-> ReaderT Cairo IO () -> Render ()
forall a b. (a -> b) -> a -> b
$ do
cr <- ReaderT Cairo IO Cairo
forall r (m :: * -> *). MonadReader r m => m r
ask
liftIO $ (\(Cairo Ptr Cairo
arg1) (PangoLayoutRaw ForeignPtr PangoLayoutRaw
arg2) -> ForeignPtr PangoLayoutRaw -> (Ptr PangoLayoutRaw -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr PangoLayoutRaw
arg2 ((Ptr PangoLayoutRaw -> IO ()) -> IO ())
-> (Ptr PangoLayoutRaw -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr PangoLayoutRaw
argPtr2 ->Ptr Cairo -> Ptr PangoLayoutRaw -> IO ()
pango_cairo_layout_path Ptr Cairo
arg1 Ptr PangoLayoutRaw
argPtr2) cr lay
foreign import ccall unsafe "pango_cairo_font_map_get_default"
pango_cairo_font_map_get_default :: (IO (Ptr FontMap))
foreign import ccall unsafe "pango_cairo_font_map_set_resolution"
pango_cairo_font_map_set_resolution :: ((Ptr ()) -> (CDouble -> (IO ())))
foreign import ccall unsafe "pango_cairo_font_map_get_resolution"
pango_cairo_font_map_get_resolution :: ((Ptr ()) -> (IO CDouble))
foreign import ccall unsafe "pango_cairo_font_map_create_context"
pango_cairo_font_map_create_context :: ((Ptr ()) -> (IO (Ptr PangoContext)))
foreign import ccall unsafe "pango_cairo_context_set_resolution"
pango_cairo_context_set_resolution :: ((Ptr PangoContext) -> (CDouble -> (IO ())))
foreign import ccall unsafe "pango_cairo_context_get_resolution"
pango_cairo_context_get_resolution :: ((Ptr PangoContext) -> (IO CDouble))
foreign import ccall unsafe "pango_cairo_context_set_font_options"
pango_cairo_context_set_font_options :: ((Ptr PangoContext) -> ((Ptr FontOptions) -> (IO ())))
foreign import ccall unsafe "pango_cairo_context_get_font_options"
pango_cairo_context_get_font_options :: ((Ptr PangoContext) -> (IO (Ptr FontOptions)))
foreign import ccall unsafe "pango_cairo_update_context"
pango_cairo_update_context :: ((Ptr Cairo) -> ((Ptr PangoContext) -> (IO ())))
foreign import ccall unsafe "pango_cairo_create_layout"
pango_cairo_create_layout :: ((Ptr Cairo) -> (IO (Ptr PangoLayoutRaw)))
foreign import ccall unsafe "pango_cairo_update_layout"
pango_cairo_update_layout :: ((Ptr Cairo) -> ((Ptr PangoLayoutRaw) -> (IO ())))
foreign import ccall unsafe "pango_cairo_show_glyph_string"
pango_cairo_show_glyph_string :: ((Ptr Cairo) -> ((Ptr Font) -> ((Ptr GlyphStringRaw) -> (IO ()))))
foreign import ccall unsafe "pango_cairo_show_layout_line"
pango_cairo_show_layout_line :: ((Ptr Cairo) -> ((Ptr LayoutLineRaw) -> (IO ())))
foreign import ccall unsafe "pango_cairo_show_layout"
pango_cairo_show_layout :: ((Ptr Cairo) -> ((Ptr PangoLayoutRaw) -> (IO ())))
foreign import ccall unsafe "pango_cairo_glyph_string_path"
pango_cairo_glyph_string_path :: ((Ptr Cairo) -> ((Ptr Font) -> ((Ptr GlyphStringRaw) -> (IO ()))))
foreign import ccall unsafe "pango_cairo_layout_line_path"
pango_cairo_layout_line_path :: ((Ptr Cairo) -> ((Ptr LayoutLineRaw) -> (IO ())))
foreign import ccall unsafe "pango_cairo_layout_path"
pango_cairo_layout_path :: ((Ptr Cairo) -> ((Ptr PangoLayoutRaw) -> (IO ())))