2006-04-21 15:09:32 +00:00
|
|
|
<!-- ##### SECTION Title ##### -->
|
|
|
|
GtkPrintContext
|
|
|
|
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
|
|
Encapsulates context for drawing pages
|
|
|
|
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
|
|
<para>
|
|
|
|
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 #PangoLayout and #PangoContext objects that match the font metrics
|
|
|
|
of the cairo surface.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
GtkPrintContext objects gets passed to the ::begin-print, ::end-print,
|
|
|
|
::request-page-setup and ::draw-page signals on the #GtkPrintOperation.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<example>
|
|
|
|
<title>Using GtkPrintContext in a ::draw-page callback</title>
|
|
|
|
<programlisting>
|
|
|
|
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);
|
|
|
|
|
|
|
|
/* 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_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);
|
|
|
|
}
|
|
|
|
</programlisting>
|
|
|
|
</example>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Printing support was added in GTK+ 2.10.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<!-- ##### SECTION Stability_Level ##### -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### STRUCT GtkPrintContext ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
2006-06-05 19:33:40 +00:00
|
|
|
<!-- ##### FUNCTION gtk_print_context_get_cairo_context ##### -->
|
2006-04-21 15:09:32 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
2006-06-13 05:15:01 +00:00
|
|
|
<!-- ##### FUNCTION gtk_print_context_set_cairo_context ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@cr:
|
|
|
|
@dpi_x:
|
|
|
|
@dpi_y:
|
|
|
|
|
|
|
|
|
2006-04-21 15:09:32 +00:00
|
|
|
<!-- ##### FUNCTION gtk_print_context_get_page_setup ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_print_context_get_width ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_print_context_get_height ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_print_context_get_dpi_x ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_print_context_get_dpi_y ##### -->
|
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
2006-06-05 19:33:40 +00:00
|
|
|
<!-- ##### FUNCTION gtk_print_context_get_pango_fontmap ##### -->
|
2006-04-21 15:09:32 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
2006-06-05 19:33:40 +00:00
|
|
|
<!-- ##### FUNCTION gtk_print_context_create_pango_context ##### -->
|
2006-04-21 15:09:32 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|
2006-06-05 19:33:40 +00:00
|
|
|
<!-- ##### FUNCTION gtk_print_context_create_pango_layout ##### -->
|
2006-04-21 15:09:32 +00:00
|
|
|
<para>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
@context:
|
|
|
|
@Returns:
|
|
|
|
|
|
|
|
|