PrintContextProtocol
public protocol PrintContextProtocol : ObjectProtocol
A GtkPrintContext encapsulates context information that is required when
drawing pages for printing.
This includes the cairo context and important parameters like page size
and resolution. It also lets you easily create [classPango.Layout] and
[classPango.Context] objects that match the font metrics of the cairo surface.
GtkPrintContext objects get passed to the
[signalGtk.PrintOperation::begin-print],
[signalGtk.PrintOperation::end-print],
[signalGtk.PrintOperation::request-page-setup] and
[signalGtk.PrintOperation::draw-page] signals on the
[classGtk.PrintOperation] object.
Using GtkPrintContext in a draw-page callback
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_pango_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);
}
The PrintContextProtocol protocol exposes the methods and properties of an underlying GtkPrintContext instance.
The default implementation of these can be found in the protocol extension below.
For a concrete class that implements these methods and properties, see PrintContext.
Alternatively, use PrintContextRef as a lighweight, unowned reference if you already have an instance you just want to use.
-
Untyped pointer to the underlying
GtkPrintContextinstance.Declaration
Swift
var ptr: UnsafeMutableRawPointer! { get } -
print_context_ptrDefault implementationTyped pointer to the underlying
GtkPrintContextinstance.Default Implementation
Return the stored, untyped pointer as a typed pointer to the
GtkPrintContextinstance.Declaration
Swift
var print_context_ptr: UnsafeMutablePointer<GtkPrintContext>! { get } -
Required Initialiser for types conforming to
PrintContextProtocolDeclaration
Swift
init(raw: UnsafeMutableRawPointer)
-
createPangoContext()Extension methodCreates a new
PangoContextthat can be used with theGtkPrintContext.Declaration
Swift
@inlinable func createPangoContext() -> Pango.ContextRef! -
createPangoLayout()Extension methodCreates a new
PangoLayoutthat is suitable for use with theGtkPrintContext.Declaration
Swift
@inlinable func createPangoLayout() -> Pango.LayoutRef! -
getCairoContext()Extension methodObtains the cairo context that is associated with the
GtkPrintContext.Declaration
Swift
@inlinable func getCairoContext() -> Cairo.ContextRef! -
getDpiX()Extension methodObtains the horizontal resolution of the
GtkPrintContext, in dots per inch.Declaration
Swift
@inlinable func getDpiX() -> CDouble -
getDpiY()Extension methodObtains the vertical resolution of the
GtkPrintContext, in dots per inch.Declaration
Swift
@inlinable func getDpiY() -> CDouble -
getHardMargins(top:Extension methodbottom: left: right: ) Obtains the hardware printer margins of the
GtkPrintContext, in units.Declaration
Swift
@inlinable func getHardMargins(top: UnsafeMutablePointer<CDouble>!, bottom: UnsafeMutablePointer<CDouble>!, left: UnsafeMutablePointer<CDouble>!, right: UnsafeMutablePointer<CDouble>!) -> Bool -
getHeight()Extension methodObtains the height of the
GtkPrintContext, in pixels.Declaration
Swift
@inlinable func getHeight() -> CDouble -
getPageSetup()Extension methodObtains the
GtkPageSetupthat determines the page dimensions of theGtkPrintContext.Declaration
Swift
@inlinable func getPageSetup() -> PageSetupRef! -
getPangoFontmap()Extension methodReturns a
PangoFontMapthat is suitable for use with theGtkPrintContext.Declaration
Swift
@inlinable func getPangoFontmap() -> Pango.FontMapRef! -
getWidth()Extension methodObtains the width of the
GtkPrintContext, in pixels.Declaration
Swift
@inlinable func getWidth() -> CDouble -
setCairoContext(cr:Extension methoddpiX: dpiY: ) 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.
Declaration
Swift
@inlinable func setCairoContext<ContextT>(cr: ContextT, dpiX: CDouble, dpiY: CDouble) where ContextT : ContextProtocol -
cairoContextExtension methodObtains the cairo context that is associated with the
GtkPrintContext.Declaration
Swift
@inlinable var cairoContext: Cairo.ContextRef! { get } -
dpiXExtension methodObtains the horizontal resolution of the
GtkPrintContext, in dots per inch.Declaration
Swift
@inlinable var dpiX: CDouble { get } -
dpiYExtension methodObtains the vertical resolution of the
GtkPrintContext, in dots per inch.Declaration
Swift
@inlinable var dpiY: CDouble { get } -
heightExtension methodObtains the height of the
GtkPrintContext, in pixels.Declaration
Swift
@inlinable var height: CDouble { get } -
pageSetupExtension methodObtains the
GtkPageSetupthat determines the page dimensions of theGtkPrintContext.Declaration
Swift
@inlinable var pageSetup: PageSetupRef! { get } -
pangoFontmapExtension methodReturns a
PangoFontMapthat is suitable for use with theGtkPrintContext.Declaration
Swift
@inlinable var pangoFontmap: Pango.FontMapRef! { get } -
widthExtension methodObtains the width of the
GtkPrintContext, in pixels.Declaration
Swift
@inlinable var width: CDouble { get }
View on GitHub
Install in Dash
PrintContextProtocol Protocol Reference