Index

Package: Print_Context

Description

package Gtk.Print_Context is

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.Pango_Layout and Pango.Context.Pango_Context objects that match the font metrics of the cairo surface.

GtkPrintContext objects gets passed to the Gtk.Print_Operation.Gtk_Print_Operation::begin-print, Gtk.Print_Operation.Gtk_Print_Operation::end-print, Gtk.Print_Operation.Gtk_Print_Operation::request-page-setup and Gtk.Print_Operation.Gtk_Print_Operation::draw-page signals on the Gtk.Print_Operation.Gtk_Print_Operation. == Using GtkPrintContext in a Gtk.Print_Operation.Gtk_Print_Operation::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_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.

Classes

Gtk_Print_Context_Record

type Gtk_Print_Context_Record is new GObject_Record with null record;

Ancestors:

Primitive operations:

Create_Pango_Context
Create_Pango_Layout
Get_Cairo_Context
Get_Hard_Margins
Get_Page_Setup
Get_Pango_Fontmap
Glib.Object.Deallocate (Inherited)
Glib.Object.Get_Type (Inherited)
Glib.Object.Notify (Inherited)
Glib.Object.Ref (Inherited)
Glib.Object.Ref_Sink (Inherited)
Glib.Object.Unref (Inherited)
Set_Cairo_Context

Types

Gtk_Print_Context

type Gtk_Print_Context is access all Gtk_Print_Context_Record'Class;

Subprograms & Entries

Get_Type

function Get_Type return Glib.GType;

Create_Pango_Context

function Create_Pango_Context 
(Context: not null access Gtk_Print_Context_Record) return Pango.Context.Pango_Context;
Creates a new Pango.Context.Pango_Context that can be used with the Gtk.Print_Context.Gtk_Print_Context. Since: gtk+ 2.10

Create_Pango_Layout

function Create_Pango_Layout 
(Context: not null access Gtk_Print_Context_Record) return Pango.Layout.Pango_Layout;
Creates a new Pango.Layout.Pango_Layout that is suitable for use with the Gtk.Print_Context.Gtk_Print_Context. Since: gtk+ 2.10

Get_Cairo_Context

function Get_Cairo_Context 
(Context: not null access Gtk_Print_Context_Record) return Cairo.Cairo_Context;
Obtains the cairo context that is associated with the Gtk.Print_Context.Gtk_Print_Context. Since: gtk+ 2.10

Set_Cairo_Context

procedure Set_Cairo_Context 
(Context: not null access Gtk_Print_Context_Record;
Cr: Cairo.Cairo_Context;
Dpi_X: Gdouble;
Dpi_Y: Gdouble);
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. Since: gtk+ 2.10 "cr": the cairo context "dpi_x": the horizontal resolution to use with Cr "dpi_y": the vertical resolution to use with Cr

Get_Dpi_X

function Get_Dpi_X 
(Context: not null access Gtk_Print_Context_Record) return Gdouble;
Obtains the horizontal resolution of the Gtk.Print_Context.Gtk_Print_Context, in dots per inch. Since: gtk+ 2.10

Get_Dpi_Y

function Get_Dpi_Y 
(Context: not null access Gtk_Print_Context_Record) return Gdouble;
Obtains the vertical resolution of the Gtk.Print_Context.Gtk_Print_Context, in dots per inch. Since: gtk+ 2.10

Get_Hard_Margins

function Get_Hard_Margins 
(Context: not null access Gtk_Print_Context_Record;
Top: access Gdouble;
Bottom: access Gdouble;
Left: access Gdouble;
Right: access Gdouble) return Boolean;
Obtains the hardware printer margins of the Gtk.Print_Context.Gtk_Print_Context, in units. Since: gtk+ 2.20 "top": top hardware printer margin "bottom": bottom hardware printer margin "left": left hardware printer margin "right": right hardware printer margin

Get_Height

function Get_Height 
(Context: not null access Gtk_Print_Context_Record) return Gdouble;
Obtains the height of the Gtk.Print_Context.Gtk_Print_Context, in pixels. Since: gtk+ 2.10

Get_Page_Setup

function Get_Page_Setup 
(Context: not null access Gtk_Print_Context_Record) return Gtk.Page_Setup.Gtk_Page_Setup;
Obtains the Gtk.Page_Setup.Gtk_Page_Setup that determines the page dimensions of the Gtk.Print_Context.Gtk_Print_Context. Since: gtk+ 2.10

Get_Pango_Fontmap

function Get_Pango_Fontmap 
(Context: not null access Gtk_Print_Context_Record) return Pango.Font_Map.Pango_Font_Map;
Returns a Pango.Font_Map.Pango_Font_Map that is suitable for use with the Gtk.Print_Context.Gtk_Print_Context. Since: gtk+ 2.10

Get_Width

function Get_Width 
(Context: not null access Gtk_Print_Context_Record) return Gdouble;
Obtains the width of the Gtk.Print_Context.Gtk_Print_Context, in pixels. Since: gtk+ 2.10