|
|
993c09 |
From af6cb84ce3a0b3c26e064dbf0d7514b9260f2ef2 Mon Sep 17 00:00:00 2001
|
|
|
993c09 |
From: Till Kamppeter <till.kamppeter@gmail.com>
|
|
|
993c09 |
Date: Fri, 23 Sep 2016 17:17:19 -0300
|
|
|
993c09 |
Subject: [PATCH] pxlcolor/pxlmono output devices: Make MediaPosition,
|
|
|
993c09 |
ManualFeed, and MediaType work
|
|
|
993c09 |
|
|
|
993c09 |
In the pxlcolor and pxlmono output devices (for PCL-XL printers) the
|
|
|
993c09 |
support for the attributes MediaPosition, ManualFeed, and MediaType
|
|
|
993c09 |
got broken when ESP Ghostscript got merged into GPL Ghostscript (Bug
|
|
|
993c09 |
---
|
|
|
993c09 |
base/gdevpx.c | 60 +++++++++++++++++++++++++++++++++++++++--------------------
|
|
|
993c09 |
1 file changed, 40 insertions(+), 20 deletions(-)
|
|
|
993c09 |
|
|
|
993c09 |
diff --git a/base/gdevpx.c b/base/gdevpx.c
|
|
|
993c09 |
index 8647332..82a3af1 100644
|
|
|
993c09 |
--- a/base/gdevpx.c
|
|
|
993c09 |
+++ b/base/gdevpx.c
|
|
|
993c09 |
@@ -1394,12 +1394,6 @@ pclxl_open_device(gx_device * dev)
|
|
|
993c09 |
xdev->media_size = pxeMediaSize_next; /* no size selected */
|
|
|
993c09 |
memset(&xdev->chars, 0, sizeof(xdev->chars));
|
|
|
993c09 |
xdev->chars.next_in = xdev->chars.next_out = 2;
|
|
|
993c09 |
- xdev->MediaPosition_set = false;
|
|
|
993c09 |
- xdev->MediaType_set = false;
|
|
|
993c09 |
- xdev->MediaPosition_old = eAutoSelect;
|
|
|
993c09 |
- xdev->MediaPosition = eAutoSelect;
|
|
|
993c09 |
- xdev->MediaType_old[0] = '\0';
|
|
|
993c09 |
- xdev->MediaType[0] = '\0';
|
|
|
993c09 |
return 0;
|
|
|
993c09 |
}
|
|
|
993c09 |
|
|
|
993c09 |
@@ -2185,17 +2179,18 @@ pclxl_get_params(gx_device *dev, /* I - Device info */
|
|
|
993c09 |
if ((code = param_write_bool(plist, "Duplex", &(xdev->Duplex))) < 0)
|
|
|
993c09 |
return (code);
|
|
|
993c09 |
|
|
|
993c09 |
- if (xdev->MediaPosition_set)
|
|
|
993c09 |
+ if ((code = param_write_bool(plist, "ManualFeed",
|
|
|
993c09 |
+ &(xdev->ManualFeed))) < 0)
|
|
|
993c09 |
+ return (code);
|
|
|
993c09 |
+
|
|
|
993c09 |
if ((code = param_write_int(plist, "MediaPosition",
|
|
|
993c09 |
&(xdev->MediaPosition))) < 0)
|
|
|
993c09 |
return (code);
|
|
|
993c09 |
|
|
|
993c09 |
- if (xdev->MediaType_set) {
|
|
|
993c09 |
if ((code = param_string_from_string(s, xdev->MediaType)) < 0)
|
|
|
993c09 |
return (code);
|
|
|
993c09 |
if ((code = param_write_string(plist, "MediaType", &s)) < 0)
|
|
|
993c09 |
return (code);
|
|
|
993c09 |
- }
|
|
|
993c09 |
|
|
|
993c09 |
if ((code = param_write_bool(plist, "Tumble", &(xdev->Tumble))) < 0)
|
|
|
993c09 |
return (code);
|
|
|
993c09 |
@@ -2220,6 +2215,10 @@ pclxl_put_params(gx_device *dev, /* I - Device info */
|
|
|
993c09 |
int intval; /* Integer value */
|
|
|
993c09 |
bool boolval; /* Boolean value */
|
|
|
993c09 |
gs_param_string stringval; /* String value */
|
|
|
993c09 |
+ bool ManualFeed;
|
|
|
993c09 |
+ bool ManualFeed_set = false;
|
|
|
993c09 |
+ int MediaPosition;
|
|
|
993c09 |
+ bool MediaPosition_set = false;
|
|
|
993c09 |
|
|
|
993c09 |
/*
|
|
|
993c09 |
* Process PCL-XL driver parameters...
|
|
|
993c09 |
@@ -2287,15 +2286,19 @@ pclxl_put_params(gx_device *dev, /* I - Device info */
|
|
|
993c09 |
if_debug0('|', "round up page count\n");
|
|
|
993c09 |
xdev->page = (xdev->page+1) & ~1 ;
|
|
|
993c09 |
}
|
|
|
993c09 |
- intoption(MediaPosition, "MediaPosition", int)
|
|
|
993c09 |
- if (code == 0) {
|
|
|
993c09 |
- xdev->MediaPosition_set = true;
|
|
|
993c09 |
- /* round up for duplex */
|
|
|
993c09 |
- if (xdev->MediaPosition_old != xdev->MediaPosition) {
|
|
|
993c09 |
- if_debug0('|', "round up page count\n");
|
|
|
993c09 |
- xdev->page = (xdev->page+1) & ~1 ;
|
|
|
993c09 |
- xdev->MediaPosition_old = xdev->MediaPosition;
|
|
|
993c09 |
- }
|
|
|
993c09 |
+
|
|
|
993c09 |
+ code = param_read_bool(plist, "ManualFeed", &ManualFeed);
|
|
|
993c09 |
+ if (code == 0)
|
|
|
993c09 |
+ ManualFeed_set = true;
|
|
|
993c09 |
+ if (code >= 0) {
|
|
|
993c09 |
+ code = param_read_int(plist, "MediaPosition", &MediaPosition);
|
|
|
993c09 |
+ if (code == 0)
|
|
|
993c09 |
+ MediaPosition_set = true;
|
|
|
993c09 |
+ else if (code < 0) {
|
|
|
993c09 |
+ if (param_read_null(plist, "MediaPosition") == 0) {
|
|
|
993c09 |
+ code = 0;
|
|
|
993c09 |
+ }
|
|
|
993c09 |
+ }
|
|
|
993c09 |
}
|
|
|
993c09 |
stringoption(MediaType, "MediaType")
|
|
|
993c09 |
if (code == 0) {
|
|
|
993c09 |
@@ -2314,8 +2317,25 @@ pclxl_put_params(gx_device *dev, /* I - Device info */
|
|
|
993c09 |
* Then process standard page device parameters...
|
|
|
993c09 |
*/
|
|
|
993c09 |
|
|
|
993c09 |
- if ((code = gdev_vector_put_params(dev, plist)) < 0)
|
|
|
993c09 |
- return (code);
|
|
|
993c09 |
+ if (code >= 0)
|
|
|
993c09 |
+ if ((code = gdev_vector_put_params(dev, plist)) < 0)
|
|
|
993c09 |
+ return (code);
|
|
|
993c09 |
+
|
|
|
993c09 |
+ if (code >= 0) {
|
|
|
993c09 |
+ if (ManualFeed_set) {
|
|
|
993c09 |
+ xdev->ManualFeed = ManualFeed;
|
|
|
993c09 |
+ xdev->ManualFeed_set = true;
|
|
|
993c09 |
+ }
|
|
|
993c09 |
+ if (MediaPosition_set) {
|
|
|
993c09 |
+ xdev->MediaPosition = MediaPosition;
|
|
|
993c09 |
+ xdev->MediaPosition_set = true;
|
|
|
993c09 |
+ if (xdev->MediaPosition_old != xdev->MediaPosition) {
|
|
|
993c09 |
+ if_debug0('|', "round up page count\n");
|
|
|
993c09 |
+ xdev->page = (xdev->page+1) & ~1 ;
|
|
|
993c09 |
+ xdev->MediaPosition_old = xdev->MediaPosition;
|
|
|
993c09 |
+ }
|
|
|
993c09 |
+ }
|
|
|
993c09 |
+ }
|
|
|
993c09 |
|
|
|
993c09 |
return (0);
|
|
|
993c09 |
}
|
|
|
993c09 |
--
|
|
|
993c09 |
2.14.3
|
|
|
993c09 |
|