-- GENERATED by C->Haskell Compiler, version 0.28.6 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  GI.Cairo.Render.Internal.Drawing.Text
-- Copyright   :  (c) Paolo Martini 2005
-- License     :  BSD-style (see cairo/COPYRIGHT)
--
-- Maintainer  :  p.martini@neuralnoise.com
-- Stability   :  experimental
-- Portability :  portable
--
-- Rendering text.
-----------------------------------------------------------------------------



module GI.Cairo.Render.Internal.Drawing.Text where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp



import GI.Cairo.Render.Types
{-# LINE 18 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}


import GI.Cairo.Render.Internal.Utilities (CairoString(..))

import Data.GI.Base(wrapBoxed, withManagedPtr)
import Foreign
import Foreign.C


{-# LINE 26 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}


selectFontFace :: CairoString string => Cairo -> string -> FontSlant -> FontWeight -> IO ()
selectFontFace c string slant weight =
    withManagedPtr c $ \ctxt ->
      withUTFString string $ \string' ->
      cairo_select_font_face
{-# LINE 32 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}

        ctxt string' (cFromEnum slant) (cFromEnum weight)

setFontSize :: (Cairo) -> (Double) -> IO ()
setFontSize a1 a2 =
  withManagedPtr a1 $ \a1' ->
  let {a2' = realToFrac a2} in
  setFontSize'_ a1' a2' >>
  return ()

{-# LINE 35 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}

setFontMatrix :: (Cairo) -> (Matrix) -> IO ()
setFontMatrix a1 a2 =
  withManagedPtr a1 $ \a1' ->
  with a2 $ \a2' ->
  setFontMatrix'_ a1' a2' >>
  return ()

{-# LINE 36 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}

getFontMatrix :: (Cairo) -> IO ((Matrix))
getFontMatrix a1 =
  withManagedPtr a1 $ \a1' ->
  alloca $ \a2' ->
  getFontMatrix'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')

{-# LINE 37 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}

setFontOptions :: (Cairo) -> (FontOptions) -> IO ()
setFontOptions a1 a2 =
  withManagedPtr a1 $ \a1' ->
  withFontOptions a2 $ \a2' ->
  setFontOptions'_ a1' a2' >>
  return ()

{-# LINE 38 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}


showText :: CairoString string => Cairo -> string -> IO ()
showText c string =
    withManagedPtr c $ \ctxt ->
    withUTFString string $ \string' ->
    cairo_show_text
{-# LINE 44 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}

        ctxt string'

fontExtents :: (Cairo) -> IO ((FontExtents))
fontExtents a1 =
  withManagedPtr a1 $ \a1' ->
  alloca $ \a2' ->
  fontExtents'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')

{-# LINE 47 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}


textExtents :: CairoString string => Cairo -> string -> IO TextExtents
textExtents c string =
    withManagedPtr c $ \ctxt ->
      withUTFString string $ \string' ->
      alloca $ \result -> do
         cairo_text_extents
{-# LINE 54 "./GI/Cairo/Render/Internal/Drawing/Text.chs" #-}

             ctxt string' result
         peek result

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_select_font_face"
  cairo_select_font_face :: ((CairoPtr) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO ())))))

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_set_font_size"
  setFontSize'_ :: ((CairoPtr) -> (C2HSImp.CDouble -> (IO ())))

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_set_font_matrix"
  setFontMatrix'_ :: ((CairoPtr) -> ((MatrixPtr) -> (IO ())))

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_get_font_matrix"
  getFontMatrix'_ :: ((CairoPtr) -> ((MatrixPtr) -> (IO ())))

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_set_font_options"
  setFontOptions'_ :: ((CairoPtr) -> ((FontOptionsPtr) -> (IO ())))

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_show_text"
  cairo_show_text :: ((CairoPtr) -> ((C2HSImp.Ptr C2HSImp.CChar) -> (IO ())))

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_font_extents"
  fontExtents'_ :: ((CairoPtr) -> ((FontExtentsPtr) -> (IO ())))

foreign import ccall safe "GI/Cairo/Render/Internal/Drawing/Text.chs.h cairo_text_extents"
  cairo_text_extents :: ((CairoPtr) -> ((C2HSImp.Ptr C2HSImp.CChar) -> ((TextExtentsPtr) -> (IO ()))))