class Gtk::PrintContext
- Gtk::PrintContext
- GObject::Object
- Reference
- Object
Overview
A Gtk::PrintContext
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 Pango::Layout
and
Pango::Context
objects that match the font metrics of the cairo surface.
Gtk::PrintContext
objects get passed to the
[signal@Gtk.PrintOperation::begin-print],
[signal@Gtk.PrintOperation::end-print],
[signal@Gtk.PrintOperation::request-page-setup] and
[signal@Gtk.PrintOperation::draw-page] signals on the
Gtk::PrintOperation
object.
Using Gtk::PrintContext in a ::draw-page callback
WARNING ⚠️ The following code is in c ⚠️
static void
draw_page (Gtk::PrintOperation *operation,
Gtk::PrintContext *context,
int page_nr)
{
cairo_::t *cr;
Pango::Layout *layout;
Pango::FontDescription *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);
}
Defined in:
lib/gi-crystal/src/auto/gtk-4.0/print_context.crConstructors
-
.new
Initialize a new
PrintContext
.
Class Method Summary
-
.g_type : UInt64
Returns the type id (GType) registered in GLib type system.
Instance Method Summary
-
#cairo_context : Cairo::Context
Obtains the cairo context that is associated with the
Gtk::PrintContext
. -
#create_pango_context : Pango::Context
Creates a new
Pango::Context
that can be used with theGtk::PrintContext
. -
#create_pango_layout : Pango::Layout
Creates a new
Pango::Layout
that is suitable for use with theGtk::PrintContext
. -
#dpi_x : Float64
Obtains the horizontal resolution of the
Gtk::PrintContext
, in dots per inch. -
#dpi_y : Float64
Obtains the vertical resolution of the
Gtk::PrintContext
, in dots per inch. -
#hard_margins(top : Float64, bottom : Float64, left : Float64, right : Float64) : Bool
Obtains the hardware printer margins of the
Gtk::PrintContext
, in units. -
#height : Float64
Obtains the height of the
Gtk::PrintContext
, in pixels. -
#page_setup : Gtk::PageSetup
Obtains the
Gtk::PageSetup
that determines the page dimensions of theGtk::PrintContext
. -
#pango_fontmap : Pango::FontMap
Returns a
Pango::FontMap
that is suitable for use with theGtk::PrintContext
. -
#set_cairo_context(cr : Cairo::Context, dpi_x : Float64, dpi_y : Float64) : Nil
Sets a new cairo context on a print context.
-
#width : Float64
Obtains the width of the
Gtk::PrintContext
, in pixels.
Instance methods inherited from class GObject::Object
bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding
bind_property,
bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding
bind_property_full,
data(key : String) : Pointer(Void)?
data,
finalize
finalize,
freeze_notify : Nil
freeze_notify,
getv(names : Enumerable(String), values : Enumerable(_)) : Nil
getv,
notify(property_name : String) : Nil
notify,
notify_by_pspec(pspec : GObject::ParamSpec) : Nil
notify_by_pspec,
notify_signal
notify_signal,
property(property_name : String, value : _) : Nil
property,
qdata(quark : UInt32) : Pointer(Void)?
qdata,
ref_count : UInt32
ref_count,
run_dispose : Nil
run_dispose,
set_data(key : String, data : Pointer(Void)?) : Nil
set_data,
set_property(property_name : String, value : _) : Nil
set_property,
steal_data(key : String) : Pointer(Void)?
steal_data,
steal_qdata(quark : UInt32) : Pointer(Void)?
steal_qdata,
thaw_notify : Nil
thaw_notify,
to_unsafe : Pointer(Void)
to_unsafe,
watch_closure(closure : GObject::Closure) : Nil
watch_closure
Constructor methods inherited from class GObject::Object
cast(obj : GObject::Object) : self
cast,
cast?(obj : GObject::Object) : self?
cast?,
new(pointer : Pointer(Void), transfer : GICrystal::Transfer)new new, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv
Class methods inherited from class GObject::Object
compat_control(what : UInt64, data : Pointer(Void)?) : UInt64
compat_control,
g_type : UInt64
g_type,
interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec
interface_find_property,
interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec)
interface_list_properties
Constructor Detail
Class Method Detail
Instance Method Detail
Obtains the cairo context that is associated with the
Gtk::PrintContext
.
Creates a new Pango::Context
that can be used with the
Gtk::PrintContext
.
Creates a new Pango::Layout
that is suitable for use
with the Gtk::PrintContext
.
Obtains the Gtk::PageSetup
that determines the page
dimensions of the Gtk::PrintContext
.
Returns a Pango::FontMap
that is suitable for use
with the Gtk::PrintContext
.
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.