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
GtkPrintContext
instance.Declaration
Swift
var ptr: UnsafeMutableRawPointer! { get }
-
print_context_ptr
Default implementationTyped pointer to the underlying
GtkPrintContext
instance.Default Implementation
Return the stored, untyped pointer as a typed pointer to the
GtkPrintContext
instance.Declaration
Swift
var print_context_ptr: UnsafeMutablePointer<GtkPrintContext>! { get }
-
Required Initialiser for types conforming to
PrintContextProtocol
Declaration
Swift
init(raw: UnsafeMutableRawPointer)
-
createPangoContext()
Extension methodCreates a new
PangoContext
that can be used with theGtkPrintContext
.Declaration
Swift
@inlinable func createPangoContext() -> Pango.ContextRef!
-
createPangoLayout()
Extension methodCreates a new
PangoLayout
that 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
GtkPageSetup
that determines the page dimensions of theGtkPrintContext
.Declaration
Swift
@inlinable func getPageSetup() -> PageSetupRef!
-
getPangoFontmap()
Extension methodReturns a
PangoFontMap
that 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
-
cairoContext
Extension methodObtains the cairo context that is associated with the
GtkPrintContext
.Declaration
Swift
@inlinable var cairoContext: Cairo.ContextRef! { get }
-
dpiX
Extension methodObtains the horizontal resolution of the
GtkPrintContext
, in dots per inch.Declaration
Swift
@inlinable var dpiX: CDouble { get }
-
dpiY
Extension methodObtains the vertical resolution of the
GtkPrintContext
, in dots per inch.Declaration
Swift
@inlinable var dpiY: CDouble { get }
-
height
Extension methodObtains the height of the
GtkPrintContext
, in pixels.Declaration
Swift
@inlinable var height: CDouble { get }
-
pageSetup
Extension methodObtains the
GtkPageSetup
that determines the page dimensions of theGtkPrintContext
.Declaration
Swift
@inlinable var pageSetup: PageSetupRef! { get }
-
pangoFontmap
Extension methodReturns a
PangoFontMap
that is suitable for use with theGtkPrintContext
.Declaration
Swift
@inlinable var pangoFontmap: Pango.FontMapRef! { get }
-
width
Extension methodObtains the width of the
GtkPrintContext
, in pixels.Declaration
Swift
@inlinable var width: CDouble { get }