packages feed

gi-pangocairo-0.1.38.15: GI/PangoCairo/Functions.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.PangoCairo.Functions
    ( 

 -- * Methods
-- ** contextGetFontOptions
    contextGetFontOptions                   ,


-- ** contextGetResolution
    contextGetResolution                    ,


-- ** contextSetFontOptions
    contextSetFontOptions                   ,


-- ** contextSetResolution
    contextSetResolution                    ,


-- ** contextSetShapeRenderer
    contextSetShapeRenderer                 ,


-- ** createContext
    createContext                           ,


-- ** createLayout
    createLayout                            ,


-- ** errorUnderlinePath
    errorUnderlinePath                      ,


-- ** glyphStringPath
    glyphStringPath                         ,


-- ** layoutLinePath
    layoutLinePath                          ,


-- ** layoutPath
    layoutPath                              ,


-- ** showErrorUnderline
    showErrorUnderline                      ,


-- ** showGlyphItem
    showGlyphItem                           ,


-- ** showGlyphString
    showGlyphString                         ,


-- ** showLayout
    showLayout                              ,


-- ** showLayoutLine
    showLayoutLine                          ,


-- ** updateContext
    updateContext                           ,


-- ** updateLayout
    updateLayout                            ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.PangoCairo.Types
import GI.PangoCairo.Callbacks
import qualified GI.GLib as GLib
import qualified GI.Pango as Pango
import qualified GI.Cairo as Cairo

-- function pango_cairo_update_layout
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "layout", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_update_layout" pango_cairo_update_layout :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.Layout ->                     -- layout : TInterface "Pango" "Layout"
    IO ()


updateLayout ::
    (MonadIO m, Pango.LayoutK a) =>
    Cairo.Context                           -- cr
    -> a                                    -- layout
    -> m ()                                 -- result
updateLayout cr layout = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let layout' = unsafeManagedPtrCastPtr layout
    pango_cairo_update_layout cr' layout'
    touchManagedPtr cr
    touchManagedPtr layout
    return ()


-- function pango_cairo_update_context
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_update_context" pango_cairo_update_context :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.Context ->                    -- context : TInterface "Pango" "Context"
    IO ()


updateContext ::
    (MonadIO m, Pango.ContextK a) =>
    Cairo.Context                           -- cr
    -> a                                    -- context
    -> m ()                                 -- result
updateContext cr context = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let context' = unsafeManagedPtrCastPtr context
    pango_cairo_update_context cr' context'
    touchManagedPtr cr
    touchManagedPtr context
    return ()


-- function pango_cairo_show_layout_line
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_show_layout_line" pango_cairo_show_layout_line :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.LayoutLine ->                 -- line : TInterface "Pango" "LayoutLine"
    IO ()


showLayoutLine ::
    (MonadIO m) =>
    Cairo.Context                           -- cr
    -> Pango.LayoutLine                     -- line
    -> m ()                                 -- result
showLayoutLine cr line = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let line' = unsafeManagedPtrGetPtr line
    pango_cairo_show_layout_line cr' line'
    touchManagedPtr cr
    touchManagedPtr line
    return ()


-- function pango_cairo_show_layout
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "layout", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_show_layout" pango_cairo_show_layout :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.Layout ->                     -- layout : TInterface "Pango" "Layout"
    IO ()


showLayout ::
    (MonadIO m, Pango.LayoutK a) =>
    Cairo.Context                           -- cr
    -> a                                    -- layout
    -> m ()                                 -- result
showLayout cr layout = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let layout' = unsafeManagedPtrCastPtr layout
    pango_cairo_show_layout cr' layout'
    touchManagedPtr cr
    touchManagedPtr layout
    return ()


-- function pango_cairo_show_glyph_string
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_show_glyph_string" pango_cairo_show_glyph_string :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.Font ->                       -- font : TInterface "Pango" "Font"
    Ptr Pango.GlyphString ->                -- glyphs : TInterface "Pango" "GlyphString"
    IO ()


showGlyphString ::
    (MonadIO m, Pango.FontK a) =>
    Cairo.Context                           -- cr
    -> a                                    -- font
    -> Pango.GlyphString                    -- glyphs
    -> m ()                                 -- result
showGlyphString cr font glyphs = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let font' = unsafeManagedPtrCastPtr font
    let glyphs' = unsafeManagedPtrGetPtr glyphs
    pango_cairo_show_glyph_string cr' font' glyphs'
    touchManagedPtr cr
    touchManagedPtr font
    touchManagedPtr glyphs
    return ()


-- function pango_cairo_show_glyph_item
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyph_item", argType = TInterface "Pango" "GlyphItem", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_show_glyph_item" pango_cairo_show_glyph_item :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    CString ->                              -- text : TBasicType TUTF8
    Ptr Pango.GlyphItem ->                  -- glyph_item : TInterface "Pango" "GlyphItem"
    IO ()


showGlyphItem ::
    (MonadIO m) =>
    Cairo.Context                           -- cr
    -> T.Text                               -- text
    -> Pango.GlyphItem                      -- glyphItem
    -> m ()                                 -- result
showGlyphItem cr text glyphItem = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    text' <- textToCString text
    let glyphItem' = unsafeManagedPtrGetPtr glyphItem
    pango_cairo_show_glyph_item cr' text' glyphItem'
    touchManagedPtr cr
    touchManagedPtr glyphItem
    freeMem text'
    return ()


-- function pango_cairo_show_error_underline
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_show_error_underline" pango_cairo_show_error_underline :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    CDouble ->                              -- x : TBasicType TDouble
    CDouble ->                              -- y : TBasicType TDouble
    CDouble ->                              -- width : TBasicType TDouble
    CDouble ->                              -- height : TBasicType TDouble
    IO ()


showErrorUnderline ::
    (MonadIO m) =>
    Cairo.Context                           -- cr
    -> Double                               -- x
    -> Double                               -- y
    -> Double                               -- width
    -> Double                               -- height
    -> m ()                                 -- result
showErrorUnderline cr x y width height = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let x' = realToFrac x
    let y' = realToFrac y
    let width' = realToFrac width
    let height' = realToFrac height
    pango_cairo_show_error_underline cr' x' y' width' height'
    touchManagedPtr cr
    return ()


-- function pango_cairo_layout_path
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "layout", argType = TInterface "Pango" "Layout", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_layout_path" pango_cairo_layout_path :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.Layout ->                     -- layout : TInterface "Pango" "Layout"
    IO ()


layoutPath ::
    (MonadIO m, Pango.LayoutK a) =>
    Cairo.Context                           -- cr
    -> a                                    -- layout
    -> m ()                                 -- result
layoutPath cr layout = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let layout' = unsafeManagedPtrCastPtr layout
    pango_cairo_layout_path cr' layout'
    touchManagedPtr cr
    touchManagedPtr layout
    return ()


-- function pango_cairo_layout_line_path
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TInterface "Pango" "LayoutLine", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_layout_line_path" pango_cairo_layout_line_path :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.LayoutLine ->                 -- line : TInterface "Pango" "LayoutLine"
    IO ()


layoutLinePath ::
    (MonadIO m) =>
    Cairo.Context                           -- cr
    -> Pango.LayoutLine                     -- line
    -> m ()                                 -- result
layoutLinePath cr line = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let line' = unsafeManagedPtrGetPtr line
    pango_cairo_layout_line_path cr' line'
    touchManagedPtr cr
    touchManagedPtr line
    return ()


-- function pango_cairo_glyph_string_path
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "font", argType = TInterface "Pango" "Font", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "glyphs", argType = TInterface "Pango" "GlyphString", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_glyph_string_path" pango_cairo_glyph_string_path :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    Ptr Pango.Font ->                       -- font : TInterface "Pango" "Font"
    Ptr Pango.GlyphString ->                -- glyphs : TInterface "Pango" "GlyphString"
    IO ()


glyphStringPath ::
    (MonadIO m, Pango.FontK a) =>
    Cairo.Context                           -- cr
    -> a                                    -- font
    -> Pango.GlyphString                    -- glyphs
    -> m ()                                 -- result
glyphStringPath cr font glyphs = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let font' = unsafeManagedPtrCastPtr font
    let glyphs' = unsafeManagedPtrGetPtr glyphs
    pango_cairo_glyph_string_path cr' font' glyphs'
    touchManagedPtr cr
    touchManagedPtr font
    touchManagedPtr glyphs
    return ()


-- function pango_cairo_error_underline_path
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_error_underline_path" pango_cairo_error_underline_path :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    CDouble ->                              -- x : TBasicType TDouble
    CDouble ->                              -- y : TBasicType TDouble
    CDouble ->                              -- width : TBasicType TDouble
    CDouble ->                              -- height : TBasicType TDouble
    IO ()


errorUnderlinePath ::
    (MonadIO m) =>
    Cairo.Context                           -- cr
    -> Double                               -- x
    -> Double                               -- y
    -> Double                               -- width
    -> Double                               -- height
    -> m ()                                 -- result
errorUnderlinePath cr x y width height = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    let x' = realToFrac x
    let y' = realToFrac y
    let width' = realToFrac width
    let height' = realToFrac height
    pango_cairo_error_underline_path cr' x' y' width' height'
    touchManagedPtr cr
    return ()


-- function pango_cairo_create_layout
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Pango" "Layout")
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_create_layout" pango_cairo_create_layout :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    IO (Ptr Pango.Layout)


createLayout ::
    (MonadIO m) =>
    Cairo.Context                           -- cr
    -> m Pango.Layout                       -- result
createLayout cr = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    result <- pango_cairo_create_layout cr'
    checkUnexpectedReturnNULL "pango_cairo_create_layout" result
    result' <- (wrapObject Pango.Layout) result
    touchManagedPtr cr
    return result'


-- function pango_cairo_create_context
-- Args : [Arg {argCName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Pango" "Context")
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_create_context" pango_cairo_create_context :: 
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    IO (Ptr Pango.Context)


createContext ::
    (MonadIO m) =>
    Cairo.Context                           -- cr
    -> m Pango.Context                      -- result
createContext cr = liftIO $ do
    let cr' = unsafeManagedPtrGetPtr cr
    result <- pango_cairo_create_context cr'
    checkUnexpectedReturnNULL "pango_cairo_create_context" result
    result' <- (wrapObject Pango.Context) result
    touchManagedPtr cr
    return result'


-- function pango_cairo_context_set_shape_renderer
-- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface "PangoCairo" "ShapeRendererFunc", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dnotify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_context_set_shape_renderer" pango_cairo_context_set_shape_renderer :: 
    Ptr Pango.Context ->                    -- context : TInterface "Pango" "Context"
    FunPtr ShapeRendererFuncC ->            -- func : TInterface "PangoCairo" "ShapeRendererFunc"
    Ptr () ->                               -- data : TBasicType TPtr
    FunPtr GLib.DestroyNotifyC ->           -- dnotify : TInterface "GLib" "DestroyNotify"
    IO ()


contextSetShapeRenderer ::
    (MonadIO m, Pango.ContextK a) =>
    a                                       -- context
    -> Maybe (ShapeRendererFunc)            -- func
    -> m ()                                 -- result
contextSetShapeRenderer context func = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    maybeFunc <- case func of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jFunc -> do
            jFunc' <- mkShapeRendererFunc (shapeRendererFuncWrapper Nothing jFunc)
            return jFunc'
    let data_ = castFunPtrToPtr maybeFunc
    let dnotify = safeFreeFunPtrPtr
    pango_cairo_context_set_shape_renderer context' maybeFunc data_ dnotify
    touchManagedPtr context
    return ()


-- function pango_cairo_context_set_resolution
-- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dpi", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_context_set_resolution" pango_cairo_context_set_resolution :: 
    Ptr Pango.Context ->                    -- context : TInterface "Pango" "Context"
    CDouble ->                              -- dpi : TBasicType TDouble
    IO ()


contextSetResolution ::
    (MonadIO m, Pango.ContextK a) =>
    a                                       -- context
    -> Double                               -- dpi
    -> m ()                                 -- result
contextSetResolution context dpi = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    let dpi' = realToFrac dpi
    pango_cairo_context_set_resolution context' dpi'
    touchManagedPtr context
    return ()


-- function pango_cairo_context_set_font_options
-- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "options", argType = TInterface "cairo" "FontOptions", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_context_set_font_options" pango_cairo_context_set_font_options :: 
    Ptr Pango.Context ->                    -- context : TInterface "Pango" "Context"
    Ptr Cairo.FontOptions ->                -- options : TInterface "cairo" "FontOptions"
    IO ()


contextSetFontOptions ::
    (MonadIO m, Pango.ContextK a) =>
    a                                       -- context
    -> Maybe (Cairo.FontOptions)            -- options
    -> m ()                                 -- result
contextSetFontOptions context options = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    maybeOptions <- case options of
        Nothing -> return nullPtr
        Just jOptions -> do
            let jOptions' = unsafeManagedPtrGetPtr jOptions
            return jOptions'
    pango_cairo_context_set_font_options context' maybeOptions
    touchManagedPtr context
    whenJust options touchManagedPtr
    return ()


-- function pango_cairo_context_get_resolution
-- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TDouble)
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_context_get_resolution" pango_cairo_context_get_resolution :: 
    Ptr Pango.Context ->                    -- context : TInterface "Pango" "Context"
    IO CDouble


contextGetResolution ::
    (MonadIO m, Pango.ContextK a) =>
    a                                       -- context
    -> m Double                             -- result
contextGetResolution context = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    result <- pango_cairo_context_get_resolution context'
    let result' = realToFrac result
    touchManagedPtr context
    return result'


-- function pango_cairo_context_get_font_options
-- Args : [Arg {argCName = "context", argType = TInterface "Pango" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "cairo" "FontOptions")
-- throws : False
-- Skip return : False

foreign import ccall "pango_cairo_context_get_font_options" pango_cairo_context_get_font_options :: 
    Ptr Pango.Context ->                    -- context : TInterface "Pango" "Context"
    IO (Ptr Cairo.FontOptions)


contextGetFontOptions ::
    (MonadIO m, Pango.ContextK a) =>
    a                                       -- context
    -> m (Maybe Cairo.FontOptions)          -- result
contextGetFontOptions context = liftIO $ do
    let context' = unsafeManagedPtrCastPtr context
    result <- pango_cairo_context_get_font_options context'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- (newPtr Cairo.FontOptions) result'
        return result''
    touchManagedPtr context
    return maybeResult