|  |  | GTK+ Reference Manual |
Top | Description | Object Hierarchy

## GtkPrintContext

GtkPrintContext — Изолирует содержимое для представления страниц

## Краткое описание

    #include <gtk/gtk.h>

                GtkPrintContext;
    cairo_t*    gtk_print_context_get_cairo_context
                                                (GtkPrintContext *context);
    GtkPageSetup* gtk_print_context_get_page_setup
                                                (GtkPrintContext *context);
    gdouble     gtk_print_context_get_width     (GtkPrintContext *context);
    gdouble     gtk_print_context_get_height    (GtkPrintContext *context);
    gdouble     gtk_print_context_get_dpi_x     (GtkPrintContext *context);
    gdouble     gtk_print_context_get_dpi_y     (GtkPrintContext *context);
    PangoFontMap* gtk_print_context_get_pango_fontmap
                                                (GtkPrintContext *context);
    PangoContext* gtk_print_context_create_pango_context
                                                (GtkPrintContext *context);
    PangoLayout* gtk_print_context_create_pango_layout
                                                (GtkPrintContext *context);

## Иерархия объектов

      GObject
       +----GtkPrintContext

## Описание

GtkPrintContext изолирует контекстную информацию, запрашивая представление страниц для печати, такую как cairo контекст и важные параметры размера и разрешения страницы. Он также позволяет легко создать PangoLayout и PangoContext объекты которые соответствуют метрики шрифта cairo поверхности.

GtkPrintContext объекты помещаются к ::begin-print, ::end-print, ::request-page-setup и ::draw-page сигналам в GtkPrintOperation.

Пример 2. Использование GtkPrintContext в ::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);

      /* Рисуем красный прямоугольник, такой же большой как бумага (в пределах границ) */
      cairo_set_source_rgb (cr, 1.0, 0, 0);
      cairo_rectangle (cr, 0, 0, gtk_print_context_get_width (context), 50);

      cairo_fill (cr);

      /* Рисуем некоторые линии */
      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);

      /* Рисуем некоторый текст */
      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);

      /* Схема шрифта */
      cairo_set_source_rgb (cr, 0.93, 1.0, 0.47);
      cairo_set_line_width (cr, 0.5);
      cairo_stroke_preserve (cr);

      /* Заполнение шрифта */
      cairo_set_source_rgb (cr, 0, 0.0, 1.0);
      cairo_fill (cr);

      g_object_unref (layout);
    }

Поддержка печати добавлена начиная с версии GTK+ 2.10.

## Детали

### GtkPrintContext

    typedef struct _GtkPrintContext GtkPrintContext;

### gtk_print_context_get_cairo_context ()

    cairo_t*    gtk_print_context_get_cairo_context
                                                (GtkPrintContext *context);

Определяет cairo контекст связанный с GtkPrintContext.

`context` : | GtkPrintContext
Возвращает : | cairo контекст `context`

Начиная с версии 2.10

### gtk_print_context_get_page_setup ()

    GtkPageSetup* gtk_print_context_get_page_setup
                                                (GtkPrintContext *context);

Возвращает GtkPageSetup который описывает параметры страницы GtkPrintContext.

`context` : | GtkPrintContext
Возвращает : | Параметры страницы `context`

Начиная с версии 2.10

### gtk_print_context_get_width ()

    gdouble     gtk_print_context_get_width     (GtkPrintContext *context);

Определяет ширину GtkPrintContext, в пикселах.

`context` : | GtkPrintContext
Возвращает : | ширина `context`

Начиная с версии 2.10

### gtk_print_context_get_height ()

    gdouble     gtk_print_context_get_height    (GtkPrintContext *context);

Определяет высоту GtkPrintContext, в пикселах.

`context` : | GtkPrintContext
Возвращает : | высота `context`

Начиная с версии 2.10

### gtk_print_context_get_dpi_x ()

    gdouble     gtk_print_context_get_dpi_x     (GtkPrintContext *context);

Определяет горизонтальное разрешение GtkPrintContext, в точках на дюйм.

`context` : | GtkPrintContext
Возвращает : | Горизонтальное разрешение `context`

Начиная с версии 2.10

### gtk_print_context_get_dpi_y ()

    gdouble     gtk_print_context_get_dpi_y     (GtkPrintContext *context);

Определяет вертикальное разрешение GtkPrintContext, в точках на дюйм.

`context` : | GtkPrintContext
Возвращает : | Вертикальное разрешение `context`

Начиная с версии 2.10

### gtk_print_context_get_pango_fontmap ()

    PangoFontMap* gtk_print_context_get_pango_fontmap
                                                (GtkPrintContext *context);

Возвращает PangoFontMap который подходит для использования с GtkPrintContext.

`context` : | GtkPrintContext
Возвращает : | Отображаемый шрифт `context`

Начиная с версии 2.10

### gtk_print_context_create_pango_context ()

    PangoContext* gtk_print_context_create_pango_context
                                                (GtkPrintContext *context);

Создаёт новый PangoContext который может использоваться с GtkPrintContext.

`context` : | GtkPrintContext
Возвращает : | новый Pango контекст для `context`

Начиная с версии 2.10

### gtk_print_context_create_pango_layout ()

    PangoLayout* gtk_print_context_create_pango_layout
                                                (GtkPrintContext *context);

Создаёт новый PangoLayout который подходит для использования с GtkPrintContext.

`context` : | GtkPrintContext
Возвращает : | новый Pango формат для `context`

Начиная с версии 2.10