Class: Gtk::PrintContext
- Inherits:
-
Object
- Object
- Gtk::PrintContext
- Defined in:
- (unknown)
Overview
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 Pango::Layout and #PangoContext objects that match the font metrics of the cairo surface.
GtkPrintContext objects gets passed to the Gtk::PrintOperation::begin-print, Gtk::PrintOperation::end-print, #GtkPrintOperation::request-page-setup and Gtk::PrintOperation::draw-page signals on the #GtkPrintOperation.
## Using GtkPrintContext in a Gtk::PrintOperation::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);
}
Printing support was added in GTK+ 2.10.
Instance Method Summary collapse
-
#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 the Gtk::PrintContext.
-
#create_pango_layout ⇒ Pango::Layout
Creates a new Pango::Layout that is suitable for use with the Gtk::PrintContext.
-
#dpi_x ⇒ Float
Obtains the horizontal resolution of the Gtk::PrintContext, in dots per inch.
-
#dpi_y ⇒ Float
Obtains the vertical resolution of the Gtk::PrintContext, in dots per inch.
-
#get_hard_margins(top, bottom, left, right) ⇒ TrueClass
Obtains the hardware printer margins of the Gtk::PrintContext, in units.
-
#height ⇒ Float
Obtains the height of the Gtk::PrintContext, in pixels.
-
#page_setup ⇒ Gtk::PageSetup
Obtains the Gtk::PageSetup that determines the page dimensions of the Gtk::PrintContext.
-
#pango_fontmap ⇒ Pango::FontMap
Returns a Pango::FontMap that is suitable for use with the Gtk::PrintContext.
-
#set_cairo_context(cr, dpi_x, dpi_y) ⇒ nil
Sets a new cairo context on a print context.
-
#width ⇒ Float
Obtains the width of the Gtk::PrintContext, in pixels.
Instance Method Details
#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 the Gtk::PrintContext.
#create_pango_layout ⇒ Pango::Layout
Creates a new Pango::Layout that is suitable for use with the Gtk::PrintContext.
#dpi_x ⇒ Float
Obtains the horizontal resolution of the Gtk::PrintContext, in dots per inch.
#dpi_y ⇒ Float
Obtains the vertical resolution of the Gtk::PrintContext, in dots per inch.
#get_hard_margins(top, bottom, left, right) ⇒ TrueClass
Obtains the hardware printer margins of the Gtk::PrintContext, in units.
#height ⇒ Float
Obtains the height of the Gtk::PrintContext, in pixels.
#page_setup ⇒ Gtk::PageSetup
Obtains the Gtk::PageSetup that determines the page dimensions of the Gtk::PrintContext.
#pango_fontmap ⇒ Pango::FontMap
Returns a Pango::FontMap that is suitable for use with the Gtk::PrintContext.
#set_cairo_context(cr, dpi_x, dpi_y) ⇒ nil
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.
#width ⇒ Float
Obtains the width of the Gtk::PrintContext, in pixels.