]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blobdiff - cups/patches/cups-page-label.patch
Move all packages to root.
[people/ms/ipfire-3.x.git] / cups / patches / cups-page-label.patch
diff --git a/cups/patches/cups-page-label.patch b/cups/patches/cups-page-label.patch
new file mode 100644 (file)
index 0000000..220b31d
--- /dev/null
@@ -0,0 +1,92 @@
+diff -up cups-1.4.5/filter/pstops.c.page-label cups-1.4.5/filter/pstops.c
+--- cups-1.4.5/filter/pstops.c.page-label      2010-08-31 20:36:08.000000000 +0200
++++ cups-1.4.5/filter/pstops.c 2010-11-12 13:11:11.000000000 +0100
+@@ -108,6 +108,7 @@ typedef struct                             /**** Document informa
+   int         num_options;            /* Number of document-wide options */
+   cups_option_t       *options;               /* Document-wide options */
+   int         normal_landscape,       /* Normal rotation for landscape? */
++              orientation,            /* Original orientation of the document */
+               saw_eof,                /* Saw the %%EOF comment? */
+               slow_collate,           /* Collate copies by hand? */
+               slow_duplex,            /* Duplex pages slowly? */
+@@ -2083,7 +2084,7 @@ do_setup(pstops_doc_t *doc,              /* I - Docu
+     * of the pages...
+     */
+-    if (Orientation & 1)
++    if (doc->orientation & 1)
+       write_label_prolog(doc, doc->page_label, PageBottom,
+                          PageWidth - PageLength + PageTop, PageLength);
+     else
+@@ -2091,7 +2092,30 @@ do_setup(pstops_doc_t *doc,             /* I - Docu
+                          PageLength);
+   }
+   else
+-    write_label_prolog(doc, doc->page_label, PageBottom, PageTop, PageWidth);
++  {
++    switch (doc->orientation)
++    {
++      case 0 :
++        write_label_prolog(doc, doc->page_label, PageBottom, PageTop, 
++                             PageWidth);
++          break;
++
++      case 1 :
++        write_label_prolog(doc, doc->page_label, PageLeft, PageRight, 
++                             PageLength);
++          break;
++
++      case 2 :
++        write_label_prolog(doc, doc->page_label, PageLength - PageTop, 
++                             PageLength - PageBottom, PageWidth);
++          break;
++
++      case 3 :
++        write_label_prolog(doc, doc->page_label, PageWidth - PageRight, 
++                             PageWidth - PageLeft, PageLength);
++          break;
++    }
++  }
+ }
+@@ -2176,7 +2200,7 @@ end_nup(pstops_doc_t *doc,               /* I - Docum
+     case 1 :
+       if (doc->use_ESPshowpage)
+       {
+-        write_labels(doc, Orientation);
++        write_labels(doc, doc->orientation);
+           doc_puts(doc, "ESPshowpage\n");
+       }
+       break;
+@@ -2191,7 +2215,7 @@ end_nup(pstops_doc_t *doc,               /* I - Docum
+           * Rotate the labels back to portrait...
+           */
+-          write_labels(doc, Orientation - 1);
++          write_labels(doc, doc->orientation - 1);
+         }
+         else if (Orientation == 0)
+         {
+@@ -2217,7 +2241,7 @@ end_nup(pstops_doc_t *doc,               /* I - Docum
+     default :
+       if (is_last_page(number) && doc->use_ESPshowpage)
+       {
+-        write_labels(doc, Orientation);
++        write_labels(doc, doc->orientation);
+           doc_puts(doc, "ESPshowpage\n");
+       }
+         break;
+@@ -2433,6 +2457,12 @@ set_pstops_options(
+     Orientation = 0;
+  /*
++  * Save original orientation of the document
++  */
++
++  doc->orientation = Orientation;
++
++ /*
+   * AP_FIRSTPAGE_* and the corresponding non-first-page options.
+   */