summaryrefslogtreecommitdiff
path: root/gs/contrib
diff options
context:
space:
mode:
authorTill Kamppeter <till.kamppeter@gmail.com>2009-07-27 16:59:50 +0000
committerTill Kamppeter <till.kamppeter@gmail.com>2009-07-27 16:59:50 +0000
commit13626b7b8c8f399b686bdcd2c532309abedab28a (patch)
treef89fbfe60579a20f2c711fc5c341c85b00c999e3 /gs/contrib
parent6b41fc0d11b3db41c8a64b365fd1314dac33b922 (diff)
Update of the Esc/Page laser printer drivers from Epson and Avasys, new output devices "eplmono" and "eplcolor", and new media types.
git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@9893 a1074d23-0009-0410-80fe-cf8c14f379e6
Diffstat (limited to 'gs/contrib')
-rw-r--r--gs/contrib/contrib.mak5
-rw-r--r--gs/contrib/eplaser/gdevescv.c144
-rw-r--r--gs/contrib/eplaser/gdevescv.h14
3 files changed, 150 insertions, 13 deletions
diff --git a/gs/contrib/contrib.mak b/gs/contrib/contrib.mak
index e8c394934..83968efdc 100644
--- a/gs/contrib/contrib.mak
+++ b/gs/contrib/contrib.mak
@@ -483,6 +483,11 @@ $(DD)lp9600s.dev : $(escv_) $(DD)page.dev
$(DD)lps4500.dev : $(escv_) $(DD)page.dev
$(SETPDEV) $(DD)lps4500 $(escv_)
+$(DD)eplcolor.dev: $(escv_) $(DD)page.dev
+ $(SETPDEV) $(DD)eplcolor $(escv_)
+
+$(DD)eplmono.dev: $(escv_) $(DD)page.dev
+ $(SETPDEV) $(DD)eplmono $(escv_)
# ------ The Lexmark 5700 and 7000 devices ------ #
diff --git a/gs/contrib/eplaser/gdevescv.c b/gs/contrib/eplaser/gdevescv.c
index c17dfd115..60060f684 100644
--- a/gs/contrib/eplaser/gdevescv.c
+++ b/gs/contrib/eplaser/gdevescv.c
@@ -1,5 +1,5 @@
/* Copyright (C) EPSON SOFTWARE DEVELOPMENT LABORATORY, INC. 1999,2000.
- Copyright (C) SEIKO EPSON CORPORATION 2000-2006.
+ Copyright (C) SEIKO EPSON CORPORATION 2000-2006,2009.
Ghostscript printer driver for EPSON ESC/Page and ESC/Page-Color.
@@ -268,7 +268,11 @@ gs_public_st_suffix_add0_final(st_device_escv, gx_device_escv,
{0,0,0}, /* gs_param_string gpsUserName; */\
{0,0,0}, /* gs_param_string gpsHostName; */\
{0,0,0}, /* gs_param_string gpsDocument; */\
- {0,0,0} /* gs_param_string gpsComment; */
+ {0,0,0}, /* gs_param_string gpsComment; */\
+ false, /* bool modelJP; */\
+ false, /* bool capFaceUp; */\
+ false, /* bool capDuplexUnit; */\
+ RES600 /* int capMaxResolution; */
/* for ESC/Page-Color */
@@ -318,6 +322,7 @@ gx_device_escv far_data gs_lp9400_device ={esmv_device_body("lp9400"), esmv_pr
gx_device_escv far_data gs_lp9600_device ={esmv_device_body("lp9600"), esmv_procs, esmv_init_code};
gx_device_escv far_data gs_lp9600s_device ={esmv_device_body("lp9600s"), esmv_procs, esmv_init_code};
gx_device_escv far_data gs_lps4500_device ={esmv_device_body("lps4500"), esmv_procs, esmv_init_code};
+gx_device_escv far_data gs_eplmono_device ={esmv_device_body(ESCPAGE_DEVICENAME_MONO), esmv_procs, esmv_init_code};
/* for ESC/Page-Color */
gx_device_escv far_data gs_alc1900_device ={escv_device_body("alc1900"), escv_procs, escv_init_code};
@@ -338,6 +343,7 @@ gx_device_escv far_data gs_lp9200c_device ={escv_device_body("lp9200c"), escv_pr
gx_device_escv far_data gs_lp9500c_device ={escv_device_body("lp9500c"), escv_procs, escv_init_code};
gx_device_escv far_data gs_lp9800c_device ={escv_device_body("lp9800c"), escv_procs, escv_init_code};
gx_device_escv far_data gs_lps6500_device ={escv_device_body("lps6500"), escv_procs, escv_init_code};
+gx_device_escv far_data gs_eplcolor_device ={escv_device_body(ESCPAGE_DEVICENAME_COLOR), escv_procs, escv_init_code};
/* Vector device implementation */
@@ -1043,8 +1049,26 @@ escv_beginpage(gx_device_vector * vdev)
}
lputs(s, "\"\012");
- lputs(s, "@EJL JI DRIVER=\"");
- {
+
+ if ( ( 0 == strcmp( pdev->dname, ESCPAGE_DEVICENAME_COLOR ) ) ||
+ ( 0 == strcmp( pdev->dname, ESCPAGE_DEVICENAME_MONO ) ) )
+ {
+ Local = pdev->modelJP;
+ FaceUp = pdev->capFaceUp;
+ Duplex = pdev->capDuplexUnit;
+ MaxRes = pdev->capMaxResolution;
+
+ lputs(s, "@EJL JI DRIVER=\"");
+ lputs(s, pdev->dname);
+ lputs(s, "\"\012");
+
+ lputs(s, "@EJL JI PRINTER=\"");
+ lputs(s, pdev->dname);
+ lputs(s, "\"\012");
+
+ } else {
+
+
char _modelname[ ESCPAGE_MODELNAME_MAX + 1 ] = {0,};
const char *modelname;
int i;
@@ -1056,6 +1080,7 @@ escv_beginpage(gx_device_vector * vdev)
break;
}
+ lputs(s, "@EJL JI DRIVER=\"");
if ( (-1) != model_resource[i].resolution ) {
MaxRes = model_resource[i].resolution;
Local = model_resource[i].locale;
@@ -1185,10 +1210,16 @@ escv_beginpage(gx_device_vector * vdev)
lputs(s, " RI=ON");
}
- if (pdev->MediaType == 1) {
- lputs(s, " PK=TH");
- } else if (pdev->MediaType == 2) {
- lputs(s, " PK=TR");
+ if (pdev->MediaType == 0) { lputs(s, " PK=NM");
+ } else if (pdev->MediaType == 1) { lputs(s, " PK=TH");
+ } else if (pdev->MediaType == 2) { lputs(s, " PK=TR");
+ } else if (pdev->MediaType == 3) { lputs(s, " PK=TN");
+ } else if (pdev->MediaType == 4) { lputs(s, " PK=LH");
+ } else if (pdev->MediaType == 5) { lputs(s, " PK=CT");
+ } else if (pdev->MediaType == 6) { lputs(s, " PK=ET");
+ } else if (pdev->MediaType == 7) { lputs(s, " PK=HQ");
+ } else if (pdev->MediaType == 8) { lputs(s, " PK=UT");
+ } else if (pdev->MediaType == 9) { lputs(s, " PK=UM");
} else {
lputs(s, " PK=NM");
}
@@ -1836,6 +1867,18 @@ escv_get_params(gx_device * dev, gs_param_list * plist)
code = gdev_vector_get_params(dev, plist);
if (code < 0) return code;
+ if ((ncode = param_write_bool(plist, ESCPAGE_OPTION_EPLModelJP, &pdev->modelJP)) < 0)
+ code = ncode;
+
+ if ((ncode = param_write_bool(plist, ESCPAGE_OPTION_EPLCapFaceUp, &pdev->capFaceUp)) < 0)
+ code = ncode;
+
+ if ((ncode = param_write_bool(plist, ESCPAGE_OPTION_EPLCapDuplexUnit, &pdev->capDuplexUnit)) < 0)
+ code = ncode;
+
+ if ((ncode = param_write_int(plist, ESCPAGE_OPTION_EPLCapMaxResolution, &pdev->capMaxResolution)) < 0)
+ code = ncode;
+
if ((ncode = param_write_bool(plist, ESCPAGE_OPTION_MANUALFEED, &pdev->manualFeed)) < 0)
code = ncode;
@@ -1923,6 +1966,10 @@ escv_put_params(gx_device * dev, gs_param_list * plist)
bool RITOff = pdev->RITOff;
int old_bpp = dev->color_info.depth;
int bpp = 0;
+ bool modelJP = false;
+ bool capFaceUp = false;
+ bool capDuplexUnit = false;
+ int capMaxResolution = 0;
ecode = escv_set_str_param( plist, ESCPAGE_OPTION_JOBID, pdev->JobID, ESCPAGE_JOBID_MAX, ecode );
ecode = escv_set_str_param( plist, ESCPAGE_OPTION_USERNAME, pdev->UserName, ESCPAGE_USERNAME_MAX, ecode );
@@ -1930,6 +1977,55 @@ escv_put_params(gx_device * dev, gs_param_list * plist)
ecode = escv_set_str_param( plist, ESCPAGE_OPTION_DOCUMENT, pdev->Document, ESCPAGE_DOCUMENT_MAX, ecode );
ecode = escv_set_str_param( plist, ESCPAGE_OPTION_COMMENT, pdev->Comment, ESCPAGE_COMMENT_MAX, ecode );
+
+ modelJP = pdev->modelJP;
+ param_name = ESCPAGE_OPTION_EPLModelJP;
+ code = param_read_bool(plist, param_name, &modelJP);
+ if (code < 0) {
+ ecode = code;
+ param_signal_error(plist, param_name, ecode);
+ }
+
+ capFaceUp = pdev->capFaceUp;
+ param_name = ESCPAGE_OPTION_EPLCapFaceUp;
+ code = param_read_bool(plist, param_name, &capFaceUp);
+ if (code < 0) {
+ ecode = code;
+ param_signal_error(plist, param_name, ecode);
+ }
+
+ capDuplexUnit = pdev->capDuplexUnit;
+ param_name = ESCPAGE_OPTION_EPLCapDuplexUnit;
+ code = param_read_bool(plist, param_name, &capDuplexUnit);
+ if (code < 0) {
+ ecode = code;
+ param_signal_error(plist, param_name, ecode);
+ }
+
+ capMaxResolution = pdev->capMaxResolution;
+ param_name = ESCPAGE_OPTION_EPLCapMaxResolution;
+ code = param_read_int(plist, param_name, &capMaxResolution);
+ switch ( code )
+ {
+ case 1:
+ break;
+
+ case 0:
+ if ( ( 600 != capMaxResolution ) &&
+ ( 1200 != capMaxResolution ) ) {
+ ecode = gs_error_limitcheck;
+ goto maxrese;
+ }
+ break;
+
+ default:
+ ecode = code;
+ /* through */
+ maxrese:
+ param_signal_error(plist, param_name, ecode);
+ break;
+ }
+
if ((code = param_read_bool(plist, (param_name = ESCPAGE_OPTION_MANUALFEED), &mf)) < 0) {
param_signal_error(plist, param_name, ecode = code);
}
@@ -1961,10 +2057,28 @@ escv_put_params(gx_device * dev, gs_param_list * plist)
ecode = gs_error_limitcheck;
else { /* Check the validity of ``MediaType'' characters */
- if (strcmp(pmedia.data, "TRANS") == 0) {
- pdev->MediaType = 2;
- } else if (strcmp(pmedia.data, "THICK") == 0) {
+ if (strcmp(pmedia.data, "NM") == 0) {
+ pdev->MediaType = 0;
+ } else if ((strcmp(pmedia.data, "THICK") == 0) ||
+ (strcmp(pmedia.data, "TH") == 0)) {
pdev->MediaType = 1;
+ } else if ((strcmp(pmedia.data, "TRANS") == 0) ||
+ (strcmp(pmedia.data, "TR") == 0)) {
+ pdev->MediaType = 2;
+ } else if (strcmp(pmedia.data, "TN") == 0) {
+ pdev->MediaType = 3;
+ } else if (strcmp(pmedia.data, "LH") == 0) {
+ pdev->MediaType = 4;
+ } else if (strcmp(pmedia.data, "CT") == 0) {
+ pdev->MediaType = 5;
+ } else if (strcmp(pmedia.data, "ET") == 0) {
+ pdev->MediaType = 6;
+ } else if (strcmp(pmedia.data, "HQ") == 0) {
+ pdev->MediaType = 7;
+ } else if (strcmp(pmedia.data, "UT") == 0) {
+ pdev->MediaType = 8;
+ } else if (strcmp(pmedia.data, "UM") == 0) {
+ pdev->MediaType = 9;
} else {
ecode = gs_error_rangecheck;
goto pmediae;
@@ -1974,7 +2088,8 @@ escv_put_params(gx_device * dev, gs_param_list * plist)
goto pmediae;
default:
ecode = code;
- pmediae:param_signal_error(plist, param_name, ecode);
+ pmediae:
+ param_signal_error(plist, param_name, ecode);
case 1:
if(!pdev->MediaType){
pdev->MediaType = 0;
@@ -2055,6 +2170,11 @@ escv_put_params(gx_device * dev, gs_param_list * plist)
code = gdev_vector_put_params(dev, plist);
if (code < 0) return code;
+ pdev->modelJP = modelJP;
+ pdev->capFaceUp = capFaceUp;
+ pdev->capDuplexUnit = capDuplexUnit;
+ pdev->capMaxResolution = capMaxResolution;
+
pdev->manualFeed = mf;
pdev->cassetFeed = cass;
pdev->faceup = faceup;
diff --git a/gs/contrib/eplaser/gdevescv.h b/gs/contrib/eplaser/gdevescv.h
index 482a65fe4..6782c95fc 100644
--- a/gs/contrib/eplaser/gdevescv.h
+++ b/gs/contrib/eplaser/gdevescv.h
@@ -1,5 +1,5 @@
/* Copyright (C) EPSON SOFTWARE DEVELOPMENT LABORATORY, INC. 1999,2000.
- Copyright (C) SEIKO EPSON CORPORATION 2000-2006.
+ Copyright (C) SEIKO EPSON CORPORATION 2000-2006,2009.
Ghostscript printer driver for EPSON ESC/Page and ESC/Page-Color.
@@ -66,6 +66,10 @@
#define ESCPAGE_OPTION_DOCUMENT "Document"
#define ESCPAGE_OPTION_HOSTNAME "HostName"
#define ESCPAGE_OPTION_COMMENT "eplComment"
+#define ESCPAGE_OPTION_EPLModelJP "EPLModelJP"
+#define ESCPAGE_OPTION_EPLCapFaceUp "EPLCapFaceUp"
+#define ESCPAGE_OPTION_EPLCapDuplexUnit "EPLCapDuplexUnit"
+#define ESCPAGE_OPTION_EPLCapMaxResolution "EPLCapMaxResolution"
#define ESCPAGE_JOBID_MAX 255
#define ESCPAGE_USERNAME_MAX 255
@@ -102,6 +106,10 @@
#define Y_DPI 600
#define VCACHE 0x3FF
+#define ESCPAGE_DEVICENAME_COLOR "eplcolor"
+#define ESCPAGE_DEVICENAME_MONO "eplmono"
+
+
/* ---------------- Device definition ---------------- */
typedef struct gx_device_escv_s {
@@ -160,6 +168,10 @@ typedef struct gx_device_escv_s {
gs_param_string gpsHostName;
gs_param_string gpsDocument;
gs_param_string gpsComment;
+ bool modelJP;
+ bool capFaceUp;
+ bool capDuplexUnit;
+ int capMaxResolution;
} gx_device_escv;
typedef struct EPaperTable_s{