{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) A GtkPrintContext encapsulates context information that is required when drawing pages for printing, such as the cairo context and important parameters like page size and resolution. It also lets you easily create 'GI.Pango.Objects.Layout.Layout' and 'GI.Pango.Objects.Context.Context' objects that match the font metrics of the cairo surface. GtkPrintContext objects gets passed to the 'GI.Gtk.Objects.PrintOperation.PrintOperation'::@/begin-print/@, 'GI.Gtk.Objects.PrintOperation.PrintOperation'::@/end-print/@, 'GI.Gtk.Objects.PrintOperation.PrintOperation'::@/request-page-setup/@ and 'GI.Gtk.Objects.PrintOperation.PrintOperation'::@/draw-page/@ signals on the 'GI.Gtk.Objects.PrintOperation.PrintOperation'. ## Using GtkPrintContext in a 'GI.Gtk.Objects.PrintOperation.PrintOperation'::@/draw-page/@ callback === /C code/ > >static void >draw_page (GtkPrintOperation *operation, > GtkPrintContext *context, > int page_nr) >{ > cairo_t *cr; > PangoLayout *layout; > PangoFontDescription *desc; > > cr = gtk_print_context_get_cairo_context (context); > > // Draw a red rectangle, as wide as the paper (inside the margins) > cairo_set_source_rgb (cr, 1.0, 0, 0); > cairo_rectangle (cr, 0, 0, gtk_print_context_get_width (context), 50); > > cairo_fill (cr); > > // Draw some lines > cairo_move_to (cr, 20, 10); > cairo_line_to (cr, 40, 20); > cairo_arc (cr, 60, 60, 20, 0, M_PI); > cairo_line_to (cr, 80, 20); > > cairo_set_source_rgb (cr, 0, 0, 0); > cairo_set_line_width (cr, 5); > cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); > cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); > > cairo_stroke (cr); > > // Draw some text > layout = gtk_print_context_create_layout (context); > pango_layout_set_text (layout, "Hello World! Printing is easy", -1); > desc = pango_font_description_from_string ("sans 28"); > pango_layout_set_font_description (layout, desc); > pango_font_description_free (desc); > > cairo_move_to (cr, 30, 20); > pango_cairo_layout_path (cr, layout); > > // Font Outline > cairo_set_source_rgb (cr, 0.93, 1.0, 0.47); > cairo_set_line_width (cr, 0.5); > cairo_stroke_preserve (cr); > > // Font Fill > cairo_set_source_rgb (cr, 0, 0.0, 1.0); > cairo_fill (cr); > > g_object_unref (layout); >} Printing support was added in GTK+ 2.10. -} module GI.Gtk.Objects.PrintContext ( -- * Exported types PrintContext(..) , IsPrintContext , toPrintContext , noPrintContext , -- * Methods -- ** createPangoContext #method:createPangoContext# PrintContextCreatePangoContextMethodInfo, printContextCreatePangoContext , -- ** createPangoLayout #method:createPangoLayout# PrintContextCreatePangoLayoutMethodInfo , printContextCreatePangoLayout , -- ** getCairoContext #method:getCairoContext# PrintContextGetCairoContextMethodInfo , printContextGetCairoContext , -- ** getDpiX #method:getDpiX# PrintContextGetDpiXMethodInfo , printContextGetDpiX , -- ** getDpiY #method:getDpiY# PrintContextGetDpiYMethodInfo , printContextGetDpiY , -- ** getHardMargins #method:getHardMargins# PrintContextGetHardMarginsMethodInfo , printContextGetHardMargins , -- ** getHeight #method:getHeight# PrintContextGetHeightMethodInfo , printContextGetHeight , -- ** getPageSetup #method:getPageSetup# PrintContextGetPageSetupMethodInfo , printContextGetPageSetup , -- ** getPangoFontmap #method:getPangoFontmap# PrintContextGetPangoFontmapMethodInfo , printContextGetPangoFontmap , -- ** getWidth #method:getWidth# PrintContextGetWidthMethodInfo , printContextGetWidth , -- ** setCairoContext #method:setCairoContext# PrintContextSetCairoContextMethodInfo , printContextSetCairoContext , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GI.Cairo.Structs.Context as Cairo.Context import qualified GI.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.Gtk.Objects.PageSetup as Gtk.PageSetup import qualified GI.Pango.Objects.Context as Pango.Context import qualified GI.Pango.Objects.FontMap as Pango.FontMap import qualified GI.Pango.Objects.Layout as Pango.Layout newtype PrintContext = PrintContext (ManagedPtr PrintContext) foreign import ccall "gtk_print_context_get_type" c_gtk_print_context_get_type :: IO GType instance GObject PrintContext where gobjectType _ = c_gtk_print_context_get_type class GObject o => IsPrintContext o #if MIN_VERSION_base(4,9,0) instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError PrintContext a) => IsPrintContext a #endif instance IsPrintContext PrintContext instance GObject.Object.IsObject PrintContext toPrintContext :: IsPrintContext o => o -> IO PrintContext toPrintContext = unsafeCastTo PrintContext noPrintContext :: Maybe PrintContext noPrintContext = Nothing type family ResolvePrintContextMethod (t :: Symbol) (o :: *) :: * where ResolvePrintContextMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolvePrintContextMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolvePrintContextMethod "createPangoContext" o = PrintContextCreatePangoContextMethodInfo ResolvePrintContextMethod "createPangoLayout" o = PrintContextCreatePangoLayoutMethodInfo ResolvePrintContextMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolvePrintContextMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolvePrintContextMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolvePrintContextMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolvePrintContextMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolvePrintContextMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolvePrintContextMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolvePrintContextMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo ResolvePrintContextMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo ResolvePrintContextMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolvePrintContextMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolvePrintContextMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolvePrintContextMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolvePrintContextMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolvePrintContextMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolvePrintContextMethod "getCairoContext" o = PrintContextGetCairoContextMethodInfo ResolvePrintContextMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolvePrintContextMethod "getDpiX" o = PrintContextGetDpiXMethodInfo ResolvePrintContextMethod "getDpiY" o = PrintContextGetDpiYMethodInfo ResolvePrintContextMethod "getHardMargins" o = PrintContextGetHardMarginsMethodInfo ResolvePrintContextMethod "getHeight" o = PrintContextGetHeightMethodInfo ResolvePrintContextMethod "getPageSetup" o = PrintContextGetPageSetupMethodInfo ResolvePrintContextMethod "getPangoFontmap" o = PrintContextGetPangoFontmapMethodInfo ResolvePrintContextMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolvePrintContextMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolvePrintContextMethod "getWidth" o = PrintContextGetWidthMethodInfo ResolvePrintContextMethod "setCairoContext" o = PrintContextSetCairoContextMethodInfo ResolvePrintContextMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolvePrintContextMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolvePrintContextMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolvePrintContextMethod t PrintContext, O.MethodInfo info PrintContext p) => O.IsLabelProxy t (PrintContext -> p) where fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolvePrintContextMethod t PrintContext, O.MethodInfo info PrintContext p) => O.IsLabel t (PrintContext -> p) where fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif instance O.HasAttributeList PrintContext type instance O.AttributeList PrintContext = PrintContextAttributeList type PrintContextAttributeList = ('[ ] :: [(Symbol, *)]) type instance O.SignalList PrintContext = PrintContextSignalList type PrintContextSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) -- method PrintContext::create_pango_context -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Pango", name = "Context"})) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_create_pango_context" gtk_print_context_create_pango_context :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO (Ptr Pango.Context.Context) {- | Creates a new 'GI.Pango.Objects.Context.Context' that can be used with the 'GI.Gtk.Objects.PrintContext.PrintContext'. @since 2.10 -} printContextCreatePangoContext :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Pango.Context.Context {- ^ __Returns:__ a new Pango context for /@context@/ -} printContextCreatePangoContext context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_create_pango_context context' checkUnexpectedReturnNULL "printContextCreatePangoContext" result result' <- (wrapObject Pango.Context.Context) result touchManagedPtr context return result' data PrintContextCreatePangoContextMethodInfo instance (signature ~ (m Pango.Context.Context), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextCreatePangoContextMethodInfo a signature where overloadedMethod _ = printContextCreatePangoContext -- method PrintContext::create_pango_layout -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Pango", name = "Layout"})) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_create_pango_layout" gtk_print_context_create_pango_layout :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO (Ptr Pango.Layout.Layout) {- | Creates a new 'GI.Pango.Objects.Layout.Layout' that is suitable for use with the 'GI.Gtk.Objects.PrintContext.PrintContext'. @since 2.10 -} printContextCreatePangoLayout :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Pango.Layout.Layout {- ^ __Returns:__ a new Pango layout for /@context@/ -} printContextCreatePangoLayout context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_create_pango_layout context' checkUnexpectedReturnNULL "printContextCreatePangoLayout" result result' <- (wrapObject Pango.Layout.Layout) result touchManagedPtr context return result' data PrintContextCreatePangoLayoutMethodInfo instance (signature ~ (m Pango.Layout.Layout), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextCreatePangoLayoutMethodInfo a signature where overloadedMethod _ = printContextCreatePangoLayout -- method PrintContext::get_cairo_context -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "cairo", name = "Context"})) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_cairo_context" gtk_print_context_get_cairo_context :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO (Ptr Cairo.Context.Context) {- | Obtains the cairo context that is associated with the 'GI.Gtk.Objects.PrintContext.PrintContext'. @since 2.10 -} printContextGetCairoContext :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Cairo.Context.Context {- ^ __Returns:__ the cairo context of /@context@/ -} printContextGetCairoContext context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_get_cairo_context context' checkUnexpectedReturnNULL "printContextGetCairoContext" result result' <- (newBoxed Cairo.Context.Context) result touchManagedPtr context return result' data PrintContextGetCairoContextMethodInfo instance (signature ~ (m Cairo.Context.Context), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetCairoContextMethodInfo a signature where overloadedMethod _ = printContextGetCairoContext -- method PrintContext::get_dpi_x -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TDouble) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_dpi_x" gtk_print_context_get_dpi_x :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO CDouble {- | Obtains the horizontal resolution of the 'GI.Gtk.Objects.PrintContext.PrintContext', in dots per inch. @since 2.10 -} printContextGetDpiX :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Double {- ^ __Returns:__ the horizontal resolution of /@context@/ -} printContextGetDpiX context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_get_dpi_x context' let result' = realToFrac result touchManagedPtr context return result' data PrintContextGetDpiXMethodInfo instance (signature ~ (m Double), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetDpiXMethodInfo a signature where overloadedMethod _ = printContextGetDpiX -- method PrintContext::get_dpi_y -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TDouble) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_dpi_y" gtk_print_context_get_dpi_y :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO CDouble {- | Obtains the vertical resolution of the 'GI.Gtk.Objects.PrintContext.PrintContext', in dots per inch. @since 2.10 -} printContextGetDpiY :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Double {- ^ __Returns:__ the vertical resolution of /@context@/ -} printContextGetDpiY context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_get_dpi_y context' let result' = realToFrac result touchManagedPtr context return result' data PrintContextGetDpiYMethodInfo instance (signature ~ (m Double), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetDpiYMethodInfo a signature where overloadedMethod _ = printContextGetDpiY -- method PrintContext::get_hard_margins -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "top", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "top hardware printer margin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "bottom", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "bottom hardware printer margin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "left", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "left hardware printer margin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "right", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "right hardware printer margin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_hard_margins" gtk_print_context_get_hard_margins :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) Ptr CDouble -> -- top : TBasicType TDouble Ptr CDouble -> -- bottom : TBasicType TDouble Ptr CDouble -> -- left : TBasicType TDouble Ptr CDouble -> -- right : TBasicType TDouble IO CInt {- | Obtains the hardware printer margins of the 'GI.Gtk.Objects.PrintContext.PrintContext', in units. @since 2.20 -} printContextGetHardMargins :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m (Bool,Double,Double,Double,Double) {- ^ __Returns:__ 'True' if the hard margins were retrieved -} printContextGetHardMargins context = liftIO $ do context' <- unsafeManagedPtrCastPtr context top <- allocMem :: IO (Ptr CDouble) bottom <- allocMem :: IO (Ptr CDouble) left <- allocMem :: IO (Ptr CDouble) right <- allocMem :: IO (Ptr CDouble) result <- gtk_print_context_get_hard_margins context' top bottom left right let result' = (/= 0) result top' <- peek top let top'' = realToFrac top' bottom' <- peek bottom let bottom'' = realToFrac bottom' left' <- peek left let left'' = realToFrac left' right' <- peek right let right'' = realToFrac right' touchManagedPtr context freeMem top freeMem bottom freeMem left freeMem right return (result', top'', bottom'', left'', right'') data PrintContextGetHardMarginsMethodInfo instance (signature ~ (m (Bool,Double,Double,Double,Double)), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetHardMarginsMethodInfo a signature where overloadedMethod _ = printContextGetHardMargins -- method PrintContext::get_height -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TDouble) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_height" gtk_print_context_get_height :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO CDouble {- | Obtains the height of the 'GI.Gtk.Objects.PrintContext.PrintContext', in pixels. @since 2.10 -} printContextGetHeight :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Double {- ^ __Returns:__ the height of /@context@/ -} printContextGetHeight context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_get_height context' let result' = realToFrac result touchManagedPtr context return result' data PrintContextGetHeightMethodInfo instance (signature ~ (m Double), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetHeightMethodInfo a signature where overloadedMethod _ = printContextGetHeight -- method PrintContext::get_page_setup -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gtk", name = "PageSetup"})) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_page_setup" gtk_print_context_get_page_setup :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO (Ptr Gtk.PageSetup.PageSetup) {- | Obtains the 'GI.Gtk.Objects.PageSetup.PageSetup' that determines the page dimensions of the 'GI.Gtk.Objects.PrintContext.PrintContext'. @since 2.10 -} printContextGetPageSetup :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Gtk.PageSetup.PageSetup {- ^ __Returns:__ the page setup of /@context@/ -} printContextGetPageSetup context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_get_page_setup context' checkUnexpectedReturnNULL "printContextGetPageSetup" result result' <- (newObject Gtk.PageSetup.PageSetup) result touchManagedPtr context return result' data PrintContextGetPageSetupMethodInfo instance (signature ~ (m Gtk.PageSetup.PageSetup), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetPageSetupMethodInfo a signature where overloadedMethod _ = printContextGetPageSetup -- method PrintContext::get_pango_fontmap -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Pango", name = "FontMap"})) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_pango_fontmap" gtk_print_context_get_pango_fontmap :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO (Ptr Pango.FontMap.FontMap) {- | Returns a 'GI.Pango.Objects.FontMap.FontMap' that is suitable for use with the 'GI.Gtk.Objects.PrintContext.PrintContext'. @since 2.10 -} printContextGetPangoFontmap :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Pango.FontMap.FontMap {- ^ __Returns:__ the font map of /@context@/ -} printContextGetPangoFontmap context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_get_pango_fontmap context' checkUnexpectedReturnNULL "printContextGetPangoFontmap" result result' <- (newObject Pango.FontMap.FontMap) result touchManagedPtr context return result' data PrintContextGetPangoFontmapMethodInfo instance (signature ~ (m Pango.FontMap.FontMap), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetPangoFontmapMethodInfo a signature where overloadedMethod _ = printContextGetPangoFontmap -- method PrintContext::get_width -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TDouble) -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_get_width" gtk_print_context_get_width :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) IO CDouble {- | Obtains the width of the 'GI.Gtk.Objects.PrintContext.PrintContext', in pixels. @since 2.10 -} printContextGetWidth :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> m Double {- ^ __Returns:__ the width of /@context@/ -} printContextGetWidth context = liftIO $ do context' <- unsafeManagedPtrCastPtr context result <- gtk_print_context_get_width context' let result' = realToFrac result touchManagedPtr context return result' data PrintContextGetWidthMethodInfo instance (signature ~ (m Double), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextGetWidthMethodInfo a signature where overloadedMethod _ = printContextGetWidth -- method PrintContext::set_cairo_context -- method type : OrdinaryMethod -- Args : [Arg {argCName = "context", argType = TInterface (Name {namespace = "Gtk", name = "PrintContext"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkPrintContext", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cr", argType = TInterface (Name {namespace = "cairo", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cairo context", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dpi_x", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the horizontal resolution to use with @cr", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dpi_y", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the vertical resolution to use with @cr", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gtk_print_context_set_cairo_context" gtk_print_context_set_cairo_context :: Ptr PrintContext -> -- context : TInterface (Name {namespace = "Gtk", name = "PrintContext"}) Ptr Cairo.Context.Context -> -- cr : TInterface (Name {namespace = "cairo", name = "Context"}) CDouble -> -- dpi_x : TBasicType TDouble CDouble -> -- dpi_y : TBasicType TDouble IO () {- | Sets a new cairo context on a print context. This function is intended to be used when implementing an internal print preview, it is not needed for printing, since GTK+ itself creates a suitable cairo context in that case. @since 2.10 -} printContextSetCairoContext :: (B.CallStack.HasCallStack, MonadIO m, IsPrintContext a) => a {- ^ /@context@/: a 'GI.Gtk.Objects.PrintContext.PrintContext' -} -> Cairo.Context.Context {- ^ /@cr@/: the cairo context -} -> Double {- ^ /@dpiX@/: the horizontal resolution to use with /@cr@/ -} -> Double {- ^ /@dpiY@/: the vertical resolution to use with /@cr@/ -} -> m () printContextSetCairoContext context cr dpiX dpiY = liftIO $ do context' <- unsafeManagedPtrCastPtr context cr' <- unsafeManagedPtrGetPtr cr let dpiX' = realToFrac dpiX let dpiY' = realToFrac dpiY gtk_print_context_set_cairo_context context' cr' dpiX' dpiY' touchManagedPtr context touchManagedPtr cr return () data PrintContextSetCairoContextMethodInfo instance (signature ~ (Cairo.Context.Context -> Double -> Double -> m ()), MonadIO m, IsPrintContext a) => O.MethodInfo PrintContextSetCairoContextMethodInfo a signature where overloadedMethod _ = printContextSetCairoContext