Bug 509788 – GTK+ should use CUPS to set Postscript level of PS output

* modules/printbackends/cups/gtkprintbackendcups.c
        (cups_printer_create_cairo_surface): Fall back to PostScript level 2
        if the printer does not support level 3. Patch by Marek Kašík.


svn path=/trunk/; revision=20203
This commit is contained in:
Matthias Clasen 2008-05-28 01:43:34 +00:00
parent 81320ba90b
commit 10f642b99f
2 changed files with 28 additions and 1 deletions

View File

@ -1,6 +1,14 @@
2008-05-27 Matthias Clasen <mclasen@redhat.com>
Bug 404571 Scroll arrow backgrounds should be painted with different
Bug 509788 - GTK+ should use CUPS to set Postscript level of PS output
* modules/printbackends/cups/gtkprintbackendcups.c
(cups_printer_create_cairo_surface): Fall back to PostScript level 2
if the printer does not support level 3. Patch by Marek Kašík.
2008-05-27 Matthias Clasen <mclasen@redhat.com>
Bug 404571 - Scroll arrow backgrounds should be painted with different
detail
* gtk/gtkmenu.c (gtk_menu_paint): Use "menu_scroll_arrow_up/down"

View File

@ -307,11 +307,30 @@ cups_printer_create_cairo_surface (GtkPrinter *printer,
GIOChannel *cache_io)
{
cairo_surface_t *surface;
ppd_file_t *ppd_file = NULL;
ppd_attr_t *ppd_attr = NULL;
int level = 2;
/* TODO: check if it is a ps or pdf printer */
surface = cairo_ps_surface_create_for_stream (_cairo_write_to_cups, cache_io, width, height);
ppd_file = gtk_printer_cups_get_ppd (GTK_PRINTER_CUPS (printer));
if (ppd_file != NULL)
{
ppd_attr = ppdFindAttr (ppd_file, "LanguageLevel", NULL);
if (ppd_attr != NULL)
level = atoi (ppd_attr->value);
}
if (level == 2)
cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_2);
if (level == 3)
cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_3);
/* TODO: DPI from settings object? */
cairo_surface_set_fallback_resolution (surface, 300, 300);