------------------------------------------------------------------------------ -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2014, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 3, or (at your option) any later -- -- version. This library is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- -- -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- -- -- -- As a special exception under Section 7 of GPL version 3, you are granted -- -- additional permissions described in the GCC Runtime Library Exception, -- -- version 3.1, as published by the Free Software Foundation. -- -- -- -- You should have received a copy of the GNU General Public License and -- -- a copy of the GCC Runtime Library Exception along with this program; -- -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- -- <http://www.gnu.org/licenses/>. -- -- -- ------------------------------------------------------------------------------ -- <description> -- 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. -- -- </description> pragma Ada_2005; pragma Warnings (Off, "*is already use-visible*");
with Cairo; use Cairo;
with Glib; use Glib;
with Glib.Object; use Glib.Object;
with Gtk.Page_Setup; use Gtk.Page_Setup;
with Pango.Context; use Pango.Context;
with Pango.Font_Map; use Pango.Font_Map;
with Pango.Layout; use Pango.Layout;
package Gtk.Print_Context is
type Gtk_Print_Context_Record is new GObject_Record with null record;
type Gtk_Print_Context is access all Gtk_Print_Context_Record'Class;
------------------ -- Constructors -- ------------------ function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_print_context_get_type");
------------- -- Methods -- ------------- 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 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 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 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 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 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 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 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 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 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 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 end Gtk.Print_Context;