Bring GtkPrintContext hard margin aware

See bug #468989.
This commit is contained in:
ecyrbe 2009-12-05 13:23:44 +01:00 committed by Carlos Garcia Campos
parent db30c79dac
commit be686e2bad
3 changed files with 70 additions and 0 deletions

View File

@ -2918,6 +2918,7 @@ gtk_print_context_get_width
gtk_print_context_get_height gtk_print_context_get_height
gtk_print_context_get_dpi_x gtk_print_context_get_dpi_x
gtk_print_context_get_dpi_y gtk_print_context_get_dpi_y
gtk_print_context_get_hard_margins
gtk_print_context_get_pango_fontmap gtk_print_context_get_pango_fontmap
gtk_print_context_create_pango_context gtk_print_context_create_pango_context
gtk_print_context_create_pango_layout gtk_print_context_create_pango_layout

View File

@ -44,6 +44,13 @@ struct _GtkPrintContext
gdouble pixels_per_unit_x; gdouble pixels_per_unit_x;
gdouble pixels_per_unit_y; gdouble pixels_per_unit_y;
gboolean has_hard_margins;
gdouble hard_margin_top;
gdouble hard_margin_bottom;
gdouble hard_margin_left;
gdouble hard_margin_right;
}; };
struct _GtkPrintContextClass struct _GtkPrintContextClass
@ -90,6 +97,7 @@ _gtk_print_context_new (GtkPrintOperation *op)
context->op = op; context->op = op;
context->cr = NULL; context->cr = NULL;
context->has_hard_margins = FALSE;
return context; return context;
} }
@ -373,6 +381,62 @@ gtk_print_context_get_dpi_y (GtkPrintContext *context)
return context->surface_dpi_y; return context->surface_dpi_y;
} }
/**
* gtk_print_context_get_hard_margins:
* @context: a #GtkPrintContext
* @top: top hardware printer margin
* @bottom: bottom hardware printer margin
* @left: left hardware printer margin
* @right: right hardware printer margin
*
* Obtains the hardware printer margins of the #GtkPrintContext, in units.
*
* Return value: %TRUE if the hard margins were retrieved
*
* Since: 2.20
*/
gboolean
gtk_print_context_get_hard_margins (GtkPrintContext *context,
gdouble *top,
gdouble *bottom,
gdouble *left,
gdouble *right)
{
if (context->has_hard_margins)
{
*top = context->hard_margin_top / context->pixels_per_unit_y;
*bottom = context->hard_margin_bottom / context->pixels_per_unit_y;
*left = context->hard_margin_left / context->pixels_per_unit_x;
*right = context->hard_margin_right / context->pixels_per_unit_x;
}
return context->has_hard_margins;
}
/**
* gtk_print_context_set_hard_margins:
* @context: a #GtkPrintContext
* @top: top hardware printer margin
* @bottom: bottom hardware printer margin
* @left: left hardware printer margin
* @right: right hardware printer margin
*
* set the hard margins in pixel coordinates
*/
void
_gtk_print_context_set_hard_margins (GtkPrintContext *context,
gdouble top,
gdouble bottom,
gdouble left,
gdouble right)
{
context->hard_margin_top = top;
context->hard_margin_bottom = bottom;
context->hard_margin_left = left;
context->hard_margin_right = right;
context->has_hard_margins = TRUE;
}
/** /**
* gtk_print_context_get_pango_fontmap: * gtk_print_context_get_pango_fontmap:
* @context: a #GtkPrintContext * @context: a #GtkPrintContext

View File

@ -49,6 +49,11 @@ gdouble gtk_print_context_get_width (GtkPrintContext *context);
gdouble gtk_print_context_get_height (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_x (GtkPrintContext *context);
gdouble gtk_print_context_get_dpi_y (GtkPrintContext *context); gdouble gtk_print_context_get_dpi_y (GtkPrintContext *context);
gboolean gtk_print_context_get_hard_margins (GtkPrintContext *context,
gdouble *top,
gdouble *bottom,
gdouble *left,
gdouble *right);
/* Fonts */ /* Fonts */
PangoFontMap *gtk_print_context_get_pango_fontmap (GtkPrintContext *context); PangoFontMap *gtk_print_context_get_pango_fontmap (GtkPrintContext *context);