gtk+ r20203 - in trunk: . modules/printbackends/cups
- From: matthiasc svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r20203 - in trunk: . modules/printbackends/cups
- Date: Wed, 28 May 2008 01:43:34 +0000 (UTC)
Author: matthiasc
Date: Wed May 28 01:43:34 2008
New Revision: 20203
URL: http://svn.gnome.org/viewvc/gtk+?rev=20203&view=rev
Log:
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.
Modified:
trunk/ChangeLog
trunk/modules/printbackends/cups/gtkprintbackendcups.c
Modified: trunk/modules/printbackends/cups/gtkprintbackendcups.c
==============================================================================
--- trunk/modules/printbackends/cups/gtkprintbackendcups.c (original)
+++ trunk/modules/printbackends/cups/gtkprintbackendcups.c Wed May 28 01:43:34 2008
@@ -307,11 +307,30 @@
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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]