Package org.gnome.gtk
Class PrintContext
java.lang.Object
io.github.jwharm.javagi.base.ProxyInstance
org.gnome.gobject.TypeInstance
org.gnome.gobject.GObject
org.gnome.gtk.PrintContext
- All Implemented Interfaces:
Proxy
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 Layout
and
Context
objects that match the font metrics of the cairo surface.
GtkPrintContext
objects get passed to the
Gtk.PrintOperation::begin-print
,
Gtk.PrintOperation::end-print
,
Gtk.PrintOperation::request-page-setup
and
Gtk.PrintOperation::draw-page
signals on the
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);
}
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
PrintContext.Builder<B extends PrintContext.Builder<B>>
Inner class implementing a builder pattern to construct a GObject with properties.Nested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback, GObject.ObjectClass
-
Constructor Summary
ConstructorDescriptionPrintContext
(MemorySegment address) Create a PrintContext proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionprotected PrintContext
asParent()
Returns this instance as if it were its parent type.static PrintContext.Builder
<? extends PrintContext.Builder> builder()
APrintContext.Builder
object constructs aPrintContext
with the specified properties.Creates a newPangoContext
that can be used with theGtkPrintContext
.Creates a newPangoLayout
that is suitable for use with theGtkPrintContext
.org.freedesktop.cairo.Context
Obtains the cairo context that is associated with theGtkPrintContext
.double
getDpiX()
Obtains the horizontal resolution of theGtkPrintContext
, in dots per inch.double
getDpiY()
Obtains the vertical resolution of theGtkPrintContext
, in dots per inch.boolean
Obtains the hardware printer margins of theGtkPrintContext
, in units.double
Obtains the height of theGtkPrintContext
, in pixels.Obtains theGtkPageSetup
that determines the page dimensions of theGtkPrintContext
.Returns aPangoFontMap
that is suitable for use with theGtkPrintContext
.static Type
getType()
Get the GType of the PrintContext classdouble
getWidth()
Obtains the width of theGtkPrintContext
, in pixels.void
setCairoContext
(org.freedesktop.cairo.Context cr, double dpiX, double dpiY) Sets a new cairo context on a print context.Methods inherited from class org.gnome.gobject.GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getMemoryLayout, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newInstance, newInstance, newv, notify_, notify_, notifyByPspec, onNotify, ref, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref, withProperties
Methods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, getPrivate, readGClass, writeGClass
Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
Method Details
-
getType
-
asParent
Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuper
keyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()
doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName()
. This will call the native function pointer of this virtual method in the typeclass of the parent type. -
createPangoContext
Creates a newPangoContext
that can be used with theGtkPrintContext
.- Returns:
- a new Pango context for this PrintContext
-
createPangoLayout
Creates a newPangoLayout
that is suitable for use with theGtkPrintContext
.- Returns:
- a new Pango layout for this PrintContext
-
getCairoContext
public org.freedesktop.cairo.Context getCairoContext()Obtains the cairo context that is associated with theGtkPrintContext
.- Returns:
- the cairo context of this PrintContext
-
getDpiX
public double getDpiX()Obtains the horizontal resolution of theGtkPrintContext
, in dots per inch.- Returns:
- the horizontal resolution of this PrintContext
-
getDpiY
public double getDpiY()Obtains the vertical resolution of theGtkPrintContext
, in dots per inch.- Returns:
- the vertical resolution of this PrintContext
-
getHardMargins
public boolean getHardMargins(Out<Double> top, Out<Double> bottom, Out<Double> left, Out<Double> right) Obtains the hardware printer margins of theGtkPrintContext
, in units.- Parameters:
top
- top hardware printer marginbottom
- bottom hardware printer marginleft
- left hardware printer marginright
- right hardware printer margin- Returns:
true
if the hard margins were retrieved
-
getHeight
public double getHeight()Obtains the height of theGtkPrintContext
, in pixels.- Returns:
- the height of this PrintContext
-
getPageSetup
Obtains theGtkPageSetup
that determines the page dimensions of theGtkPrintContext
.- Returns:
- the page setup of this PrintContext
-
getPangoFontmap
Returns aPangoFontMap
that is suitable for use with theGtkPrintContext
.- Returns:
- the font map of this PrintContext
-
getWidth
public double getWidth()Obtains the width of theGtkPrintContext
, in pixels.- Returns:
- the width of this PrintContext
-
setCairoContext
public void setCairoContext(org.freedesktop.cairo.Context cr, double dpiX, double 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.
- Parameters:
cr
- the cairo contextdpiX
- the horizontal resolution to use withcr
dpiY
- the vertical resolution to use withcr
-
builder
APrintContext.Builder
object constructs aPrintContext
with the specified properties. Use the variousset...()
methods to set properties, and finish construction withPrintContext.Builder.build()
.
-