gtk+ r20203 - in trunk: . modules/printbackends/cups



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]