summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDidier Raboud <odyx@debian.org>2015-08-09 14:40:26 +0200
committerDidier Raboud <odyx@debian.org>2015-08-09 14:40:26 +0200
commit92976f71a4aa7f84cd8aadf013d2b03873dead7c (patch)
treecf693495783f07f67a0a2c8c12437fd6ed220593 /src
parent58b4abe145a14a936e420a3ba5b7d0c6c56fa839 (diff)
Imported Upstream version 5.2.11~pre1
Diffstat (limited to 'src')
-rw-r--r--src/cups/Makefile.am4
-rw-r--r--src/cups/Makefile.in37
-rw-r--r--src/cups/backend_common.c101
-rw-r--r--src/cups/backend_common.h23
-rw-r--r--src/cups/blacklist31
-rw-r--r--src/cups/citizencw01_print.c918
-rw-r--r--src/cups/cups-genppdupdate.in30
-rw-r--r--src/cups/dnpds40_print.c1092
-rw-r--r--src/cups/genppd.c6
-rw-r--r--src/cups/kodak1400_print.c57
-rw-r--r--src/cups/kodak605_print.c98
-rw-r--r--src/cups/kodak6800_print.c719
-rw-r--r--src/cups/mitsu70x_print.c638
-rw-r--r--src/cups/mitsu9550_print.c1013
-rw-r--r--src/cups/selphy_print.c107
-rw-r--r--src/cups/shinko_s2145_print.c512
-rw-r--r--src/cups/sony_updr150_print.c135
-rw-r--r--[-rwxr-xr-x]src/cups/test-ppds2
-rwxr-xr-xsrc/cups/test-rastertogutenprint.in38
-rw-r--r--src/foomatic/foomatic-generator.in64
-rw-r--r--src/main/Makefile.am2
-rw-r--r--src/main/canon-inks.h134
-rw-r--r--src/main/canon-media-mode.h2149
-rw-r--r--src/main/canon-media.h267
-rw-r--r--src/main/canon-modes.h844
-rw-r--r--src/main/canon-printers.h570
-rw-r--r--src/main/print-canon.c98
-rw-r--r--src/main/print-olympus.c1528
-rw-r--r--src/main/print-pcl.c284
-rw-r--r--src/main/print-util.c6
-rw-r--r--src/main/printers.c48
-rw-r--r--src/testpattern/run-testpattern-2.in2
-rw-r--r--src/testpattern/testpattern.c4
-rw-r--r--src/xml/papers.xml292
-rw-r--r--src/xml/printers.xml1713
35 files changed, 10567 insertions, 2999 deletions
diff --git a/src/cups/Makefile.am b/src/cups/Makefile.am
index ec2e01d..7bd6cd9 100644
--- a/src/cups/Makefile.am
+++ b/src/cups/Makefile.am
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.148 2014/03/27 22:37:09 speachy Exp $
+## $Id: Makefile.am,v 1.150 2015/01/10 14:27:55 speachy Exp $
## Copyright (C) 2000 Roger Leigh
##
## This program is free software; you can redistribute it and/or modify
@@ -115,7 +115,7 @@ commandtoepson_SOURCES = commandtoepson.c
commandtoepson_LDADD = $(CUPS_LIBS)
if BUILD_LIBUSB_BACKENDS
-backend_gutenprint_SOURCES = selphy_print.c kodak1400_print.c kodak6800_print.c kodak605_print.c shinko_s2145_print.c sony_updr150_print.c dnpds40_print.c mitsu70x_print.c backend_common.c backend_common.h
+backend_gutenprint_SOURCES = selphy_print.c kodak1400_print.c kodak6800_print.c kodak605_print.c shinko_s2145_print.c sony_updr150_print.c dnpds40_print.c mitsu70x_print.c citizencw01_print.c mitsu9550_print.c backend_common.c backend_common.h
backend_gutenprint_LDADD = $(LIBUSB_LIBS)
backend_gutenprint_CPPFLAGS = $(LIBUSB_CFLAGS) -DURI_PREFIX=\"gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb\" -DLIBUSB_PRE_1_0_10
diff --git a/src/cups/Makefile.in b/src/cups/Makefile.in
index 25bfd1a..c5b156b 100644
--- a/src/cups/Makefile.in
+++ b/src/cups/Makefile.in
@@ -128,7 +128,8 @@ PROGRAMS = $(bin_PROGRAMS) $(cupsexec_backend_PROGRAMS) \
am__backend_gutenprint_SOURCES_DIST = selphy_print.c kodak1400_print.c \
kodak6800_print.c kodak605_print.c shinko_s2145_print.c \
sony_updr150_print.c dnpds40_print.c mitsu70x_print.c \
- backend_common.c backend_common.h
+ citizencw01_print.c mitsu9550_print.c backend_common.c \
+ backend_common.h
@BUILD_LIBUSB_BACKENDS_TRUE@am_backend_gutenprint_OBJECTS = backend_gutenprint-selphy_print.$(OBJEXT) \
@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-kodak1400_print.$(OBJEXT) \
@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-kodak6800_print.$(OBJEXT) \
@@ -137,6 +138,8 @@ am__backend_gutenprint_SOURCES_DIST = selphy_print.c kodak1400_print.c \
@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-sony_updr150_print.$(OBJEXT) \
@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-dnpds40_print.$(OBJEXT) \
@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-mitsu70x_print.$(OBJEXT) \
+@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-citizencw01_print.$(OBJEXT) \
+@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-mitsu9550_print.$(OBJEXT) \
@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_common.$(OBJEXT)
backend_gutenprint_OBJECTS = $(am_backend_gutenprint_OBJECTS)
am__DEPENDENCIES_1 =
@@ -716,7 +719,7 @@ commandtocanon_SOURCES = commandtocanon.c
commandtocanon_LDADD = $(CUPS_LIBS)
commandtoepson_SOURCES = commandtoepson.c
commandtoepson_LDADD = $(CUPS_LIBS)
-@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_SOURCES = selphy_print.c kodak1400_print.c kodak6800_print.c kodak605_print.c shinko_s2145_print.c sony_updr150_print.c dnpds40_print.c mitsu70x_print.c backend_common.c backend_common.h
+@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_SOURCES = selphy_print.c kodak1400_print.c kodak6800_print.c kodak605_print.c shinko_s2145_print.c sony_updr150_print.c dnpds40_print.c mitsu70x_print.c citizencw01_print.c mitsu9550_print.c backend_common.c backend_common.h
@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_LDADD = $(LIBUSB_LIBS)
@BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_CPPFLAGS = $(LIBUSB_CFLAGS) -DURI_PREFIX=\"gutenprint$(GUTENPRINT_MAJOR_VERSION)$(GUTENPRINT_MINOR_VERSION)+usb\" -DLIBUSB_PRE_1_0_10
cups_genppd_@GUTENPRINT_RELEASE_VERSION@_SOURCES = genppd.c i18n.c i18n.h
@@ -1106,11 +1109,13 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-backend_common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-citizencw01_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-dnpds40_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-kodak1400_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-kodak605_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-kodak6800_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-mitsu70x_print.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-mitsu9550_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-selphy_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-shinko_s2145_print.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-sony_updr150_print.Po@am__quote@
@@ -1257,6 +1262,34 @@ backend_gutenprint-mitsu70x_print.obj: mitsu70x_print.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-mitsu70x_print.obj `if test -f 'mitsu70x_print.c'; then $(CYGPATH_W) 'mitsu70x_print.c'; else $(CYGPATH_W) '$(srcdir)/mitsu70x_print.c'; fi`
+backend_gutenprint-citizencw01_print.o: citizencw01_print.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-citizencw01_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-citizencw01_print.Tpo -c -o backend_gutenprint-citizencw01_print.o `test -f 'citizencw01_print.c' || echo '$(srcdir)/'`citizencw01_print.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-citizencw01_print.Tpo $(DEPDIR)/backend_gutenprint-citizencw01_print.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='citizencw01_print.c' object='backend_gutenprint-citizencw01_print.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-citizencw01_print.o `test -f 'citizencw01_print.c' || echo '$(srcdir)/'`citizencw01_print.c
+
+backend_gutenprint-citizencw01_print.obj: citizencw01_print.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-citizencw01_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-citizencw01_print.Tpo -c -o backend_gutenprint-citizencw01_print.obj `if test -f 'citizencw01_print.c'; then $(CYGPATH_W) 'citizencw01_print.c'; else $(CYGPATH_W) '$(srcdir)/citizencw01_print.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-citizencw01_print.Tpo $(DEPDIR)/backend_gutenprint-citizencw01_print.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='citizencw01_print.c' object='backend_gutenprint-citizencw01_print.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-citizencw01_print.obj `if test -f 'citizencw01_print.c'; then $(CYGPATH_W) 'citizencw01_print.c'; else $(CYGPATH_W) '$(srcdir)/citizencw01_print.c'; fi`
+
+backend_gutenprint-mitsu9550_print.o: mitsu9550_print.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-mitsu9550_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-mitsu9550_print.Tpo -c -o backend_gutenprint-mitsu9550_print.o `test -f 'mitsu9550_print.c' || echo '$(srcdir)/'`mitsu9550_print.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-mitsu9550_print.Tpo $(DEPDIR)/backend_gutenprint-mitsu9550_print.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mitsu9550_print.c' object='backend_gutenprint-mitsu9550_print.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-mitsu9550_print.o `test -f 'mitsu9550_print.c' || echo '$(srcdir)/'`mitsu9550_print.c
+
+backend_gutenprint-mitsu9550_print.obj: mitsu9550_print.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-mitsu9550_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-mitsu9550_print.Tpo -c -o backend_gutenprint-mitsu9550_print.obj `if test -f 'mitsu9550_print.c'; then $(CYGPATH_W) 'mitsu9550_print.c'; else $(CYGPATH_W) '$(srcdir)/mitsu9550_print.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-mitsu9550_print.Tpo $(DEPDIR)/backend_gutenprint-mitsu9550_print.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mitsu9550_print.c' object='backend_gutenprint-mitsu9550_print.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o backend_gutenprint-mitsu9550_print.obj `if test -f 'mitsu9550_print.c'; then $(CYGPATH_W) 'mitsu9550_print.c'; else $(CYGPATH_W) '$(srcdir)/mitsu9550_print.c'; fi`
+
backend_gutenprint-backend_common.o: backend_common.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-backend_common.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-backend_common.Tpo -c -o backend_gutenprint-backend_common.o `test -f 'backend_common.c' || echo '$(srcdir)/'`backend_common.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-backend_common.Tpo $(DEPDIR)/backend_gutenprint-backend_common.Po
diff --git a/src/cups/backend_common.c b/src/cups/backend_common.c
index 73c6dba..0a2aaba 100644
--- a/src/cups/backend_common.c
+++ b/src/cups/backend_common.c
@@ -1,7 +1,7 @@
/*
* CUPS Backend common code
*
- * Copyright (c) 2007-2014 Solomon Peachy <pizza@shaftnet.org>
+ * Copyright (c) 2007-2015 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@@ -27,7 +27,7 @@
#include "backend_common.h"
-#define BACKEND_VERSION "0.48G"
+#define BACKEND_VERSION "0.54G"
#ifndef URI_PREFIX
#error "Must Define URI_PREFIX"
#endif
@@ -48,6 +48,11 @@ static char *get_device_id(struct libusb_device_handle *dev)
int iface = 0;
char *buf = malloc(ID_BUF_SIZE + 1);
+ if (!buf) {
+ ERROR("Memory allocation failure (%d bytes)\n", ID_BUF_SIZE+1);
+ return NULL;
+ }
+
if (libusb_kernel_driver_active(dev, iface))
libusb_detach_kernel_driver(dev, iface);
@@ -180,11 +185,23 @@ int read_data(struct libusb_device_handle *dev, uint8_t endp,
goto done;
}
- if (dyesub_debug > 1) {
- int i;
+ if (dyesub_debug) {
+ DEBUG("Received %d bytes from printer\n", *readlen);
+ }
+
+ if ((dyesub_debug > 1 && buflen < 4096) ||
+ dyesub_debug > 2) {
+ int i = *readlen;
+
DEBUG("<- ");
- for (i = 0 ; i < *readlen; i++) {
- DEBUG2("%02x ", *(buf+i));
+ while(i > 0) {
+ if ((*readlen-i) != 0 &&
+ (*readlen-i) % 16 == 0) {
+ DEBUG2("\n");
+ DEBUG(" ");
+ }
+ DEBUG2("%02x ", buf[*readlen-i]);
+ i--;
}
DEBUG2("\n");
}
@@ -208,11 +225,19 @@ int send_data(struct libusb_device_handle *dev, uint8_t endp,
buf, len2,
&num, 15000);
- if (dyesub_debug > 1) {
- int i;
+ if ((dyesub_debug > 1 && len < 4096) ||
+ dyesub_debug > 2) {
+ int i = num;
+
DEBUG("-> ");
- for (i = 0 ; i < num; i++) {
- DEBUG2("%02x ", *(buf+i));
+ while(i > 0) {
+ if ((num-i) != 0 &&
+ (num-i) % 16 == 0) {
+ DEBUG2("\n");
+ DEBUG(" ");
+ }
+ DEBUG2("%02x ", buf[num-i]);
+ i--;
}
DEBUG2("\n");
}
@@ -267,6 +292,11 @@ static char from_hex(char ch) {
static char *url_encode(char *str) {
char *pstr = str, *buf = malloc(strlen(str) * 3 + 1), *pbuf = buf;
+ if (!buf) {
+ ERROR("Memory allocation failure (%d bytes)\n", (int) strlen(str)*3 + 1);
+ return NULL;
+ }
+
while (*pstr) {
if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~')
*pbuf++ = *pstr;
@@ -281,6 +311,12 @@ static char *url_encode(char *str) {
}
static char *url_decode(char *str) {
char *pstr = str, *buf = malloc(strlen(str) + 1), *pbuf = buf;
+
+ if (!buf) {
+ ERROR("Memory allocation failure (%d bytes)\n", (int) strlen(str) + 1);
+ return NULL;
+ }
+
while (*pstr) {
if (*pstr == '%') {
if (pstr[1] && pstr[2]) {
@@ -373,6 +409,11 @@ static int print_scan_output(struct libusb_device *device,
char *product2 = url_decode(product);
char *manuf3 = url_decode(manuf);
descr = malloc(256);
+ if (!descr) {
+ ERROR("Memory allocation failure (%d bytes)\n", 256);
+ return found;
+ }
+
sprintf(descr, "%s %s", manuf3, product2);
free(product2);
free(manuf3);
@@ -485,7 +526,9 @@ static struct dyesub_backend *backends[] = {
&shinkos2145_backend,
&updr150_backend,
&mitsu70x_backend,
+ &mitsu9550_backend,
&dnpds40_backend,
+ &cw01_backend,
NULL,
};
@@ -575,7 +618,7 @@ static struct dyesub_backend *find_backend(char *uri_prefix)
static void print_license_blurb(void)
{
const char *license = "\n\
-Copyright 2007-2014 Solomon Peachy <pizza AT shaftnet DOT org>\n\
+Copyright 2007-2015 Solomon Peachy <pizza AT shaftnet DOT org>\n\
\n\
This program is free software; you can redistribute it and/or modify it\n\
under the terms of the GNU General Public License as published by the Free\n\
@@ -590,7 +633,7 @@ for more details.\n\
You should have received a copy of the GNU General Public License\n\
along with this program; if not, write to the Free Software\n\
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n\
-\n [http://www.gnu.org/licenses/gpl-3.0.html]\n\n";
+\n [http://www.gnu.org/licenses/gpl-2.0.html]\n\n";
fprintf(stderr, "%s", license);
}
@@ -645,7 +688,7 @@ static void print_help(char *argv0, struct dyesub_backend *backend)
i = libusb_init(&ctx);
if (i) {
ERROR("Failed to initialize libusb (%d)\n", i);
- exit(4); /* CUPS_BACKEND_STOP */
+ exit(CUPS_BACKEND_STOP);
}
find_and_enumerate(ctx, &list, backend, NULL, P_ANY, 1);
libusb_free_device_list(list, 1);
@@ -671,7 +714,7 @@ int main (int argc, char **argv)
int claimed;
int backend_cmd = 0;
- int ret = 0;
+ int ret = CUPS_BACKEND_OK;
int iface = 0;
int found = -1;
int copies = 1;
@@ -684,7 +727,7 @@ int main (int argc, char **argv)
DEBUG("Multi-Call Dye-sublimation CUPS Backend version %s\n",
BACKEND_VERSION);
- DEBUG("Copyright 2007-2014 Solomon Peachy\n");
+ DEBUG("Copyright 2007-2015 Solomon Peachy\n");
DEBUG("This free software comes with ABSOLUTELY NO WARRANTY! \n");
DEBUG("Licensed under the GNU GPL. Run with '-G' for more details.\n");
DEBUG("\n");
@@ -717,7 +760,7 @@ int main (int argc, char **argv)
/* Reset arg parsing */
optind = 1;
opterr = 0;
- while ((i = getopt(argc, argv, "B:dDGhP:S:T:V:")) >= 0) {
+ while ((i = getopt(argc, argv, "B:d:DGhP:S:T:V:")) >= 0) {
switch(i) {
case 'B':
backend = find_backend(optarg);
@@ -877,7 +920,7 @@ int main (int argc, char **argv)
if (fname && backend->early_parse) {
printer_type = backend->early_parse(backend_ctx, data_fd);
if (printer_type < 0) {
- ret = 5; /* CUPS_BACKEND_CANCEL */
+ ret = CUPS_BACKEND_CANCEL;
goto done;
}
}
@@ -886,7 +929,7 @@ int main (int argc, char **argv)
ret = libusb_init(&ctx);
if (ret) {
ERROR("Failed to initialize libusb (%d)\n", ret);
- ret = 4;
+ ret = CUPS_BACKEND_STOP;
goto done;
}
@@ -896,13 +939,14 @@ int main (int argc, char **argv)
#if 1
if (found == -1) {
ERROR("Printer open failure (No suitable printers found!)\n");
- ret = 4; /* CUPS_BACKEND_STOP */
+ ret = CUPS_BACKEND_HOLD;
goto done;
}
ret = libusb_open(list[found], &dev);
if (ret) {
ERROR("Printer open failure (Need to be root?) (%d)\n", ret);
+ ret = CUPS_BACKEND_STOP;
goto done;
}
@@ -910,20 +954,23 @@ int main (int argc, char **argv)
if (claimed) {
ret = libusb_detach_kernel_driver(dev, iface);
if (ret) {
- ERROR("Printer open failure (Could not detach printer from kernel)\n");
+ ERROR("Printer open failure (Could not detach printer from kernel) (%d)\n", ret);
+ ret = CUPS_BACKEND_STOP;
goto done_close;
}
}
ret = libusb_claim_interface(dev, iface);
if (ret) {
- ERROR("Printer open failure (Could not claim printer interface)\n");
+ ERROR("Printer open failure (Could not claim printer interface) (%d)\n", ret);
+ ret = CUPS_BACKEND_STOP;
goto done_close;
}
ret = libusb_get_active_config_descriptor(list[found], &config);
if (ret) {
- ERROR("Printer open failure (Could not fetch config descriptor)\n");
+ ERROR("Printer open failure (Could not fetch config descriptor) (%d)\n", ret);
+ ret = CUPS_BACKEND_STOP;
goto done_close;
}
@@ -951,14 +998,12 @@ int main (int argc, char **argv)
newpage:
/* Do early parsing if needed for subsequent pages */
- if (pages && backend->early_parse) {
- ret = backend->early_parse(backend_ctx, data_fd);
- if (ret < 0)
+ if (pages && backend->early_parse &&
+ backend->early_parse(backend_ctx, data_fd) < 0)
goto done_multiple;
- }
/* Read in data */
- if (backend->read_parse(backend_ctx, data_fd)) {
+ if ((ret = backend->read_parse(backend_ctx, data_fd))) {
if (pages)
goto done_multiple;
else
@@ -981,7 +1026,7 @@ done_multiple:
/* Done printing */
INFO("All printing done (%d pages * %d copies)\n", pages, copies);
- ret = 0;
+ ret = CUPS_BACKEND_OK;
done_claimed:
libusb_release_interface(dev, iface);
diff --git a/src/cups/backend_common.h b/src/cups/backend_common.h
index 99f8297..1a5c9f1 100644
--- a/src/cups/backend_common.h
+++ b/src/cups/backend_common.h
@@ -1,7 +1,7 @@
/*
* CUPS Backend common code
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@@ -42,6 +42,9 @@
#define __BACKEND_COMMON_H
#define STR_LEN_MAX 64
+#define STATE( ... ) fprintf(stderr, "STATE: " __VA_ARGS__ )
+#define ATTR( ... ) fprintf(stderr, "ATTR: " __VA_ARGS__ )
+#define PAGE( ... ) fprintf(stderr, "PAGE: " __VA_ARGS__ )
#define DEBUG( ... ) fprintf(stderr, "DEBUG: " __VA_ARGS__ )
#define DEBUG2( ... ) fprintf(stderr, __VA_ARGS__ )
#define INFO( ... ) fprintf(stderr, "INFO: " __VA_ARGS__ )
@@ -98,10 +101,16 @@ enum {
P_KODAK_1400_805,
P_KODAK_605,
P_SHINKO_S2145,
+ P_SHINKO_S1245,
P_SONY_UPDR150,
+ P_SONY_UPCR10,
P_MITSU_D70X,
+ P_MITSU_9550,
P_DNP_DS40,
P_DNP_DS80,
+ P_CITIZEN_CW01,
+ P_DNP_DSRX1,
+ P_DNP_DS620,
P_END,
};
@@ -148,6 +157,18 @@ extern struct dyesub_backend kodak1400_backend;
extern struct dyesub_backend shinkos2145_backend;
extern struct dyesub_backend canonselphy_backend;
extern struct dyesub_backend mitsu70x_backend;
+extern struct dyesub_backend mitsu9550_backend;
extern struct dyesub_backend dnpds40_backend;
+extern struct dyesub_backend cw01_backend;
+
+/* CUPS compatibility */
+#define CUPS_BACKEND_OK 0 /* Sucess */
+#define CUPS_BACKEND_FAILED 1 /* Failed to print use CUPS policy */
+#define CUPS_BACKEND_AUTH_REQUIRED 2 /* Auth required */
+#define CUPS_BACKEND_HOLD 3 /* Hold this job only */
+#define CUPS_BACKEND_STOP 4 /* Stop the entire queue */
+#define CUPS_BACKEND_CANCEL 5 /* Cancel print job */
+#define CUPS_BACKEND_RETRY 6 /* Retry later */
+#define CUPS_BACKEND_RETRY_CURRENT 7 /* Retry immediately */
#endif /* __BACKEND_COMMON_H */
diff --git a/src/cups/blacklist b/src/cups/blacklist
index 204a8bc..420c485 100644
--- a/src/cups/blacklist
+++ b/src/cups/blacklist
@@ -111,23 +111,50 @@
# Kodak 605
0x040a 0x402e blacklist
-# Shinko CHC-S2145 (aka Sinfonia CS2)
+# Kodak 305
+0x040a 0x404f blacklist
+
+# Shinko CHC-S1245 (aka Sinfonia E1)
+0x10ce 0x0007 blacklist
+
+# Shinko CHC-S2145 (aka Sinfonia S2)
0x10ce 0x000e blacklist
+# Shinko CHC-S6145 (aka Sinfonia CS2)
+0x10ce 0x0019 blacklist
+
+# Shinko CHC-S6245 (aka Sinfonia CE1)
+0x10ce 0x001d blacklist
+
# Sony UP-DR150
0x054c 0x01e8 blacklist
+# Sony UP-DR200
+0x054c 0x035f blacklist
+
# Mitsubishi CP-D70/CP-D707
0x06d3 0x3b30 blacklist
# Mitsubishi CP-K60DW-S
0x06d3 0x3b31 blacklist
+# Mitsubishi CP-9550D/DW
+0x06d3 0x03a1 blacklist
+
+# Mitsubishi CP-9550DZ/DW-S
+0x06d3 0x03a5 blacklist
+
+# Citizen CW-01
+0x1343 0x0002 blacklist
+
# DNP DS40 + Citizen CX
0x1343 0x0003 blacklist
-# DNP DS80 + Citizen CX-W
+# DNP DS80 + Citizen CX-W + Mitsubishi CP3800
0x1343 0x0004 blacklist
# DNP DS-RX1 + Citizen CY
0x1343 0x0005 blacklist
+
+# DNP DS620
+0x1452 0x8b01 blacklist
diff --git a/src/cups/citizencw01_print.c b/src/cups/citizencw01_print.c
new file mode 100644
index 0000000..b99822c
--- /dev/null
+++ b/src/cups/citizencw01_print.c
@@ -0,0 +1,918 @@
+/*
+ * Citizen CW-01 Photo Printer CUPS backend -- libusb-1.0 version
+ *
+ * (c) 2014-2015 Solomon Peachy <pizza@shaftnet.org>
+ *
+ * The latest version of this program can be found at:
+ *
+ * http://git.shaftnet.org/cgit/selphy_print.git
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * [http://www.gnu.org/licenses/gpl-2.0.html]
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <signal.h>
+
+#include "backend_common.h"
+
+#define USB_VID_CITIZEN 0x1343
+#define USB_PID_CITIZEN_CW01 0x0002 // Maybe others?
+//#define USB_PID_OLMEC_OP900 XXXX
+
+/* Private data stucture */
+struct cw01_spool_hdr {
+ uint8_t type; /* 0x00 -> 0x06 */
+ uint8_t res; /* vertical resolution; 0x00 == 334dpi, 0x01 == 600dpi */
+ uint8_t copies; /* number of prints */
+ uint8_t null0;
+ uint32_t plane_len; /* LE */
+ uint8_t null1[4];
+};
+#define DPI_334 0
+#define DPI_600 1
+
+#define TYPE_DSC 0
+#define TYPE_L 1
+#define TYPE_PC 2
+#define TYPE_2DSC 3
+#define TYPE_3L 4
+#define TYPE_A5 5
+#define TYPE_A6 6
+
+#define SPOOL_PLANE_HDR_LEN 1064
+#define PRINTER_PLANE_HDR_LEN 1088
+
+struct cw01_ctx {
+ struct libusb_device_handle *dev;
+ uint8_t endp_up;
+ uint8_t endp_down;
+
+ uint8_t *databuf;
+ struct cw01_spool_hdr hdr;
+};
+
+struct cw01_cmd {
+ uint8_t esc; /* Fixed at ascii ESC, aka 0x1B */
+ uint8_t p; /* Fixed at ascii 'P' aka 0x50 */
+ uint8_t arg1[6];
+ uint8_t arg2[16];
+ uint8_t arg3[8]; /* Decimal value of arg4's length, or empty */
+ uint8_t arg4[0]; /* Extra payload if arg3 is non-empty
+ Doesn't have to be sent in the same URB */
+
+ /* All unused elements are set to 0x20 (ie ascii space) */
+};
+
+#define min(__x, __y) ((__x) < (__y)) ? __x : __y
+
+static void cw01_build_cmd(struct cw01_cmd *cmd, char *arg1, char *arg2, uint32_t arg3_len)
+{
+ memset(cmd, 0x20, sizeof(*cmd));
+ cmd->esc = 0x1b;
+ cmd->p = 0x50;
+ memcpy(cmd->arg1, arg1, min(strlen(arg1), sizeof(cmd->arg1)));
+ memcpy(cmd->arg2, arg2, min(strlen(arg2), sizeof(cmd->arg2)));
+ if (arg3_len) {
+ char buf[9];
+ snprintf(buf, sizeof(buf), "%08u", arg3_len);
+ memcpy(cmd->arg3, buf, 8);
+ }
+
+}
+
+static void cw01_cleanup_string(char *start, int len)
+{
+ char *ptr = strchr(start, 0x0d);
+
+ if (ptr && (ptr - start < len)) {
+ *ptr = 0x00; /* If there is a <CR>, terminate there */
+ len = ptr - start;
+ } else {
+ start[--len] = 0x00; /* force null-termination */
+ }
+
+ /* Trim trailing spaces */
+ while (len && start[len-1] == ' ') {
+ start[--len] = 0;
+ }
+}
+
+static char *cw01_media_types(char *str)
+{
+ char tmp[4];
+ int i;
+
+ memcpy(tmp, str + 4, 3);
+ tmp[3] = 0;
+
+ i = atoi(tmp);
+
+ switch (i) {
+ case 100: return "UNK 100";
+ case 110: return "UNK 110";
+ case 200: return "?? 5x3.5 (L)";
+ case 210: return "?? 5x7 (2L)";
+ case 300: return "?? 6x4 (PC)";
+ case 400: return "?? 6x9 (A5W)";
+ default:
+ break;
+ }
+
+ return "Unknown type";
+}
+
+static char *cw01_statuses(char *str)
+{
+ char tmp[6];
+ int i;
+ memcpy(tmp, str, 5);
+ tmp[5] = 0;
+
+ i = atoi(tmp);
+
+ switch (i) {
+ case 0: return "Idle";
+ case 1: return "Printing";
+ case 500: return "Cooling Print Head";
+ case 510: return "Cooling Paper Motor";
+ case 1000: return "Cover Open";
+ case 1010: return "No Scrap Box";
+ case 1100: return "Paper End";
+ case 1200: return "Ribbon End";
+ case 1300: return "Paper Jam";
+ case 1400: return "Ribbon Error";
+ case 1500: return "Paper Definition Error";
+ case 1600: return "Data Error";
+ case 2000: return "Head Voltage Error";
+ case 2100: return "Head Position Error";
+ case 2200: return "Power Supply Fan Error";
+ case 2300: return "Cutter Error";
+ case 2400: return "Pinch Roller Error";
+ case 2500: return "Abnormal Head Temperature";
+ case 2600: return "Abnormal Media Temperature";
+ case 2610: return "Abnormal Paper Motor Temperature";
+ case 2700: return "Ribbon Tension Error";
+ case 2800: return "RF-ID Module Error";
+ case 3000: return "System Error";
+ default:
+ break;
+ }
+
+ return "Unkown Error";
+}
+
+static int cw01_do_cmd(struct cw01_ctx *ctx,
+ struct cw01_cmd *cmd,
+ uint8_t *data, int len)
+{
+ int ret;
+
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*)cmd, sizeof(*cmd))))
+ return ret;
+
+ if (data && len)
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ data, len)))
+ return ret;
+
+ return CUPS_BACKEND_OK;
+}
+
+static uint8_t *cw01_resp_cmd(struct cw01_ctx *ctx,
+ struct cw01_cmd *cmd,
+ int *len)
+{
+ char tmp[9];
+ uint8_t *respbuf;
+
+ int ret, i, num = 0;
+
+ memset(tmp, 0, sizeof(tmp));
+
+ if ((ret = cw01_do_cmd(ctx, cmd, NULL, 0)))
+ return NULL;
+
+ /* Read in the response header */
+ ret = read_data(ctx->dev, ctx->endp_up,
+ (uint8_t*)tmp, 8, &num);
+ if (ret < 0)
+ return NULL;
+
+ if (num != 8) {
+ ERROR("Short read! (%d/%d)\n", num, 8);
+ return NULL;
+ }
+
+ i = atoi(tmp); /* Length of payload in bytes, possibly padded */
+ respbuf = malloc(i);
+ if (!respbuf) {
+ ERROR("Memory Allocation Failure!\n");
+ return NULL;
+ }
+
+ /* Read in the actual response */
+ ret = read_data(ctx->dev, ctx->endp_up,
+ respbuf, i, &num);
+ if (ret < 0) {
+ free(respbuf);
+ return NULL;
+ }
+
+ if (num != i) {
+ ERROR("Short read! (%d/%d)\n", num, i);
+ free(respbuf);
+ return NULL;
+ }
+
+ *len = num;
+ return respbuf;
+}
+
+static int cw01_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len)
+{
+ struct cw01_cmd cmd;
+ uint8_t *resp;
+ int len = 0;
+
+ struct cw01_ctx ctx = {
+ .dev = dev,
+ .endp_up = endp_up,
+ .endp_down = endp_down,
+ };
+
+ /* Get Serial Number */
+ cw01_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0);
+
+ resp = cw01_resp_cmd(&ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ strncpy(buf, (char*)resp, buf_len);
+ buf[buf_len-1] = 0;
+
+ free(resp);
+
+ return CUPS_BACKEND_OK;
+}
+
+static void *cw01_init(void)
+{
+ struct cw01_ctx *ctx = malloc(sizeof(struct cw01_ctx));
+ if (!ctx) {
+ ERROR("Memory Allocation Failure!\n");
+ return NULL;
+ }
+ memset(ctx, 0, sizeof(struct cw01_ctx));
+
+ return ctx;
+}
+
+static void cw01_attach(void *vctx, struct libusb_device_handle *dev,
+ uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
+{
+ struct cw01_ctx *ctx = vctx;
+
+ UNUSED(jobid);
+
+ ctx->dev = dev;
+ ctx->endp_up = endp_up;
+ ctx->endp_down = endp_down;
+}
+
+static void cw01_teardown(void *vctx) {
+ struct cw01_ctx *ctx = vctx;
+
+ if (!ctx)
+ return;
+
+ if (ctx->databuf)
+ free(ctx->databuf);
+ free(ctx);
+}
+
+static int cw01_read_parse(void *vctx, int data_fd) {
+ struct cw01_ctx *ctx = vctx;
+ int i, j, remain;
+
+ if (!ctx)
+ return CUPS_BACKEND_FAILED;
+
+ if (ctx->databuf) {
+ free(ctx->databuf);
+ ctx->databuf = NULL;
+ }
+
+ i = read(data_fd, (uint8_t*) &ctx->hdr, sizeof(struct cw01_spool_hdr));
+
+ if (i < 0)
+ return i;
+ if (i == 0)
+ return CUPS_BACKEND_CANCEL;
+
+ if (i < (int)sizeof(struct cw01_spool_hdr))
+ return CUPS_BACKEND_CANCEL;
+
+ if (ctx->hdr.type > 0x06 || ctx->hdr.res > 0x01) {
+ ERROR("Unrecognized header data format!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+ ctx->hdr.plane_len = le32_to_cpu(ctx->hdr.plane_len);
+ remain = ctx->hdr.plane_len * 3;
+ ctx->databuf = malloc(remain);
+ if (!ctx->databuf) {
+ ERROR("Memory allocation failure!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+
+ j = 0;
+ while (remain) {
+ i = read(data_fd, ctx->databuf + j, remain);
+
+ if (i < 0)
+ return i;
+
+ remain -= i;
+ j += i;
+ }
+
+ return CUPS_BACKEND_OK;
+}
+
+static int cw01_main_loop(void *vctx, int copies) {
+ struct cw01_ctx *ctx = vctx;
+ int ret;
+ struct cw01_cmd cmd;
+ uint8_t *resp = NULL;
+ int len = 0;
+ uint32_t tmp;
+ uint8_t *ptr;
+ char buf[9];
+ uint8_t plane_hdr[PRINTER_PLANE_HDR_LEN];
+
+ if (!ctx)
+ return CUPS_BACKEND_FAILED;
+
+top:
+
+ if (resp) free(resp);
+
+ /* Query status */
+ cw01_build_cmd(&cmd, "STATUS", "", 0);
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+ cw01_cleanup_string((char*)resp, len);
+
+ /* If we're not idle */
+ if (strcmp("00000", (char*)resp)) {
+ if (!strcmp("00001", (char*)resp)) {
+ free(resp);
+ /* Query buffer state */
+ cw01_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0);
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+ cw01_cleanup_string((char*)resp, len);
+
+ /* Check to see if we have sufficient buffers */
+ // XXX audit these rules...?
+ if (!strcmp("FBP00", (char*)resp) ||
+ (ctx->hdr.res == DPI_600 && !strcmp("FBP01", (char*)resp))) {
+ INFO("Insufficient printer buffers, retrying...\n");
+ sleep(1);
+ goto top;
+ }
+ } else {
+ ERROR("Printer Status: %s\n", cw01_statuses((char*)resp));
+ free(resp);
+ return CUPS_BACKEND_RETRY_CURRENT;
+ }
+ }
+
+ free(resp);
+ /* Get Vertical resolution */
+ cw01_build_cmd(&cmd, "INFO", "RESOLUTION_V", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+#if 0
+ if (ctx->hdr.res == DPI_600 && strcmp("RV0334", *char*)resp) {
+ ERROR("600DPI prints not yet supported, need 600DPI CWD load");
+ return CUPS_BACKEND_CANCEL;
+ }
+#endif
+
+ free(resp);
+ resp = NULL;
+
+ /* Set print quantity */
+ cw01_build_cmd(&cmd, "CNTRL", "QTY", 8);
+ snprintf(buf, sizeof(buf), "%07d\r", copies);
+ ret = cw01_do_cmd(ctx, &cmd, (uint8_t*) buf, 8);
+ if (ret)
+ return CUPS_BACKEND_FAILED;
+
+ /* Cutter control. ??? */
+ // cw01_build_cmd(&cmd, "CNTRL", "CUTTER", 8);
+ //snprintf(buf, sizeof(buf), "%08d", ???);
+ //ret = cw01_do_cmd(ctx, &cmd, (uint8_t*) buf, 8);
+ //if (ret)
+ // return CUPS_BACKEND_FAILED;
+
+ /* Start sending image data */
+ ptr = ctx->databuf;
+
+ /* Generate plane header (same for all planes) */
+ tmp = cpu_to_le32(ctx->hdr.plane_len) + 24;
+ memset(plane_hdr, 0, PRINTER_PLANE_HDR_LEN);
+ plane_hdr[0] = 0x42;
+ plane_hdr[1] = 0x4d;
+ memcpy(plane_hdr + 2, &tmp, sizeof(tmp));
+ plane_hdr[10] = 0x40;
+ plane_hdr[11] = 0x04;
+ memcpy(plane_hdr + 14, ptr, SPOOL_PLANE_HDR_LEN);
+
+ /******** Plane 1 */
+ cw01_build_cmd(&cmd, "IMAGE", "YPLANE", ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN + PRINTER_PLANE_HDR_LEN);
+ ret = cw01_do_cmd(ctx, &cmd, plane_hdr, PRINTER_PLANE_HDR_LEN);
+ if (ret)
+ return CUPS_BACKEND_FAILED;
+
+ /* Send plane data */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ ptr + SPOOL_PLANE_HDR_LEN, ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN)))
+ return CUPS_BACKEND_FAILED;
+
+ ptr += ctx->hdr.plane_len;
+
+ /******** Plane 2 */
+ cw01_build_cmd(&cmd, "IMAGE", "MPLANE", ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN + PRINTER_PLANE_HDR_LEN);
+ ret = cw01_do_cmd(ctx, &cmd, plane_hdr, PRINTER_PLANE_HDR_LEN);
+ if (ret)
+ return CUPS_BACKEND_FAILED;
+
+ /* Send plane data */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ ptr + SPOOL_PLANE_HDR_LEN, ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN)))
+ return CUPS_BACKEND_FAILED;
+
+ ptr += ctx->hdr.plane_len;
+
+ /******** Plane 3 */
+ cw01_build_cmd(&cmd, "IMAGE", "CPLANE", ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN + PRINTER_PLANE_HDR_LEN);
+ ret = cw01_do_cmd(ctx, &cmd, plane_hdr, PRINTER_PLANE_HDR_LEN);
+ if (ret)
+ return CUPS_BACKEND_FAILED;
+
+ /* Send plane data */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ ptr + SPOOL_PLANE_HDR_LEN, ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN)))
+ return CUPS_BACKEND_FAILED;
+
+ ptr += ctx->hdr.plane_len;
+
+ /* Start print */
+ cw01_build_cmd(&cmd, "CNTRL", "START", 0);
+ ret = cw01_do_cmd(ctx, &cmd, NULL, 0);
+ if (ret)
+ return CUPS_BACKEND_FAILED;
+
+ /* This printer handles copies internally */
+ copies = 1;
+
+ /* Clean up */
+ if (terminate)
+ copies = 1;
+
+ INFO("Print complete (%d copies remaining)\n", copies - 1);
+
+ if (copies && --copies) {
+ goto top;
+ }
+
+ if (resp) free(resp);
+
+ return CUPS_BACKEND_OK;
+}
+
+static int cw01_get_info(struct cw01_ctx *ctx)
+{
+ struct cw01_cmd cmd;
+ uint8_t *resp;
+ int len = 0;
+
+ /* Get Serial Number */
+ cw01_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Serial Number: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ /* Get Firmware Version */
+ cw01_build_cmd(&cmd, "INFO", "FVER", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Firmware Version: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ /* Get Sensor Info */
+ cw01_build_cmd(&cmd, "INFO", "SENSOR", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Sensor Info: '%s'\n", (char*)resp);
+ // XXX parse this out. Each token is 'XXX-###' delimited by '; '
+
+ free(resp);
+
+ /* Get Horizonal resolution */
+ cw01_build_cmd(&cmd, "INFO", "RESOLUTION_H", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Horizontal Resolution: '%s' dpi\n", (char*)resp + 3);
+
+ free(resp);
+
+ /* Get Vertical resolution */
+ cw01_build_cmd(&cmd, "INFO", "RESOLUTION_V", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Vertical Resolution: '%s' dpi\n", (char*)resp + 3);
+
+ free(resp);
+
+ /* Get Media Color offset */
+ cw01_build_cmd(&cmd, "INFO", "MCOLOR", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Media Color Offset: '%02x%02x%02x%02x'\n", *(resp+2), *(resp+3),
+ *(resp+4), *(resp+5));
+
+ free(resp);
+
+ /* Get Media Lot */
+ cw01_build_cmd(&cmd, "INFO", "MLOT", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Media Lot Code: '%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x'\n",
+ *(resp+2), *(resp+3), *(resp+4), *(resp+5), *(resp+6), *(resp+7),
+ *(resp+8), *(resp+9), *(resp+10), *(resp+11), *(resp+12), *(resp+13));
+
+ free(resp);
+
+ /* Get Media ID Set (?) */
+ cw01_build_cmd(&cmd, "MNT_RD", "MEDIA_ID_SET", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Media ID(?): '%s'\n", (char*)resp+4);
+
+ free(resp);
+
+ /* Get Color Control Data Version */
+ cw01_build_cmd(&cmd, "TBL_RD", "Version", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Color Data Version: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ /* Get Color Control Data Checksum */
+ cw01_build_cmd(&cmd, "MNT_RD", "CTRLD_CHKSUM", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Color Data Checksum: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ return CUPS_BACKEND_OK;
+}
+
+static int cw01_get_status(struct cw01_ctx *ctx)
+{
+ struct cw01_cmd cmd;
+ uint8_t *resp;
+ int len = 0;
+
+ /* Generate command */
+ cw01_build_cmd(&cmd, "STATUS", "", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Printer Status: %s => %s\n", (char*)resp, cw01_statuses((char*)resp));
+
+ free(resp);
+
+ /* Get remaining prints in this job */
+ cw01_build_cmd(&cmd, "INFO", "PQTY", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Prints Remaining in job: '%s'\n", (char*)resp + 4);
+
+ free(resp);
+
+ /* Generate command */
+ cw01_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Free Buffers: '%s'\n", (char*)resp + 3);
+
+ free(resp);
+
+ /* Get Media Info */
+ cw01_build_cmd(&cmd, "INFO", "MEDIA", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Media Type: '%s'\n", cw01_media_types((char*)resp));
+
+ free(resp);
+
+ /* Get Media remaining */
+ cw01_build_cmd(&cmd, "INFO", "MQTY", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Prints Remaining: '%s'\n", (char*)resp + 4);
+
+ free(resp);
+
+ return 0;
+}
+
+static int cw01_get_counters(struct cw01_ctx *ctx)
+{
+ struct cw01_cmd cmd;
+ uint8_t *resp;
+ int len = 0;
+
+ /* Generate command */
+ cw01_build_cmd(&cmd, "MNT_RD", "COUNTER_LIFE", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("Lifetime Counter: '%s'\n", (char*)resp+2);
+
+ free(resp);
+
+ /* Generate command */
+ cw01_build_cmd(&cmd, "MNT_RD", "COUNTER_A", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("A Counter: '%s'\n", (char*)resp+2);
+
+ free(resp);
+
+ /* Generate command */
+ cw01_build_cmd(&cmd, "MNT_RD", "COUNTER_B", 0);
+
+ resp = cw01_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ cw01_cleanup_string((char*)resp, len);
+
+ INFO("B Counter: '%s'\n", (char*)resp+2);
+
+ free(resp);
+
+ return CUPS_BACKEND_OK;
+}
+
+static int cw01_clear_counter(struct cw01_ctx *ctx, char counter)
+{
+ struct cw01_cmd cmd;
+ char msg[4];
+ int ret;
+
+ /* Generate command */
+ cw01_build_cmd(&cmd, "MNT_WT", "COUNTER_CLEAR", 4);
+ msg[0] = 'C';
+ msg[1] = counter;
+ msg[2] = 0x0d; /* ie carriage return, ASCII '\r' */
+ msg[3] = 0x00;
+
+ if ((ret = cw01_do_cmd(ctx, &cmd, (uint8_t*)msg, 4)))
+ return ret;
+
+ return 0;
+}
+
+
+static void cw01_cmdline(void)
+{
+ DEBUG("\t\t[ -i ] # Query printer info\n");
+ DEBUG("\t\t[ -s ] # Query status\n");
+ DEBUG("\t\t[ -n ] # Query counters\n");
+ DEBUG("\t\t[ -N A|B|M ] # Clear counter A/B/M\n");
+}
+
+static int cw01_cmdline_arg(void *vctx, int argc, char **argv)
+{
+ struct cw01_ctx *ctx = vctx;
+ int i, j = 0;
+
+ /* Reset arg parsing */
+ optind = 1;
+ opterr = 0;
+ while ((i = getopt(argc, argv, "inN:s")) >= 0) {
+ switch(i) {
+ case 'i':
+ if (ctx) {
+ j = cw01_get_info(ctx);
+ break;
+ }
+ return 1;
+ case 'n':
+ if (ctx) {
+ j = cw01_get_counters(ctx);
+ break;
+ }
+ return 1;
+ case 'N':
+ if (optarg[0] != 'A' &&
+ optarg[0] != 'B')
+ return CUPS_BACKEND_FAILED;
+ if (ctx) {
+ j = cw01_clear_counter(ctx, optarg[0]);
+ break;
+ }
+ return 1;
+ case 's':
+ if (ctx) {
+ j = cw01_get_status(ctx);
+ break;
+ }
+ return 1;
+ default:
+ break; /* Ignore completely */
+ }
+
+ if (j) return j;
+ }
+
+ return 0;
+}
+
+/* Exported */
+struct dyesub_backend cw01_backend = {
+ .name = "Citizen CW-01",
+ .version = "0.10",
+ .uri_prefix = "citizencw01",
+ .cmdline_usage = cw01_cmdline,
+ .cmdline_arg = cw01_cmdline_arg,
+ .init = cw01_init,
+ .attach = cw01_attach,
+ .teardown = cw01_teardown,
+ .read_parse = cw01_read_parse,
+ .main_loop = cw01_main_loop,
+ .query_serno = cw01_query_serno,
+ .devices = {
+ { USB_VID_CITIZEN, USB_PID_CITIZEN_CW01, P_CITIZEN_CW01, ""},
+// { USB_VID_CITIZEN, USB_PID_OLMEC_OP900, P_CITIZEN_CW01, ""},
+ { 0, 0, 0, ""}
+ }
+};
+
+/*
+
+Basic spool file format:
+
+TT RR NN 00 XX XX XX XX 00 00 00 00 <- FILE header.
+
+ NN : copies (0x01 or more)
+ RR : resolution; 0 == 334 dpi, 1 == 600dpi
+ TT : type 0x02 == 4x6, 0x01 == 5x3.5
+ XX XX XX XX : plane length (LE)
+ plane length * 3 + 12 == file length.
+
+Followed by three planes, each with this header:
+
+28 00 00 00 00 08 00 00 RR RR 00 00 01 00 08 00
+00 00 00 00 00 00 00 00 5a 33 00 00 YY YY 00 00
+00 01 00 00 00 00 00 00
+
+ RR RR : rows in LE format
+ YY YY : 0x335a (334dpi) or 0x5c40 (600dpi)
+
+Followed by 1024 bytes of color tables:
+
+ ff ff ff 00 ... 00 00 00 00
+
+1024+40 = 1064 bytes of header per plane.
+
+Always have 2048 columns of data.
+
+followed by (2048 * rows) bytes of data.
+
+*/
diff --git a/src/cups/cups-genppdupdate.in b/src/cups/cups-genppdupdate.in
index 66d0a46..61b7206 100644
--- a/src/cups/cups-genppdupdate.in
+++ b/src/cups/cups-genppdupdate.in
@@ -1,5 +1,5 @@
#! @PERL@ -w
-# $Id: cups-genppdupdate.in,v 1.60 2012/02/14 23:11:41 tillkamppeter Exp $
+# $Id: cups-genppdupdate.in,v 1.61 2014/06/04 01:16:47 rlk Exp $
# Update CUPS PPDs for Gutenprint queues.
# Copyright (C) 2002-2003 Roger Leigh (rleigh@debian.org)
#
@@ -57,7 +57,8 @@ my $micro_version = "@GUTENPRINT_VERSION@";
my $use_static_ppd = "@BUILD_CUPS_PPDS@";
my $file_version = '"@VERSION@"$';
-my $ppd_dir = "@cups_conf_serverroot@/ppd"; # Location of in-use CUPS PPDs
+my $system_ppd_dir = "@cups_conf_serverroot@/ppd";# Location of in-use CUPS PPDs
+my $ppd_dir = $system_ppd_dir; # Location of in-use CUPS PPDs
my $ppd_root_dir = "@cups_conf_datadir@/model";
my $ppd_base_dir = "$ppd_root_dir/gutenprint/$version"; # Available PPDs
my $ppd_out_dir = ""; # By default output into source directory
@@ -181,7 +182,8 @@ if (!$quiet || $verbose) {
print STDOUT ", $skipped_ppd_count skipped";
}
print STDOUT ".";
- if (!defined $opt_o || $opt_o ne "") {
+ if ($ppd_out_dir eq $system_ppd_dir ||
+ ($ppd_dir eq $system_ppd_dir && $ppd_out_dir eq "")) {
print STDOUT " Restart cupsd for the changes to take effect.";
}
print STDOUT "\n";
@@ -590,6 +592,25 @@ sub update_ppd ($) {
$source_data =~ s/(\*StpLocale:\s*\")(.*)(\")/$1$orig_locale$3/;
}
+ # PageRegion, PageSize, Imageablearea, and PaperDimension need to match.
+ # ImageableArea and PaperDimension may be broken from cups-genppdupdate
+ # in 5.2.10 and earlier not updating them, but PageRegion and PageSize
+ # should match. Use PageSize as the default, but warn if PageSize
+ # and PageRegion don't match.
+
+ if ($defaults{"DefaultPageSize"} ne $defaults{"DefaultPageRegion"}) {
+ warn("Warning: DefaultPageSize $defaults{'DefaultPageSize'} and DefaultPageRegion $defaults{'DefaultPageRegion'} don't match. Using $defaults{'DefaultPageSize'} for both.\n");
+ $defaults{"DefaultPageRegion"} = $defaults{"DefaultPageSize"};
+ }
+ if ($defaults{"DefaultPageSize"} ne $defaults{"DefaultImageableArea"}) {
+ print STDERR "Correcting DefaultImageableArea from $defaults{'DefaultImageableArea'} to $defaults{'DefaultPageSize'}\n";
+ $defaults{"DefaultImageableArea"} = $defaults{"DefaultPageSize"};
+ }
+ if ($defaults{"DefaultPageSize"} ne $defaults{"DefaultPaperDimension"}) {
+ print STDERR "Correcting DefaultPaperDimension from $defaults{'DefaultPaperDimension'} to $defaults{'DefaultPageSize'}\n";
+ $defaults{"DefaultPaperDimension"} = $defaults{"DefaultPageSize"};
+ }
+
if ($debug & 4) {
print "Options (Old->New Default Type):\n";
foreach (sort keys %options) {
@@ -666,6 +687,7 @@ default_loop:
my $new_default = $new_defaults{$default_option};
if ((!defined($orig_method) || !defined($new_method)) ||
$orig_method ne $new_method) {
+ $source_data =~ s/^\*($default_option).*/*$1: $default_option_value/m;
next;
}
if (defined($new_default) &&
@@ -698,7 +720,7 @@ default_loop:
(defined $resolution_map{$dopt}) &&
($dopt = $resolution_map{$dopt}) eq $opt)) { # Valid option
# Set the option in the new PPD
- $source_data =~ s/^\*($default_option).*/*$1:$dopt/m;
+ $source_data =~ s/^\*($default_option).*/*$1: $dopt/m;
if ($verbose) {
print "$ppd_source_filename: Set *$default_option to $dopt\n";
}
diff --git a/src/cups/dnpds40_print.c b/src/cups/dnpds40_print.c
index f79df53..16e8ab1 100644
--- a/src/cups/dnpds40_print.c
+++ b/src/cups/dnpds40_print.c
@@ -1,11 +1,12 @@
/*
* DNP DS40/DS80 Photo Printer CUPS backend -- libusb-1.0 version
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
*
* Development of this backend was sponsored by:
*
- * Marco Di Antonio and [ ilgruppodigitale.com ]
+ * Marco Di Antonio and [ ilgruppodigitale.com ]
+ * LiveLink Technology [ www.livelinktechnology.net ]
*
* The latest version of this program can be found at:
*
@@ -29,6 +30,10 @@
*
*/
+//#define MATTE_STATE
+//#define DNP_ONLY
+#define MATTE_GLOSSY_2BUF
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -41,17 +46,18 @@
#include "backend_common.h"
-#define USB_VID_DNP 0x1343
+#define USB_VID_CITIZEN 0x1343
#define USB_PID_DNP_DS40 0x0003 // Also Citizen CX
-#define USB_PID_DNP_DS80 0x0004 // Also Citizen CX-W
+#define USB_PID_DNP_DS80 0x0004 // Also Citizen CX-W, and Mitsubishi CP-3800DW
#define USB_PID_DNP_DSRX1 0x0005 // Also Citizen CY
-//#define USB_PID_CITIZEN_CW-01 XXXXX
-//#define USB_PID_CITIZEN_OP900 XXXXX
+#define USB_VID_DNP 0x1452
+#define USB_PID_DNP_DS620 0x8b01
+
+//#define USB_PID_DNP_DS80D XXXX
+
//#define USB_PID_CITIZEN_CW-02 XXXXX
//#define USB_PID_CITIZEN_OP900II XXXXX
-//#define USB_VID_MITSU 0x06D3
-//#define USB_PID_MITSU_CP3800DW XXXXX
/* Private data stucture */
struct dnpds40_ctx {
@@ -61,10 +67,33 @@ struct dnpds40_ctx {
int type;
+ char *serno;
+ char *version;
+
int buf_needed;
- uint32_t last_matte;
+ int last_matte;
+
+ int ver_major;
+ int ver_minor;
+ int media;
+
+ uint32_t multicut;
+ int matte;
+ int cutter;
+ int can_rewind;
+
+ int supports_6x9;
+ int supports_2x6;
+ int supports_3x5x2;
+ int supports_matte;
+ int supports_fullcut;
+ int supports_rewind;
+ int supports_standby;
+ int supports_6x4_5;
uint8_t *qty_offset;
+ uint8_t *buffctrl_offset;
+ uint8_t *multicut_offset;
uint8_t *databuf;
int datalen;
@@ -116,17 +145,9 @@ static void dnpds40_cleanup_string(char *start, int len)
}
}
-static char *dnpds40_media_types(char *str)
+static char *dnpds40_media_types(int media)
{
- char tmp[4];
- int i;
-
- memcpy(tmp, str + 4, 3);
- tmp[3] = 0;
-
- i = atoi(tmp);
-
- switch (i) {
+ switch (media) {
case 200: return "5x3.5 (L)";
case 210: return "5x7 (2L)";
case 300: return "6x4 (PC)";
@@ -141,20 +162,14 @@ static char *dnpds40_media_types(char *str)
return "Unknown type";
}
-static char *dnpds40_statuses(char *str)
+static char *dnpds40_statuses(int status)
{
- char tmp[6];
- int i;
- memcpy(tmp, str, 5);
- tmp[5] = 0;
-
- i = atoi(tmp);
-
- switch (i) {
+ switch (status) {
case 0: return "Idle";
case 1: return "Printing";
case 500: return "Cooling Print Head";
case 510: return "Cooling Paper Motor";
+ case 900: return "Standby Mode";
case 1000: return "Cover Open";
case 1010: return "No Scrap Box";
case 1100: return "Paper End";
@@ -196,7 +211,7 @@ static int dnpds40_do_cmd(struct dnpds40_ctx *ctx,
data, len)))
return ret;
- return 0;
+ return CUPS_BACKEND_OK;
}
static uint8_t * dnpds40_resp_cmd(struct dnpds40_ctx *ctx,
@@ -226,6 +241,10 @@ static uint8_t * dnpds40_resp_cmd(struct dnpds40_ctx *ctx,
i = atoi(tmp); /* Length of payload in bytes, possibly padded */
respbuf = malloc(i);
+ if (!respbuf) {
+ ERROR("Memory allocation failure (%d bytes)!\n", i);
+ return NULL;
+ }
/* Read in the actual response */
ret = read_data(ctx->dev, ctx->endp_up,
@@ -262,7 +281,7 @@ static int dnpds40_query_serno(struct libusb_device_handle *dev, uint8_t endp_up
resp = dnpds40_resp_cmd(&ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -271,23 +290,30 @@ static int dnpds40_query_serno(struct libusb_device_handle *dev, uint8_t endp_up
free(resp);
- return 0;
+ return CUPS_BACKEND_OK;
}
static void *dnpds40_init(void)
{
struct dnpds40_ctx *ctx = malloc(sizeof(struct dnpds40_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory allocation failure (%d bytes)!\n", (int)sizeof(struct dnpds40_ctx));
return NULL;
+ }
memset(ctx, 0, sizeof(struct dnpds40_ctx));
ctx->type = P_ANY;
+ ctx->last_matte = -1;
return ctx;
}
+#define FW_VER_CHECK(__major, __minor) \
+ ((ctx->ver_major > (__major)) || \
+ (ctx->ver_major == (__major) && ctx->ver_minor >= (__minor)))
+
static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev,
- uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
+ uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
{
struct dnpds40_ctx *ctx = vctx;
struct libusb_device *device;
@@ -302,12 +328,115 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev,
device = libusb_get_device(dev);
libusb_get_device_descriptor(device, &desc);
- /* Map out device type */
- if (desc.idProduct == USB_PID_DNP_DS40)
+ {
+ /* Get Firmware Version */
+ struct dnpds40_cmd cmd;
+ uint8_t *resp;
+ int len = 0;
+
+ dnpds40_build_cmd(&cmd, "INFO", "FVER", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (resp) {
+ char *ptr;
+ dnpds40_cleanup_string((char*)resp, len);
+ ctx->version = strdup((char*) resp);
+
+ /* Parse version */
+ ptr = strtok((char*)resp, " .");
+ ptr = strtok(NULL, ".");
+ ctx->ver_major = atoi(ptr);
+ ptr = strtok(NULL, ".");
+ ctx->ver_minor = atoi(ptr);
+ free(resp);
+ }
+
+ /* Get Serial Number */
+ dnpds40_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (resp) {
+ dnpds40_cleanup_string((char*)resp, len);
+ ctx->serno = (char*) resp;
+ /* Do NOT free resp! */
+ }
+
+ /* Query Media Info */
+ dnpds40_build_cmd(&cmd, "INFO", "MEDIA", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (resp) {
+ char tmp[4];
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ memcpy(tmp, resp + 4, 3);
+ tmp[3] = 0;
+
+ ctx->media = atoi(tmp);
+
+ /* Subtract out the "mark" type */
+ if (ctx->media & 1)
+ ctx->media--;
+
+ free(resp);
+ }
+ }
+
+#ifdef DNP_ONLY
+ /* Only allow DNP printers to work. Rebadged versions should not. */
+
+ { /* Validate USB Vendor String is "Dai Nippon Printing" */
+ char buf[256];
+ buf[0] = 0;
+ libusb_get_string_descriptor_ascii(dev, desc->iManufacturer, (unsigned char*)buf, STR_LEN_MAX);
+ sanitize_string(buf);
+ if (strncmp(buf, "Dai", 3))
+ return 0;
+ }
+#endif
+
+ /* Per-printer options */
+ switch (desc.idProduct) {
+ case USB_PID_DNP_DS40:
ctx->type = P_DNP_DS40;
- else
+ ctx->supports_6x9 = 1;
+ if (FW_VER_CHECK(1,30))
+ ctx->supports_matte = 1;
+ if (FW_VER_CHECK(1,40))
+ ctx->supports_2x6 = 1;
+ if (FW_VER_CHECK(1,50))
+ ctx->supports_3x5x2 = 1;
+ if (FW_VER_CHECK(1,51))
+ ctx->supports_fullcut = 1;
+ break;
+ case USB_PID_DNP_DS80:
ctx->type = P_DNP_DS80;
-
+ if (FW_VER_CHECK(1,30))
+ ctx->supports_matte = 1;
+ break;
+ case USB_PID_DNP_DSRX1:
+ ctx->type = P_DNP_DSRX1;
+ ctx->supports_matte = 1;
+ if (FW_VER_CHECK(1,10))
+ ctx->supports_2x6 = 1;
+ break;
+ case USB_PID_DNP_DS620:
+ ctx->type = P_DNP_DS620;
+ ctx->supports_matte = 1;
+ ctx->supports_2x6 = 1;
+ ctx->supports_fullcut = 1;
+ ctx->supports_rewind = 1; // XXX DS620 only, 620A does not.
+ ctx->supports_standby = 1;
+ if (FW_VER_CHECK(0,30))
+ ctx->supports_3x5x2 = 1;
+ if (FW_VER_CHECK(1,10))
+ ctx->supports_6x9 = ctx->supports_6x4_5 = 1;
+ break;
+ default:
+ ERROR("Unknown USB PID...\n");
+ return;
+ }
}
static void dnpds40_teardown(void *vctx) {
@@ -318,20 +447,24 @@ static void dnpds40_teardown(void *vctx) {
if (ctx->databuf)
free(ctx->databuf);
+ if (ctx->serno)
+ free(ctx->serno);
+ if (ctx->version)
+ free(ctx->version);
free(ctx);
}
-#define MAX_PRINTJOB_LEN (((2448*7536+1024+54))*3+1024) /* Worst-case */
+#define MAX_PRINTJOB_LEN (((2560*7536+1024+54))*3+1024) /* Worst-case */
static int dnpds40_read_parse(void *vctx, int data_fd) {
struct dnpds40_ctx *ctx = vctx;
int run = 1;
char buf[9] = { 0 };
- uint32_t matte = 0, multicut = 0, dpi = 0;
+ uint32_t matte, dpi, cutter;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
if (ctx->databuf) {
free(ctx->databuf);
@@ -351,9 +484,16 @@ static int dnpds40_read_parse(void *vctx, int data_fd) {
ctx->databuf = malloc(MAX_PRINTJOB_LEN);
if (!ctx->databuf) {
ERROR("Memory allocation failure!\n");
- return 2;
+ return CUPS_BACKEND_CANCEL;
}
+ /* Clear everything out */
+ matte = 0;
+ dpi = 0;
+ cutter = 0;
+ ctx->multicut = 0;
+ ctx->buffctrl_offset = ctx->qty_offset = ctx->multicut_offset = 0;
+
while (run) {
int remain, i, j;
/* Read in command header */
@@ -364,12 +504,12 @@ static int dnpds40_read_parse(void *vctx, int data_fd) {
if (i == 0)
break;
if (i < (int) sizeof(struct dnpds40_cmd))
- return 1;
+ return CUPS_BACKEND_CANCEL;
if (ctx->databuf[ctx->datalen + 0] != 0x1b ||
ctx->databuf[ctx->datalen + 1] != 0x50) {
ERROR("Unrecognized header data format @%d!\n", ctx->datalen);
- return 1;
+ return CUPS_BACKEND_CANCEL;
}
/* Parse out length of data chunk, if any */
@@ -381,8 +521,10 @@ static int dnpds40_read_parse(void *vctx, int data_fd) {
while (remain > 0) {
i = read(data_fd, ctx->databuf + ctx->datalen + sizeof(struct dnpds40_cmd),
remain);
- if (i < 0)
+ if (i < 0) {
+ ERROR("Data Read Error: %d (%d/%d @%d)\n", i, remain, j, ctx->datalen);
return i;
+ }
if (i == 0)
return 1;
ctx->datalen += i;
@@ -394,45 +536,74 @@ static int dnpds40_read_parse(void *vctx, int data_fd) {
if(!memcmp("CNTRL QTY", ctx->databuf + ctx->datalen+2, 9)) {
ctx->qty_offset = ctx->databuf + ctx->datalen + 32;
}
- if(!memcmp("CNTRL OVERCOAT", ctx->databuf + ctx->datalen+2, 14)) {
+ if(!memcmp("CNTRL CUTTER", ctx->databuf + ctx->datalen+2, 12)) {
memcpy(buf, ctx->databuf + ctx->datalen + 32, 8);
- matte = atoi(buf);
+ cutter = atoi(buf);
}
- if(!memcmp("CNTRL MULTICUT", ctx->databuf + ctx->datalen+2, 14)) {
+ if(!memcmp("CNTRL BUFFCNTRL", ctx->databuf + ctx->datalen+2, 15)) {
+ /* If the printer doesn't support matte, it doesn't
+ support buffcntrl. strip it from the stream */
+ if (ctx->supports_matte) {
+ ctx->buffctrl_offset = ctx->databuf + ctx->datalen + 32;
+ } else {
+ WARNING("Printer FW does not support BUFFCNTRL, please update\n");
+ continue;
+ }
+ }
+ if(!memcmp("CNTRL OVERCOAT", ctx->databuf + ctx->datalen+2, 14)) {
+ /* If the printer doesn't support matte, it doesn't
+ support buffcntrl. strip it from the stream */
+ if (ctx->supports_matte) {
+ memcpy(buf, ctx->databuf + ctx->datalen + 32, 8);
+ matte = atoi(buf);
+ } else {
+ WARNING("Printer FW does not support matte prints, please update\n");
+ continue;
+ }
+ }
+ if(!memcmp("IMAGE MULTICUT", ctx->databuf + ctx->datalen+2, 14)) {
+ ctx->multicut_offset = ctx->databuf + ctx->datalen + 32;
memcpy(buf, ctx->databuf + ctx->datalen + 32, 8);
- multicut = atoi(buf);
+ ctx->multicut = atoi(buf);
}
- if(!memcmp("IMAGE YPLANE", ctx->databuf + ctx->datalen + 2, 12)) {
- uint32_t x_ppm;
- memcpy(&x_ppm, ctx->databuf + ctx->datalen + 32 + 42, sizeof(x_ppm));
- x_ppm = le32_to_cpu(x_ppm);
+ if(!memcmp("CNTRL FULL_CUTTER_SET", ctx->databuf + ctx->datalen+2, 21)) {
+ if (!ctx->supports_fullcut) {
+ WARNING("Printer FW does not support cutter control, please update!\n");
+ continue;
+ }
+ }
+ if(!memcmp("IMAGE YPLANE", ctx->databuf + ctx->datalen + 2, 12)) {
+ uint32_t y_ppm; /* Pixels Per Meter */
- ctx->buf_needed = 1;
- dpi = 300;
+ /* Validate vertical resolution */
+ memcpy(&y_ppm, ctx->databuf + ctx->datalen + 32 + 42, sizeof(y_ppm));
+ y_ppm = le32_to_cpu(y_ppm);
- if (x_ppm == 23615) { /* pixels per meter, aka 600dpi */
+ switch (y_ppm) {
+ case 11808:
+ dpi = 300;
+ break;
+ case 23615:
dpi = 600;
- if (ctx->type == P_DNP_DS80) { /* DS80/CX-W */
- if (matte && (multicut == 21 || // A4 length
- multicut == 20 || // 8x4*3
- multicut == 19 || // 8x8+8x4
- multicut == 15 || // 8x6*2
- multicut == 7)) // 8x12
- ctx->buf_needed = 2;
- } else { /* DS40/CX/CY/etc */
- if (multicut == 4 || // 6x8
- multicut == 5 || // 6x9
- multicut == 12) // 6x4*2
- ctx->buf_needed = 2;
- else if (matte && multicut == 3) // 5x7
- ctx->buf_needed = 2;
- }
+ break;
+ default:
+ ERROR("Unrecognized printjob resolution (%d ppm)\n", y_ppm);
+ return CUPS_BACKEND_CANCEL;
+ }
- /* If we are missing a multicut command,
- we can't parse this job so must assume
- worst case size needing both buffers! */
- if (!multicut)
- ctx->buf_needed = 2;
+ /* Validate horizontal size */
+ memcpy(&y_ppm, ctx->databuf + ctx->datalen + 32 + 18, sizeof(y_ppm));
+ y_ppm = le32_to_cpu(y_ppm);
+ if (ctx->type == P_DNP_DS80) {
+ if (y_ppm != 2560) {
+ ERROR("Incorrect horizontal resolution (%d), aborting!\n", y_ppm);
+ return CUPS_BACKEND_CANCEL;
+ }
+ } else {
+ if (y_ppm != 1920) {
+ ERROR("Incorrect horizontal resolution (%d), aborting!\n", y_ppm);
+ return CUPS_BACKEND_CANCEL;
+ }
}
}
@@ -444,20 +615,148 @@ static int dnpds40_read_parse(void *vctx, int data_fd) {
ctx->datalen += sizeof(struct dnpds40_cmd) + j;
}
- /* Special case: switching to matte or back needs both buffers */
- if (matte != ctx->last_matte)
- ctx->buf_needed = 2;
+ if (!ctx->datalen)
+ return CUPS_BACKEND_CANCEL;
+
+ /* Figure out the number of buffers we need. Most only need one. */
+ if (ctx->multicut) {
+ ctx->buf_needed = 1;
+
+ if (dpi == 600) {
+ if (ctx->type == P_DNP_DS620) {
+ if (ctx->multicut == 5 || // 6x9
+ ctx->multicut == 31) // 6x4.5*2
+ ctx->buf_needed = 2;
+ } else if (ctx->type == P_DNP_DS80) { /* DS80/CX-W */
+ if (matte && (ctx->multicut == 21 || // A4 length
+ ctx->multicut == 20 || // 8x4*3
+ ctx->multicut == 19 || // 8x8+8x4
+ ctx->multicut == 15 || // 8x6*2
+ ctx->multicut == 7)) // 8x12
+ ctx->buf_needed = 2;
+ } else { /* DS40/CX/RX1/CY/etc */
+ if (ctx->multicut == 4 || // 6x8
+ ctx->multicut == 5 || // 6x9
+ ctx->multicut == 12) // 6x4*2
+ ctx->buf_needed = 2;
+ else if (matte && ctx->multicut == 3) // 5x7
+ ctx->buf_needed = 2;
+ }
+ }
+ } else {
+ WARNING("Missing or illegal MULTICUT command, can't validate print job against loaded media!\n");
+ if (dpi == 300)
+ ctx->buf_needed = 1;
+ else
+ ctx->buf_needed = 2;
+ }
- DEBUG("dpi %u matte %u(%u) mcut %u bufs %d\n",
- dpi, matte, ctx->last_matte, multicut, ctx->buf_needed);
+ ctx->matte = (int)matte;
+ ctx->cutter = cutter;
+ ctx->can_rewind = 0;
- /* Track if our last print was matte */
- ctx->last_matte = matte;
+ DEBUG("dpi %u matte %u mcut %u cutter %d, bufs %d\n",
+ dpi, matte, ctx->multicut, cutter, ctx->buf_needed);
- if (!ctx->datalen)
- return 1;
+ /* Sanity-check printjob type vs loaded media */
+ if (ctx->multicut) {
+ switch(ctx->media) {
+ case 200: //"5x3.5 (L)"
+ if (ctx->multicut != 1) {
+ ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ break;
+ case 210: //"5x7 (2L)"
+ ctx->can_rewind = 1;
+ if (ctx->multicut != 1 && ctx->multicut != 3 &&
+ ctx->multicut != 22 && ctx->multicut != 29) {
+ ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ break;
+ case 300: //"6x4 (PC)"
+ if (ctx->multicut != 2) {
+ ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ break;
+ case 310: //"6x8 (A5)"
+ ctx->can_rewind = 1;
+ if (ctx->multicut != 2 && ctx->multicut != 4 &&
+ ctx->multicut != 27) {
+ ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ break;
+ case 400: //"6x9 (A5W)"
+ ctx->can_rewind = 1;
+ if (ctx->multicut != 2 && ctx->multicut != 4 &&
+ ctx->multicut != 5 && ctx->multicut != 27 &&
+ ctx->multicut != 30 && ctx->multicut != 31) {
+ ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ break;
+ case 500: //"8x10"
+ if (ctx->multicut < 6 || ctx->multicut == 7 ||
+ ctx->multicut == 15 || ctx->multicut >= 18 ) {
+ ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ case 510: //"8x12"
+ if (ctx->multicut < 6 || ctx->multicut > 21) {
+ ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ break;
+ default:
+ ERROR("Unknown media (%d vs %d)!\n", ctx->media, ctx->multicut);
+ return CUPS_BACKEND_CANCEL;
+ }
+ }
- return 0;
+ /* Additional santity checks */
+ if ((ctx->multicut == 27 || ctx->multicut == 29) &&
+ ctx->type != P_DNP_DS620) {
+ ERROR("Printer does not support 6x6 or 5x5 prints, aborting!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+
+ if ((ctx->multicut == 30 || ctx->multicut == 31) &&
+ !ctx->supports_6x4_5) {
+ ERROR("Printer does not support 6x4.5 prints, aborting!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+
+ if (ctx->multicut == 5 && !ctx->supports_6x9) {
+ ERROR("Printer does not support 6x9 prints, aborting!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+
+ if (ctx->multicut == 22 && !ctx->supports_3x5x2) {
+ ERROR("Printer does not support 3.5x5*2 prints, aborting!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+
+ if (ctx->cutter == 120) {
+ if (ctx->multicut == 2 || ctx->multicut == 4) {
+ if (!ctx->supports_2x6) {
+ ERROR("Printer does not support 2x6 prints, aborting!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+ } else {
+ ERROR("Printer only supports 2-inch cuts on 4x6 or 8x6 jobs!");
+ return CUPS_BACKEND_CANCEL;
+ }
+ }
+
+ if (ctx->matte && !ctx->supports_matte) {
+ ERROR("Printer FW does not support matte operation, please update!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+
+ return CUPS_BACKEND_OK;
}
static int dnpds40_main_loop(void *vctx, int copies) {
@@ -466,21 +765,126 @@ static int dnpds40_main_loop(void *vctx, int copies) {
struct dnpds40_cmd cmd;
uint8_t *resp = NULL;
int len = 0;
-
uint8_t *ptr;
char buf[9];
+ int status;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
+
+ /* Verify we have sufficient media for prints */
+ {
+ int i = 0;
+
+ /* See if we can rewind to save media */
+ if (ctx->can_rewind && ctx->supports_rewind &&
+ (ctx->multicut == 1 || ctx->multicut == 2)) {
+
+ /* Get Media remaining */
+ dnpds40_build_cmd(&cmd, "INFO", "RQTY", 0);
+
+ if (resp) free(resp);
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
- /* Parse job to figure out quantity offset. */
- if (copies > 1 && ctx->qty_offset) {
+ dnpds40_cleanup_string((char*)resp, len);
+ i = atoi((char*)resp);
+
+ /* If the count is odd, we can rewind. */
+ if (i & 1) {
+ snprintf(buf, sizeof(buf), "%08d", ctx->multicut + 400);
+ memcpy(ctx->multicut_offset, buf, 8);
+ }
+ }
+
+ /* If we didn't succeed with RQTY, try MQTY */
+ if (i == 0) {
+ dnpds40_build_cmd(&cmd, "INFO", "MQTY", 0);
+
+ if (resp) free(resp);
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ i = atoi((char*)resp+4);
+
+ /* For some reason all but the DS620 report 50 too high */
+ if (ctx->type != P_DNP_DS620 && i > 0)
+ i -= 50;
+ }
+
+ if (i < 1) {
+ ERROR("Printer out of media, please correct!\n");
+ return CUPS_BACKEND_STOP;
+ }
+ if (i < copies) {
+ WARNING("Printer does not have sufficient remaining media to complete job..\n");
+ }
+ }
+
+ /* Update quantity offset with count */
+ if (copies > 1) {
snprintf(buf, sizeof(buf), "%07d\r", copies);
- memcpy(ctx->qty_offset, buf, 8);
+ if (ctx->qty_offset) {
+ memcpy(ctx->qty_offset, buf, 8);
+ } else {
+ dnpds40_build_cmd(&cmd, "CNTRL", "QTY", 8);
+ if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8)))
+ return CUPS_BACKEND_FAILED;
+ }
+
+ copies = 1;
+ }
+
+ /* Enable job resumption on correctable errors */
+ if (ctx->supports_matte) {
+ snprintf(buf, sizeof(buf), "%08d", 1);
+ if (ctx->buffctrl_offset) {
+ memcpy(ctx->qty_offset, buf, 8);
+ } else {
+ dnpds40_build_cmd(&cmd, "CNTRL", "BUFFCNTRL", 8);
+ if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8)))
+ return CUPS_BACKEND_FAILED;
+ }
+ }
+
+#ifdef MATTE_STATE
+ /* Check our current job's lamination vs previous job. */
+ {
+ /* Load last matte status from file */
+ char buf[64];
+ FILE *f;
+ snprintf(buf, sizeof(buf), "/tmp/%s-last", ctx->serno);
+ f = fopen(buf, "r");
+ if (f) {
+ fscanf(f, "%d", &ctx->last_matte);
+ fclose(f);
+ }
+ }
+#endif
+
+#ifdef MATTE_GLOSSY_2BUF
+ if (ctx->matte != ctx->last_matte)
+ ctx->buf_needed = 2; /* Switching needs both buffers */
+#endif
- // XXX should we set/reset BUFFCNTRL?
- // XXX should we verify we have sufficient media for prints?
+ ctx->last_matte = ctx->matte;
+#ifdef MATTE_STATE
+ {
+ /* Store last matte status into file */
+ char buf[64];
+ FILE *f;
+ snprintf(buf, sizeof(buf), "/tmp/%s-last", ctx->serno);
+ f = fopen(buf, "w");
+ if (f) {
+ fprintf(f, "%08d", ctx->last_matte);
+ fclose(f);
+ }
}
+#endif
top:
@@ -490,36 +894,63 @@ top:
dnpds40_build_cmd(&cmd, "STATUS", "", 0);
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
+ status = atoi((char*)resp);
+ free(resp);
- /* If we're not idle */
- if (strcmp("00000", (char*)resp)) {
- if (!strcmp("00001", (char*)resp)) {
- free(resp);
- /* Query buffer state */
- dnpds40_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0);
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
- dnpds40_cleanup_string((char*)resp, len);
-
- /* Check to see if we have sufficient buffers */
- if (!strcmp("FBP00", (char*)resp) ||
- (ctx->buf_needed == 1 && !strcmp("FBP01", (char*)resp))) {
- INFO("Insufficient printer buffers, retrying...\n");
- sleep(1);
- goto top;
- }
- } else if (!strcmp("00500", (char*)resp) ||
- !strcmp("00510", (char*)resp)) {
- INFO("Printer cooling, retrying...\n");
+ /* Figure out what's going on */
+ switch(status) {
+ case 0: /* Idle; we can continue! */
+ break;
+ case 1: /* Printing */
+ {
+ int bufs;
+
+ /* Query buffer state */
+ dnpds40_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0);
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+ /* Check to see if we have sufficient buffers */
+ bufs = atoi(((char*)resp)+3);
+ if (bufs < ctx->buf_needed) {
+ INFO("Insufficient printer buffers (%d vs %d), retrying...\n", bufs, ctx->buf_needed);
sleep(1);
goto top;
}
- free(resp);
- ERROR("Printer Status: %s\n", dnpds40_statuses((char*)resp));
- return 1;
+ break;
+ }
+ case 500: /* Cooling print head */
+ case 510: /* Cooling paper motor */
+ INFO("Printer cooling down...\n");
+ sleep(1);
+ goto top;
+ case 900:
+ INFO("Waking printer up from standby...\n");
+ // XXX do someting here?
+ break;
+ case 1000: /* Cover open */
+ case 1010: /* No Scrap Box */
+ case 1100: /* Paper End */
+ case 1200: /* Ribbon End */
+ case 1300: /* Paper Jam */
+ case 1400: /* Ribbon Error */
+ WARNING("Printer not ready: %s, please correct...\n", dnpds40_statuses(status));
+ sleep(1);
+ goto top;
+ case 1500: /* Paper definition error */
+ ERROR("Paper definition error, aborting job\n");
+ return CUPS_BACKEND_CANCEL;
+ case 1600: /* Data error */
+ ERROR("Data error, aborting job\n");
+ return CUPS_BACKEND_CANCEL;
+ default:
+ ERROR("Fatal Printer Error: %d => %s, halting queue!\n", status, dnpds40_statuses(status));
+ return CUPS_BACKEND_HOLD;
}
/* Send the stream over as individual data chunks */
@@ -534,14 +965,10 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
ptr, i)))
- return ret;
+ return CUPS_BACKEND_FAILED;
ptr += i;
}
-
- /* This printer handles copies internally */
- if (ctx->qty_offset)
- copies = 1;
/* Clean up */
if (terminate)
@@ -553,9 +980,7 @@ top:
goto top;
}
- if (resp) free(resp);
-
- return 0;
+ return CUPS_BACKEND_OK;
}
static int dnpds40_get_info(struct dnpds40_ctx *ctx)
@@ -564,56 +989,29 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx)
uint8_t *resp;
int len = 0;
- /* Get Serial Number */
- dnpds40_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0);
-
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
-
- dnpds40_cleanup_string((char*)resp, len);
-
- INFO("Serial Number: '%s'\n", (char*)resp);
-
- free(resp);
-
- /* Get Firmware Version */
- dnpds40_build_cmd(&cmd, "INFO", "FVER", 0);
-
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
+ /* Serial number already queried */
+ INFO("Serial Number: '%s'\n", ctx->serno);
- dnpds40_cleanup_string((char*)resp, len);
-
- INFO("Firmware Version: '%s'\n", (char*)resp);
-
- free(resp);
+ /* Firmware version already queried */
+ INFO("Firmware Version: '%s'\n", ctx->version);
/* Get Sensor Info */
dnpds40_build_cmd(&cmd, "INFO", "SENSOR", 0);
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
-
- INFO("Sensor Info: '%s'\n", (char*)resp);
- // XXX parse this out. Each token is 'XXX-###' delimited by '; '
-
- free(resp);
-
- /* Get Qty of prints made on this media? */
- dnpds40_build_cmd(&cmd, "INFO", "PQTY", 0);
-
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
-
- dnpds40_cleanup_string((char*)resp, len);
-
- INFO("Prints Performed(?): '%s'\n", (char*)resp + 4);
+ INFO("Sensor Info:\n");
+ {
+ char *tmp;
+ tmp = strtok((char*)resp, "; ");
+ do {
+ // XXX parse the components?
+ INFO(" %s\n", tmp);
+ } while ((tmp = strtok(NULL, "; ")) != NULL);
+ }
free(resp);
@@ -622,7 +1020,7 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -635,7 +1033,7 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -648,7 +1046,7 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -662,14 +1060,16 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
- INFO("Media Lot Code: '%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x'\n",
- *(resp+2), *(resp+3), *(resp+4), *(resp+5), *(resp+6), *(resp+7),
- *(resp+8), *(resp+9), *(resp+10), *(resp+11), *(resp+12), *(resp+13));
-
+ INFO("Media Lot Code: '");
+ /* 16-byte data in a 20-byte response */
+ for (len = 0 ; len < 16 ; len++) {
+ DEBUG2("%c", *(resp+len+2));
+ }
+ DEBUG2("'\n");
free(resp);
/* Get Media ID Set (?) */
@@ -677,7 +1077,7 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -685,34 +1085,154 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx)
free(resp);
- /* Get Color Control Data Version */
- dnpds40_build_cmd(&cmd, "TBL_RD", "Version", 0);
+ if (ctx->type == P_DNP_DS620) {
+ /* Loop through control data versions and checksums */
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
+ /* 300 DPI */
+ dnpds40_build_cmd(&cmd, "TBL_RD", "CWD300_Version", 0);
- dnpds40_cleanup_string((char*)resp, len);
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
- INFO("Color Data Version: '%s'\n", (char*)resp);
+ dnpds40_cleanup_string((char*)resp, len);
- free(resp);
+ INFO("300 DPI Color Data Version: '%s' ", (char*)resp);
- /* Get Color Control Data Checksum */
- dnpds40_build_cmd(&cmd, "MNT_RD", "CTRLD_CHKSUM", 0);
+ free(resp);
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
+ dnpds40_build_cmd(&cmd, "TBL_RD", "CWD300_Checksum", 0);
- dnpds40_cleanup_string((char*)resp, len);
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
- INFO("Color Data Checksum: '%s'\n", (char*)resp);
+ dnpds40_cleanup_string((char*)resp, len);
- free(resp);
+ INFO("Checksum: '%s'\n", (char*)resp);
+ free(resp);
- return 0;
+ /* 600 DPI */
+ dnpds40_build_cmd(&cmd, "TBL_RD", "CWD600_Version", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("600 DPI Color Data Version: '%s' ", (char*)resp);
+
+ free(resp);
+
+ dnpds40_build_cmd(&cmd, "TBL_RD", "CWD600_Checksum", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Checksum: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ /* "Low Speed" */
+ dnpds40_build_cmd(&cmd, "TBL_RD", "CWD610_Version", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Low Speed Color Data Version: '%s' ", (char*)resp);
+
+ free(resp);
+
+ dnpds40_build_cmd(&cmd, "TBL_RD", "CWD610_Checksum", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Checksum: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ } else {
+ /* Get Color Control Data Version */
+ dnpds40_build_cmd(&cmd, "TBL_RD", "Version", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Color Data Version: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ /* Get Color Control Data Checksum */
+ dnpds40_build_cmd(&cmd, "MNT_RD", "CTRLD_CHKSUM", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Color Data Checksum: '%s'\n", (char*)resp);
+
+ free(resp);
+ }
+
+ if (ctx->type == P_DNP_DS620) {
+ /* Get Standby stuff */
+ dnpds40_build_cmd(&cmd, "MNT_RD", "STANDBY_TIME", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Standby Transition time: '%s' minutes\n", (char*)resp);
+
+ free(resp);
+
+ /* Get Media End Keep */
+ dnpds40_build_cmd(&cmd, "MNT_RD", "END_KEEP_MODE", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Media End kept across power cycles: '%s'\n", (char*)resp);
+
+ free(resp);
+
+ /* Get USB serial descriptor status */
+ dnpds40_build_cmd(&cmd, "MNT_RD", "USB_ISERI_SET", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("Report Serial Number in USB descriptor: '%s'\n", (char*)resp);
+
+ free(resp);
+ }
+
+ return CUPS_BACKEND_OK;
}
static int dnpds40_get_status(struct dnpds40_ctx *ctx)
@@ -726,78 +1246,93 @@ static int dnpds40_get_status(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
+ len = atoi((char*)resp);
- INFO("Printer Status: %s => %s\n", (char*)resp, dnpds40_statuses((char*)resp));
+ INFO("Printer Status: %d => %s\n", len, dnpds40_statuses(len));
free(resp);
- /* Generate command */
- dnpds40_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0);
+ /* Get remaining print quantity */
+ dnpds40_build_cmd(&cmd, "INFO", "PQTY", 0);
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
- INFO("Free Buffers: '%s'\n", (char*)resp + 3);
+ INFO("Prints remaining in job: '%s'\n", (char*)resp + 4);
free(resp);
- /* Get Media Info */
- dnpds40_build_cmd(&cmd, "INFO", "MEDIA", 0);
+ /* Generate command */
+ dnpds40_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0);
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
- INFO("Media Type: '%s'\n", dnpds40_media_types((char*)resp));
-
-#if 0
- switch (*(resp+3)) {
- case '1':
- INFO(" Stickier paper\n");
- break;
- case '0':
- INFO(" Standard paper\n");
- break;
- default:
- INFO(" Unknown paper(%c)\n", *(resp+4));
- break;
- }
- switch (*(resp+6)) {
- case '1':
- INFO(" With mark\n");
- break;
- case '0':
- INFO(" Without mark\n");
- break;
- default:
- INFO(" Unknown mark(%c)\n", *(resp+7));
- break;
- }
-#endif
+ INFO("Free Buffers: '%s'\n", (char*)resp + 3);
free(resp);
+ /* Report media */
+ INFO("Media Type: '%s'\n", dnpds40_media_types(ctx->media));
+
+ if (ctx->supports_rewind) {
+ /* Get Media remaining */
+ dnpds40_build_cmd(&cmd, "INFO", "MQTY_DEFAULT", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ len = atoi((char*)resp+4);
+
+ INFO("Prints Available on New Media: '%d'\n", len);
+
+ free(resp);
+ }
+
/* Get Media remaining */
dnpds40_build_cmd(&cmd, "INFO", "MQTY", 0);
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
- INFO("Prints Remaining: '%s'\n", (char*)resp + 4);
+ len = atoi((char*)resp+4);
+ if (ctx->type != P_DNP_DS620 && len > 0)
+ len -= 50;
+
+ INFO("Prints Remaining on Media: '%d'\n", len);
free(resp);
+ if (ctx->supports_rewind) {
+ /* Get Media remaining */
+ dnpds40_build_cmd(&cmd, "INFO", "RQTY", 0);
+
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
+
+ dnpds40_cleanup_string((char*)resp, len);
+
+ INFO("L/PC Prints Remaining on Media: '%s'\n", (char*)resp + 4);
+
+ free(resp);
+ }
+
return 0;
}
@@ -812,7 +1347,7 @@ static int dnpds40_get_counters(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -825,7 +1360,7 @@ static int dnpds40_get_counters(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -838,7 +1373,7 @@ static int dnpds40_get_counters(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -851,7 +1386,7 @@ static int dnpds40_get_counters(struct dnpds40_ctx *ctx)
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
if (!resp)
- return -1;
+ return CUPS_BACKEND_FAILED;
dnpds40_cleanup_string((char*)resp, len);
@@ -859,33 +1394,35 @@ static int dnpds40_get_counters(struct dnpds40_ctx *ctx)
free(resp);
- /* Generate command */
- dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_M", 0);
+ if (ctx->supports_matte) {
+ /* Generate command */
+ dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_M", 0);
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
- dnpds40_cleanup_string((char*)resp, len);
+ dnpds40_cleanup_string((char*)resp, len);
- INFO("M Counter: '%s'\n", (char*)resp+2);
+ INFO("M Counter: '%s'\n", (char*)resp+2);
- free(resp);
+ free(resp);
- /* Generate command */
- dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_MATTE", 0);
+ /* Generate command */
+ dnpds40_build_cmd(&cmd, "MNT_RD", "COUNTER_MATTE", 0);
- resp = dnpds40_resp_cmd(ctx, &cmd, &len);
- if (!resp)
- return -1;
+ resp = dnpds40_resp_cmd(ctx, &cmd, &len);
+ if (!resp)
+ return CUPS_BACKEND_FAILED;
- dnpds40_cleanup_string((char*)resp, len);
+ dnpds40_cleanup_string((char*)resp, len);
- INFO("Matte Counter: '%s'\n", (char*)resp+4);
+ INFO("Matte Counter: '%s'\n", (char*)resp+4);
- free(resp);
+ free(resp);
+ }
- return 0;
+ return CUPS_BACKEND_OK;
}
static int dnpds40_clear_counter(struct dnpds40_ctx *ctx, char counter)
@@ -907,6 +1444,22 @@ static int dnpds40_clear_counter(struct dnpds40_ctx *ctx, char counter)
return 0;
}
+static int dnpds620_standby_mode(struct dnpds40_ctx *ctx, int delay)
+{
+ struct dnpds40_cmd cmd;
+ char msg[9];
+ int ret;
+
+ /* Generate command */
+ dnpds40_build_cmd(&cmd, "MNT_WT", "STANDBY_TIME", 8);
+ snprintf(msg, sizeof(msg), "%08d", delay);
+
+ if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)msg, 8)))
+ return ret;
+
+ return 0;
+}
+
static int dnpds40_set_counter_p(struct dnpds40_ctx *ctx, char *arg)
{
struct dnpds40_cmd cmd;
@@ -931,6 +1484,7 @@ static void dnpds40_cmdline(void)
DEBUG("\t\t[ -n ] # Query counters\n");
DEBUG("\t\t[ -N A|B|M ] # Clear counter A/B/M\n");
DEBUG("\t\t[ -p num ] # Set counter P\n");
+ DEBUG("\t\t[ -S num ] # Set standby time (1-99 minutes, 0 disables)\n");
}
@@ -942,7 +1496,7 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv)
/* Reset arg parsing */
optind = 1;
opterr = 0;
- while ((i = getopt(argc, argv, "inN:p:s")) >= 0) {
+ while ((i = getopt(argc, argv, "inN:p:sS:")) >= 0) {
switch(i) {
case 'i':
if (ctx) {
@@ -960,8 +1514,12 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv)
if (optarg[0] != 'A' &&
optarg[0] != 'B' &&
optarg[0] != 'M')
- return -1;
+ return CUPS_BACKEND_FAILED;
if (ctx) {
+ if (!ctx->supports_matte) {
+ ERROR("Printer FW does not support matte functions, please update!\n");
+ return CUPS_BACKEND_FAILED;
+ }
j = dnpds40_clear_counter(ctx, optarg[0]);
break;
}
@@ -978,6 +1536,21 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv)
break;
}
return 1;
+ case 'S':
+ if (ctx) {
+ int time = atoi(optarg);
+ if (!ctx->supports_standby) {
+ ERROR("Printer does not support standby\n");
+ j = -1;
+ break;
+ }
+ if (time < 0 || time > 99) {
+ ERROR("Value out of range (0-99)");
+ j = -1;
+ break;
+ }
+ j = dnpds620_standby_mode(ctx, time);
+ }
default:
break; /* Ignore completely */
}
@@ -990,8 +1563,8 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv)
/* Exported */
struct dyesub_backend dnpds40_backend = {
- .name = "DNP DS40/DS80/DSRX1",
- .version = "0.30",
+ .name = "DNP DS40/DS80/DSRX1/DS620",
+ .version = "0.51",
.uri_prefix = "dnpds40",
.cmdline_usage = dnpds40_cmdline,
.cmdline_arg = dnpds40_cmdline_arg,
@@ -1002,14 +1575,13 @@ struct dyesub_backend dnpds40_backend = {
.main_loop = dnpds40_main_loop,
.query_serno = dnpds40_query_serno,
.devices = {
- { USB_VID_DNP, USB_PID_DNP_DS40, P_DNP_DS40, ""},
- { USB_VID_DNP, USB_PID_DNP_DS80, P_DNP_DS80, ""},
- { USB_VID_DNP, USB_PID_DNP_DSRX1, P_DNP_DS40, ""},
+ { USB_VID_CITIZEN, USB_PID_DNP_DS40, P_DNP_DS40, ""},
+ { USB_VID_CITIZEN, USB_PID_DNP_DS80, P_DNP_DS80, ""},
+ { USB_VID_CITIZEN, USB_PID_DNP_DSRX1, P_DNP_DSRX1, ""},
+ { USB_VID_DNP, USB_PID_DNP_DS620, P_DNP_DS620, ""},
+// { USB_VID_DNP, USB_PID_DNP_DS80D, P_DNP_DS80, ""},
// { USB_VID_CITIZEN, USB_PID_CITIZEN_CW-02, P_DNP_DS40, ""},
// { USB_VID_CITIZEN, USB_PID_CITIZEN_OP900II, P_DNP_DS40, ""},
-// { USB_VID_CITIZEN, USB_PID_CITIZEN_CW-01, P_DNP_DS40, ""},
-// { USB_VID_CITIZEN, USB_PID_CITIZEN_OP900, P_DNP_DS40, ""},
-// { USB_VID_MITSU, USB_PID_MITSU_CP38000W, P_DNP_DS80, ""},
{ 0, 0, 0, ""}
}
};
diff --git a/src/cups/genppd.c b/src/cups/genppd.c
index 7b55c13..e868444 100644
--- a/src/cups/genppd.c
+++ b/src/cups/genppd.c
@@ -1,5 +1,5 @@
/*
- * "$Id: genppd.c,v 1.196 2014/02/13 02:30:27 rlk Exp $"
+ * "$Id: genppd.c,v 1.197 2015/06/25 01:48:02 speachy Exp $"
*
* PPD file generation program for the CUPS drivers.
*
@@ -564,9 +564,11 @@ main(int argc, /* I - Number of command-line arguments */
break;
}
}
+#ifdef HAVE_LIBZ
if (use_compression)
gpext = ".gz";
else
+#endif
gpext = "";
if (optind < argc) {
int n, numargs;
@@ -2706,5 +2708,5 @@ write_ppd(
/*
- * End of "$Id: genppd.c,v 1.196 2014/02/13 02:30:27 rlk Exp $".
+ * End of "$Id: genppd.c,v 1.197 2015/06/25 01:48:02 speachy Exp $".
*/
diff --git a/src/cups/kodak1400_print.c b/src/cups/kodak1400_print.c
index bc1d0d0..1921bb4 100644
--- a/src/cups/kodak1400_print.c
+++ b/src/cups/kodak1400_print.c
@@ -1,7 +1,7 @@
/*
* Kodak Professional 1400/805 CUPS backend -- libusb-1.0 version
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@@ -158,6 +158,11 @@ static int kodak1400_set_tonecurve(struct kodak1400_ctx *ctx, char *fname)
uint16_t *data = malloc(UPDATE_SIZE);
+ if (!data) {
+ ERROR("Memory Allocation Failure!\n");
+ return -1;
+ }
+
/* Read in file */
int tc_fd = open(fname, O_RDONLY);
if (tc_fd < 0) {
@@ -277,8 +282,10 @@ int kodak1400_cmdline_arg(void *vctx, int argc, char **argv)
static void *kodak1400_init(void)
{
struct kodak1400_ctx *ctx = malloc(sizeof(struct kodak1400_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory Allocation Failure!\n");
return NULL;
+ }
memset(ctx, 0, sizeof(struct kodak1400_ctx));
return ctx;
@@ -317,7 +324,7 @@ static int kodak1400_read_parse(void *vctx, int data_fd) {
int i, ret;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
if (ctx->plane_r) {
free(ctx->plane_r);
@@ -336,18 +343,18 @@ static int kodak1400_read_parse(void *vctx, int data_fd) {
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
if (ret < 0 || ret != sizeof(ctx->hdr)) {
if (ret == 0)
- return 1;
+ return CUPS_BACKEND_CANCEL;
ERROR("Read failed (%d/%d/%d)\n",
ret, 0, (int)sizeof(ctx->hdr));
perror("ERROR: Read failed");
- return ret;
+ return CUPS_BACKEND_CANCEL;
}
if (ctx->hdr.hdr[0] != 'P' ||
ctx->hdr.hdr[1] != 'G' ||
ctx->hdr.hdr[2] != 'H' ||
ctx->hdr.hdr[3] != 'D') {
ERROR("Unrecognized data format!\n");
- return 1;
+ return CUPS_BACKEND_CANCEL;
}
ctx->hdr.planesize = le32_to_cpu(ctx->hdr.planesize);
ctx->hdr.rows = le16_to_cpu(ctx->hdr.rows);
@@ -359,7 +366,7 @@ static int kodak1400_read_parse(void *vctx, int data_fd) {
ctx->plane_b = malloc(ctx->hdr.planesize);
if (!ctx->plane_r || !ctx->plane_g || !ctx->plane_b) {
ERROR("Memory allocation failure!\n");
- return 1;
+ return CUPS_BACKEND_FAILED;
}
for (i = 0 ; i < ctx->hdr.rows ; i++) {
int j;
@@ -381,7 +388,7 @@ static int kodak1400_read_parse(void *vctx, int data_fd) {
ret, remain, ctx->hdr.columns,
i, ctx->hdr.rows, j);
perror("ERROR: Read failed");
- return ret;
+ return CUPS_BACKEND_CANCEL;
}
ptr += ret;
remain -= ret;
@@ -389,7 +396,7 @@ static int kodak1400_read_parse(void *vctx, int data_fd) {
}
}
- return 0;
+ return CUPS_BACKEND_OK;
}
static uint8_t idle_data[READBACK_LEN] = { 0xe4, 0x72, 0x00, 0x00,
@@ -417,14 +424,14 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
/* Read in the printer status */
ret = read_data(ctx->dev, ctx->endp_up,
rdbuf, READBACK_LEN, &num);
if (ret < 0)
- return ret;
+ return CUPS_BACKEND_FAILED;
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
memcpy(rdbuf2, rdbuf, READBACK_LEN);
} else if (state == last_state) {
@@ -436,7 +443,7 @@ top:
if (rdbuf[4] || rdbuf[5]) {
ERROR("Error code reported by printer (%02x/%02x), terminating print\n",
rdbuf[4], rdbuf[5]);
- return 1;
+ return CUPS_BACKEND_STOP; // HOLD/CANCEL/FAILED? XXXX parse error!
}
fflush(stderr);
@@ -451,7 +458,7 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
/* Send page setup */
memset(cmdbuf, 0, CMDBUF_LEN);
@@ -465,7 +472,7 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
/* Send lamination toggle? */
memset(cmdbuf, 0, CMDBUF_LEN);
@@ -475,7 +482,7 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
/* Send matte toggle */
memset(cmdbuf, 0, CMDBUF_LEN);
@@ -485,7 +492,7 @@ top:
if (send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN))
- return ret;
+ return CUPS_BACKEND_FAILED;
/* Send lamination strength */
memset(cmdbuf, 0, CMDBUF_LEN);
@@ -495,7 +502,7 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
/* Send unknown */
memset(cmdbuf, 0, CMDBUF_LEN);
@@ -505,14 +512,14 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_READY_Y;
break;
case S_PRINTER_READY_Y:
INFO("Sending YELLOW plane\n");
if ((ret = send_plane(ctx, 1, ctx->plane_b, cmdbuf)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_SENT_Y;
break;
case S_PRINTER_SENT_Y:
@@ -522,7 +529,7 @@ top:
case S_PRINTER_READY_M:
INFO("Sending MAGENTA plane\n");
if ((ret = send_plane(ctx, 2, ctx->plane_g, cmdbuf)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_SENT_M;
break;
case S_PRINTER_SENT_M:
@@ -532,7 +539,7 @@ top:
case S_PRINTER_READY_C:
INFO("Sending CYAN plane\n");
if ((ret = send_plane(ctx, 3, ctx->plane_r, cmdbuf)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_SENT_C;
break;
case S_PRINTER_SENT_C:
@@ -546,7 +553,7 @@ top:
case S_PRINTER_READY_L:
INFO("Laminating page\n");
if ((ret = send_plane(ctx, 4, NULL, cmdbuf)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_SENT_L;
break;
case S_PRINTER_SENT_L:
@@ -564,7 +571,7 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_FINISHED;
break;
@@ -586,7 +593,7 @@ top:
goto top;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
/* Exported */
@@ -596,7 +603,7 @@ top:
struct dyesub_backend kodak1400_backend = {
.name = "Kodak 1400/805",
- .version = "0.31",
+ .version = "0.33",
.uri_prefix = "kodak1400",
.cmdline_usage = kodak1400_cmdline,
.cmdline_arg = kodak1400_cmdline_arg,
diff --git a/src/cups/kodak605_print.c b/src/cups/kodak605_print.c
index 08df8f1..544eb72 100644
--- a/src/cups/kodak605_print.c
+++ b/src/cups/kodak605_print.c
@@ -1,7 +1,7 @@
/*
* Kodak 605 Photo Printer CUPS backend -- libusb-1.0 version
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@@ -40,6 +40,20 @@
#define USB_VID_KODAK 0x040A
#define USB_PID_KODAK_605 0x402E
+/* Media structure */
+struct kodak605_medium {
+ uint8_t index;
+ uint16_t cols; /* LE */
+ uint16_t rows; /* LE */
+ uint8_t unk[5]; /* 01 00 00 00 00 */
+} __attribute__((packed));
+
+struct kodak605_media_list {
+ uint8_t unk[12]; /* 01 00 00 00 00 00 02 00 67 00 02 0b */
+ uint8_t count;
+ struct kodak605_medium entries[];
+} __attribute__((packed));
+
/* File header */
struct kodak605_hdr {
uint8_t hdr[4]; /* 01 40 0a 00 */
@@ -81,8 +95,10 @@ enum {
static void *kodak605_init(void)
{
struct kodak605_ctx *ctx = malloc(sizeof(struct kodak605_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory Allocation Failure!\n");
return NULL;
+ }
memset(ctx, 0, sizeof(struct kodak605_ctx));
return ctx;
@@ -122,7 +138,7 @@ static int kodak605_read_parse(void *vctx, int data_fd) {
int ret;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_CANCEL;
if (ctx->databuf) {
free(ctx->databuf);
@@ -133,11 +149,11 @@ static int kodak605_read_parse(void *vctx, int data_fd) {
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
if (ret < 0 || ret != sizeof(ctx->hdr)) {
if (ret == 0)
- return 1;
+ return CUPS_BACKEND_CANCEL;
ERROR("Read failed (%d/%d/%d)\n",
ret, 0, (int)sizeof(ctx->hdr));
perror("ERROR: Read failed");
- return ret;
+ return CUPS_BACKEND_CANCEL;
}
if (ctx->hdr.hdr[0] != 0x01 ||
@@ -145,14 +161,14 @@ static int kodak605_read_parse(void *vctx, int data_fd) {
ctx->hdr.hdr[2] != 0x0a ||
ctx->hdr.hdr[3] != 0x00) {
ERROR("Unrecognized data format!\n");
- return(1);
+ return CUPS_BACKEND_CANCEL;
}
ctx->datalen = le16_to_cpu(ctx->hdr.rows) * le16_to_cpu(ctx->hdr.columns) * 3;
ctx->databuf = malloc(ctx->datalen);
if (!ctx->databuf) {
ERROR("Memory allocation failure!\n");
- return 2;
+ return CUPS_BACKEND_FAILED;
}
{
@@ -164,14 +180,14 @@ static int kodak605_read_parse(void *vctx, int data_fd) {
ERROR("Read failed (%d/%d/%d)\n",
ret, remain, ctx->datalen);
perror("ERROR: Read failed");
- return ret;
+ return CUPS_BACKEND_CANCEL;
}
ptr += ret;
remain -= ret;
} while (remain);
}
- return 0;
+ return CUPS_BACKEND_OK;
}
static int kodak605_main_loop(void *vctx, int copies) {
@@ -186,15 +202,12 @@ static int kodak605_main_loop(void *vctx, int copies) {
int pending = 0;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
/* Printer handles generating copies.. */
-#if 1
- ctx->hdr.copies = copies;
+ if (ctx->hdr.copies < copies)
+ ctx->hdr.copies = copies;
copies = 1;
-#else
- ctx->hdr.copies = 1;
-#endif
top:
if (state != last_state) {
@@ -213,7 +226,7 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, CMDBUF_LEN)))
- return ret;
+ return CUPS_BACKEND_FAILED;
skip_query:
/* Read in the printer status */
@@ -224,13 +237,13 @@ skip_query:
if (num < 10) {
ERROR("Short read! (%d/%d)\n", num, 10);
- return 4;
+ return CUPS_BACKEND_FAILED;
}
if (num != 10 && num != 76 && num != 113) {
ERROR("Unexpected readback from printer (%d/%d from 0x%02x))\n",
num, READBACK_LEN, ctx->endp_up);
- return ret;
+ return CUPS_BACKEND_FAILED;
}
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
@@ -275,7 +288,7 @@ skip_query:
INFO("Sending image header\n");
if ((ret = send_data(ctx->dev, ctx->endp_down,
(uint8_t*)&ctx->hdr, sizeof(ctx->hdr))))
- return ret;
+ return CUPS_BACKEND_FAILED;
pending = 1;
state = S_SENT_HDR;
break;
@@ -289,7 +302,7 @@ skip_query:
INFO("Sending image data\n");
if ((ret = send_data(ctx->dev, ctx->endp_down,
ctx->databuf, ctx->datalen)))
- return ret;
+ return CUPS_BACKEND_FAILED;
INFO("Image data sent\n");
sleep(1); /* An experiment */
@@ -324,7 +337,7 @@ skip_query:
goto top;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
static int kodak605_get_status(struct kodak605_ctx *ctx)
@@ -362,12 +375,25 @@ static int kodak605_get_status(struct kodak605_ctx *ctx)
return 0;
}
+static void kodak605_dump_mediainfo(struct kodak605_media_list *media)
+{
+ int i;
+
+ DEBUG("Legal print sizes:\n");
+ for (i = 0 ; i < media->count ; i++) {
+ DEBUG("\t%d: %dx%d\n", i,
+ le16_to_cpu(media->entries[i].cols),
+ le16_to_cpu(media->entries[i].rows));
+ }
+ DEBUG("\n");
+}
+
static int kodak605_get_media(struct kodak605_ctx *ctx)
{
uint8_t cmdbuf[4];
uint8_t rdbuf[113];
- int ret, i, num = 0;
+ int ret, num = 0;
/* Send Media Query */
cmdbuf[0] = 0x02;
@@ -389,11 +415,7 @@ static int kodak605_get_media(struct kodak605_ctx *ctx)
return 4;
}
- DEBUG("media: ");
- for (i = 0 ; i < num ; i++) {
- DEBUG2("%02x ", rdbuf[i]);
- }
- DEBUG("\n");
+ kodak605_dump_mediainfo((struct kodak605_media_list *)rdbuf);
return 0;
}
@@ -521,7 +543,7 @@ static int kodak605_cmdline_arg(void *vctx, int argc, char **argv)
/* Exported */
struct dyesub_backend kodak605_backend = {
.name = "Kodak 605",
- .version = "0.18",
+ .version = "0.21",
.uri_prefix = "kodak605",
.cmdline_usage = kodak605_cmdline,
.cmdline_arg = kodak605_cmdline_arg,
@@ -561,23 +583,28 @@ struct dyesub_backend kodak605_backend = {
-> 01 00 00 00
<- [76 bytes -- status ]
--> 01 00 00 00
-<- [76 bytes -- status ]
+
01 00 00 00 00 00 02 00 42 00 30 00 00 00 30 00
00 00 13 00 00 00 75 00 00 00 30 00 00 00 5d 00
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 01 01 00 00 00 01 00 20 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 01 00 00 00 00 00
+-> 01 00 00 00
+<- [76 bytes -- status ]
+
01 00 00 00 00 00 02 00 42 00 30 00 00 00 30 00
00 00 13 00 00 00 75 00 00 00 30 00 00 00 5d 00
- 00 00 00 00 00 00 01 01 00 00 00 01 00 20 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 01 00 00 00 00 00
+
-> 02 00 00 00
<- [113 bytes -- supported media/sizes? Always seems to be identical ]
+ [ 13-byte header, plus 10 slots for 10-byte media definitions, see above ]
+
01 00 00 00 00 00 02 00 67 00 02 0b 04 01 34 07
d8 04 01 00 00 00 00 02 dc 05 34 08 01 00 00 00
00 03 34 07 82 09 01 00 00 00 00 04 34 07 ba 09
@@ -601,13 +628,6 @@ struct dyesub_backend kodak605_backend = {
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 01 00 00 00 00 00
- 01 00 00 00 00 00 01 00 42 00 31 00 00 00 31 00
- 00 00 14 00 00 00 77 00 00 00 31 00 00 00 5d 00
- 00 00 00 00 00 00 01 00 00 01 00 01 00 00 02 01
- 00 00 00 01 00 02 02 01 00 00 00 01 00 02 00 00
- 00 00 00 00 00 00 01 00 00 00 00 00
-
-
Write tone curve data:
-> 04 c0 0a 00 03 01 00 00 00 00 LL LL 00 00 [[ LL LL == 0x0600 in LE ]]
diff --git a/src/cups/kodak6800_print.c b/src/cups/kodak6800_print.c
index e7bb174..51093b8 100644
--- a/src/cups/kodak6800_print.c
+++ b/src/cups/kodak6800_print.c
@@ -1,7 +1,11 @@
/*
* Kodak 6800/6850 Photo Printer CUPS backend -- libusb-1.0 version
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
+ *
+ * Development of this backend was sponsored by:
+ *
+ * LiveLink Technology [ www.livelinktechnology.net ]
*
* The latest version of this program can be found at:
*
@@ -43,15 +47,67 @@
/* File header */
struct kodak6800_hdr {
- uint8_t hdr[9];
+ uint8_t hdr[9]; /* Always 03 1b 43 48 43 0a 00 04 00 [6850]
+ 03 1b 43 48 43 0a 00 01 00 [6800] */
uint8_t copies;
uint16_t columns; /* BE */
uint16_t rows; /* BE */
- uint8_t media; /* 0x06 for 6x8, 0x00 for 6x4, 0x07 for 5x7 */
+ uint8_t size; /* 0x06 for 6x8, 0x00 for 6x4, 0x07 for 5x7 */
uint8_t laminate; /* 0x01 to laminate, 0x00 for not */
- uint8_t unk1; /* 0x00, 0x01 [may be print mode] */
+ uint8_t unk1; /* 0x00 or 0x01 (for 4x6 on 6x8 media) */
+} __attribute__((packed));
+
+struct kodak68x0_status_readback {
+ uint8_t hdr; /* Always 01 */
+ uint8_t sts1; /* Always 0x02 (idle) or 0x01 (busy) */
+ uint8_t sts2; /* 0x01 == ready, 0x02 == no media, 0x03 == not ready */
+ uint8_t errtype; /* 0x00 none, 0x80 "control" */
+ uint8_t null0[2];
+ uint8_t unkA; /* 0x00 or 0x01 or 0x10 */
+ uint8_t errcode; /* Error ## */
+ uint32_t ctr0; /* Total Prints (BE) */
+ uint32_t ctr1; /* Total Prints (BE) */
+ uint32_t ctr2; /* Increments by 1 for each print (6850), unk (6800). BE */
+ uint32_t ctr3; /* Increments by 2 for each print. BE */
+ uint8_t nullB[2];
+ uint8_t errtype2; /* 0x00 none, 0xd0 "control" */
+ uint8_t donor; /* Percentage, 0-100 */
+ uint8_t unkC[2]; /* Always 00 03 */
+ uint16_t main_fw; /* seen 652, 656, 670 (6850) and 232 (6800) */
+ uint8_t unkD[2]; /* Always 00 01 */
+ uint16_t dsp_fw; /* Seen 540, 541, 560 (6850) and 131 (6800) */
+ uint8_t unk1; /* Seen 0x00, 0x01, 0x03, 0x04 */
+ uint8_t null1[2];
+ uint8_t unk2; /* Seen 0x01, 0x00 */
+ uint8_t null2;
+ uint8_t unk3; /* Seen 0x01, 0x00 */
+ uint8_t null4;
+ uint8_t unk4; /* Seen 0x01, 0x00 */
+ uint8_t null5[7];
+} __attribute__((packed));
+
+struct kodak6800_printsize {
+ uint8_t hdr; /* Always 0x06 */
+ uint16_t width; /* BE */
+ uint16_t height; /* BE */
+ uint8_t hdr2; /* Always 0x01 */
+ uint8_t code; /* 00, 01, 02, 03, 04, 05 seen. An index? */
+ uint8_t code2; /* 00, 01 seen. Seems to be 1 only after a 4x6 printed. */
+ uint8_t null[2];
+} __attribute__((packed));
+
+#define MAX_MEDIA_LEN 128
+
+struct kodak68x0_media_readback {
+ uint8_t hdr; /* Always 0x01 */
+ uint8_t media; /* Always 0x00 (none), 0x0b or 0x03 */
+ uint8_t null[5];
+ uint8_t count; /* Always 0x04 (6800) or 0x06 (6850)? */
+ struct kodak6800_printsize sizes[];
} __attribute__((packed));
+#define KODAK68x0_MEDIA_6R 0x0b
+
#define CMDBUF_LEN 17
/* Private data stucture */
@@ -61,24 +117,154 @@ struct kodak6800_ctx {
uint8_t endp_down;
int type;
+ int media;
+
struct kodak6800_hdr hdr;
uint8_t *databuf;
int datalen;
};
+#define READBACK_LEN 68
-/* Program states */
-enum {
- S_IDLE = 0,
- S_6850_READY,
- S_6850_READY_WAIT,
- S_READY,
- S_STARTED,
- S_SENT_HDR,
- S_SENT_DATA,
- S_FINISHED,
-};
+char *kodak68x0_error_codes(uint8_t code1, uint8_t code2)
+{
+ if (code1 == 0x80 && code2 == 0xd0)
+ return "Control Error";
+
+ return "Unknown Type (please report!)";
+}
+
+static void kodak68x0_dump_mediainfo(struct kodak68x0_media_readback *media)
+{
+ int i;
+ if (media->media == KODAK68x0_MEDIA_6R) {
+ DEBUG("Media type: 6R (Kodak 197-4096 or equivalent)\n");
+ } else {
+ DEBUG("Media type %02x (unknown, please report!)\n", media->media);
+ }
+ DEBUG("Legal print sizes:\n");
+ for (i = 0 ; i < media->count ; i++) {
+ DEBUG("\t%d: %dx%d (%02x) %s\n", i,
+ be16_to_cpu(media->sizes[i].width),
+ be16_to_cpu(media->sizes[i].height),
+ media->sizes[i].code,
+ media->sizes[i].code2? "Disallowed" : "");
+ }
+ DEBUG("\n");
+}
+
+static int kodak6800_get_mediainfo(struct kodak6800_ctx *ctx, struct kodak68x0_media_readback *media)
+{
+ uint8_t req[16];
+ int ret, num;
+
+ memset(req, 0, sizeof(req));
+ memset(media, 0, sizeof(*media));
+
+ req[0] = 0x03;
+ req[1] = 0x1b;
+ req[2] = 0x43;
+ req[3] = 0x48;
+ req[4] = 0x43;
+ req[5] = 0x1a;
+
+ /* Send request */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ req, sizeof(req))))
+ return ret;
+
+ /* Get response */
+ ret = read_data(ctx->dev, ctx->endp_up,
+ (uint8_t*)media, MAX_MEDIA_LEN, &num);
+
+ if (ret < 0)
+ return ret;
+ if (num < (int)sizeof(*media)) {
+ ERROR("Short read! (%d/%d)\n", num, (int) sizeof(*media));
+ return 4;
+ }
+
+
+ /* Validate proper response */
+ if (media->hdr != 0x01 ||
+ media->null[0] != 0x00) {
+ ERROR("Unexpected response from media query!\n");
+ return CUPS_BACKEND_STOP;
+ }
+
+ ctx->media = media->media;
+
+ return 0;
+}
+
+static void kodak68x0_dump_status(struct kodak6800_ctx *ctx, struct kodak68x0_status_readback *status)
+{
+ if (status->errtype || status->errtype2 || status->errcode) {
+ DEBUG("Error code : %s (%d/%d) # %d\n",
+ kodak68x0_error_codes(status->errtype, status->errtype2),
+ status->errtype, status->errtype2, status->errcode);
+ }
+ DEBUG("Total prints : %d\n", be32_to_cpu(status->ctr0));
+ DEBUG("Media prints : %d\n", be32_to_cpu(status->ctr2));
+ if (ctx->type == P_KODAK_6850) {
+ int max;
+ if (ctx->media == KODAK68x0_MEDIA_6R) {
+ max = 375;
+ } else {
+ max = 0;
+ }
+
+ if (max) {
+ DEBUG("Remaining prints : %d\n", max - be32_to_cpu(status->ctr2));
+ } else {
+ DEBUG("Remaining prints : Unknown media type\n");
+ }
+ }
+ DEBUG("Main FW version : %d\n", be16_to_cpu(status->main_fw));
+ DEBUG("DSP FW version : %d\n", be16_to_cpu(status->dsp_fw));
+ DEBUG("Donor : %d%%\n", status->donor);
+ DEBUG("\n");
+}
+
+static int kodak6800_get_status(struct kodak6800_ctx *ctx,
+ struct kodak68x0_status_readback *status)
+{
+ uint8_t req[16];
+ int ret, num;
+
+ memset(req, 0, sizeof(req));
+ memset(status, 0, sizeof(*status));
+
+ req[0] = 0x03;
+ req[1] = 0x1b;
+ req[2] = 0x43;
+ req[3] = 0x48;
+ req[4] = 0x43;
+ req[5] = 0x03;
+
+ /* Send request */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ req, sizeof(req))))
+ return ret;
+
+ /* Get response */
+ ret = read_data(ctx->dev, ctx->endp_up,
+ (uint8_t*)status, sizeof(*status), &num);
+
+ if (ret < 0)
+ return ret;
+ if (num < (int)sizeof(*status)) {
+ ERROR("Short read! (%d/%d)\n", num, (int) sizeof(*status));
+ return CUPS_BACKEND_FAILED;
+ }
+
+ if (status->hdr != 0x01) {
+ ERROR("Unexpected response from status query!\n");
+ return CUPS_BACKEND_FAILED;
+ }
+
+ return 0;
+}
-#define READBACK_LEN 68
#define UPDATE_SIZE 1536
static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname)
@@ -93,6 +279,10 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname)
int i;
uint16_t *data = malloc(UPDATE_SIZE);
+ if (!data) {
+ ERROR("Memory Allocation Failure\n");
+ return -1;
+ }
INFO("Dump Tone Curve to '%s'\n", fname);
@@ -198,6 +388,11 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname)
uint16_t *data = malloc(UPDATE_SIZE);
uint8_t *ptr;
+ if (!data) {
+ ERROR("Memory Allocation Failure\n");
+ return -1;
+ }
+
INFO("Set Tone Curve from '%s'\n", fname);
/* Read in file */
@@ -285,10 +480,101 @@ done:
return ret;
}
+static int kodak6800_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len)
+{
+ int ret;
+ int num;
+
+ uint8_t resp[33];
+ uint8_t req[16];
+
+ memset(req, 0, sizeof(req));
+ memset(resp, 0, sizeof(resp));
+
+ req[0] = 0x03;
+ req[1] = 0x1b;
+ req[2] = 0x43;
+ req[3] = 0x48;
+ req[4] = 0x43;
+ req[5] = 0x03;
+
+ /* Send request */
+ if ((ret = send_data(dev, endp_down,
+ req, sizeof(req))))
+ return ret;
+
+ /* Get response */
+ ret = read_data(dev, endp_up,
+ resp, sizeof(resp) - 1, &num);
+
+ if (ret < 0)
+ return ret;
+ if (num != 32) {
+ ERROR("Short read! (%d/%d)\n", num, 32);
+ return 4;
+ }
+ strncpy(buf, (char*)resp+24, buf_len);
+ buf[buf_len-1] = 0;
+
+ return 0;
+}
+
+static int kodak6850_send_init(struct kodak6800_ctx *ctx)
+{
+ uint8_t cmdbuf[64];
+ uint8_t rdbuf[64];
+ int ret = 0, num = 0;
+
+ memset(cmdbuf, 0, CMDBUF_LEN);
+ cmdbuf[0] = 0x03;
+ cmdbuf[1] = 0x1b;
+ cmdbuf[2] = 0x43;
+ cmdbuf[3] = 0x48;
+ cmdbuf[4] = 0x43;
+ cmdbuf[5] = 0x4c;
+
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ cmdbuf, CMDBUF_LEN -1)))
+ return CUPS_BACKEND_FAILED;
+
+ /* Read response */
+ ret = read_data(ctx->dev, ctx->endp_up,
+ rdbuf, READBACK_LEN, &num);
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ if (num < 51) {
+ ERROR("Short read! (%d/%d)\n", num, 51);
+ return CUPS_BACKEND_FAILED;
+ }
+
+ if (num != 51) {
+ ERROR("Unexpected readback from printer (%d/%d from 0x%02x))\n",
+ num, READBACK_LEN, ctx->endp_up);
+ return CUPS_BACKEND_FAILED;
+ }
+
+ if (rdbuf[0] != 0x01 ||
+ rdbuf[2] != 0x43) {
+ ERROR("Unexpected response from printer init!\n");
+ return CUPS_BACKEND_FAILED;
+ }
+
+ // XXX I believe this the media position
+ // saying when we have a 4x6 left on an 8x6 blank
+ if (rdbuf[1] != 0x01 && rdbuf[1] != 0x00) {
+ ERROR("Unexpected status code (0x%02x)!\n", rdbuf[1]);
+ return CUPS_BACKEND_FAILED;
+ }
+ return ret;
+}
+
static void kodak6800_cmdline(void)
{
DEBUG("\t\t[ -c filename ] # Get tone curve\n");
DEBUG("\t\t[ -C filename ] # Set tone curve\n");
+ DEBUG("\t\t[ -m ] # Query media\n");
+ DEBUG("\t\t[ -s ] # Query status\n");
}
static int kodak6800_cmdline_arg(void *vctx, int argc, char **argv)
@@ -299,7 +585,7 @@ static int kodak6800_cmdline_arg(void *vctx, int argc, char **argv)
/* Reset arg parsing */
optind = 1;
opterr = 0;
- while ((i = getopt(argc, argv, "C:c:")) >= 0) {
+ while ((i = getopt(argc, argv, "C:c:ms")) >= 0) {
switch(i) {
case 'c':
if (ctx) {
@@ -313,6 +599,32 @@ static int kodak6800_cmdline_arg(void *vctx, int argc, char **argv)
break;
}
return 1;
+ case 'm':
+ if (ctx) {
+ uint8_t mediabuf[MAX_MEDIA_LEN];
+ struct kodak68x0_media_readback *media = (struct kodak68x0_media_readback*)mediabuf;
+ j = kodak6800_get_mediainfo(ctx, media);
+ if (!j)
+ kodak68x0_dump_mediainfo(media);
+ break;
+ }
+ return 1;
+ case 's':
+ if (ctx) {
+ uint8_t mediabuf[MAX_MEDIA_LEN];
+ struct kodak68x0_media_readback *media = (struct kodak68x0_media_readback*)mediabuf;
+ struct kodak68x0_status_readback status;
+ j = kodak6800_get_mediainfo(ctx, media);
+ if (!j)
+ j = kodak6800_get_status(ctx, &status);
+ if (!j)
+ kodak68x0_dump_status(ctx, &status);
+
+ break;
+ }
+
+ return 1;
+
default:
break; /* Ignore completely */
}
@@ -327,11 +639,14 @@ static int kodak6800_cmdline_arg(void *vctx, int argc, char **argv)
static void *kodak6800_init(void)
{
struct kodak6800_ctx *ctx = malloc(sizeof(struct kodak6800_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory Allocation Failure\n");
return NULL;
+ }
memset(ctx, 0, sizeof(struct kodak6800_ctx));
ctx->type = P_ANY;
+ ctx->media = -1;
return ctx;
}
@@ -359,7 +674,6 @@ static void kodak6800_attach(void *vctx, struct libusb_device_handle *dev,
ctx->type = P_KODAK_6800;
}
-
static void kodak6800_teardown(void *vctx) {
struct kodak6800_ctx *ctx = vctx;
@@ -376,7 +690,7 @@ static int kodak6800_read_parse(void *vctx, int data_fd) {
int ret;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
if (ctx->databuf) {
free(ctx->databuf);
@@ -387,11 +701,11 @@ static int kodak6800_read_parse(void *vctx, int data_fd) {
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
if (ret < 0 || ret != sizeof(ctx->hdr)) {
if (ret == 0)
- return 1;
- ERROR("Read failed (%d/%d/%d)\n",
+ return CUPS_BACKEND_CANCEL;
+ ERROR("Read failed (%d/%d/%d)\n",
ret, 0, (int)sizeof(ctx->hdr));
perror("ERROR: Read failed");
- return ret;
+ return CUPS_BACKEND_CANCEL;
}
if (ctx->hdr.hdr[0] != 0x03 ||
ctx->hdr.hdr[1] != 0x1b ||
@@ -399,14 +713,14 @@ static int kodak6800_read_parse(void *vctx, int data_fd) {
ctx->hdr.hdr[3] != 0x48 ||
ctx->hdr.hdr[4] != 0x43) {
ERROR("Unrecognized data format!\n");
- return(1);
+ return CUPS_BACKEND_CANCEL;
}
ctx->datalen = be16_to_cpu(ctx->hdr.rows) * be16_to_cpu(ctx->hdr.columns) * 3;
ctx->databuf = malloc(ctx->datalen);
if (!ctx->databuf) {
ERROR("Memory allocation failure!\n");
- return 2;
+ return CUPS_BACKEND_FAILED;
}
{
@@ -418,207 +732,149 @@ static int kodak6800_read_parse(void *vctx, int data_fd) {
ERROR("Read failed (%d/%d/%d)\n",
ret, remain, ctx->datalen);
perror("ERROR: Read failed");
- return ret;
+ return CUPS_BACKEND_CANCEL;
}
ptr += ret;
remain -= ret;
} while (remain);
}
- return 0;
+ return CUPS_BACKEND_OK;
}
static int kodak6800_main_loop(void *vctx, int copies) {
struct kodak6800_ctx *ctx = vctx;
+ struct kodak68x0_status_readback status;
- uint8_t rdbuf[READBACK_LEN];
- uint8_t rdbuf2[READBACK_LEN];
uint8_t cmdbuf[CMDBUF_LEN];
- int last_state = -1, state = S_IDLE;
+ uint8_t mediabuf[MAX_MEDIA_LEN];
+ struct kodak68x0_media_readback *media = (struct kodak68x0_media_readback*)mediabuf;
+
int num, ret;
- int pending = 0;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
-top:
- if (state != last_state) {
- if (dyesub_debug)
- DEBUG("last_state %d new %d\n", last_state, state);
- }
-
- if (pending)
- goto skip_query;
-
- /* Send Status Query */
- memset(cmdbuf, 0, CMDBUF_LEN);
- cmdbuf[0] = 0x03;
- cmdbuf[1] = 0x1b;
- cmdbuf[2] = 0x43;
- cmdbuf[3] = 0x48;
- cmdbuf[4] = 0x43;
- cmdbuf[5] = 0x03;
+ /* Printer handles generating copies.. */
+ if (ctx->hdr.copies < copies)
+ ctx->hdr.copies = copies;
+ copies = 1;
- if ((ret = send_data(ctx->dev, ctx->endp_down,
- cmdbuf, CMDBUF_LEN - 1)))
- return ret;
-
-skip_query:
- /* Read in the printer status */
- ret = read_data(ctx->dev, ctx->endp_up,
- rdbuf, READBACK_LEN, &num);
+ /* Query loaded media */
+ INFO("Querying loaded media\n");
+ ret = kodak6800_get_mediainfo(ctx, media);
if (ret < 0)
- return ret;
+ return CUPS_BACKEND_FAILED;
- if (num < 51) {
- ERROR("Short read! (%d/%d)\n", num, 51);
- return 4;
+ /* Appears to depend on media */
+ if (media->media != KODAK68x0_MEDIA_6R &&
+ media->media != 0x03) {
+ ERROR("Unrecognized media type %02x\n", media->media);
+ return CUPS_BACKEND_STOP;
}
- if (num != 51 && num != 58 && num != 68) {
- ERROR("Unexpected readback from printer (%d/%d from 0x%02x))\n",
- num, READBACK_LEN, ctx->endp_up);
- return ret;
+ /* Validate against supported media list */
+ for (num = 0 ; num < media->count; num++) {
+ if (media->sizes[num].height == ctx->hdr.rows &&
+ media->sizes[num].width == ctx->hdr.columns)
+ break;
}
-
- // XXX detect media type based on readback?
-
- if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
- memcpy(rdbuf2, rdbuf, READBACK_LEN);
- } else if (state == last_state) {
- sleep(1);
+ if (num == media->count) {
+ ERROR("Print size unsupported by media!\n");
+ return CUPS_BACKEND_HOLD;
}
- last_state = state;
-
- fflush(stderr);
-
- pending = 0;
-
- switch (state) {
- case S_IDLE:
- INFO("Waiting for printer idle\n");
- if (rdbuf[0] != 0x01 ||
- rdbuf[1] != 0x02 ||
- rdbuf[2] != 0x01) {
- break;
- }
-
- INFO("Printing started; Sending init sequence\n");
- if (ctx->type == P_KODAK_6850)
- state = S_6850_READY;
- else
- state = S_READY;
- break;
- case S_6850_READY:
- INFO("Sending 6850 init sequence\n");
- memset(cmdbuf, 0, CMDBUF_LEN);
- cmdbuf[0] = 0x03;
- cmdbuf[1] = 0x1b;
- cmdbuf[2] = 0x43;
- cmdbuf[3] = 0x48;
- cmdbuf[4] = 0x43;
- cmdbuf[5] = 0x4c;
-
- if ((ret = send_data(ctx->dev, ctx->endp_down,
- cmdbuf, CMDBUF_LEN -1)))
- return ret;
- pending = 1;
- state = S_6850_READY_WAIT;
- break;
- case S_6850_READY_WAIT:
- if (rdbuf[0] != 0x01 ||
- rdbuf[2] != 0x43) {
- state = S_6850_READY;
- break;
- }
- state = S_READY;
- break;
- case S_READY:
- INFO("Sending attention sequence\n");
- /* Send reset/attention */
- memset(cmdbuf, 0, CMDBUF_LEN);
- cmdbuf[0] = 0x03;
- cmdbuf[1] = 0x1b;
- cmdbuf[2] = 0x43;
- cmdbuf[3] = 0x48;
- cmdbuf[4] = 0x43;
- cmdbuf[5] = 0x1a;
-
- if ((ret = send_data(ctx->dev, ctx->endp_down,
- cmdbuf, CMDBUF_LEN -1)))
- return ret;
- pending = 1;
- state = S_STARTED;
- break;
- case S_STARTED:
- if (rdbuf[0] != 0x01 ||
- rdbuf[2] != 0x00)
- break;
- /* Aappears to depend on media */
- if (rdbuf[1] != 0x0b &&
- rdbuf[1] != 0x03)
- break;
+top:
+ INFO("Waiting for printer idle\n");
- memcpy(cmdbuf, &ctx->hdr, CMDBUF_LEN);
+ while(1) {
+ if (kodak6800_get_status(ctx, &status))
+ return CUPS_BACKEND_FAILED;
- /* 6850 uses same spool format but different header gets sent */
- if (ctx->type == P_KODAK_6850) {
- if (ctx->hdr.media == 0x00)
- cmdbuf[7] = 0x04;
- else if (ctx->hdr.media == 0x06)
- cmdbuf[7] = 0x05;
+ if (status.errtype || status.errtype2 || status.errcode) {
+ ERROR("Printer error reported: %s (%d/%d) # %d\n",
+ kodak68x0_error_codes(status.errtype, status.errtype2),
+ status.errtype, status.errtype2, status.errcode);
+ return CUPS_BACKEND_FAILED;
}
- /* If we're printing a 4x6 on 8x6 media... */
- if (ctx->hdr.media == 0x00 &&
- rdbuf[11] == 0x09 &&
- rdbuf[12] == 0x82) {
- cmdbuf[14] = 0x06;
- cmdbuf[16] = 0x01;
+ if (status.sts1 == 0x01) {
+ // do nothing, this is expected.
+ sleep(1);
+ continue;
+ } else if (status.sts1 != 0x02) {
+ ERROR("Unknown status1 0x%02x\n", status.sts1);
+ return CUPS_BACKEND_FAILED;
}
- INFO("Sending image header\n");
- if ((ret = send_data(ctx->dev, ctx->endp_down,
- cmdbuf, CMDBUF_LEN)))
- return ret;
- pending = 1;
- state = S_SENT_HDR;
- break;
- case S_SENT_HDR:
- INFO("Waiting for printer to accept data\n");
- if (rdbuf[0] != 0x01 ||
- rdbuf[1] != 0x02 ||
- rdbuf[2] != 0x01) {
+ if (status.sts2 == 0x02) {
+ ERROR("Printer is out of media!\n");
+ return CUPS_BACKEND_STOP;
+ } else if (status.sts2 == 0x03) {
+ ERROR("Printer is offline!\n");
+ return CUPS_BACKEND_STOP;
+ } else if (status.sts2 != 0x01) {
+ ERROR("Unknown status 0x%02x\n", status.sts2);
+ return CUPS_BACKEND_FAILED;
+ } else {
break;
}
+ }
- INFO("Sending image data\n");
- if ((ret = send_data(ctx->dev, ctx->endp_down,
- ctx->databuf, ctx->datalen)))
+ if (ctx->type == P_KODAK_6850) {
+ INFO("Sending 6850 init sequence\n");
+ ret = kodak6850_send_init(ctx);
+ if (ret)
return ret;
-
- INFO("Image data sent\n");
- state = S_SENT_DATA;
- break;
- case S_SENT_DATA:
- INFO("Waiting for printer to acknowledge completion\n");
- if (rdbuf[0] != 0x01 ||
- rdbuf[1] != 0x02 ||
- rdbuf[2] != 0x01) {
+ sleep(1);
+ }
+
+ /* Set up print job header */
+ memcpy(cmdbuf, &ctx->hdr, CMDBUF_LEN);
+
+ /* 6850 uses same spool format but different header gets sent */
+ if (ctx->type == P_KODAK_6850) {
+ if (ctx->hdr.size == 0x00)
+ cmdbuf[7] = 0x04;
+ else if (ctx->hdr.size == 0x06)
+ cmdbuf[7] = 0x05; /* XXX audit this! */
+ }
+
+ /* If we're printing a 4x6 on 8x6 media... */
+ if (ctx->hdr.size == 0x00 &&
+ be16_to_cpu(media->sizes[0].width) == 0x0982) {
+ cmdbuf[14] = 0x06;
+ cmdbuf[16] = 0x01;
+ }
+
+ INFO("Sending image header\n");
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ cmdbuf, CMDBUF_LEN)))
+ return ret;
+ sleep(1);
+ INFO("Sending image data\n");
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ ctx->databuf, ctx->datalen)))
+ return CUPS_BACKEND_FAILED;
+
+ INFO("Waiting for printer to acknowledge completion\n");
+ sleep(1);
+ while(1) {
+ if (kodak6800_get_status(ctx, &status))
+ return CUPS_BACKEND_FAILED;
+
+ if (status.sts1 == 0x01) {
+ // do nothing, this is expected.
+ } else if (status.sts1 != 0x02) {
+ ERROR("Unknown status1 0x%02x\n", status.sts1);
+ return CUPS_BACKEND_FAILED;
+ } else {
break;
}
-
- state = S_FINISHED;
- break;
- default:
- break;
- };
-
- if (state != S_FINISHED)
- goto top;
-
+ sleep(1);
+ }
+
/* Clean up */
if (terminate)
copies = 1;
@@ -626,17 +882,16 @@ skip_query:
INFO("Print complete (%d copies remaining)\n", copies - 1);
if (copies && --copies) {
- state = S_IDLE;
goto top;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
/* Exported */
struct dyesub_backend kodak6800_backend = {
.name = "Kodak 6800/6850",
- .version = "0.32",
+ .version = "0.43",
.uri_prefix = "kodak6800",
.cmdline_usage = kodak6800_cmdline,
.cmdline_arg = kodak6800_cmdline_arg,
@@ -645,6 +900,7 @@ struct dyesub_backend kodak6800_backend = {
.teardown = kodak6800_teardown,
.read_parse = kodak6800_read_parse,
.main_loop = kodak6800_main_loop,
+ .query_serno = kodak6800_query_serno,
.devices = {
{ USB_VID_KODAK, USB_PID_KODAK_6800, P_KODAK_6800, "Kodak"},
{ USB_VID_KODAK, USB_PID_KODAK_6850, P_KODAK_6850, "Kodak"},
@@ -662,18 +918,23 @@ struct dyesub_backend kodak6800_backend = {
Header:
03 1b 43 48 43 0a 00 01 00 Fixed header
- CC Number of copies
+ NN Number of copies (01-255)
WW WW Number of columns, big endian. (Fixed at 1844 on 6800)
HH HH Number of rows, big endian.
- DD 0x00 (4x6) 0x06 (8x6) 0x07 (5x7 on 6850)
+ SS 0x00 (4x6) 0x06 (8x6) 0x07 (5x7 on 6850)
LL Laminate, 0x00 (off) or 0x01 (on)
- 00
+ UU 0x01 for multi-cut, 0x00 otherwise.
+
+ Note: For 4x6 prints on 6x8 media, print size (SS) is set to 0x06 and the
+ final octet is set to 0x01.
************************************************************************
Kodak 6800 Printer Comms:
- [[file header]] 03 1b 43 48 43 0a 00 01 00 CC WW WW HH HH MT LL 00
+ [[file header]] 03 1b 43 48 43 0a 00 01 00 NN WW WW HH HH SS LL UU
+
+ (see above for details on fields)
-> 03 1b 43 48 43 03 00 00 00 00 00 00 00 00 00 00 [status query]
<- [51 octets]
@@ -683,15 +944,16 @@ struct dyesub_backend kodak6800_backend = {
00 01 00 83 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
--> 03 1b 43 48 43 1a 00 00 00 00 00 00 00 00 00 00 [get ready]
+-> 03 1b 43 48 43 1a 00 00 00 00 00 00 00 00 00 00 [media query]
<- [58 octets]
01 XX 00 00 00 00 00 04 06 WW WW MM MM 01 00 00 [MM MM == max printable size of media, 09 82 == 2434 for 6x8!]
00 00 06 WW WW 09 ba 01 02 00 00 00 06 WW WW HH [09 ba == 2940 == cut area?]
- HH 01 01 00 00 00 06 WW WW MM MM 01 03 00 00 00 [XX == media type?; 0b/03]
+ HH 01 01 00 00 00 06 WW WW MM MM 01 03 00 00 00 [XX == 0b or 03 == media type?]
00 00 00 00 00 00 00 00 00 00
--> 03 1b 43 48 43 0a 00 01 00 01 WW WW HH HH 06 01 [ image header, modified (trailing 0x01, '0x06' as media type) ]
+
+-> 03 1b 43 48 43 0a 00 01 00 01 WW WW HH HH 06 01 [ image header, modified, see above ]
01
<- [51 octets]
@@ -717,7 +979,7 @@ struct dyesub_backend kodak6800_backend = {
-> 03 1b 43 48 43 03 00 00 00 00 00 00 00 00 00 00 [ status query ]
<- [51 octets, repeats]
- Other stuff seen:
+ Possible Serial number query:
-> 03 1b 43 48 43 12 00 00 00 00 00 00 00 00 00 00
<- [32 octets]
@@ -782,7 +1044,11 @@ struct dyesub_backend kodak6800_backend = {
Kodak 6850 Printer Comms:
- [[file header]] 03 1b 43 48 43 0a 00 01 00 CC WW WW HH HH MT LL 00
+ [[file header]] 03 1b 43 48 43 0a 00 XX 00 CC WW WW HH HH SS LL UU
+
+ Note: 'XX' paper code is 0x04 for 4x6, 0x06 for 6x8 on the 6850!
+
+ (See above for details on all other fields)
-> 03 1b 43 48 43 03 00 00 00 00 00 00 00 00 00 00 [status query]
<- [51 octets]
@@ -800,20 +1066,25 @@ struct dyesub_backend kodak6800_backend = {
00 01 02 1d 03 00 00 00 00 01 00 01 00 00 00 00
00 00 00
+ 01 00 43 48 43 4c 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 01 00 00 b7 d3 00 00 00 5c 00 03 02 8c
+ 00 01 02 1c 00 00 00 00 00 01 00 01 00 00 00 00
+ 00 00 00
+
-> 03 1b 43 48 43 03 00 00 00 00 00 00 00 00 00 00 [status query]
<- [51 octets -- same as status query before ]
--> 03 1b 43 48 43 1a 00 00 00 00 00 00 00 00 00 00 [get ready]
+-> 03 1b 43 48 43 1a 00 00 00 00 00 00 00 00 00 00 [media query]
<- [68 octets]
01 XX 00 00 00 00 00 06 06 WW WW MM MM 01 00 00 [MM MM == max printable size of media, 09 82 == 2434 for 6x8!]
00 00 06 WW WW 09 ba 01 02 01 00 00 06 WW WW HH [09 ba == 2940 == cut area?]
- HH 01 01 00 00 00 06 WW WW MM MM 01 03 00 00 00 [XX == media type? 03/0b ]
+ HH 01 01 00 00 00 06 WW WW MM MM 01 03 00 00 00 [XX == 0b or 03 == media type?]
06 WW WW 09 ba 01 05 01 00 00 06 WW WW HH HH 01
04 00 00 00
--> 03 1b 43 48 43 0a 00 04 00 01 07 34 04 d8 06 01 [ image header, modified ]
- 01 [ note we use '04' for 4x6, '05' for 6x8. last octet is always 0x01 when 4x6. ]
+-> 03 1b 43 48 43 0a 00 04 00 01 07 34 04 d8 06 01 [ image header, modified, see above ]
+ 01
<- [51 octets]
@@ -835,7 +1106,7 @@ struct dyesub_backend kodak6800_backend = {
00 01 02 1d 04 00 00 01 00 00 00 01 00 00 00 00
00 00 00
- Other stuff seen:
+ Possible Serial number query:
-> 03 1b 43 48 43 12 00 00 00 00 00 00 00 00 00 00
00
@@ -907,12 +1178,42 @@ struct dyesub_backend kodak6800_backend = {
Also seen on the 6850:
-DEBUG: readback: 01 02 03 00 00 00 01 00 00 01 5f 6f 00 01 5f 6f 00 00 00 09 00 02 90 44 00 00 00 55 00 03 02 90 00 01 02 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+DEBUG: readback:
+
+01 02 03 00 00 00 01 00 00 01 5f 6f 00 01 5f 6f
+00 00 00 09 00 02 90 44 00 00 00 55 00 03 02 90
+00 01 02 1d 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00
+
INIT/???
-DEBUG: readback: 01 02 03 00 00 00 00 00 00 01 5f 6f 00 01 5f 6f 00 00 00 09 00 02 90 44 00 00 00 55 00 03 02 90 00 01 02 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+DEBUG: readback:
+
+01 02 03 00 00 00 00 00 00 01 5f 6f 00 01 5f 6f
+00 00 00 09 00 02 90 44 00 00 00 55 00 03 02 90
+00 01 02 1d 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00
+
??? 6x8c
-DEBUG: readback: 01 02 01 00 00 00 00 00 00 01 5f 6f 00 01 5f 6f 00 00 00 09 00 02 90 44 00 00 00 55 00 03 02 90 00 01 02 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+DEBUG: readback:
+
+01 02 01 00 00 00 00 00 00 01 5f 6f 00 01 5f 6f
+00 00 00 09 00 02 90 44 00 00 00 55 00 03 02 90
+00 01 02 1d 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00
+
+Seen on the 6850 with no media loaded:
+
+01 02 02 00 00 00 10 00 00 00 5d 1d 00 00 5d 1d
+00 00 00 00 00 00 b7 cc 00 00 00 00 00 03 02 8c
+00 01 02 1c 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00
+
+Seen on 6850 with 6R media (6x8) while offline:
+01 02 03 00 00 00 03 00 00 00 5d 1f 00 00 5d 1f
+00 00 00 01 00 00 b7 d3 00 00 00 5c 00 03 02 8c
+00 01 02 1c 00 00 00 00 00 01 00 01 00 00 00 00
+00 00 00
*/
diff --git a/src/cups/mitsu70x_print.c b/src/cups/mitsu70x_print.c
index 72f5f2e..2b9e56d 100644
--- a/src/cups/mitsu70x_print.c
+++ b/src/cups/mitsu70x_print.c
@@ -1,7 +1,7 @@
/*
* Mitsubishi CP-D70/D707 Photo Printer CUPS backend -- libusb-1.0 version
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@@ -40,6 +40,9 @@
#define USB_VID_MITSU 0x06D3
#define USB_PID_MITSU_D70X 0x3B30
#define USB_PID_MITSU_K60 0x3B31
+//#define USB_PID_MITSU_D80 XXXXXX
+#define USB_VID_KODAK 0x040a
+#define USB_PID_KODAK305 0x404f
/* Private data stucture */
struct mitsu70x_ctx {
@@ -49,6 +52,11 @@ struct mitsu70x_ctx {
uint8_t *databuf;
int datalen;
+
+ uint16_t rows;
+ uint16_t cols;
+
+ int k60;
};
/* Program states */
@@ -60,13 +68,72 @@ enum {
S_FINISHED,
};
+/* Printer data structures */
+struct mitsu70x_state {
+ uint32_t hdr;
+ uint8_t data[22];
+} __attribute__((packed));
+
+struct mitsu70x_status_deck {
+ uint16_t present; /* 0x80 for NOT present, 0x00 otherwise */
+ uint16_t unk[9];
+ uint16_t capacity; /* media capacity */
+ uint16_t remain; /* media remaining */
+ uint16_t unkb[2];
+ uint16_t prints; /* lifetime prints on deck? */
+ uint16_t unkc[1];
+ uint16_t blank[16]; /* All fields are 0x8000 */
+} __attribute__((packed));
+
+struct mitsu70x_status_ver {
+ char ver[6];
+ uint8_t unk[2]; /* checksum? */
+} __attribute__((packed));
+
+struct mitsu70x_status_resp {
+ uint8_t hdr[4];
+ uint8_t unk[36];
+ int16_t model[6]; /* LE, UTF-16 */
+ int16_t serno[6]; /* LE, UTF-16 */
+ struct mitsu70x_status_ver vers[7];
+ uint8_t null[8];
+ struct mitsu70x_status_deck lower;
+ struct mitsu70x_status_deck upper;
+} __attribute__((packed));
+
+struct mitsu70x_hdr {
+ uint32_t cmd;
+ uint8_t zero0[12];
+
+ uint16_t cols;
+ uint16_t rows;
+ uint16_t lamcols;
+ uint16_t lamrows;
+ uint8_t superfine;
+ uint8_t zero1[7];
+
+ uint8_t deck;
+ uint8_t zero2[7];
+ uint8_t zero3;
+ uint8_t laminate;
+ uint8_t zero4[6];
+
+ uint8_t multicut;
+ uint8_t zero5[15];
+
+ uint8_t zero6[448];
+} __attribute__((packed));
+
+#define CMDBUF_LEN 512
#define READBACK_LEN 256
static void *mitsu70x_init(void)
{
struct mitsu70x_ctx *ctx = malloc(sizeof(struct mitsu70x_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory Allocation Failure!\n");
return NULL;
+ }
memset(ctx, 0, sizeof(struct mitsu70x_ctx));
return ctx;
@@ -76,12 +143,24 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev,
uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
{
struct mitsu70x_ctx *ctx = vctx;
+ struct libusb_device *device;
+ struct libusb_device_descriptor desc;
UNUSED(jobid);
ctx->dev = dev;
ctx->endp_up = endp_up;
ctx->endp_down = endp_down;
+
+ device = libusb_get_device(dev);
+ libusb_get_device_descriptor(device, &desc);
+
+ if (desc.idProduct == USB_PID_MITSU_K60)
+ ctx->k60 = 1;
+
+ if (desc.idProduct == USB_PID_KODAK305)
+ ctx->k60 = 1;
+
}
@@ -96,34 +175,14 @@ static void mitsu70x_teardown(void *vctx) {
free(ctx);
}
-/* Max job size is 6x9+lamination, equalling ~38MB */
-#define MAX_PRINTJOB_LEN (1024*1024*40)
-
-struct mitsu70x_hdr {
- uint32_t cmd;
- uint8_t zero0[12];
- uint16_t cols;
- uint16_t rows;
- uint16_t lamcols;
- uint16_t lamrows;
- uint8_t superfine;
- uint8_t zero1[7];
- uint8_t deck;
- uint8_t zero2[7];
- uint8_t zero3;
- uint8_t laminate;
- uint8_t zero4[6];
- uint8_t zero5[512-48];
-};
-
static int mitsu70x_read_parse(void *vctx, int data_fd) {
struct mitsu70x_ctx *ctx = vctx;
uint8_t hdr[1024];
int i, remain;
- struct mitsu70x_hdr *mhdr = (struct mitsu70x_hdr*)(hdr + 512);
+ struct mitsu70x_hdr *mhdr = (struct mitsu70x_hdr*)(hdr + sizeof(struct mitsu70x_hdr));
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
if (ctx->databuf) {
free(ctx->databuf);
@@ -135,9 +194,9 @@ static int mitsu70x_read_parse(void *vctx, int data_fd) {
while (remain > 0) {
i = read(data_fd, hdr + sizeof(hdr) - remain, remain);
if (i == 0)
- return 1;
+ return CUPS_BACKEND_CANCEL;
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
remain -= i;
}
@@ -147,16 +206,19 @@ static int mitsu70x_read_parse(void *vctx, int data_fd) {
hdr[2] != 0x57 ||
hdr[3] != 0x55) {
ERROR("Unrecognized data format!\n");
- return(1);
+ return CUPS_BACKEND_CANCEL;
}
/* Work out printjob size */
- remain = be16_to_cpu(mhdr->rows) * be16_to_cpu(mhdr->cols) * 2;
+ ctx->cols = be16_to_cpu(mhdr->cols);
+ ctx->rows = be16_to_cpu(mhdr->rows);
+
+ remain = ctx->rows * ctx->cols * 2;
remain = (remain + 511) / 512 * 512; /* Round to nearest 512 bytes. */
remain *= 3; /* One for each plane */
if (mhdr->laminate) {
- i = be16_to_cpu(mhdr->lamrows) * be16_to_cpu(mhdr->lamcols) * 2;
+ i = be16_to_cpu(mhdr->lamcols) * be16_to_cpu(mhdr->lamrows) * 2;
i = (i + 511) / 512 * 512; /* Round to nearest 512 bytes. */
remain += i;
}
@@ -164,7 +226,7 @@ static int mitsu70x_read_parse(void *vctx, int data_fd) {
ctx->databuf = malloc(sizeof(hdr) + remain);
if (!ctx->databuf) {
ERROR("Memory allocation failure!\n");
- return 2;
+ return CUPS_BACKEND_FAILED;
}
memcpy(ctx->databuf, &hdr, sizeof(hdr));
@@ -174,43 +236,69 @@ static int mitsu70x_read_parse(void *vctx, int data_fd) {
while(remain) {
i = read(data_fd, ctx->databuf + ctx->datalen, remain);
if (i == 0)
- return 1;
+ return CUPS_BACKEND_CANCEL;
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
ctx->datalen += i;
remain -= i;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
-#define CMDBUF_LEN 512
-#define READBACK_LEN 256
-
-static int mitsu70x_main_loop(void *vctx, int copies) {
- struct mitsu70x_ctx *ctx = vctx;
-
- uint8_t rdbuf[READBACK_LEN];
- uint8_t rdbuf2[READBACK_LEN];
+static int mitsu70x_do_pagesetup(struct mitsu70x_ctx *ctx)
+{
uint8_t cmdbuf[CMDBUF_LEN];
+ uint8_t rdbuf[READBACK_LEN];
- int last_state = -1, state = S_IDLE;
+ uint16_t tmp;
+
int num, ret;
- int pending = 0;
- if (!ctx)
- return 1;
-
-top:
- if (state != last_state) {
- if (dyesub_debug)
- DEBUG("last_state %d new %d\n", last_state, state);
+ memset(cmdbuf, 0, CMDBUF_LEN);
+ cmdbuf[0] = 0x1b;
+ cmdbuf[1] = 0x56;
+ cmdbuf[2] = 0x33;
+ cmdbuf[3] = 0x00;
+ tmp = cpu_to_be16(ctx->cols);
+ memcpy(cmdbuf + 4, &tmp, 2);
+ tmp = cpu_to_be16(ctx->rows);
+ memcpy(cmdbuf + 6, &tmp, 2);
+ cmdbuf[8] = 0x00; // or 0x80??
+ cmdbuf[9] = 0x00;
+
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ cmdbuf, 10)))
+ return CUPS_BACKEND_FAILED;
+
+ /* Read in the printer status */
+ ret = read_data(ctx->dev, ctx->endp_up,
+ rdbuf, READBACK_LEN, &num);
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ if (num != 6) {
+ ERROR("Short Read! (%d/%d)\n", num, 26);
+ return CUPS_BACKEND_FAILED;
+ }
+
+ /* Make sure response is sane */
+ if (rdbuf[0] != 0xe4 ||
+ rdbuf[1] != 0x56 ||
+ rdbuf[2] != 0x33) {
+ ERROR("Unknown response from printer\n");
+ return CUPS_BACKEND_FAILED;
}
+
+ return 0;
+}
- if (pending)
- goto skip_query;
+static int mitsu70x_get_state(struct mitsu70x_ctx *ctx, struct mitsu70x_state *resp)
+{
+ uint8_t cmdbuf[CMDBUF_LEN];
+ int num, ret;
- /* Send Status Query */
+ /* Send Printer Query */
memset(cmdbuf, 0, CMDBUF_LEN);
cmdbuf[0] = 0x1b;
cmdbuf[1] = 0x56;
@@ -222,36 +310,73 @@ top:
if ((ret = send_data(ctx->dev, ctx->endp_down,
cmdbuf, 6)))
return ret;
- /* Send Status Query */
+
+ memset(resp, 0, sizeof(*resp));
+
+ ret = read_data(ctx->dev, ctx->endp_up,
+ (uint8_t*) resp, sizeof(*resp), &num);
+
+ if (ret < 0)
+ return ret;
+ if (num != sizeof(*resp)) {
+ ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(*resp));
+ return 4;
+ }
+
+ return 0;
+}
+
+static int mitsu70x_get_status(struct mitsu70x_ctx *ctx, struct mitsu70x_status_resp *resp)
+{
+ uint8_t cmdbuf[CMDBUF_LEN];
+ int num, ret;
+
+ /* Send Printer Query */
memset(cmdbuf, 0, CMDBUF_LEN);
cmdbuf[0] = 0x1b;
cmdbuf[1] = 0x56;
- cmdbuf[2] = 0x31;
+ cmdbuf[2] = 0x32;
cmdbuf[3] = 0x30;
-
-skip_query:
- /* Read in the printer status */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ cmdbuf, 4)))
+ return ret;
+ memset(resp, 0, sizeof(*resp));
ret = read_data(ctx->dev, ctx->endp_up,
- rdbuf, READBACK_LEN, &num);
+ (uint8_t*) resp, sizeof(*resp), &num);
+
if (ret < 0)
return ret;
-
- if (num != 26) {
- ERROR("Short Read! (%d/%d)\n", num, 26);
+ if (num != sizeof(*resp)) {
+ ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(*resp));
return 4;
}
- if (dyesub_debug) {
- unsigned int i;
- DEBUG("Printer Status Dump: ");
- for (i = 0 ; i < 26 ; i++) {
- DEBUG2("%02x ", rdbuf[i]);
- }
- DEBUG2("\n");
+ return 0;
+}
+
+static int mitsu70x_main_loop(void *vctx, int copies) {
+ struct mitsu70x_ctx *ctx = vctx;
+
+ struct mitsu70x_state rdbuf, rdbuf2;
+
+ int last_state = -1, state = S_IDLE;
+ int ret;
+
+ if (!ctx)
+ return CUPS_BACKEND_FAILED;
+
+top:
+ if (state != last_state) {
+ if (dyesub_debug)
+ DEBUG("last_state %d new %d\n", last_state, state);
}
- if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
- memcpy(rdbuf2, rdbuf, READBACK_LEN);
+ ret = mitsu70x_get_state(ctx, &rdbuf);
+ if (ret)
+ return CUPS_BACKEND_FAILED;
+
+ if (memcmp(&rdbuf, &rdbuf2, sizeof(rdbuf))) {
+ memcpy(&rdbuf2, &rdbuf, sizeof(rdbuf));
} else if (state == last_state) {
sleep(1);
}
@@ -259,39 +384,80 @@ skip_query:
fflush(stderr);
- pending = 0;
-
switch (state) {
case S_IDLE:
INFO("Waiting for printer idle\n");
- if (rdbuf[7] != 0x00 ||
- rdbuf[8] != 0x00 ||
- rdbuf[9] != 0x00) {
+#if 0 // XXX no idea if this works..
+ if (rdbuf.data[9] != 0x00) {
break;
}
-
+#endif
INFO("Sending attention sequence\n");
if ((ret = send_data(ctx->dev, ctx->endp_down,
- ctx->databuf, 512)))
- return ret;
-
+ ctx->databuf, sizeof(struct mitsu70x_hdr))))
+ return CUPS_BACKEND_FAILED;
+
state = S_SENT_ATTN;
- case S_SENT_ATTN:
- INFO("Sending header sequence\n");
+ break;
+ case S_SENT_ATTN: {
+ struct mitsu70x_status_resp resp;
+ ret = mitsu70x_get_status(ctx, &resp);
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
- if ((ret = send_data(ctx->dev, ctx->endp_down,
- ctx->databuf + 512, 512)))
- return ret;
+ /* Yes, do it twice.. */
+
+ ret = mitsu70x_get_status(ctx, &resp);
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ // XXX check resp for sanity?
state = S_SENT_HDR;
break;
+ }
case S_SENT_HDR:
- INFO("Sending data\n");
+ INFO("Sending Page setup sequence\n");
+ if ((ret = mitsu70x_do_pagesetup(ctx)))
+ return ret;
+
+ INFO("Sending header sequence\n");
+
+ /* K60 may require fixups */
+ if (ctx->k60) {
+ struct mitsu70x_hdr *hdr = (struct mitsu70x_hdr*) (ctx->databuf + sizeof(struct mitsu70x_hdr));
+ /* K60 only has a lower deck */
+ hdr->deck = 1;
+
+ /* 4x6 prints on 6x8 media need multicut mode */
+ if (ctx->cols == 0x0748 &&
+ ctx->rows == 0x04c2)
+ hdr->multicut = 1;
+ }
if ((ret = send_data(ctx->dev, ctx->endp_down,
- ctx->databuf + 1024, ctx->datalen - 1024)))
- return ret;
-
+ ctx->databuf + sizeof(struct mitsu70x_hdr),
+ sizeof(struct mitsu70x_hdr))))
+ return CUPS_BACKEND_FAILED;
+
+ INFO("Sending data\n");
+
+ {
+ /* K60 and 305 need data sent in 256K chunks, but the first
+ chunk needs to subtract the length of the 512-byte header */
+ int chunk = 256*1024 - sizeof(struct mitsu70x_hdr);
+ int sent = 1024;
+ while (ctx->datalen > 0) {
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ ctx->databuf + sent, chunk)))
+ return CUPS_BACKEND_FAILED;
+ sent += chunk;
+ chunk = ctx->datalen - sent;
+ if (chunk > 256*1024)
+ chunk = 256*1024;
+ }
+ }
+
state = S_SENT_DATA;
break;
case S_SENT_DATA:
@@ -317,80 +483,84 @@ skip_query:
goto top;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
-struct mitsu70x_status_deck {
- uint8_t unk[64];
- // unk[0] 0x80 for NOT PRESENT, 0x00 for present.
- // unk[7-8] 0x01ff or 0x0200? Changes; maybe status?
- // unk[22-23] prints remaining, 16-bit BE
+static void mitsu70x_dump_status(struct mitsu70x_status_resp *resp)
+{
+ unsigned int i;
+
+ INFO("Model : ");
+ for (i = 0 ; i < 6 ; i++) {
+ DEBUG2("%c", le16_to_cpu(resp->model[i]) & 0x7f);
+ }
+ DEBUG2("\n");
+ INFO("Serial Number : ");
+ for (i = 0 ; i < 6 ; i++) {
+ DEBUG2("%c", le16_to_cpu(resp->serno[i]) & 0x7f);
+ }
+ DEBUG2("\n");
+ for (i = 0 ; i < 7 ; i++) {
+ char buf[7];
+ if (resp->vers[i].ver[5] == '@') /* "DUMMY@" */
+ continue;
+ memcpy(buf, resp->vers[i].ver, 6);
+ buf[6] = 0;
+ INFO("Component #%d ID: %s (%02x%02x)\n",
+ i, buf, resp->vers[i].unk[0], resp->vers[i].unk[1]);
+ }
+ if (resp->upper.present) { /* IOW, Not present */
+ INFO("Prints remaining: %03d/%03d\n",
+ be16_to_cpu(resp->lower.remain),
+ be16_to_cpu(resp->lower.capacity));
+ } else {
+ INFO("Prints remaining: Lower: %03d/%03d\n"
+ " Upper: %03d/%03d\n",
+ be16_to_cpu(resp->lower.remain),
+ be16_to_cpu(resp->lower.capacity),
+ be16_to_cpu(resp->upper.remain),
+ be16_to_cpu(resp->upper.capacity));
+ }
+}
-};
+static int mitsu70x_query_status(struct mitsu70x_ctx *ctx)
+{
+ struct mitsu70x_status_resp resp;
+ int ret;
-struct mitsu70x_status_resp {
- uint8_t unk[128];
- struct mitsu70x_status_deck lower;
- struct mitsu70x_status_deck upper;
-};
+ ret = mitsu70x_get_status(ctx, &resp);
-static int mitsu70x_get_status(struct mitsu70x_ctx *ctx)
+ if (!ret)
+ mitsu70x_dump_status(&resp);
+
+ return ret;
+}
+
+static int mitsu70x_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len)
{
- uint8_t cmdbuf[CMDBUF_LEN];
+ int ret, i;
struct mitsu70x_status_resp resp;
- int num, ret;
-
- /* Send Printer Query */
- memset(cmdbuf, 0, CMDBUF_LEN);
- cmdbuf[0] = 0x1b;
- cmdbuf[1] = 0x56;
- cmdbuf[2] = 0x32;
- cmdbuf[3] = 0x30;
- if ((ret = send_data(ctx->dev, ctx->endp_down,
- cmdbuf, 4)))
- return ret;
- memset(&resp, 0, sizeof(resp));
- ret = read_data(ctx->dev, ctx->endp_up,
- (uint8_t*) &resp, sizeof(resp), &num);
- if (ret < 0)
- return ret;
- if (num != sizeof(resp)) {
- ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(resp));
- return 4;
- }
+ struct mitsu70x_ctx ctx = {
+ .dev = dev,
+ .endp_up = endp_up,
+ .endp_down = endp_down,
+ };
- if (dyesub_debug) {
- unsigned int i;
+ ret = mitsu70x_get_status(&ctx, &resp);
- DEBUG("Status Dump:\n");
- for (i = 0 ; i < sizeof(resp.unk) ; i++) {
- DEBUG2("%02x ", resp.unk[i]);
- }
- DEBUG2("\n");
- DEBUG("Lower Deck:\n");
- for (i = 0 ; i < sizeof(resp.lower.unk) ; i++) {
- DEBUG2("%02x ", resp.lower.unk[i]);
- }
- DEBUG2("\n");
- DEBUG("Upper Deck:\n");
- for (i = 0 ; i < sizeof(resp.upper.unk) ; i++) {
- DEBUG2("%02x ", resp.upper.unk[i]);
- }
- DEBUG2("\n");
- }
- if (resp.upper.unk[0] & 0x80) { /* Not present */
- INFO("Prints remaining: %d\n",
- (resp.lower.unk[22] << 8) | resp.lower.unk[23]);
- } else {
- INFO("Prints remaining: Lower: %d Upper: %d\n",
- (resp.lower.unk[22] << 8) | resp.lower.unk[23],
- (resp.upper.unk[22] << 8) | resp.upper.unk[23]);
+ if (buf_len > 6) /* Will we ever have a buffer under 6 bytes? */
+ buf_len = 6;
+
+ for (i = 0 ; i < buf_len ; i++) {
+ *buf++ = le16_to_cpu(resp.serno[i]) & 0x7f;
}
-
- return 0;
+ *buf = 0; /* Null-terminate the returned string */
+
+ return ret;
}
+
static void mitsu70x_cmdline(void)
{
DEBUG("\t\t[ -s ] # Query status\n");
@@ -408,7 +578,7 @@ static int mitsu70x_cmdline_arg(void *vctx, int argc, char **argv)
switch(i) {
case 's':
if (ctx) {
- j = mitsu70x_get_status(ctx);
+ j = mitsu70x_query_status(ctx);
break;
}
return 1;
@@ -426,7 +596,7 @@ static int mitsu70x_cmdline_arg(void *vctx, int argc, char **argv)
/* Exported */
struct dyesub_backend mitsu70x_backend = {
.name = "Mitsubishi CP-D70/D707/K60",
- .version = "0.16",
+ .version = "0.31",
.uri_prefix = "mitsu70x",
.cmdline_usage = mitsu70x_cmdline,
.cmdline_arg = mitsu70x_cmdline_arg,
@@ -435,14 +605,17 @@ struct dyesub_backend mitsu70x_backend = {
.teardown = mitsu70x_teardown,
.read_parse = mitsu70x_read_parse,
.main_loop = mitsu70x_main_loop,
+ .query_serno = mitsu70x_query_serno,
.devices = {
{ USB_VID_MITSU, USB_PID_MITSU_D70X, P_MITSU_D70X, ""},
{ USB_VID_MITSU, USB_PID_MITSU_K60, P_MITSU_D70X, ""},
+// { USB_VID_MITSU, USB_PID_MITSU_D80, P_MITSU_D70X, ""},
+ { USB_VID_KODAK, USB_PID_KODAK305, P_MITSU_D70X, ""},
{ 0, 0, 0, ""}
}
};
-/* Mitsubish CP-D70x/CP-K60 data format
+/* Mitsubish CP-D70DW/CP-D707DW/CP-K60DW-S/CP-D80DW/Kodak 305 data format
Spool file consists of two headers followed by three image planes
and an optional lamination data plane. All blocks are rounded up to
@@ -455,60 +628,40 @@ struct dyesub_backend mitsu70x_backend = {
1b 45 57 55 00 00 00 00 00 00 00 00 00 00 00 00
(padded by NULLs to a 512-byte boundary)
- [[ D70x ]] Header 2: (Header)
+ Header 2: (Header)
- 1b 5a 54 01 00 00 00 00 00 00 00 00 00 00 00 00
+ 1b 5a 54 PP 00 00 00 00 00 00 00 00 00 00 00 00
XX XX YY YY QQ QQ ZZ ZZ SS 00 00 00 00 00 00 00
UU 00 00 00 00 00 00 00 00 TT 00 00 00 00 00 00
RR 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(padded by NULLs to a 512-byte boundary)
+ PP == 0x01 on D70x/D80, 0x02 on K60/305
XX XX == columns
YY YY == rows
QQ QQ == lamination columns (equal to XX XX)
ZZ ZZ == lamination rows (YY YY + 12)
- SS == Print mode: 00 = Fine, 03 = SuperFine, 04 = UltraFine
+ SS == Print mode: 00 = Fine, 03 = SuperFine (D70x/D80 only), 04 = UltraFine
(Matte requires Superfine or Ultrafine)
- UU == 00 == Auto, 01 == Lower Deck, 02 == Upper Deck
- TT == 00 with no lamination, 02 with.
- RR == 00 (normal), 01 == (Double-cut 4x6), 05 == (double-cut 2x6)
+ UU == 00 = Auto, 01 = Lower Deck (required for K60/305), 02 = Upper Deck
+ TT == lamination: 00 glossy, 02 matte.
+ RR == 00 (normal), 01 = (Double-cut 4x6), 05 = (double-cut 2x6)
- [[ K60 ]] Header 2: (Header)
-
- 1b 5a 54 00 00 00 00 00 00 00 00 00 00 00 00 00
- XX XX YY YY QQ QQ ZZ ZZ SS 00 00 00 00 00 00 00
- UU 00 00 00 00 00 00 00 00 TT 00 00 00 00 00 00
- RR 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-
- (padded by NULLs to a 512-byte boundary)
-
- XX XX == columns
- YY YY == rows
- QQ QQ == lamination columns (equal to XX XX)
- ZZ ZZ == lamination rows (usually YY YY + 12)
- SS == Print mode: 00 = Fine, 04 = UltraFine
- (Matte requires Ultrafine)
- UU == 01 (Lower Deck)
- TT == 00 with no lamination, 02 with.
- RR == 00 (normal), 01 == (Double-cut 4x6), 05 == (double-cut 2x6)
-
Data planes:
16-bit data, rounded up to 512-byte block (XX * YY * 2 bytes)
- Lamination plane: (only present if QQ + ZZ are nonzero)
+ Lamination plane: (only present if QQ and ZZ are nonzero)
16-byte data, rounded up to 512-byte block (QQ * ZZ * 2 bytes)
- Lamination appears to be these bytes, repeated: 28 6a ab 58 6c 22
-
********************************************************************
- Command format: (D707)
+ Command format:
-> 1b 56 32 30
<- [256 byte payload]
- CP-D707DW:
+ PRINTER STATUS
e4 56 32 30 00 00 00 00 00 00 00 00 00 00 00 00 .V20............
00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 ................
@@ -519,39 +672,28 @@ struct dyesub_backend mitsu70x_backend = {
33 31 37 41 32 32 a3 82 44 55 4d 4d 59 40 00 00 317A22..DUMMY@..
44 55 4d 4d 59 40 00 00 00 00 00 00 00 00 00 00 DUMMY@..........
- LOWER DECK
+ LOWER DECK STATUS
- 00 00 00 00 00 00 02 04 3f 00 00 04 96 00 00 00
- ff 0f 01 00 00 c8 NN NN 00 00 00 00 05 28 75 80 NN NN: prints remaining
+ 00 00 00 00 00 00 02 04 3f 00 00 04 96 00 00 00 MM MM: media capacity
+ ff 0f 01 00 MM MM NN NN 00 00 00 00 05 28 75 80 NN NN: prints remaining
80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00
80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00
- UPPER DECK
+ alt (some sort of error state)
- 00 00 00 00 00 00 01 ee 3d 00 00 06 39 00 00 00
- ff 02 00 00 01 90 NN NN 00 00 00 00 06 67 78 00 NN NN: prints remaining
+ 00 00 00 0a 05 05 01 d5 38 00 00 00 14 00 00 00
+ ff ff ff ff ff ff ff ff ff ff 00 00 00 27 72 80
80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00
80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00
- CP-K60DW-S:
-
- e4 56 32 30 0f 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00 00 00 0a 80 00 00 00 00
- 02 00 00 00 5e 00 04 87 43 00 50 00 4b 00 36 00
- 30 00 44 00 30 00 32 00 33 00 32 00 30 00 36 00
- 33 31 36 4b 33 31 d6 7a 33 31 35 41 33 31 ae 37
- 33 31 39 41 37 31 6a 36 33 31 38 44 33 31 1e 4a
- 33 31 37 42 32 31 f4 19 44 55 4d 4d 59 40 00 00
- 44 55 4d 4d 59 40 00 00 00 00 00 00 00 00 00 00
-
- LOWER DECK (K60)
+ UPPER DECK STATUS (if present)
- 00 00 00 00 00 00 02 09 3f 00 00 00 05 00 00 01
- 61 8f 00 00 01 40 NN NN 00 00 00 00 00 16 81 80 NN NN: prints remaining
- 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00
+ XX XX 00 00 00 00 01 ee 3d 00 00 06 39 00 00 00 MM MM: media capacity
+ ff 02 00 00 MM MM NN NN 00 00 00 00 06 67 78 00 NN NN: prints remaining
+ 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 XX XX: 0x80 00 if no deck
80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00
- UPPER DECK (K60 -- No upper deck present)
+ alt (no deck present)
80 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 00
ff ff ff ff ff ff ff ff ff ff 00 00 00 00 80 00
@@ -563,20 +705,64 @@ struct dyesub_backend mitsu70x_backend = {
CP-D707DW:
- e4 56 31 30 00 00 00 XX YY ZZ 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00 00 00
+ e4 56 31 30 00 00 00 XX YY ZZ 00 00 TT 00 00 00
+ 00 00 00 00 WW 00 00 00 00 00
- XX/YY/ZZ are unkown. Observed values:
+ XX/YY/ZZ and WW/TT are unknown. Observed values:
- 00 00 00
- 40 80 a0
+ 00 00 00 00/00
+ 40 80 a0 80/0f
80 80 a0
+ 40 80 90
+ 40 80 00
- CP-K60DW-S: (only one readback observed so far)
+ also seen:
e4 56 31 30 00 00 00 00 00 00 00 00 0f 00 00 00
+ 00 0a 05 05 80 00 00 00 00 00
+
+ e4 56 31 30 00 00 00 40 80 90 10 00 0f 00 00 00
+ 00 0a 05 05 80 00 00 00 00 00
+
+ e4 56 31 30 00 00 00 00 40 80 00 00 00 ff 40 00
+ 00 00 00 00 80 00 00 00 00 00
+
+ print just submitted:
+
+ e4 56 31 30 00 00 00 00 40 20 00 00 00 8c 00 00
+ 00 00 00 00 80 00 00 00 00 00
+
+ prints running...
+
+ e4 56 31 30 00 00 00 00 40 20 00 00 00 cf 00 20
+ 00 00 00 00 80 00 00 00 00 00
+
+
+
+ CP-K60DW-S:
+
+ e4 56 31 30 00 00 00 XX YY 00 00 00 0f 00 00 00
00 00 00 00 80 00 00 00 00 00
+ XX/YY are unknown, observed values:
+
+ 40/80
+ 00/00
+
+ Sent to start a print
+
+ -> 1b 56 33 00 XX XX YY YY UU 00
+
+ XX XX == columns
+ YY YY == rows
+ UU == Unknown, seen 0x00 and 0x80
+
+ <- [ 6 byte payload ]
+
+ e4 56 33 00 00 00
+ e4 56 33 00 00 01
+ e5 56 33 ff 01 01 (which appeared to work)
+
** ** ** ** ** **
The windows drivers seem to send the id and status queries before
@@ -584,4 +770,34 @@ struct dyesub_backend mitsu70x_backend = {
appear to be any particular intelligence in the protocol, but it didn't
work when the raw dump was submitted as-is.
+ ** ** ** ** ** **
+
+Various deck status dumps:
+
+0080 00 00 00 00 00 00 01 d2 39 00 00 00 07 00 00 00 ........9.......
+0090 61 8f 00 00 01 40 01 36 00 00 00 00 00 17 79 80 a....@.6......y.
+
+0080 00 00 00 00 00 00 01 c6 39 00 00 00 08 00 00 00 ........9.......
+0090 61 8f 00 00 01 40 01 35 00 00 00 00 00 18 79 80 a....@.5......y.
+
+0080 00 00 00 00 00 00 02 19 50 00 00 00 19 00 00 01 ........P.......
+0090 6c 8f 00 00 01 40 01 22 00 00 00 00 00 27 83 80 l....@.".....'..
+
+0080 00 00 00 00 00 00 02 00 3e 00 00 04 96 00 00 00 ........>.......
+0090 ff 0f 01 00 00 c8 00 52 00 00 00 00 05 28 75 80 .......R.....(u.
+
+00c0 00 00 00 00 00 00 01 f3 3d 00 00 06 39 00 00 00 ........=...9...
+00d0 ff 02 00 00 01 90 00 c3 00 00 00 00 06 67 78 00 .............gx.
+
+0080 00 00 00 00 00 00 01 d0 38 00 00 03 70 00 00 00 ........8...p...
+0090 ff 02 00 00 01 90 00 1e 01 00 00 00 03 83 72 80 ..............r.
+
+0080 00 00 00 00 00 00 01 d6 39 00 00 00 20 00 00 00 ........9... ...
+0090 ff 02 00 00 01 90 01 7c 01 00 00 00 00 33 72 80 .......|.....3r.
+
+ 00 00 00 0a 05 05 01 d5 38 00 00 00 14 00 00 00
+ ff ff ff ff ff ff ff ff ff ff 00 00 00 27 72 80 ?? Error ??
+
+ 80 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 00
+ ff ff ff ff ff ff ff ff ff ff 00 00 00 00 80 00 NO DECK PRESENT
*/
diff --git a/src/cups/mitsu9550_print.c b/src/cups/mitsu9550_print.c
new file mode 100644
index 0000000..7b83e6c
--- /dev/null
+++ b/src/cups/mitsu9550_print.c
@@ -0,0 +1,1013 @@
+/*
+ * Mitsubishi CP-9550DW[-S] Photo Printer CUPS backend
+ *
+ * (c) 2014-2015 Solomon Peachy <pizza@shaftnet.org>
+ *
+ * The latest version of this program can be found at:
+ *
+ * http://git.shaftnet.org/cgit/selphy_print.git
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * [http://www.gnu.org/licenses/gpl-2.0.html]
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <signal.h>
+
+#include "backend_common.h"
+
+#define USB_VID_MITSU 0x06D3
+#define USB_PID_MITSU_9550D 0x03A1
+#define USB_PID_MITSU_9550DS 0x03A5 // or DZ/DZS/DZU
+
+/* Private data stucture */
+struct mitsu9550_ctx {
+ struct libusb_device_handle *dev;
+ uint8_t endp_up;
+ uint8_t endp_down;
+
+ uint8_t *databuf;
+ int datalen;
+
+ int is_s_variant;
+
+ int fast_return;
+
+ uint16_t rows;
+ uint16_t cols;
+};
+
+/* Spool file structures */
+struct mitsu9550_hdr1 {
+ uint8_t cmd[4]; /* 1b 57 20 2e */
+ uint8_t unk[10];
+ uint16_t cols; /* BE */
+ uint16_t rows; /* BE */
+ uint8_t null[32];
+} __attribute__((packed));
+
+struct mitsu9550_hdr2 {
+ uint8_t cmd[4]; /* 1b 57 21 2e */
+ uint8_t unk[24];
+ uint16_t copies; /* BE, 1-580 */
+ uint8_t null[2];
+ uint8_t cut; /* 00 == normal, 83 == 2x6*2 */
+ uint8_t unkb[5];
+ uint8_t mode; /* 00 == normal, 80 == fine */
+ uint8_t unkc[11];
+} __attribute__((packed));
+
+struct mitsu9550_hdr3 {
+ uint8_t cmd[4]; /* 1b 57 22 2e */
+ uint8_t unk[7];
+ uint8_t mode2; /* 00 == normal, 01 == finedeep */
+ uint8_t unkb[38];
+} __attribute__((packed));
+
+struct mitsu9550_hdr4 {
+ uint8_t cmd[4]; /* 1b 57 26 2e */
+ uint8_t unk[46];
+} __attribute__((packed));
+
+struct mitsu9550_plane {
+ uint8_t cmd[4]; /* 1b 5a 54 00 */
+ uint8_t null[2];
+ uint16_t rem_rows; /* BE, normally 0 */
+ uint16_t columns; /* BE */
+ uint16_t rows; /* BE */
+} __attribute__((packed));
+
+struct mitsu9550_cmd {
+ uint8_t cmd[4];
+} __attribute__((packed));
+
+/* Printer data structures */
+struct mitsu9550_media {
+ uint8_t hdr[2]; /* 24 2e */
+ uint8_t unk[12];
+ uint8_t type;
+ uint8_t unka[13];
+ uint16_t max; /* BE, prints per media */
+ uint8_t unkb[2];
+ uint16_t remain; /* BE, prints remaining */
+ uint8_t unkc[14];
+} __attribute__((packed));
+
+struct mitsu9550_status {
+ uint8_t hdr[2]; /* 30 2e */
+ uint8_t null[4];
+ uint8_t sts1; // MM
+ uint8_t nullb[1];
+ uint16_t copies; // NN
+ uint8_t nullc[6];
+ uint8_t sts3; // QQ
+ uint8_t sts4; // RR
+ uint8_t sts5; // SS
+ uint8_t nulld[25];
+ uint8_t sts6; // TT
+ uint8_t sts7; // UU
+ uint8_t nulle[2];
+} __attribute__((packed));
+
+struct mitsu9550_status2 {
+ uint8_t hdr[2]; /* 21 2e */
+ uint8_t unk[40];
+ uint8_t remain; /* BE, media remaining */
+ uint8_t unkb[4];
+} __attribute__((packed));
+
+#define CMDBUF_LEN 64
+#define READBACK_LEN 128
+
+static void *mitsu9550_init(void)
+{
+ struct mitsu9550_ctx *ctx = malloc(sizeof(struct mitsu9550_ctx));
+ if (!ctx) {
+ ERROR("Memory Allocation Failure!\n");
+ return NULL;
+ }
+ memset(ctx, 0, sizeof(struct mitsu9550_ctx));
+
+ /* Use Fast return by default in CUPS mode */
+ if (getenv("DEVICE_URI") || getenv("FAST_RETURN"))
+ ctx->fast_return = 1;
+
+ return ctx;
+}
+
+static void mitsu9550_attach(void *vctx, struct libusb_device_handle *dev,
+ uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
+{
+ struct mitsu9550_ctx *ctx = vctx;
+ struct libusb_device *device;
+ struct libusb_device_descriptor desc;
+
+ UNUSED(jobid);
+
+ ctx->dev = dev;
+ ctx->endp_up = endp_up;
+ ctx->endp_down = endp_down;
+
+ device = libusb_get_device(dev);
+ libusb_get_device_descriptor(device, &desc);
+
+ if (desc.idProduct == USB_PID_MITSU_9550DS)
+ ctx->is_s_variant = 1;
+}
+
+
+static void mitsu9550_teardown(void *vctx) {
+ struct mitsu9550_ctx *ctx = vctx;
+
+ if (!ctx)
+ return;
+
+ if (ctx->databuf)
+ free(ctx->databuf);
+ free(ctx);
+}
+
+static int mitsu9550_read_parse(void *vctx, int data_fd) {
+ struct mitsu9550_ctx *ctx = vctx;
+ struct mitsu9550_hdr1 hdr;
+
+ int remain, i;
+
+ if (!ctx)
+ return CUPS_BACKEND_FAILED;
+
+ if (ctx->databuf) {
+ free(ctx->databuf);
+ ctx->databuf = NULL;
+ }
+
+ /* Read in initial header */
+ remain = sizeof(hdr);
+ while (remain > 0) {
+ i = read(data_fd, ((uint8_t*)&hdr) + sizeof(hdr) - remain, remain);
+ if (i == 0)
+ return CUPS_BACKEND_CANCEL;
+ if (i < 0)
+ return CUPS_BACKEND_CANCEL;
+ remain -= i;
+ }
+
+ /* Sanity check */
+ if (hdr.cmd[0] != 0x1b ||
+ hdr.cmd[1] != 0x57 ||
+ hdr.cmd[2] != 0x20 ||
+ hdr.cmd[3] != 0x2e) {
+ ERROR("Unrecognized data format!\n");
+ return CUPS_BACKEND_CANCEL;
+ }
+
+ /* Work out printjob size */
+ ctx->rows = be16_to_cpu(hdr.rows);
+ ctx->cols = be16_to_cpu(hdr.cols);
+
+ remain = ctx->rows * ctx->cols + sizeof(struct mitsu9550_plane);
+ remain *= 3;
+ remain += sizeof(struct mitsu9550_hdr2) + sizeof(struct mitsu9550_hdr3)+ sizeof(struct mitsu9550_hdr4) + sizeof(struct mitsu9550_cmd);
+
+ /* Allocate buffer */
+ ctx->databuf = malloc(remain + sizeof(struct mitsu9550_hdr1));
+ if (!ctx->databuf) {
+ ERROR("Memory allocation failure!\n");
+ return CUPS_BACKEND_FAILED;
+ }
+
+ memcpy(ctx->databuf, &hdr, sizeof(struct mitsu9550_hdr1));
+ ctx->datalen = sizeof(struct mitsu9550_hdr1);
+
+ /* Read in the spool data */
+ while(remain) {
+ i = read(data_fd, ctx->databuf + ctx->datalen, remain);
+ if (i == 0)
+ return CUPS_BACKEND_CANCEL;
+ if (i < 0)
+ return CUPS_BACKEND_CANCEL;
+ ctx->datalen += i;
+ remain -= i;
+ }
+
+ return CUPS_BACKEND_OK;
+}
+
+static int mitsu9550_get_status(struct mitsu9550_ctx *ctx, uint8_t *resp, int status, int status2, int media)
+{
+ struct mitsu9550_cmd cmd;
+ int num, ret;
+
+ /* Send Printer Query */
+ cmd.cmd[0] = 0x1b;
+ cmd.cmd[1] = 0x56;
+ if (status)
+ cmd.cmd[2] = 0x30;
+ else if (status2)
+ cmd.cmd[2] = 0x21;
+ else if (media)
+ cmd.cmd[2] = 0x24;
+ cmd.cmd[3] = 0x00;
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) &cmd, sizeof(cmd))))
+ return ret;
+ ret = read_data(ctx->dev, ctx->endp_up,
+ resp, sizeof(struct mitsu9550_status), &num);
+
+ if (ret < 0)
+ return ret;
+ if (num != sizeof(struct mitsu9550_status)) {
+ ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(struct mitsu9550_status));
+ return 4;
+ }
+
+ return 0;
+}
+
+static int validate_media(int type, int cols, int rows) {
+ switch(type) {
+ case 0x01: /* 3.5x5 */
+ if (cols != 1812 || rows != 1240)
+ return 1;
+ break;
+ case 0x02: /* 4x6 */
+ case 0x03: /* PC ??? */
+ if (cols != 2152)
+ return 1;
+ if (rows != 1416 || rows != 1184 ||
+ rows != 1240)
+ return 1;
+ break;
+ case 0x04: /* 5x7 */
+ if (cols != 1812)
+ return 1;
+ if (rows != 1240 || rows != 2452)
+ return 1;
+ break;
+ case 0x05: /* 6x9 */
+ if (cols != 2152)
+ return 1;
+ if (rows != 1416 || rows != 2972 ||
+ rows != 2956 || rows != 3146)
+ return 1;
+ break;
+ case 0x06: /* V */
+ break;
+ default: /* Unknown */
+ break;
+ }
+ return 0;
+}
+
+static int mitsu9550_main_loop(void *vctx, int copies) {
+ struct mitsu9550_ctx *ctx = vctx;
+ struct mitsu9550_hdr2 *hdr2;
+ struct mitsu9550_cmd cmd;
+ uint8_t rdbuf[READBACK_LEN];
+
+ uint8_t *ptr;
+
+ int ret;
+
+ if (!ctx)
+ return CUPS_BACKEND_FAILED;
+
+ /* This printer handles copies internally */
+ hdr2 = (struct mitsu9550_hdr2 *) (ctx->databuf + sizeof(struct mitsu9550_hdr1));
+ hdr2->copies = cpu_to_be16(copies);
+
+ ptr = ctx->databuf;
+
+top:
+ if (ctx->is_s_variant) {
+ int num;
+
+ /* Send "unknown 1" command */
+ cmd.cmd[0] = 0x1b;
+ cmd.cmd[1] = 0x53;
+ cmd.cmd[2] = 0xc5;
+ cmd.cmd[3] = 0x9d;
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) &cmd, sizeof(cmd))))
+ return CUPS_BACKEND_FAILED;
+
+ /* Send "unknown 2" command */
+ cmd.cmd[0] = 0x1b;
+ cmd.cmd[1] = 0x4b;
+ cmd.cmd[2] = 0x7f;
+ cmd.cmd[3] = 0x00;
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) &cmd, sizeof(cmd))))
+ return CUPS_BACKEND_FAILED;
+
+ ret = read_data(ctx->dev, ctx->endp_up,
+ rdbuf, READBACK_LEN, &num);
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+ // seen so far: eb 4b 7f 00 02 00 5e
+ }
+
+ /* Query statuses */
+ {
+ struct mitsu9550_status *sts = (struct mitsu9550_status*) rdbuf;
+ //struct mitsu9550_status2 *sts2 = (struct mitsu9550_status2*) rdbuf;
+ struct mitsu9550_media *media = (struct mitsu9550_media *) rdbuf;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 0, 1); // media
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ /* Sanity-check media response */
+ if (media->remain == 0 || media->max == 0) {
+ ERROR("Printer out of media!\n");
+ return CUPS_BACKEND_HOLD;
+ }
+ if (validate_media(media->type, ctx->cols, ctx->rows)) {
+ ERROR("Incorrect media (%d) type for printjob (%dx%d)!\n", media->type, ctx->cols, ctx->rows);
+ return CUPS_BACKEND_HOLD;
+ }
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 1, 0); // status2
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 1, 0, 0); // status
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ /* Make sure we're idle */
+ if (sts->sts5 != 0) { /* Printer ready for another job */
+ sleep(1);
+ goto top;
+ }
+ }
+
+ /* Now it's time for the actual print job! */
+
+ if (ctx->is_s_variant) {
+ cmd.cmd[0] = 0x1b;
+ cmd.cmd[1] = 0x44;
+ cmd.cmd[2] = 0;
+ cmd.cmd[3] = 0;
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) &cmd, 4)))
+ return CUPS_BACKEND_FAILED;
+ }
+
+ /* Query statuses */
+ {
+ struct mitsu9550_status *sts = (struct mitsu9550_status*) rdbuf;
+// struct mitsu9550_status2 *sts2 = (struct mitsu9550_status2*) rdbuf;
+ struct mitsu9550_media *media = (struct mitsu9550_media *) rdbuf;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 0, 1); // media
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ /* Sanity-check media response */
+ if (media->remain == 0 || media->max == 0) {
+ ERROR("Printer out of media!\n");
+ return CUPS_BACKEND_HOLD;
+ }
+ if (validate_media(media->type, ctx->cols, ctx->rows)) {
+ ERROR("Incorrect media (%d) type for printjob (%dx%d)!\n", media->type, ctx->cols, ctx->rows);
+ return CUPS_BACKEND_HOLD;
+ }
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 1, 0); // status2
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 1, 0, 0); // status
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ /* Make sure we're idle */
+ if (sts->sts5 != 0) { /* Printer ready for another job */
+ sleep(1);
+ goto top;
+ }
+ }
+
+ /* Send printjob headers from spool data */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, sizeof(struct mitsu9550_hdr1))))
+ return CUPS_BACKEND_FAILED;
+ ptr += sizeof(struct mitsu9550_hdr1);
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, sizeof(struct mitsu9550_hdr2))))
+ return CUPS_BACKEND_FAILED;
+ ptr += sizeof(struct mitsu9550_hdr2);
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, sizeof(struct mitsu9550_hdr3))))
+ return CUPS_BACKEND_FAILED;
+ ptr += sizeof(struct mitsu9550_hdr3);
+ if (!ctx->is_s_variant) {
+ // XXX need to investigate what hdr4 is about
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, sizeof(struct mitsu9550_hdr4))))
+ return CUPS_BACKEND_FAILED;
+ }
+ ptr += sizeof(struct mitsu9550_hdr4);
+
+ if (ctx->is_s_variant) {
+ /* Send "start data" command */
+ cmd.cmd[0] = 0x1b;
+ cmd.cmd[1] = 0x5a;
+ cmd.cmd[2] = 0x43;
+ cmd.cmd[3] = 0x00;
+
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) &cmd, sizeof(cmd))))
+ return CUPS_BACKEND_FAILED;
+ }
+ /* Send plane data */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, sizeof(struct mitsu9550_plane))))
+ return CUPS_BACKEND_FAILED;
+ ptr += sizeof(struct mitsu9550_plane);
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, ctx->rows * ctx->cols)))
+ return CUPS_BACKEND_FAILED;
+ ptr += ctx->rows * ctx->cols;
+
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, sizeof(struct mitsu9550_plane))))
+ return CUPS_BACKEND_FAILED;
+ ptr += sizeof(struct mitsu9550_plane);
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, ctx->rows * ctx->cols)))
+ return CUPS_BACKEND_FAILED;
+ ptr += ctx->rows * ctx->cols;
+
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, sizeof(struct mitsu9550_plane))))
+ return CUPS_BACKEND_FAILED;
+ ptr += sizeof(struct mitsu9550_plane);
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) ptr, ctx->rows * ctx->cols)))
+ return CUPS_BACKEND_FAILED;
+ ptr += ctx->rows * ctx->cols;
+
+
+ /* Query statuses */
+ {
+ struct mitsu9550_status *sts = (struct mitsu9550_status*) rdbuf;
+// struct mitsu9550_status2 *sts2 = (struct mitsu9550_status2*) rdbuf;
+ struct mitsu9550_media *media = (struct mitsu9550_media *) rdbuf;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 0, 1); // media
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ /* Sanity-check media response */
+ if (media->remain == 0 || media->max == 0) {
+ ERROR("Printer out of media!\n");
+ return CUPS_BACKEND_HOLD;
+ }
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 1, 0); // status2
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 1, 0, 0); // status
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ /* Make sure we're ready to proceed */
+ if (sts->sts5 != 0) {
+ ERROR("Unexpected response (sts5 %02x)\n", sts->sts5);
+ return CUPS_BACKEND_FAILED;
+ }
+ if (!(sts->sts3 & 0xc0)) {
+ ERROR("Unexpected response (sts3 %02x)\n", sts->sts3);
+ return CUPS_BACKEND_FAILED;
+ }
+ }
+
+ if (ctx->is_s_variant) {
+ /* Send "end data" command */
+ cmd.cmd[0] = 0x1b;
+ cmd.cmd[1] = 0x50;
+ cmd.cmd[2] = 0x47;
+ cmd.cmd[3] = 0x00;
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*) &cmd, sizeof(cmd))))
+ return CUPS_BACKEND_FAILED;
+ } else {
+ /* Send "end data" command from spool file */
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ ptr, sizeof(cmd))))
+ return CUPS_BACKEND_FAILED;
+ ptr += sizeof(cmd);
+ }
+
+ /* Status loop, run until printer reports completion */
+ while(1) {
+ struct mitsu9550_status *sts = (struct mitsu9550_status*) rdbuf;
+// struct mitsu9550_status2 *sts2 = (struct mitsu9550_status2*) rdbuf;
+ struct mitsu9550_media *media = (struct mitsu9550_media *) rdbuf;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 0, 1); // media
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ /* Sanity-check media response */
+ if (media->remain == 0 || media->max == 0) {
+ ERROR("Printer out of media!\n");
+ return CUPS_BACKEND_HOLD;
+ }
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 0, 1, 0); // status2
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ ret = mitsu9550_get_status(ctx, rdbuf, 1, 0, 0); // status
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ INFO("%03d copies remaining\n", be16_to_cpu(sts->copies));
+
+ if (!sts->sts1) /* If printer transitions to idle */
+ break;
+
+ if (ctx->fast_return && !be16_to_cpu(sts->copies)) { /* No remaining prints */
+ INFO("Fast return mode enabled.\n");
+ break;
+ }
+
+ if (ctx->fast_return && !sts->sts5) { /* Ready for another job */
+ INFO("Fast return mode enabled.\n");
+ break;
+ }
+
+ sleep(1);
+ }
+
+ /* This printer handles copies internally */
+ copies = 1;
+
+ /* Clean up */
+ if (terminate)
+ copies = 1;
+
+ INFO("Print complete (%d copies remaining)\n", copies - 1);
+
+ if (copies && --copies) {
+ goto top;
+ }
+
+ return CUPS_BACKEND_OK;
+}
+
+static char *mitsu9550_media_types(uint8_t type)
+{
+ switch (type) {
+ case 0x01:
+ return "3.5x5";
+ case 0x02:
+ return "4x6";
+ case 0x03:
+ return "PC";
+ case 0x04:
+ return "5x7";
+ case 0x05:
+ return "6x9";
+ case 0x06:
+ return "V";
+ default:
+ return "Unknown";
+ }
+ return NULL;
+}
+
+static void mitsu9550_dump_media(struct mitsu9550_media *resp)
+{
+ INFO("Media type : %02x (%s)\n",
+ resp->type, mitsu9550_media_types(resp->type));
+ INFO("Media remaining : %03d/%03d\n",
+ be16_to_cpu(resp->remain), be16_to_cpu(resp->max));
+}
+
+static void mitsu9550_dump_status(struct mitsu9550_status *resp)
+{
+ INFO("Printer status : %02x (%s)\n",
+ resp->sts1, resp->sts1 ? "Printing": "Idle");
+ INFO("Pages remaining : %03d\n",
+ be16_to_cpu(resp->copies));
+ INFO("Other status : %02x %02x %02x %02x %02x\n",
+ resp->sts3, resp->sts4, resp->sts5, resp->sts6, resp->sts7);
+
+}
+
+static int mitsu9550_query_media(struct mitsu9550_ctx *ctx)
+{
+ struct mitsu9550_media resp;
+ int ret;
+
+ ret = mitsu9550_get_status(ctx, (uint8_t*) &resp, 0, 0, 1);
+
+ if (!ret)
+ mitsu9550_dump_media(&resp);
+
+ return ret;
+}
+
+static int mitsu9550_query_status(struct mitsu9550_ctx *ctx)
+{
+ struct mitsu9550_status resp;
+ int ret;
+
+ ret = mitsu9550_get_status(ctx, (uint8_t*) &resp, 1, 0, 0);
+
+ if (!ret)
+ mitsu9550_dump_status(&resp);
+
+ return ret;
+}
+
+static int mitsu9550_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len)
+{
+ struct mitsu9550_cmd cmd;
+ uint8_t rdbuf[READBACK_LEN];
+ uint8_t *ptr;
+ int ret, num, i;
+
+ cmd.cmd[0] = 0x1b;
+ cmd.cmd[1] = 0x72;
+ cmd.cmd[2] = 0x6e;
+ cmd.cmd[3] = 0x00;
+
+ if ((ret = send_data(dev, endp_down,
+ (uint8_t*) &cmd, sizeof(cmd))))
+ return (ret < 0) ? ret : CUPS_BACKEND_FAILED;
+
+ ret = read_data(dev, endp_up,
+ rdbuf, READBACK_LEN, &num);
+
+ if (ret < 0)
+ return CUPS_BACKEND_FAILED;
+
+ if ((unsigned int)num < sizeof(cmd) + 1) /* Short read */
+ return CUPS_BACKEND_FAILED;
+
+ if (rdbuf[0] != 0xe4 ||
+ rdbuf[1] != 0x72 ||
+ rdbuf[2] != 0x6e ||
+ rdbuf[3] != 0x00) /* Bad response */
+ return CUPS_BACKEND_FAILED;
+
+ /* If response is truncated, handle it */
+ num -= (sizeof(cmd) + 1);
+ if ((unsigned int) num != rdbuf[4])
+ WARNING("Short serno read! (%d vs %d)\r\n",
+ num, rdbuf[4]);
+
+ /* model and serial number are encoded as 16-bit unicode,
+ little endian, separated by spaces. */
+ i = num;
+ ptr = rdbuf + 5;
+ while (i > 0 && buf_len > 1) {
+ if (*ptr != 0x20)
+ *buf++ = *ptr;
+ buf_len--;
+ ptr += 2;
+ i -= 2;
+ }
+ *buf = 0; /* Null-terminate the returned string */
+
+ return ret;
+}
+
+static void mitsu9550_cmdline(void)
+{
+ DEBUG("\t\t[ -m ] # Query media\n");
+ DEBUG("\t\t[ -s ] # Query status\n");
+ DEBUG("\t\t[ -f ] # Enable fast return mode\n");
+}
+
+static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv)
+{
+ struct mitsu9550_ctx *ctx = vctx;
+ int i, j = 0;
+
+ /* Reset arg parsing */
+ optind = 1;
+ opterr = 0;
+ while ((i = getopt(argc, argv, "mfs")) >= 0) {
+ switch(i) {
+ case 'm':
+ if (ctx) {
+ j = mitsu9550_query_media(ctx);
+ break;
+ }
+ return 1;
+ case 's':
+ if (ctx) {
+ j = mitsu9550_query_status(ctx);
+ break;
+ }
+ return 1;
+
+ case 'f':
+ if (ctx) {
+ ctx->fast_return = 1;
+ break;
+ }
+ return 1;
+ default:
+ break; /* Ignore completely */
+ }
+
+ if (j) return j;
+ }
+
+ return 0;
+}
+
+/* Exported */
+struct dyesub_backend mitsu9550_backend = {
+ .name = "Mitsubishi CP-9550DW-S",
+ .version = "0.12",
+ .uri_prefix = "mitsu9550",
+ .cmdline_usage = mitsu9550_cmdline,
+ .cmdline_arg = mitsu9550_cmdline_arg,
+ .init = mitsu9550_init,
+ .attach = mitsu9550_attach,
+ .teardown = mitsu9550_teardown,
+ .read_parse = mitsu9550_read_parse,
+ .main_loop = mitsu9550_main_loop,
+ .query_serno = mitsu9550_query_serno,
+ .devices = {
+ { USB_VID_MITSU, USB_PID_MITSU_9550D, P_MITSU_9550, ""},
+ { USB_VID_MITSU, USB_PID_MITSU_9550DS, P_MITSU_9550, ""},
+ { 0, 0, 0, ""}
+ }
+};
+
+/* Mitsubish CP-9550D/DW spool data format
+
+ Spool file consists of four 50-byte headers, followed by three image
+ planes (BGR, each with a 12-byte header), and a 4-byte footer.
+
+ All multi-byte numbers are big endian.
+
+ ~~~ Printer Init: 4x 50-byte blocks:
+
+ 1b 57 20 2e 00 0a 10 00 00 00 00 00 00 00 07 14 :: 0714 = 1812 = X res
+ 04 d8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: 04d8 = 1240 = Y res
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00
+
+ 1b 57 21 2e 00 80 00 22 08 03 00 00 00 00 00 00 :: ZZ = num copies (>= 0x01)
+ 00 00 00 00 00 00 00 00 00 00 00 00 ZZ ZZ 00 00 :: YY 00 = normal, 80 = Fine
+ XX 00 00 00 00 00 YY 00 00 00 00 00 00 00 00 00 :: XX 00 = normal, 83 = Cut 2x6
+ 00 01
+
+ 1b 57 22 2e 00 40 00 00 00 00 00 XX 00 00 00 00 :: 00 = normal, 01 = FineDeep
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00
+
+ 1b 57 26 2e 00 70 00 00 00 00 00 00 01 01 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00
+
+ ~~~~ Data follows: Data is 8-bit BGR.
+
+ 1b 5a 54 00 00 00 00 00 07 14 04 d8 :: 0714 == row len, 04d8 == rows
+ ^^ ^^ :: 0000 == remaining rows
+
+ Data follows immediately, no padding.
+
+ 1b 5a 54 00 00 00 00 00 07 14 04 d8 :: Another plane.
+
+ Data follows immediately, no padding.
+
+ 1b 5a 54 00 00 00 00 00 07 14 04 d8 :: Another plane.
+
+ Data follows immediately, no padding.
+
+ ~~~~ Footer:
+
+ 1b 50 46 00
+
+ ~~~~ QUESTIONS:
+
+ * Lamination control?
+ * Other multi-cut modes (on 6x9 media: 4x6*2, 4.4x6*2, 3x6*3, 2x6*4)
+
+ ***********************************************************************
+
+ * Mitsubishi ** CP-9550DW-S ** Communications Protocol:
+
+ [[ Unknown ]]
+
+ -> 1b 53 c5 9d
+
+ [[ Unknown ]]
+
+ -> 1b 4b 7f 00
+ <- eb 4b 8f 00 02 00 5e [[ '02' seems to be a length ]]
+
+ [[ Unknown ]]
+
+ -> 1b 53 00 00
+
+ Query Model & Serial number
+
+ -> 1b 72 6e 00
+ <- e4 82 6e 00 LL 39 00 35 00 35 00 30 00 5a 00 20
+ 00 41 00 32 00 30 00 30 00 36 00 37 00
+
+ 'LL' is length. Data is returned in 16-bit unicode, LE.
+ Contents are model ('9550Z'), then space, then serialnum ('A20067')
+
+ Media Query
+
+ -> 1b 56 24 00
+ <- 24 2e 00 00 00 00 00 00 00 00 00 00 00 00 TT 00 :: TT = Type
+ 00 00 00 00 00 00 00 00 00 00 00 00 MM MM 00 00 :: MM MM = Max prints
+ NN NN 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: NN NN = Remaining
+
+ Status Query
+
+ -> 1b 56 30 00
+ -> 30 2e 00 00 00 00 MM 00 NN NN 00 00 00 00 00 00 :: MM, NN
+ QQ RR SS 00 00 00 00 00 00 00 00 00 00 00 00 00 :: QQ, RR, SS
+ 00 00 00 00 00 00 00 00 00 00 00 00 TT UU 00 00 :: TT, UU
+
+ Status Query B (not sure what to call this)
+
+ -> 1b 56 21 00
+ <- 21 2e 00 80 00 22 a8 0b 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 QQ 00 00 00 00 :: QQ == Prints in job?
+ 00 00 00 00 00 00 00 00 00 00 NN NN 0A 00 00 01 :: NN NN = Remaining media
+
+ [[ Unknown ]]
+
+ -> 1b 44
+
+ [[ Header 1 -- See above ]]
+
+ -> 1b 57 20 2e ....
+
+ [[ Header 2 -- See above ]]
+
+ -> 1b 57 21 2e ....
+
+ [[ Header 3 -- See above ]]
+
+ -> 1b 57 22 2e ....
+
+ [[ Unknown -- Start Data ? ]]
+
+ -> 1b 5a 43 00
+
+ [[ Plane header #1 (Blue) ]]
+
+ -> 1b 5a 54 00 00 00 00 00 XX XX YY YY :: XX XX == Columns, YY YY == Rows
+
+ Followed by image plane #1 (Blue), XXXX * YYYY bytes
+
+ [[ Plane header #2 (Green) ]]
+
+ -> 1b 5a 54 00 00 00 00 00 XX XX YY YY :: XX XX == Columns, YY YY == Rows
+
+ Followed by image plane #2 (Green), XXXX * YYYY bytes
+
+ [[ Plane header #3 (Red) ]]
+
+ -> 1b 5a 54 00 00 00 00 00 XX XX YY YY :: XX XX == Columns, YY YY == Rows
+
+ Followed by image plane #3 (Red), XXXX * YYYY bytes
+
+ [[ Unknown -- End Data aka START print? ]]
+
+ -> 1b 50 47 00
+
+ [[ At this point, loop status/status b/media queries until printer idle ]]
+
+ MM, NN, QQ RR SS, TT UU
+
+ <- 00 00 3e 00 00 8a 44 :: Idle.
+ 00 00 7e 00 00 8a 44 :: Plane data submitted, pre "end data" cmd
+ 00 00 7e 40 01 8a 44 :: "end data" sent
+ 30 01 7e 40 01 8a 44
+ 38 01 7e 40 01 8a 44
+ 59 01 7e 40 01 8a 44
+ 59 01 7e 40 00 8a 44
+ 4d 01 7e 40 00 8a 44
+ [...]
+ 43 01 7e 40 00 82 44
+ [...]
+ 50 01 7e 40 00 80 44
+ [...]
+ 31 01 7e 40 00 7d 44
+ [...]
+ 00 00 3e 00 00 80 44 :: Idle.
+
+ Also seen:
+
+ 00 00 3e 00 00 96 4b :: Idle
+ 00 00 be 00 00 96 4b :: Data submitted, pre "start"
+ 00 00 be 80 01 96 4b :: print start sent
+ 30 00 be 80 01 96 4c
+ [...]
+ 30 03 be 80 01 89 4b
+ 38 03 be 80 01 8a 4b
+ 59 03 be 80 01 8b 4b
+ [...]
+ 4d 03 be 80 01 89 4b
+ [...]
+ 43 03 be 80 01 89 4b
+ [...]
+ 50 03 be 80 01 82 4b
+ [...]
+ 31 03 be 80 01 80 4b
+ [...]
+
+ Working theory of interpreting the status flags:
+
+ MM :: 00 is idle, else mechanical printer state.
+ NN :: Remaining prints in job, or 0x00 0x00 when idle.
+ QQ :: ?? 0x3e + 0x40 or 0x80 (see below)
+ RR :: ?? 0x00 is idle, 0x40 or 0x80 is "printing"?
+ SS :: ?? 0x00 means "ready for another print" but 0x01 is "busy"
+ TT :: ?? seen values between 0x7c through 0x96)
+ UU :: ?? seen values between 0x44 and 0x4c
+
+ ***
+
+ Other printer commands seen:
+
+ [[ Set error policy ?? aka "header 4" ]]
+
+ -> 1b 57 26 2e 00 QQ 00 00 00 00 00 00 RR SS 00 00 :: QQ/RR 00 00 00 [9550S]
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: 20 01 00 [9550S w/ ignore failures on]
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: 70 01 01 [9550]
+ 00 00
+
+ */
diff --git a/src/cups/selphy_print.c b/src/cups/selphy_print.c
index 7247e51..2c9bab0 100644
--- a/src/cups/selphy_print.c
+++ b/src/cups/selphy_print.c
@@ -1,7 +1,7 @@
/*
* Canon SELPHY ES/CP series CUPS backend -- libusb-1.0 version
*
- * (c) 2007-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2007-2015 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@@ -426,6 +426,7 @@ enum {
S_PRINTER_M_SENT,
S_PRINTER_READY_C,
S_PRINTER_C_SENT,
+ S_PRINTER_CP900_FOOTER,
S_PRINTER_DONE,
S_FINISHED,
};
@@ -519,19 +520,28 @@ struct canonselphy_ctx {
uint8_t *footer;
uint8_t *buffer;
+
+ uint8_t cp900;
};
static void *canonselphy_init(void)
{
struct canonselphy_ctx *ctx = malloc(sizeof(struct canonselphy_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory Allocation Failure!\n");
return NULL;
+ }
memset(ctx, 0, sizeof(struct canonselphy_ctx));
/* Static initialization */
setup_paper_codes();
ctx->buffer = malloc(MAX_HEADER);
+ if (!ctx->buffer) {
+ ERROR("Memory Allocation Failure!\n");
+ free(ctx);
+ ctx = NULL;
+ }
return ctx;
}
@@ -540,6 +550,8 @@ static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev,
uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
{
struct canonselphy_ctx *ctx = vctx;
+ struct libusb_device *device;
+ struct libusb_device_descriptor desc;
UNUSED(jobid);
@@ -547,15 +559,14 @@ static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev,
ctx->endp_up = endp_up;
ctx->endp_down = endp_down;
+ device = libusb_get_device(dev);
+ libusb_get_device_descriptor(device, &desc);
+
/* Special cases for some models */
if (ctx->printer->type == P_ES40_CP790) {
- struct libusb_device *device;
- struct libusb_device_descriptor desc;
int i;
int printer_type;
- device = libusb_get_device(dev);
- libusb_get_device_descriptor(device, &desc);
if (desc.idProduct == USB_PID_CANON_CP790)
printer_type = P_CP790;
@@ -568,6 +579,8 @@ static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev,
break;
}
}
+ } else if (desc.idProduct == USB_PID_CANON_CP900) {
+ ctx->cp900 = 1;
}
}
@@ -610,7 +623,7 @@ static int canonselphy_early_parse(void *vctx, int data_fd)
ERROR("Read failed (%d/%d/%d)\n",
i, 0, MAX_HEADER);
perror("ERROR: Read failed");
- return i;
+ return -1;
}
printer_type = parse_printjob(ctx->buffer, &ctx->bw_mode, &ctx->plane_len);
@@ -642,7 +655,7 @@ static int canonselphy_read_parse(void *vctx, int data_fd)
int i, remain;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
if (ctx->header) {
free(ctx->header);
@@ -674,7 +687,7 @@ static int canonselphy_read_parse(void *vctx, int data_fd)
if (!ctx->plane_y || !ctx->plane_m || !ctx->plane_c || !ctx->header ||
(ctx->printer->foot_length && !ctx->footer)) {
ERROR("Memory allocation failure!\n");
- return 1;
+ return CUPS_BACKEND_FAILED;
}
/* Move over chunks already read in */
@@ -687,7 +700,7 @@ static int canonselphy_read_parse(void *vctx, int data_fd)
while (remain > 0) {
i = read(data_fd, ctx->plane_y + (ctx->plane_len - remain), remain);
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
remain -= i;
}
@@ -696,7 +709,7 @@ static int canonselphy_read_parse(void *vctx, int data_fd)
while (remain > 0) {
i = read(data_fd, ctx->plane_m + (ctx->plane_len - remain), remain);
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
remain -= i;
}
@@ -705,7 +718,7 @@ static int canonselphy_read_parse(void *vctx, int data_fd)
while (remain > 0) {
i = read(data_fd, ctx->plane_c + (ctx->plane_len - remain), remain);
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
remain -= i;
}
@@ -715,12 +728,12 @@ static int canonselphy_read_parse(void *vctx, int data_fd)
while (remain > 0) {
i = read(data_fd, ctx->footer + (ctx->printer->foot_length - remain), remain);
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
remain -= i;
}
}
- return 0;
+ return CUPS_BACKEND_OK;
}
static int canonselphy_main_loop(void *vctx, int copies) {
@@ -735,7 +748,7 @@ static int canonselphy_main_loop(void *vctx, int copies) {
rdbuf, READBACK_LEN, &num);
if (ret < 0)
- return ret;
+ return CUPS_BACKEND_FAILED;
top:
@@ -748,11 +761,11 @@ top:
ret = read_data(ctx->dev, ctx->endp_up,
rdbuf, READBACK_LEN, &num);
if (ret < 0)
- return ret;
+ return CUPS_BACKEND_FAILED;
if (num != READBACK_LEN) {
ERROR("Short read! (%d/%d)\n", num, READBACK_LEN);
- return 4;
+ return CUPS_BACKEND_FAILED;
}
/* Error detection */
@@ -760,8 +773,8 @@ top:
if (ctx->printer->clear_error_len)
/* Try to clear error state */
if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->printer->clear_error, ctx->printer->clear_error_len)))
- return ret;
- return 4;
+ return CUPS_BACKEND_FAILED;
+ return CUPS_BACKEND_HOLD;
}
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
@@ -787,20 +800,20 @@ top:
if (pc & 0xf0) {
ERROR("Incorrect paper tray loaded, aborting job!\n");
- return 3;
+ return CUPS_BACKEND_HOLD;
} else {
ERROR("No paper tray loaded, aborting!\n");
- return 4;
+ return CUPS_BACKEND_STOP;
}
}
if ((pc & 0xf) != (ctx->paper_code & 0xf)) {
if (pc & 0x0f) {
ERROR("Incorrect ribbon loaded, aborting job!\n");
- return 3;
+ return CUPS_BACKEND_HOLD;
} else {
ERROR("No ribbon loaded, aborting job!\n");
- return 4;
+ return CUPS_BACKEND_STOP;
}
}
} else {
@@ -809,7 +822,7 @@ top:
ERROR("Incorrect media/ribbon loaded (%02x vs %02x), aborting job!\n",
ctx->paper_code,
rdbuf[ctx->printer->paper_code_offset]);
- return 3; /* Hold this job, don't stop queue */
+ return CUPS_BACKEND_HOLD; /* Hold this job, don't stop queue */
}
}
} else if (ctx->printer->type == P_CP790) {
@@ -818,17 +831,17 @@ top:
if (ribbon == 0xf) {
ERROR("No ribbon loaded, aborting!\n");
- return 4;
+ return CUPS_BACKEND_STOP;
} else if (ribbon != ctx->paper_code) {
ERROR("Incorrect ribbon loaded, aborting job!\n");
- return 3;
+ return CUPS_BACKEND_HOLD;
}
if (paper == 0xf) {
ERROR("No paper tray loaded, aborting!\n");
- return 4;
+ return CUPS_BACKEND_STOP;
} else if (paper != ctx->paper_code) {
ERROR("Incorrect paper loaded, aborting job!\n");
- return 3;
+ return CUPS_BACKEND_HOLD;
}
}
@@ -838,7 +851,7 @@ top:
INFO("Printing started; Sending init sequence\n");
/* Send printer init */
if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->header, ctx->printer->init_length)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_INIT_SENT;
break;
@@ -854,7 +867,7 @@ top:
INFO("Sending YELLOW plane\n");
if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->plane_y, ctx->plane_len)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_Y_SENT;
break;
@@ -870,7 +883,7 @@ top:
INFO("Sending MAGENTA plane\n");
if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->plane_m, ctx->plane_len)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_M_SENT;
break;
@@ -883,21 +896,35 @@ top:
INFO("Sending CYAN plane\n");
if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->plane_c, ctx->plane_len)))
- return ret;
+ return CUPS_BACKEND_FAILED;
state = S_PRINTER_C_SENT;
break;
case S_PRINTER_C_SENT:
if (!fancy_memcmp(rdbuf, ctx->printer->done_c_readback, READBACK_LEN)) {
- state = S_PRINTER_DONE;
+ if (ctx->cp900)
+ state = S_PRINTER_CP900_FOOTER;
+ else
+ state = S_PRINTER_DONE;
}
break;
+ case S_PRINTER_CP900_FOOTER: {
+ uint32_t empty = 0;
+
+ INFO("Sending CP900 Footer\n");
+ if ((ret = send_data(ctx->dev, ctx->endp_down,
+ (uint8_t*)&empty, sizeof(empty))))
+ return CUPS_BACKEND_FAILED;
+
+ state = S_PRINTER_DONE;
+ break;
+ }
case S_PRINTER_DONE:
if (ctx->printer->foot_length) {
INFO("Cleaning up\n");
if ((ret = send_data(ctx->dev, ctx->endp_down, ctx->footer, ctx->printer->foot_length)))
- return ret;
+ return CUPS_BACKEND_FAILED;
}
state = S_FINISHED;
/* Intentional Fallthrough */
@@ -919,12 +946,12 @@ top:
goto top;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
struct dyesub_backend canonselphy_backend = {
.name = "Canon SELPHY CP/ES",
- .version = "0.82.2G",
+ .version = "0.87",
.uri_prefix = "canonselphy",
.init = canonselphy_init,
.attach = canonselphy_attach,
@@ -1284,6 +1311,8 @@ struct dyesub_backend canonselphy_backend = {
adding a 50x50mm sticker and 22x17.3mm ministickers, though I think the
driver treats all of those as 'C' sizes for printing purposes.
+ Printer does *not* apparently require use of a spooler!
+
32-byte header:
0f 00 00 40 00 00 00 00 00 00 00 00 00 00 01 00
@@ -1305,8 +1334,8 @@ struct dyesub_backend canonselphy_backend = {
05 (L)
02 (C)
- P == 7008800 == 2336256 * 3 + 32 (4.884% larger than CP)
- L == 5087264 == 1695744 * 3 + 32 (5.878% larger than CP)
- C == 2180384 == 726784 * 3 + 32 (3.991% larger than CP)
+ P == 7008800 == 2336256 * 3 + 32 (1872*1248)
+ L == 5087264 == 1695744 * 3 + 32 (1536*1104)
+ C == 2180384 == 726784 * 3 + 32 (1088*668)
*/
diff --git a/src/cups/shinko_s2145_print.c b/src/cups/shinko_s2145_print.c
index 68c3e31..5196528 100644
--- a/src/cups/shinko_s2145_print.c
+++ b/src/cups/shinko_s2145_print.c
@@ -1,7 +1,7 @@
/*
* Shinko/Sinfonia CHC-S2145 CUPS backend -- libusb-1.0 version
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
*
* Development of this backend was sponsored by:
*
@@ -52,18 +52,18 @@ enum {
/* Structure of printjob header. All fields are LITTLE ENDIAN */
struct s2145_printjob_hdr {
uint32_t len1; /* Fixed at 0x10 */
- uint32_t model; /* Fixed at '2145' (decimal) */
- uint32_t unk2;
- uint32_t unk3;
+ uint32_t model; /* Equal to the printer model (eg '2145' or '1245' decimal) */
+ uint32_t med_type; /* 6145 only, media type */
+ uint32_t unk3; /* Fixed at 0x01 */
uint32_t len2; /* Fixed at 0x64 */
uint32_t unk5;
uint32_t media;
uint32_t unk6;
- uint32_t method;
- uint32_t mode;
- uint32_t unk7;
+ uint32_t method; /* Method for 2145, 0x00 for 6245, multicut for 6145 */
+ uint32_t mode; /* Mode for 2145, 0x00 for 6245, quality for 6145 */
+ uint32_t oc_mode; /* 6145/6245 only, Matte/Glossy/None */
uint32_t unk8;
uint32_t unk9;
@@ -99,6 +99,8 @@ struct shinkos2145_ctx {
struct s2145_printjob_hdr hdr;
+ uint32_t model;
+
uint8_t *databuf;
int datalen;
};
@@ -359,245 +361,199 @@ struct s2145_status_hdr {
#define ERROR_PRINTER 0x11
#define ERROR_BUFFER_FULL 0x21
-
-/*
-
- I have a list of 72 different errors that are displayed on the printer,
- but it appears the list is incomplete, and there's no mapping between
- category and major code numbers. Also, not all of the individual errors
- have minor codes listed (particularly the "consumables")
-
- These are the observed error codes to date (via stored error log dumps):
-
- 01/16 [ controller/parameter? ]
- 05/15 [ jam/reloading? ]
- 05/4e [ jam/unknown ]
- 05/4f [ jam/unknown? ]
- 05/61 [ jam/cantload? ]
- 05/62 [ jam/cantload? ]
- 05/64 [ jam/unknown? ]
- 06/01 [ "cover open" ]
- 06/0a [ consumables ? ]
- 06/0b [ consumables ? ]
-
- Errors logged on printer A:
-
- 0x01/0x16 @ 77845
- 0x06/0x0b @ 77822, 70053
- 0x05/0x64 @ 76034
- 0x05/0x61 @ 76034, 75420
- 0x05/0x62 @ 76034
- 0x05/0x4e @ 69824, 69820, 69781
-
- Errors logged on printer B:
-
- 0x06/0x0b @ 33270
- 0x05/0x4e @ 32952, 27672
- 0x05/0x4f @ 32935, 31834
- 0x05/0x61 @ 30856, 27982
- 0x01/0x16 @ 29132
- 0x05/0x64 @ 27982
- 0x05/0x62 @ 27982
-
- Errors logged on printer C:
-
- 0x06/0x0a @ 78014, 77948, 77943, 77938 x2, 77937, 77936, 77933, 77919
- 0x05/0x15 @ 77938
-
-
- */
static char *error_codes(uint8_t major, uint8_t minor)
{
switch(major) {
- case 0x06:
- switch (minor) {
- case 0x01:
- return "Front Cover Open";
- default:
- return "Unknown";
- }
-#if 0
- case 9: /* "Controller Error" */
+ case 0x01: /* "Controller Error" */
switch(minor) {
case 0x01:
- return "Controller: 01 EEPROM";
+ return "Controller: EEPROM Write Timeout";
case 0x02:
- return "Controller: 02 EEPROM";
+ return "Controller: EEPROM Verify";
case 0x04:
- return "Controller: 04 DSP";
+ return "Controller: DSP Inactive";
case 0x05:
- return "Controller: 05 DSP";
+ return "Controller: DSP Application Inactive";
case 0x06:
- return "Controller: 06 Main FW";
+ return "Controller: Main FW Data";
case 0x07:
- return "Controller: 07 Main FW";
+ return "Controller: Main FW Write";
case 0x08:
- return "Controller: 08 DSP FW";
+ return "Controller: DSP FW Data";
case 0x09:
- return "Controller: 09 DSP FW";
+ return "Controller: DSP FW Write";
case 0x0A:
- return "Controller: 0A ASIC";
+ return "Controller: 0A ASIC??";
case 0x0B:
- return "Controller: 0B FPGA";
+ return "Controller: 0B FPGA??";
case 0x0D:
- return "Controller: 0D Tone Curve";
+ return "Controller: Tone Curve Write";
case 0x16:
- return "Controller: 16 Parameter Table";
+ return "Controller: Invalid Parameter Table";
case 0x17:
- return "Controller: 17 Parameter Table";
+ return "Controller: Parameter Table Data";
case 0x18:
- return "Controller: 18 Parameter Table";
+ return "Controller: Parameter Table Write";
case 0x29:
- return "Controller: 29 DSP Comms";
+ return "Controller: DSP Communication";
case 0x2A:
- return "Controller: 2A DSP Comms";
+ return "Controller: DSP DMA Failure";
default:
return "Controller: Unknown";
}
- case 8: /* XXXX "Mechanical Error" */
+ case 0x02: /* "Mechanical Error" */
switch (minor) {
case 0x01:
- return "Mechanical: 01 Thermal Head";
+ return "Mechanical: Thermal Head (Upper Up)";
case 0x02:
- return "Mechanical: 02 Thermal Head";
+ return "Mechanical: Thermal Head (Head Up)";
case 0x03:
- return "Mechanical: 03 Thermal Head";
+ return "Mechanical: Thermal Head (Head Down)";
case 0x04:
- return "Mechanical: 04 Pinch Roller";
+ return "Mechanical: Pinch Roller (Initialize)";
case 0x05:
- return "Mechanical: 05 Pinch Roller";
+ return "Mechanical: Pinch Roller (Mode1)";
case 0x06:
- return "Mechanical: 06 Pinch Roller";
+ return "Mechanical: Pinch Roller (Mode2)";
case 0x07:
- return "Mechanical: 07 Pinch Roller";
+ return "Mechanical: Pinch Roller (Mode3)";
case 0x08:
- return "Mechanical: 08 Pinch Roller";
+ return "Mechanical: Pinch Roller (Mode4)";
case 0x09:
- return "Mechanical: 09 Cutter";
+ return "Mechanical: Cutter (Right)";
case 0x0A:
- return "Mechanical: 0A Cutter";
+ return "Mechanical: Cutter (Left)";
+ case 0x0B:
+ return "Mechanical: Thermal Head (Head Down Recovery)";
default:
return "Mechanical: Unknown";
}
- case 2: /* XXXX "Sensor Error" */
+ case 0x03: /* "Sensor Error" */
switch (minor) {
case 0x01:
- return "Sensor: 01 Thermal Head";
+ return "Sensor: Thermal Head";
case 0x02:
- return "Sensor: 02 Pinch Roller";
+ return "Sensor: Pinch Roller";
case 0x03:
- return "Sensor: 03 Cutter L";
+ return "Sensor: Cutter Left";
case 0x04:
- return "Sensor: 04 Cutter R";
+ return "Sensor: Cutter Right";
case 0x05:
- return "Sensor: 05 Cutter M";
+ return "Sensor: Cutter Unknown";
+ case 0x08:
+ return "Sensor: Ribbon Encoder (Supply)";
+ case 0x09:
+ return "Sensor: Ribbon Encoder (Takeup)";
+ case 0x13:
+ return "Sensor: Thermal Head";
default:
return "Sensor: Unknown";
}
- case 3: /* XXXX "Temperature Sensor Error" */
+ case 0x04: /* "Temperature Sensor Error" */
switch (minor) {
case 0x01:
- return "Temp Sensor: 01 Thermal Head High";
+ return "Temp Sensor: Thermal Head High";
case 0x02:
- return "Temp Sensor: 02 Thermal Head Low";
+ return "Temp Sensor: Thermal Head Low";
case 0x03:
- return "Temp Sensor: 03 Environment High";
+ return "Temp Sensor: Environment High";
case 0x04:
- return "Temp Sensor: 04 Environment Low";
+ return "Temp Sensor: Environment Low";
case 0x05:
- return "Temp Sensor: 05 Warmup Timed Out";
+ return "Temp Sensor: Warmup Timed Out";
default:
return "Temp Sensor: Unknown";
}
-
- case 4: /* XXXX "Front Cover Open" */
- switch (minor) {
-// case 0x01:
-// return "Front Cover: 01 Cover Open";
- case 0x02:
- return "Front Cover: 02 Cover Open Error";
- default:
- return "Front Cover: Unknown";
- }
- case 5: /* XXX "Paper Jam" */
+ case 0x5: /* "Paper Jam" */
switch (minor) {
case 0x01:
- return "Paper Jam: 01 Loading";
+ return "Paper Jam: Loading Leading Edge Off";
case 0x02:
- return "Paper Jam: 02 Loading";
+ return "Paper Jam: Loading Print Position On";
case 0x03:
- return "Paper Jam: 03 Loading";
+ return "Paper Jam: Loading Print Position Off";
case 0x04:
- return "Paper Jam: 04 Loading";
+ return "Paper Jam: Loading Print Position On";
case 0x05:
- return "Paper Jam: 05 Loading";
+ return "Paper Jam: Loading Leading Edge On";
case 0x11:
- return "Paper Jam: 11 Reloading";
+ return "Paper Jam: Initializing Print Position Off";
case 0x12:
- return "Paper Jam: 12 Reloading";
+ return "Paper Jam: Initializing Print Position On";
case 0x13:
- return "Paper Jam: 13 Reloading";
+ return "Paper Jam: Initializing Leading Edge On";
case 0x14:
- return "Paper Jam: 14 Reloading";
+ return "Paper Jam: Initializing Print Position On";
case 0x15:
- return "Paper Jam: 15 Reloading";
+ return "Paper Jam: Initializing Print Position Off";
case 0x16:
- return "Paper Jam: 16 Reloading";
+ return "Paper Jam: Initializing Print Position On";
case 0x21:
- return "Paper Jam: 21 Takeup";
+ return "Paper Jam: Initializing Print Position On";
case 0x22:
- return "Paper Jam: 22 Takeup";
+ return "Paper Jam: Rewinding Print Position On";
+ case 0x40:
+ return "Paper Jam: Pre-Printing Print Position Off";
case 0x41:
- return "Paper Jam: 41 Printing";
+ return "Paper Jam: Pre-Printing Print Position Off";
case 0x42:
- return "Paper Jam: 42 Printing";
+ return "Paper Jam: Printing Leading Edge Off";
case 0x43:
- return "Paper Jam: 43 Printing";
+ return "Paper Jam: After Returning Lead Edge Off";
case 0x44:
- return "Paper Jam: 44 Printing";
+ return "Paper Jam: After Printing Print Position Off";
case 0x45:
- return "Paper Jam: 45 Printing";
+ return "Paper Jam: After Printing Print Position On";
case 0x46:
- return "Paper Jam: 46 Printing";
+ return "Paper Jam: After Printing Print Position On";
case 0x47:
- return "Paper Jam: 47 Printing";
+ return "Paper Jam: After Printing Print Position Off";
case 0x49:
- return "Paper Jam: 49 Printing";
+ return "Paper Jam: Printing Lost Ribbon Mark";
case 0x4A:
- return "Paper Jam: 4A Ribbon Cut";
+ return "Paper Jam: Printing Ribbon Cut";
+ case 0x4D:
+ return "Paper Jam: Printing Lost M Mark";
+ case 0x4E:
+ return "Paper Jam: Printing Lost C Mark";
+ case 0x4F:
+ return "Paper Jam: Printing Lost OP Mark";
case 0x61:
- return "Paper Jam: 61 Can't Load";
+ return "Paper Jam: Initializing Lead Edge On";
case 0x62:
- return "Paper Jam: 62 Can't Load";
+ return "Paper Jam: Initizlizing Print Position On";
+ case 0x64:
+ return "Paper Jam: Initizlizing Paper Size On";
default:
return "Paper Jam: Unknown";
}
- case 6: /* XXXX "Consumables" */
+ case 0x06: /* User Error */
switch (minor) {
- case 0x01: // XXX
- return "Consumables: XX No Ribbon+Paper";
- case 0x02: // XXX
- return "Consumables: XX No Ribbon";
- case 0x03: // XXX
- return "Consumables: XX Ribbon Empty";
- case 0x04: // XXX
- return "Consumables: XX Ribbon Mismatch";
- case 0x05: // XXX
- return "Consumables: XX 01 Ribbon Incorrect";
- case 0x06: // XXX
- return "Consumables: XX 02 Ribbon Incorrect";
- case 0x07: // XXX
- return "Consumables: XX 03 Ribbon Incorrect";
- case 0x08: // XXX
- return "Consumables: XX No Paper";
- case 0x09: // XXX
- return "Consumables: XX Paper Empty";
- case 0x0A: // XXX
- return "Consumables: XX Paper Mismatch";
+ case 0x01:
+ return "Front Cover Open";
+ case 0x02:
+ return "Incorrect Ribbon";
+ case 0x03:
+ return "No Ribbon";
+ case 0x04:
+ return "Mismatched Ribbon";
+ case 0x05:
+ return "Mismatched Paper";
+ case 0x06:
+ return "Paper Empty";
+ case 0x08:
+ return "No Paper";
+ case 0x09:
+ return "Take Out Paper";
+ case 0x0A:
+ return "Cover Open Error";
+ case 0x0B:
+ return "Thermal Head Damaged";
+ case 0x0C:
+ return "Thermal Head Recovery";
default:
- return "Consumables: Unknown";
+ return "Unknown";
}
-#endif
default:
return "Unknown";
}
@@ -1202,6 +1158,10 @@ static int get_tonecurve(struct shinkos2145_ctx *ctx, int type, char *fname)
resp->total_size = le16_to_cpu(resp->total_size);
data = malloc(resp->total_size * 2);
+ if (!data) {
+ ERROR("Memory allocation failure! (%d bytes)\n",
+ resp->total_size * 2);
+ }
i = 0;
while (i < resp->total_size) {
@@ -1252,6 +1212,11 @@ static int set_tonecurve(struct shinkos2145_ctx *ctx, int target, char *fname)
uint16_t *data = malloc(UPDATE_SIZE);
+ if (!data) {
+ ERROR("Memory allocation failure! (%d bytes)\n",
+ UPDATE_SIZE);
+ }
+
/* Read in file */
int tc_fd = open(fname, O_RDONLY);
if (tc_fd < 0) {
@@ -1445,8 +1410,12 @@ int shinkos2145_cmdline_arg(void *vctx, int argc, char **argv)
static void *shinkos2145_init(void)
{
struct shinkos2145_ctx *ctx = malloc(sizeof(struct shinkos2145_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory allocation failure! (%d bytes)\n",
+ (int)sizeof(struct shinkos2145_ctx));
+
return NULL;
+ }
memset(ctx, 0, sizeof(struct shinkos2145_ctx));
/* Use Fast return by default in CUPS mode */
@@ -1482,24 +1451,18 @@ static void shinkos2145_teardown(void *vctx) {
free(ctx);
}
-static int shinkos2145_read_parse(void *vctx, int data_fd) {
+static int shinkos2145_early_parse(void *vctx, int data_fd) {
struct shinkos2145_ctx *ctx = vctx;
- int ret;
- uint8_t tmpbuf[4];
+ int printer_type, ret;
if (!ctx)
- return 1;
-
- if (ctx->databuf) {
- free(ctx->databuf);
- ctx->databuf = NULL;
- }
+ return -1;
/* Read in then validate header */
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
if (ret < 0 || ret != sizeof(ctx->hdr)) {
if (ret == 0)
- return 1;
+ return -1; /* deliberate */
ERROR("Read failed (%d/%d/%d)\n",
ret, 0, (int)sizeof(ctx->hdr));
perror("ERROR: Read failed");
@@ -1507,18 +1470,50 @@ static int shinkos2145_read_parse(void *vctx, int data_fd) {
}
if (le32_to_cpu(ctx->hdr.len1) != 0x10 ||
- le32_to_cpu(ctx->hdr.model) != 2145 ||
le32_to_cpu(ctx->hdr.len2) != 0x64 ||
le32_to_cpu(ctx->hdr.dpi) != 300) {
ERROR("Unrecognized header data format!\n");
- return 1;
+ return -1;
+ }
+
+ ctx->model = le32_to_cpu(ctx->hdr.model);
+
+ switch(ctx->model) {
+ case 2145:
+ printer_type = P_SHINKO_S2145;
+ break;
+ case 6145:
+ case 6245:
+ default:
+ ERROR("Unrecognized printer (%d)!\n", le32_to_cpu(ctx->hdr.model));
+
+ return -1;
+ }
+
+ INFO("File intended for an S%d printer\n", ctx->model);
+
+ return printer_type;
+}
+
+static int shinkos2145_read_parse(void *vctx, int data_fd) {
+ struct shinkos2145_ctx *ctx = vctx;
+ int ret;
+ uint8_t tmpbuf[4];
+
+ if (!ctx)
+ return CUPS_BACKEND_FAILED;
+
+ if (ctx->databuf) {
+ free(ctx->databuf);
+ ctx->databuf = NULL;
}
+
ctx->datalen = le32_to_cpu(ctx->hdr.rows) * le32_to_cpu(ctx->hdr.columns) * 3;
ctx->databuf = malloc(ctx->datalen);
if (!ctx->databuf) {
ERROR("Memory allocation failure!\n");
- return 1;
+ return CUPS_BACKEND_FAILED;
}
{
@@ -1550,10 +1545,10 @@ static int shinkos2145_read_parse(void *vctx, int data_fd) {
tmpbuf[2] != 0x02 ||
tmpbuf[3] != 0x01) {
ERROR("Unrecognized footer data format!\n");
- return 1;
+ return CUPS_BACKEND_FAILED;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
static int shinkos2145_main_loop(void *vctx, int copies) {
@@ -1563,11 +1558,40 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
uint8_t cmdbuf[CMDBUF_LEN];
uint8_t rdbuf2[READBACK_LEN];
- int last_state = -1, state = S_IDLE;
+ int i, last_state = -1, state = S_IDLE;
struct s2145_cmd_hdr *cmd = (struct s2145_cmd_hdr *) cmdbuf;;
struct s2145_print_cmd *print = (struct s2145_print_cmd *) cmdbuf;
struct s2145_status_resp *sts = (struct s2145_status_resp *) rdbuf;
+ struct s2145_mediainfo_resp *media = (struct s2145_mediainfo_resp *) rdbuf;
+
+ /* Send Media Query */
+ memset(cmdbuf, 0, CMDBUF_LEN);
+ cmd->cmd = cpu_to_le16(S2145_CMD_MEDIAINFO);
+ cmd->len = cpu_to_le16(0);
+
+ if ((ret = s2145_do_cmd(ctx,
+ cmdbuf, sizeof(*cmd),
+ sizeof(*media),
+ &num)) < 0) {
+ ERROR("Failed to execute %s command\n", cmd_names(cmd->cmd));
+ return CUPS_BACKEND_FAILED;
+ }
+
+ if (le16_to_cpu(media->hdr.payload_len) != (sizeof(struct s2145_mediainfo_resp) - sizeof(struct s2145_status_hdr)))
+ return CUPS_BACKEND_FAILED;
+
+ /* Validate print sizes */
+ for (i = 0; i < media->count ; i++) {
+ /* Look for matching media */
+ if (le16_to_cpu(media->items[i].columns) == cpu_to_le16(le32_to_cpu(ctx->hdr.columns)) &&
+ le16_to_cpu(media->items[i].rows) == cpu_to_le16(le32_to_cpu(ctx->hdr.rows)))
+ break;
+ }
+ if (i == media->count) {
+ ERROR("Incorrect media loaded for print!\n");
+ return CUPS_BACKEND_HOLD;
+ }
top:
if (state != last_state) {
@@ -1585,7 +1609,7 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
sizeof(struct s2145_status_hdr),
&num)) < 0) {
ERROR("Failed to execute %s command\n", cmd_names(cmd->cmd));
- return ret;
+ return CUPS_BACKEND_FAILED;
}
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
@@ -1593,13 +1617,13 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
INFO("Printer Status: 0x%02x (%s)\n",
sts->hdr.status, status_str(sts->hdr.status));
- if (sts->hdr.error == ERROR_PRINTER) {
- ERROR("Printer Reported Error: 0x%02x.0x%02x (%s)\n",
- sts->hdr.printer_major, sts->hdr.printer_minor,
- error_codes(sts->hdr.printer_major, sts->hdr.printer_minor));
- }
+ if (sts->hdr.result != RESULT_SUCCESS)
+ goto printer_error;
+ if (sts->hdr.error == ERROR_PRINTER)
+ goto printer_error;
} else if (state == last_state) {
sleep(1);
+ goto top;
}
last_state = state;
@@ -1608,12 +1632,6 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
switch (state) {
case S_IDLE:
INFO("Waiting for printer idle\n");
- /* Basic error handling */
- if (sts->hdr.result != RESULT_SUCCESS)
- goto printer_error;
- if (sts->hdr.error != ERROR_NONE)
- goto printer_error;
-
/* If either bank is free, continue */
if (sts->bank1_status == BANK_STATUS_FREE ||
sts->bank2_status == BANK_STATUS_FREE)
@@ -1626,13 +1644,20 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
memset(cmdbuf, 0, CMDBUF_LEN);
print->hdr.cmd = cpu_to_le16(S2145_CMD_PRINTJOB);
print->hdr.len = cpu_to_le16(sizeof (*print) - sizeof(*cmd));
- print->id = ctx->jobid;
- print->count = cpu_to_le16(copies);
- print->columns = cpu_to_le16(le32_to_cpu(ctx->hdr.columns));
- print->rows = cpu_to_le16(le32_to_cpu(ctx->hdr.rows));
- print->media = le32_to_cpu(ctx->hdr.media);
- print->mode = le32_to_cpu(ctx->hdr.mode);
- print->method = le32_to_cpu(ctx->hdr.method);
+
+ if (ctx->model == 2145) {
+ print->id = ctx->jobid;
+ print->count = cpu_to_le16(copies);
+ print->columns = cpu_to_le16(le32_to_cpu(ctx->hdr.columns));
+ print->rows = cpu_to_le16(le32_to_cpu(ctx->hdr.rows));
+ print->media = le32_to_cpu(ctx->hdr.media);
+ print->mode = le32_to_cpu(ctx->hdr.mode);
+ print->method = le32_to_cpu(ctx->hdr.method);
+ } else {
+ // s6145, s6245 use different fields
+ ERROR("Don't know how to initiate print on non-2145 models!\n");
+ return CUPS_BACKEND_FAILED;
+ }
if ((ret = s2145_do_cmd(ctx,
cmdbuf, sizeof(*print),
@@ -1653,22 +1678,20 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
INFO("Sending image data to printer\n");
if ((ret = send_data(ctx->dev, ctx->endp_down,
ctx->databuf, ctx->datalen)))
- return ret;
+ return CUPS_BACKEND_FAILED;
INFO("Waiting for printer to acknowledge completion\n");
sleep(1);
state = S_PRINTER_SENT_DATA;
break;
case S_PRINTER_SENT_DATA:
- if (sts->hdr.result != RESULT_SUCCESS)
- goto printer_error;
if (ctx->fast_return) {
INFO("Fast return mode enabled.\n");
state = S_FINISHED;
- }
- else if (sts->hdr.status == STATUS_READY ||
- sts->hdr.status == STATUS_FINISHED)
+ } else if (sts->hdr.status == STATUS_READY ||
+ sts->hdr.status == STATUS_FINISHED) {
state = S_FINISHED;
+ }
break;
default:
break;
@@ -1691,7 +1714,7 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
goto top;
}
- return 0;
+ return CUPS_BACKEND_OK;
printer_error:
ERROR("Printer reported error: %#x (%s) status: %#x (%s) -> %#x.%#x (%s)\n",
@@ -1701,7 +1724,7 @@ printer_error:
status_str(sts->hdr.status),
sts->hdr.printer_major, sts->hdr.printer_minor,
error_codes(sts->hdr.printer_major, sts->hdr.printer_minor));
- return 1; /* CUPS_BACKEND_FAILED */
+ return CUPS_BACKEND_FAILED;
}
static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len)
@@ -1735,27 +1758,35 @@ static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t end
strncpy(buf, (char*)resp->data, buf_len);
buf[buf_len-1] = 0; /* ensure it's null terminated */
- return 0;
+ return CUPS_BACKEND_OK;
}
/* Exported */
#define USB_VID_SHINKO 0x10CE
#define USB_PID_SHINKO_S2145 0x000E
+#define USB_PID_SHINKO_S6145 0x0019
+#define USB_PID_SHINKO_S6245 0x001D
+//#define USB_VID_CIAAT xxxxxx
+//#define USB_PID_CIAAT_BRAVA21 xxxxx
struct dyesub_backend shinkos2145_backend = {
- .name = "Shinko/Sinfonia CHC-S2145 (S2)",
- .version = "0.31",
+ .name = "Shinko/Sinfonia CHC-S2145",
+ .version = "0.40",
.uri_prefix = "shinkos2145",
.cmdline_usage = shinkos2145_cmdline,
.cmdline_arg = shinkos2145_cmdline_arg,
.init = shinkos2145_init,
.attach = shinkos2145_attach,
.teardown = shinkos2145_teardown,
+ .early_parse = shinkos2145_early_parse,
.read_parse = shinkos2145_read_parse,
.main_loop = shinkos2145_main_loop,
.query_serno = shinkos2145_query_serno,
.devices = {
{ USB_VID_SHINKO, USB_PID_SHINKO_S2145, P_SHINKO_S2145, ""},
+// { USB_VID_SHINKO, USB_PID_SHINKO_S6145, P_SHINKO_S2145, ""},
+// { USB_VID_SHINKO, USB_PID_SHINKO_S6245, P_SHINKO_S2145, ""},
+// { USB_VID_CIAAT, USB_PID_CIAAT_BRAVA21, P_SHINKO_S2145, ""},
{ 0, 0, 0, ""}
}
};
@@ -1767,8 +1798,8 @@ struct dyesub_backend shinkos2145_backend = {
4-byte Little Endian words.
10 00 00 00 MM MM 00 00 00 00 00 00 01 00 00 00 MM == Model (ie 2145d)
- 64 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 00 TT == Media Type
- MM 00 00 00 PP 00 00 00 00 00 00 00 00 00 00 00 PP = Print Mode, MM = Print Method
+ 64 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 00 TT == Media/Print Size
+ MM 00 00 00 PP 00 00 00 00 00 00 00 00 00 00 00 MM = Print Method (aka cut control), PP = Print Mode
00 00 00 00 WW WW 00 00 HH HH 00 00 XX 00 00 00 XX == Copies
00 00 00 00 00 00 00 00 00 00 00 00 ce ff ff ff
00 00 00 00 ce ff ff ff QQ QQ 00 00 ce ff ff ff QQ == DPI, ie 300.
@@ -1779,4 +1810,67 @@ struct dyesub_backend shinkos2145_backend = {
04 03 02 01 [[ footer ]]
+ * CHC-S6245 data format
+
+ Spool file consists of an 116-byte header, followed by RGB-packed data,
+ followed by a 4-byte footer. Header appears to consist of a series of
+ 4-byte Little Endian words.
+
+ 10 00 00 00 MM MM 00 00 01 00 00 00 01 00 00 00 MM == Model (ie 6245d)
+ 64 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 00 TT == 0x20 8x4, 0x21 8x5, 0x22 8x6, 0x23 8x8, 0x10 8x10, 0x11 8x12
+ 00 00 00 00 00 00 00 00 XX 00 00 00 00 00 00 00 XX == 0x03 matte, 0x02 glossy, 0x01 no coat
+ 00 00 00 00 WW WW 00 00 HH HH 00 00 NN 00 00 00 WW/HH Width, Height (LE), NN == Copies
+ 00 00 00 00 00 00 00 00 00 00 00 00 ce ff ff ff
+ 00 00 00 00 ce ff ff ff QQ QQ 00 00 ce ff ff ff QQ == DPI (300)
+ 00 00 00 00 ce ff ff ff 00 00 00 00 00 00 00 00
+ 00 00 00 00
+
+ [[Packed RGB payload of WW*HH*3 bytes]]
+
+ 04 03 02 01 [[ footer ]]
+
+ * CHC-S6145 data format
+
+ Spool file consists of an 116-byte header, followed by RGB-packed data,
+ followed by a 4-byte footer. Header appears to consist of a series of
+ 4-byte Little Endian words.
+
+ 10 00 00 00 MM MM 00 00 HH 00 00 00 01 00 00 00 MM == Model (ie 6145d), HH == 0x02 (5" media), 0x03 (6" media)
+ 64 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 00 TT == 0x08 5x5, 0x03 5x7, 0x07 2x6, 0x00 4x6, 0x06 6x6/6x6+6x2/6x8
+ UU 00 00 00 ZZ 00 00 00 XX 00 00 00 00 00 00 00 XX == 0x00 default, 0x02 glossy, 0x03 matte, ZZ == 0x00 default, 0x01 == std qual; UU == 0x00 normal, 0x04 2x6*2, 0x05 6x6+2x6
+ 00 00 00 00 WW WW 00 00 HH HH 00 00 NN 00 00 00 WW/HH Width, Height (LE), NN == Copies
+ 00 00 00 00 00 00 00 00 00 00 00 00 ce ff ff ff
+ 00 00 00 00 ce ff ff ff QQ QQ 00 00 ce ff ff ff QQ == DPI (300)
+ 00 00 00 00 ce ff ff ff 00 00 00 00 00 00 00 00
+ 00 00 00 00
+
+ [[Packed RGB payload of WW*HH*3 bytes]]
+
+ 04 03 02 01 [[ footer ]]
+
+ * CIAAT Brava 21 data format
+
+ This printer is supposed to be a variant of the S6145, but uses a
+ different spool format -- but seems to use the same command language.
+
+ 01 40 12 00 01 NN 00 YY YY XX XX TT 00 00 00 00 00 00 01 MM QQ 00
+
+ NN == copies
+ YY YY == Columns (LE)
+ XX XX == Rows (LE)
+ MM == Overcoat (02 = glossy, 03 = matte, 01 = none)
+ QQ == Multicut (00 = normal, 01 = none, 02 = 2*4x6,
+ 04 = 2*2x6, 80 = 4x6-notrim)
+ TT == Type (00 = 4x6, 03 = 5x7, 06 = 8x6, 07 = 2x6)
+
+ 1844*2434 8x6
+ 1844*2492 4x6*2
+ 1548*2140 5x7
+ 1844*1240 4x6 (and 2x6*2)
+ 1844*1210 4x6-notrim (WTF?)
+ 1844*634 2x6
+
+
+ [[ Followed by XX*YY*3 bytes of image data, RGB ]]
+
*/
diff --git a/src/cups/sony_updr150_print.c b/src/cups/sony_updr150_print.c
index 15347b0..5df9742 100644
--- a/src/cups/sony_updr150_print.c
+++ b/src/cups/sony_updr150_print.c
@@ -1,7 +1,7 @@
/*
* Sony UP-DR150 Photo Printer CUPS backend -- libusb-1.0 version
*
- * (c) 2013-2014 Solomon Peachy <pizza@shaftnet.org>
+ * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@@ -37,6 +37,12 @@
#include "backend_common.h"
+/* Exported */
+#define USB_VID_SONY 0x054C
+#define USB_PID_SONY_UPDR150 0x01E8
+#define USB_PID_SONY_UPDR200 0x035F
+#define USB_PID_SONY_UPCR10 1234
+
/* Private data stucture */
struct updr150_ctx {
struct libusb_device_handle *dev;
@@ -45,13 +51,18 @@ struct updr150_ctx {
uint8_t *databuf;
int datalen;
+
+ uint32_t copies_offset;
+ uint8_t type;
};
static void* updr150_init(void)
{
struct updr150_ctx *ctx = malloc(sizeof(struct updr150_ctx));
- if (!ctx)
+ if (!ctx) {
+ ERROR("Memory Allocation Failure!");
return NULL;
+ }
memset(ctx, 0, sizeof(struct updr150_ctx));
return ctx;
}
@@ -60,12 +71,24 @@ static void updr150_attach(void *vctx, struct libusb_device_handle *dev,
uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
{
struct updr150_ctx *ctx = vctx;
+ struct libusb_device *device;
+ struct libusb_device_descriptor desc;
UNUSED(jobid);
ctx->dev = dev;
ctx->endp_up = endp_up;
ctx->endp_down = endp_down;
+
+ device = libusb_get_device(dev);
+ libusb_get_device_descriptor(device, &desc);
+ if (desc.idProduct == USB_PID_SONY_UPDR150 ||
+ desc.idProduct == USB_PID_SONY_UPDR200)
+ ctx->type = P_SONY_UPDR150;
+ else
+ ctx->type = P_SONY_UPCR10; // XXX
+
+ ctx->copies_offset = 0;
}
static void updr150_teardown(void *vctx) {
@@ -85,7 +108,7 @@ static int updr150_read_parse(void *vctx, int data_fd) {
int len, run = 1;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
if (ctx->databuf) {
free(ctx->databuf);
@@ -96,7 +119,7 @@ static int updr150_read_parse(void *vctx, int data_fd) {
ctx->databuf = malloc(MAX_PRINTJOB_LEN);
if (!ctx->databuf) {
ERROR("Memory allocation failure!\n");
- return 2;
+ return CUPS_BACKEND_FAILED;
}
while(run) {
@@ -104,7 +127,7 @@ static int updr150_read_parse(void *vctx, int data_fd) {
int keep = 0;
i = read(data_fd, ctx->databuf + ctx->datalen, 4);
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
if (i == 0)
break;
@@ -113,16 +136,18 @@ static int updr150_read_parse(void *vctx, int data_fd) {
/* Filter out chunks we don't send to the printer */
switch (len) {
+ case 0xffffff60:
case 0xffffff6a:
- case 0xfffffffc:
- case 0xfffffffb:
- case 0xfffffff4:
+ case 0xffffffeb:
+ case 0xffffffec:
case 0xffffffed:
- case 0xfffffff9:
+ case 0xfffffff4:
case 0xfffffff8:
- case 0xffffffec:
- case 0xffffffeb:
+ case 0xfffffff9:
case 0xfffffffa:
+ case 0xfffffffb:
+ case 0xfffffffc:
+ case 0xffffffff:
if(dyesub_debug)
DEBUG("Block ID '%08x' (len %d)\n", len, 0);
len = 0;
@@ -131,7 +156,15 @@ static int updr150_read_parse(void *vctx, int data_fd) {
if(dyesub_debug)
DEBUG("Block ID '%08x' (len %d)\n", len, 0);
len = 0;
- run = 0;
+ if (ctx->type == P_SONY_UPDR150)
+ run = 0;
+ break;
+ case 0xfffffff7:
+ if(dyesub_debug)
+ DEBUG("Block ID '%08x' (len %d)\n", len, 0);
+ len = 0;
+ if (ctx->type == P_SONY_UPCR10)
+ run = 0;
break;
case 0xffffffef:
case 0xfffffff5:
@@ -142,7 +175,7 @@ static int updr150_read_parse(void *vctx, int data_fd) {
default:
if (len & 0xff000000) {
ERROR("Unknown block ID '%08x', aborting!\n", len);
- return 1;
+ return CUPS_BACKEND_CANCEL;
} else {
/* Only keep these chunks */
if(dyesub_debug)
@@ -158,18 +191,27 @@ static int updr150_read_parse(void *vctx, int data_fd) {
while(len > 0) {
i = read(data_fd, ctx->databuf + ctx->datalen, len);
if (i < 0)
- return i;
+ return CUPS_BACKEND_CANCEL;
if (i == 0)
break;
+
+ if (ctx->databuf[ctx->datalen] == 0x1b &&
+ ctx->databuf[ctx->datalen + 1] == 0xee) {
+ if (ctx->type == P_SONY_UPCR10)
+ ctx->copies_offset = ctx->datalen + 8;
+ else
+ ctx->copies_offset = ctx->datalen + 12;
+ }
+
if (keep)
ctx->datalen += i;
len -= i;
}
}
if (!ctx->datalen)
- return 1;
+ return CUPS_BACKEND_CANCEL;
- return 0;
+ return CUPS_BACKEND_OK;
}
static int updr150_main_loop(void *vctx, int copies) {
@@ -177,7 +219,13 @@ static int updr150_main_loop(void *vctx, int copies) {
int i = 0, ret;
if (!ctx)
- return 1;
+ return CUPS_BACKEND_FAILED;
+
+ /* Some models specify copies in the print job */
+ if (ctx->copies_offset) {
+ ctx->databuf[ctx->copies_offset] = copies;
+ copies = 1;
+ }
top:
while (i < ctx->datalen) {
@@ -187,11 +235,9 @@ top:
i += sizeof(uint32_t);
- if (dyesub_debug)
- DEBUG("Sending %u bytes to printer @ %i\n", len, i);
if ((ret = send_data(ctx->dev, ctx->endp_down,
ctx->databuf + i, len)))
- return ret;
+ return CUPS_BACKEND_FAILED;
i += len;
}
@@ -206,17 +252,12 @@ top:
goto top;
}
- return 0;
+ return CUPS_BACKEND_OK;
}
-/* Exported */
-#define USB_VID_SONY 0x054C
-#define USB_PID_SONY_UPDR150 0x01E8
-#define USB_PID_SONY_UPDR200 0x035F
-
struct dyesub_backend updr150_backend = {
- .name = "Sony UP-DR150/UP-DR200",
- .version = "0.13",
+ .name = "Sony UP-DR150/UP-DR200/UP-CR10",
+ .version = "0.17",
.uri_prefix = "sonyupdr150",
.init = updr150_init,
.attach = updr150_attach,
@@ -226,6 +267,7 @@ struct dyesub_backend updr150_backend = {
.devices = {
{ USB_VID_SONY, USB_PID_SONY_UPDR150, P_SONY_UPDR150, ""},
{ USB_VID_SONY, USB_PID_SONY_UPDR200, P_SONY_UPDR150, ""},
+ { USB_VID_SONY, USB_PID_SONY_UPCR10, P_SONY_UPCR10, ""},
{ 0, 0, 0, ""}
}
};
@@ -236,10 +278,11 @@ struct dyesub_backend updr150_backend = {
arguments. The purpose of the commands is unknown, but they presumably
instruct the driver to perform certain things.
- If you treat these 4 bytes as a 32-bit little-endian number, if the most significant
- four bits are bits are non-zero, the value is is to be interpreted as a driver
- command. If the most significant bits are zero, the value signifies that the following
- N bytes of data should be sent to the printer as-is.
+ If you treat these 4 bytes as a 32-bit little-endian number, if the
+ most significant four bits are bits are non-zero, the value is is to
+ be interpreted as a driver command. If the most significant bits are
+ zero, the value signifies that the following N bytes of data should be
+ sent to the printer as-is.
Known driver "commands":
@@ -313,4 +356,32 @@ struct dyesub_backend updr150_backend = {
[[fin]]
+ **************
+
+ Sony UP-CL10 / DNP SL-10 spool format:
+
+60 ff ff ff
+f8 ff ff ff
+fd ff ff ff 14 00 00 00 1b 15 00 00 00 0d 00 00 00 00 00 07 00 00 00 00 WW WW HH HH
+fb ff ff ff
+f4 ff ff ff 0b 00 00 00 1b ea 00 00 00 00 SH SH SH SH 00 SL SL SL SL
+
+ [[ Data, rows * cols * 3 bytes ]]
+
+f3 ff ff ff 0f 00 00 00 1b e5 00 00 00 08 00 00 00 00 00 00 00 00 00
+ 12 00 00 00 1b e1 00 00 00 0b 00 00 80 00 00 00 00 00 WW WW HH HH
+fa ff ff ff 09 00 00 00 1b ee 00 00 00 02 00 00 NN
+ 07 00 00 00 1b 0a 00 00 00 00 00
+f9 ff ff ff
+fc ff ff ff 07 00 00 00 1b 17 00 00 00 00 00
+f7 ff ff ff
+
+ WW WW == Columns, Big Endian
+ HH HH == Rows, Big Endian
+ SL SL SL SL == Plane size, Little Endian (Rows * Cols * 3)
+ SH SH SH SH == Plane size, Big Endian (Rows * Cols * 3)
+ NN == Copies
+
+
+
*/
diff --git a/src/cups/test-ppds b/src/cups/test-ppds
index fb0c0fd..7dd004b 100755..100644
--- a/src/cups/test-ppds
+++ b/src/cups/test-ppds
@@ -14,7 +14,7 @@ cupstestppdopts='-I profiles -W sizes'
ppd_count=`find ppd \( -name '*.ppd.gz' -o -name '*.ppd' \) -print | wc -l`
-failures="`find ppd -name '*.ppd*' -print | xargs cupstestppd $cupstestppdopts |grep 'FAIL$' | awk -F: '{print $1}'`"
+failures="`find ppd -name '*.ppd*' -print | sort | xargs cupstestppd $cupstestppdopts |grep 'FAIL$' | awk -F: '{print $1}'`"
if [ -z "$failures" ] ; then
echo "All $ppd_count PPD files pass"
diff --git a/src/cups/test-rastertogutenprint.in b/src/cups/test-rastertogutenprint.in
index 533063d..373f127 100755
--- a/src/cups/test-rastertogutenprint.in
+++ b/src/cups/test-rastertogutenprint.in
@@ -27,6 +27,7 @@ make_ppds=1
md5dir=''
outdir=''
cupsargs=''
+postscript=''
npages=3
usage() {
@@ -48,6 +49,7 @@ set_args() {
-o|--option) shift; cupsargs="$cupsargs $1" ;;
-m|--md5dir) shift; md5dir="$1" ;;
-p|--pages) shift; npages="$1" ;;
+ -P|--postscript) shift; postscript=1 ;;
--) shift; args="$@"; return ;;
*) return ;;
esac
@@ -64,15 +66,18 @@ if [ -n "$md5dir" -a ! -d "$md5dir" ] ; then
mkdir -p "$md5dir"
fi
-version="@GUTENPRINT_MAJOR_VERSION@.@GUTENPRINT_MINOR_VERSION@";
-cupsdir="@cups_conf_serverbin@/filter"
+version="5.2";
+cupsdir="/usr/lib/cups/filter"
if [ -x "$cupsdir/pstoraster" -o -x "$cupsdir/gstoraster" -o -x "$cupsdir/cgpdftoraster" ] ; then
- pages="page-ranges=24-`expr 24 + $npages - 1` "
+ pages="24-`expr 24 + $npages - 1`"
+ if [ -n "$postscript" ] ; then
+ pages="page-ranges=$pages"
+ fi
else
pages=''
fi
-if [ ! -x "$cupsdir/cgpdftoraster" -a ! -x "$cupsdir/pdftops" ] ; then
+if [ ! -x "$cupsdir/cgpdftoraster" -a ! -x "$cupsdir/pdftops" -a ! -x "$cupsdir/gstoraster" ] ; then
echo 'CUPS does not appear to be installed, skipping test'
exit 0
fi
@@ -84,17 +89,28 @@ cleanup() {
exit 1
}
-pdftops="`type -p pdftops`"
-
-if [ ! -n "$pdftops" -o ! -x "$pdftops" ] ; then
- pdftops="`whence pdftops`"
+pdfjam="`which pdfjam`"
+if [ -z "$pdfjam" ] ; then
+ postscript=1
fi
-if [ -n "$pdftops" -a ! -x "$cupsdir/cgpdftoraster" ] ; then
+if [ -n "$postscript" ] ; then
+ pdftops="`type -p pdftops`"
+
+ if [ ! -n "$pdftops" -o ! -x "$pdftops" ] ; then
+ pdftops="`whence pdftops`"
+ fi
+
+ if [ -n "$pdftops" -a ! -x "$cupsdir/cgpdftoraster" ] ; then
+ tfile=`mktemp`
+ trap cleanup 1 2 3 6 14 15 30
+ "$pdftops" -f 24 -l `expr 24 + $npages - 1` "$sdir/../../doc/gutenprint-users-manual.pdf" $tfile
+ fi
+else
tfile=`mktemp`
trap cleanup 1 2 3 6 14 15 30
- $pdftops -f 24 -l `expr 24 + $npages - 1` "$sdir/../../doc/gutenprint-users-manual.pdf" $tfile
-fi
+ "$pdfjam" -q "$sdir/../../doc/gutenprint-users-manual.pdf" "$pages" -o $tfile
+fi
if [ -z "$verbose" ] ; then
STP_SUPPRESS_MESSAGES=1
diff --git a/src/foomatic/foomatic-generator.in b/src/foomatic/foomatic-generator.in
index 5b8d96b..50b40ed 100644
--- a/src/foomatic/foomatic-generator.in
+++ b/src/foomatic/foomatic-generator.in
@@ -142,9 +142,9 @@ if ($opt_x) {
# Invert, to build %bar{$optionname} = [ choice1, choice2 ];
my ($a, $b, $otmp, $vtmp);
-for $a (keys(%stpdata)) {
- for $otmp (keys %{$stpdata{$a}}) {
- for $vtmp (keys (%{$stpdata{$a}{$otmp}})) {
+for $a (sort keys(%stpdata)) {
+ for $otmp (sort keys %{$stpdata{$a}}) {
+ for $vtmp (sort keys (%{$stpdata{$a}{$otmp}})) {
if (!$seen_evchoice{$otmp}{$vtmp}++) {
push (@{$ev_choices{$otmp}}, [ $vtmp,
$stpdata{$a}{$otmp}{$vtmp}]);
@@ -167,8 +167,8 @@ if ($foomatic3) {
# strings in "<ev_driverval>". Constraints will make only the
# right choices getting into the PPD file. Assign a unique ID to
# each entry.
- for $a (keys(%{$printoutmode})) {
- for $vtmp (keys %{$printoutmode->{$a}}) {
+ for $a (sort keys(%{$printoutmode})) {
+ for $vtmp (sort keys %{$printoutmode->{$a}}) {
my $mode = $printoutmode->{$a}{$vtmp};
if (!$seen_modes{$vtmp}{$mode}++) {
if (!defined($nums{$vtmp})) {
@@ -186,9 +186,9 @@ if ($foomatic3) {
# different value ranges, there must be made an extra Foomatic entry
# for each value range. Therefore the filenames of numerical options
# are numbered (eg. Contrast-1.xml).
-for $a (keys(%stp_float_values)) {
- for $otmp (keys %{$stp_float_values{$a}}) {
- for $vtmp (keys %{$stp_float_values{$a}{$otmp}}) {
+for $a (sort keys(%stp_float_values)) {
+ for $otmp (sort keys %{$stp_float_values{$a}}) {
+ for $vtmp (sort keys %{$stp_float_values{$a}{$otmp}}) {
my $min = $stp_float_values{$a}{$otmp}{'MINVAL'};
my $max = $stp_float_values{$a}{$otmp}{'MAXVAL'};
my $def = $stp_float_values{$a}{$otmp}{'DEFVAL'};
@@ -208,9 +208,9 @@ for $a (keys(%stp_float_values)) {
}
}
}
-for $a (keys(%stp_int_values)) {
- for $otmp (keys %{$stp_int_values{$a}}) {
- for $vtmp (keys %{$stp_int_values{$a}{$otmp}}) {
+for $a (sort keys(%stp_int_values)) {
+ for $otmp (sort keys %{$stp_int_values{$a}}) {
+ for $vtmp (sort keys %{$stp_int_values{$a}{$otmp}}) {
my $min = $stp_int_values{$a}{$otmp}{'MINVAL'};
my $max = $stp_int_values{$a}{$otmp}{'MAXVAL'};
my $def = $stp_int_values{$a}{$otmp}{'DEFVAL'};
@@ -231,9 +231,9 @@ for $a (keys(%stp_int_values)) {
}
}
-for $a (keys(%stp_dimension_values)) {
- for $otmp (keys %{$stp_dimension_values{$a}}) {
- for $vtmp (keys %{$stp_dimension_values{$a}{$otmp}}) {
+for $a (sort keys(%stp_dimension_values)) {
+ for $otmp (sort keys %{$stp_dimension_values{$a}}) {
+ for $vtmp (sort keys %{$stp_dimension_values{$a}{$otmp}}) {
my $min = $stp_dimension_values{$a}{$otmp}{'MINVAL'};
my $max = $stp_dimension_values{$a}{$otmp}{'MAXVAL'};
my $def = $stp_dimension_values{$a}{$otmp}{'DEFVAL'};
@@ -273,7 +273,7 @@ chomp $stprel;
my @printerlist = ();
push (@printerlist, " <printers>\n");
my $p1;
-for $p1 (keys(%mapstp)) {
+for $p1 (sort keys(%mapstp)) {
push (@printerlist, " <!-- gutenprint driver: $p1 -->\n");
for my $id (@{$mapstp{$p1}}) {
if ($foomatic3) {
@@ -296,7 +296,7 @@ for $p1 (keys(%mapstp)) {
push(@printerlist, " <bottom>$cbottom</bottom>\n");
push(@printerlist, " </general>\n");
}
- for my $ps (keys %{$imageableareas{$p1}}) {
+ for my $ps (sort keys %{$imageableareas{$p1}}) {
next if $ps eq 'Custom'; # We have done "Custom" already
my ($left, $right, $top, $bottom, $width, $height);
$left = $imageableareas{$p1}{$ps}{'left'};
@@ -682,7 +682,7 @@ sub build_ev {
# Build constraints for this particular choice
my $stpprn;
- for $stpprn (keys(%stpdata)) {
+ for $stpprn (sort keys(%stpdata)) {
my $fooprn;
for $fooprn (@{$mapstp{$stpprn}}) {
if ($stpdata{$stpprn}{$stpopt}{$ev_shortname}) {
@@ -718,7 +718,7 @@ sub build_cons {
# For each stp printer...
my $stpname;
- for $stpname (keys(%stpdata)) {
+ for $stpname (sort keys(%stpdata)) {
if (0) {
print STDERR " Processing gutenprint printer $stpname...\n";
@@ -795,7 +795,7 @@ sub build_num_cons {
# For each stp printer...
my $stpname;
- for $stpname (keys(%stpdata)) {
+ for $stpname (sort keys(%stpdata)) {
if (0) {
print STDERR " Processing gutenprint printer $stpname...\n";
@@ -912,7 +912,7 @@ sub build_model_cons {
# For each stp printer...
my $stpname;
- for $stpname (keys(%mapstp)) {
+ for $stpname (sort keys(%mapstp)) {
# For each possible foo name
my $fooname;
@@ -947,7 +947,7 @@ sub build_model_ev {
# OK, now for each enum_val
my $ev;
- for $ev (keys(%mapstp)) {
+ for $ev (sort keys(%mapstp)) {
# Put in the basic choice info: ev names, etc
my $ev_shortname = $ev;
my $ev_longname = $printer_name{$ev};
@@ -1011,7 +1011,7 @@ sub compute_resolutions {
my $defval;
my $qual;
- for $qual (keys(%{$stpdata{$stpname}{'STP_Resolution'}})) {
+ for $qual (sort keys(%{$stpdata{$stpname}{'STP_Resolution'}})) {
my ($x) = $stpdata{$stpname}{'x_resolution'}{$qual};
my ($y) = $stpdata{$stpname}{'y_resolution'}{$qual};
@@ -1060,7 +1060,7 @@ sub build_resolution_ev {
# OK, now for each possible resolution...
my $ev;
- for $ev (keys(%resolutions)) {
+ for $ev (sort keys(%resolutions)) {
my ($x, $y) = ($resolutions{$ev}{'x'}, $resolutions{$ev}{'y'});
@@ -1086,7 +1086,7 @@ sub build_resolution_ev {
# Now, for each printer, put in a constraint if this
# resolution makes sense or not...
my $stpprn;
- for $stpprn (keys(%mapstp)) {
+ for $stpprn (sort keys(%mapstp)) {
my $resobj = compute_resolutions($stpprn);
my $takesit = $resobj->{'takesit'}{$x}{$y};
@@ -1127,7 +1127,7 @@ sub build_resolution_cons {
# For each stp printer...
my $stpname;
- for $stpname (keys(%mapstp)) {
+ for $stpname (sort keys(%mapstp)) {
# Get some resolution info
my $r = compute_resolutions($stpname);
@@ -1162,10 +1162,10 @@ sub build_printoutmode_ev {
# OK, now for each choice ("Draft", "Normal", ...) ...
my $choice;
- for $choice (keys %modes) {
+ for $choice (sort keys %modes) {
# ... and each possible "<ev_driverval>" for it
my $ev_driverval;
- for $ev_driverval (keys %{$modes{$choice}}) {
+ for $ev_driverval (sort keys %{$modes{$choice}}) {
# Put in the basic choice info: ev names, etc
my $ev_longname = $printoutmodechoices->{$choice};
my $ev_shortname = $choice;
@@ -1186,7 +1186,7 @@ sub build_printoutmode_ev {
# Build constraints for this particular ev_driverval
my $stpprn;
- for $stpprn (keys(%stpdata)) {
+ for $stpprn (sort keys(%stpdata)) {
my $fooprn;
for $fooprn (@{$mapstp{$stpprn}}) {
if ($printoutmode->{$stpprn}{$choice} eq
@@ -1222,7 +1222,7 @@ sub build_printoutmode_cons {
# For each stp printer...
my $stpname;
- for $stpname (keys(%mapstp)) {
+ for $stpname (sort keys(%mapstp)) {
# For each possible foo name
my $fooname;
@@ -1395,7 +1395,7 @@ sub getprintoutmode {
my $modes = {};
# Treat all printers
my $stpprn;
- for $stpprn (keys(%stpdata)) {
+ for $stpprn (sort keys(%stpdata)) {
my $modeinfo = {};
my ($draftminres, $draftbestsymmetry, $draftlowestqualstr) =
(99999999, 99999999, "xxx");
@@ -1411,7 +1411,7 @@ sub getprintoutmode {
# Go through all choices of the "Quality" option and find the
# best values for the "PrintoutMode" option
my $quality;
- for $quality (keys(%{$stpdata{$stpprn}{'STP_Resolution'}})) {
+ for $quality (sort keys(%{$stpdata{$stpprn}{'STP_Resolution'}})) {
my ($xres, $yres, $qualstr);
if ($quality =~ /^(\d+)x(\d+)(\D.*)?$/) {
@@ -1760,7 +1760,7 @@ sub getprintoutmode {
# Build the strings with the settings for the "PrintoutMode"
# option
- for my $m (keys(%{$modeinfo})) {
+ for my $m (sort keys(%{$modeinfo})) {
# If we didn't find anything for a certain mode, skip this
# mode
next if (!defined($modeinfo->{$m}{'stpres'}));
diff --git a/src/main/Makefile.am b/src/main/Makefile.am
index daedcf2..23f3d26 100644
--- a/src/main/Makefile.am
+++ b/src/main/Makefile.am
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.105 2012/03/18 16:43:34 gernot2270 Exp $
+## $Id: Makefile.am,v 1.107 2015/06/24 23:15:13 speachy Exp $
## Copyright (C) 2000 Roger Leigh
##
## This program is free software; you can redistribute it and/or modify
diff --git a/src/main/canon-inks.h b/src/main/canon-inks.h
index 5c0f2e5..741f80f 100644
--- a/src/main/canon-inks.h
+++ b/src/main/canon-inks.h
@@ -265,6 +265,13 @@ static const canon_inkset_t canon_3_C4M4Y4_inkset[] = {
{'Y',1.0,&canon_2b_4l_ink}
};
+static const canon_inkset_t canon_4_K2_inkset[] = {
+ {0,0.0,NULL},
+ {0,0.0,NULL},
+ {0,0.0,NULL},
+ {'K',1.0,&canon_1b_2l_ink},
+};
+
/* Inkset for printing in CMYK and 1bit/pixel */
static const canon_inkset_t canon_4_C2M2Y2K2_inkset[] = {
{'C',1.0,&canon_1b_2l_ink},
@@ -273,6 +280,13 @@ static const canon_inkset_t canon_4_C2M2Y2K2_inkset[] = {
{'K',1.0,&canon_1b_2l_ink}
};
+static const canon_inkset_t canon_4_C3M3Y3K3_c_inkset[] = {
+ {'C',1.0,&canon_2b_3l_c_ink},
+ {'M',1.0,&canon_2b_3l_c_ink},
+ {'Y',1.0,&canon_2b_3l_c_ink},
+ {'K',1.0,&canon_2b_3l_c_ink},
+};
+
/* Inkset for printing in CMYK and 2bit/pixel */
static const canon_inkset_t canon_4_C4M4Y4K4_inkset[] = {
{'C',1.0,&canon_2b_4l_ink},
@@ -334,6 +348,46 @@ static const canon_inkset_t canon_6_C7M7Y7K7c7m7_inkset[] = {
{'m',1.0,&canon_3b_7l_ink}
};
+static const canon_inkset_t canon_7_K2C2M2Y2_inkset[] = {
+ {'K',1.0,&canon_1b_2l_ink},
+ {'C',1.0,&canon_1b_2l_ink},
+ {'M',1.0,&canon_1b_2l_ink},
+ {'Y',1.0,&canon_1b_2l_ink},
+ {0,0.0,0},
+ {0,0.0,0},
+ {0,0.0,0},
+};
+
+static const canon_inkset_t canon_7_K2C3M3Y2_inkset[] = {
+ {'K',1.0,&canon_1b_2l_ink},
+ {'C',1.0,&canon_2b_3l_ink},
+ {'M',1.0,&canon_2b_3l_ink},
+ {'Y',1.0,&canon_1b_2l_ink},
+ {0,0.0,0},
+ {0,0.0,0},
+ {0,0.0,0},
+};
+
+static const canon_inkset_t canon_7_K3C4M4Y3_inkset[] = {
+ {'K',1.0,&canon_2b_3l_ink},
+ {'C',1.0,&canon_2b_4l_ink},
+ {'M',1.0,&canon_2b_4l_ink},
+ {'Y',1.0,&canon_2b_3l_ink},
+ {0,0.0,0},
+ {0,0.0,0},
+ {0,0.0,0},
+};
+
+static const canon_inkset_t canon_7_C4M4Y4_inkset[] = {
+ {0,0.0,0},
+ {'C',1.0,&canon_2b_4l_ink},
+ {'M',1.0,&canon_2b_4l_ink},
+ {'Y',1.0,&canon_2b_4l_ink},
+ {0,0.0,0},
+ {0,0.0,0},
+ {0,0.0,0},
+};
+
static const canon_inkset_t canon_7_C4M4Y4c4m4k4K4_inkset[] = {
{'C',1.0,&canon_2b_4l_ink},
{'M',1.0,&canon_2b_4l_ink},
@@ -344,6 +398,16 @@ static const canon_inkset_t canon_7_C4M4Y4c4m4k4K4_inkset[] = {
{'K',1.0,&canon_2b_4l_ink},
};
+static const canon_inkset_t canon_7_C14M14Y14c14m14y14_inkset[] = {
+ {0,0.0,0},
+ {'C',1.0,&canon_4b_14l_ink},
+ {'M',1.0,&canon_4b_14l_ink},
+ {'Y',1.0,&canon_4b_14l_ink},
+ {'c',1.0,&canon_4b_14l_ink},
+ {'m',1.0,&canon_4b_14l_ink},
+ {'k',1.0,&canon_4b_14l_ink},
+};
+
static const canon_inkset_t canon_9_K2_inkset[] = {
{0,0.0,NULL},
{0,0.0,NULL},
@@ -681,30 +745,6 @@ static const canon_inkset_t canon_9_C4M4Y4K2c4m4y4photo_inkset[] = {
{0,0.0,NULL}
};
-static const canon_inkset_t canon_9_C4M4Y4K2c4m4y4plain2_inkset[] = {
- {'C',1.0,&canon_2b_4l_ink},
- {'M',1.0,&canon_2b_4l_ink},
- {'Y',1.0,&canon_2b_4l_ink},
- {'K',1.0,&canon_1b_2l_ink},
- {'c',1.0,&canon_2b_4l_ink},
- {'m',1.0,&canon_2b_4l_ink},
- {'m',1.0,&canon_2b_4l_ink},
- {0,0.0,NULL},
- {0,0.0,NULL}
-};
-
-static const canon_inkset_t canon_9_C4M4Y4K2c4m4y4photo2_inkset[] = {
- {'C',1.0,&canon_2b_4l_ink},
- {'M',1.0,&canon_2b_4l_ink},
- {'Y',1.0,&canon_2b_4l_ink},
- {'K',0.0,&canon_1b_2l_ink},
- {'c',1.0,&canon_2b_4l_ink},
- {'m',1.0,&canon_2b_4l_ink},
- {'m',1.0,&canon_2b_4l_ink},
- {0,0.0,NULL},
- {0,0.0,NULL}
-};
-
static const canon_inkset_t canon_9_C5M5Y5_inkset[] = {
{'C',1.0,&canon_4b_5l_ink},
{'M',1.0,&canon_4b_5l_ink},
@@ -1837,22 +1877,6 @@ static const canon_inkset_t canon_13_C6M6Y4K3k4_c_inkset[] = {
{0,0.0,NULL},
};
-static const canon_inkset_t canon_13_C6M6Y4k4yask_inkset[] = {
- {'C',1.0,&canon_4b_6l_ink},
- {'M',1.0,&canon_4b_6l_ink},
- {'Y',1.0,&canon_2b_4l_ink},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {'k',1.0,&canon_2b_4l_ink},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
-};
-
static const canon_inkset_t canon_13_C8M8Y4k4_inkset[] = {
{'C',1.0,&canon_4b_8l_ink},
{'M',1.0,&canon_4b_8l_ink},
@@ -1885,22 +1909,6 @@ static const canon_inkset_t canon_13_C8M8Y4K4k4_inkset[] = {
{0,0.0,NULL},
};
-static const canon_inkset_t canon_13_C8M8Y4k4yask_inkset[] = {
- {'C',1.0,&canon_4b_8l_ink},
- {'M',1.0,&canon_4b_8l_ink},
- {'Y',1.0,&canon_2b_4l_ink},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {'k',1.0,&canon_2b_4l_ink},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
- {0,0.0,NULL},
-};
-
static const canon_inkset_t canon_13_c9m9y9_inkset[] = {
{0,0.0,&canon_8b_9l_ink},
{0,0.0,&canon_8b_9l_ink},
@@ -2936,7 +2944,7 @@ static const canon_inkset_t canon_30_K2C2M2Y2_inkset[] = {
};
/* standard */
-/* MP990, MG6100, MG6200, MG800 */
+/* MP990, MG6100, MG6200, MG8100, MG8200 */
/* reorder: KCcMmYyk*H* not sure what the 2 missing ones are but they are only needed for ud1 anyway */
static const canon_inkset_t canon_30_K2C3M3Y2k3_c_inkset[] = {
{'K',1.0,&canon_1b_2l_ink},
@@ -3006,7 +3014,7 @@ static const canon_inkset_t canon_30_K2C3M3Y2k3on_c_inkset[] = {
};
/* high */
-/* MP990, MG6100, MG6200, MG800 */
+/* MP990, MG6100, MG6200, MG8100, MG8200 */
/* reorder: KCcMmYyk*H* not sure what the 2 missing ones are but they are only needed for ud1 anyway */
/*static const canon_inkset_t canon_30_C2M6K6m4k4_inkset[] = {*/
static const canon_inkset_t canon_30_K2C6M6Y4k4_inkset[] = {
@@ -3043,7 +3051,7 @@ static const canon_inkset_t canon_30_K2C6M6Y4k4_inkset[] = {
};
/* standard */
-/* MG6500, MG7100 */
+/* MG6300, MG6500, MG7100, iP8700 */
static const canon_inkset_t canon_30_K3C3M3Y2k3off_c_inkset[] = {
{'K',1.0,&canon_2b_3l_c_ink},
{'C',1.0,&canon_2b_3l_c_ink},
@@ -3078,7 +3086,7 @@ static const canon_inkset_t canon_30_K3C3M3Y2k3off_c_inkset[] = {
};
/* standard for Duplex */
-/* MG6500, MG7100 */
+/* MG6300, MG6500, MG7100, iP8700 */
static const canon_inkset_t canon_30_K3C3M3Y2k3_c_inkset[] = {
{'K',1.0,&canon_2b_3l_c_ink},
{'C',1.0,&canon_2b_3l_c_ink},
@@ -3148,7 +3156,7 @@ static const canon_inkset_t canon_30_K3C3M3Y2k3photo_c_inkset[] = {
};
/* high */
-/* MG6500, MG7100 */
+/* MG6300, MG6500, MG7100, iP8700 */
static const canon_inkset_t canon_30_K3C6M6Y4k4off_c_inkset[] = {
{'K',1.0,&canon_2b_3l_c_ink},
{'C',1.0,&canon_4b_6l_ink},
@@ -3252,7 +3260,7 @@ static const canon_inkset_t canon_30_M6K6m4k4_inkset[] = {
};
/* photo standard */
-/* MG6500, MG7100 */
+/* MG6300, MG6500, MG7100 */
static const canon_inkset_t canon_30_M6K6m4k4H6off_inkset[] = {
{0,0.0,NULL},
{'C',1.0,&canon_4b_6l_ink},
@@ -3320,7 +3328,7 @@ static const canon_inkset_t canon_30_M8K8m4k4_inkset[] = {
};
/* photo high */
-/* MG6500, MG7100 */
+/* MG6300, MG6500, MG7100 */
static const canon_inkset_t canon_30_M8K8m4k4H8off_inkset[] = {
{0,0.0,NULL},
{'C',1.0,&canon_4b_8l_ink},
diff --git a/src/main/canon-media-mode.h b/src/main/canon-media-mode.h
index 95d6768..f569d66 100644
--- a/src/main/canon-media-mode.h
+++ b/src/main/canon-media-mode.h
@@ -1072,6 +1072,9 @@ DECLARE_MODEUSES(canon_BJC_S520);
/* ----------------------------------- Canon BJC S600 ----------------------------------- */
static const char* canon_BJC_S600_modeuses_plain[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_high",
"600x600dpi",
"600x600dpi_draft",/*untested*/
@@ -1081,12 +1084,18 @@ static const char* canon_BJC_S600_modeuses_plain[] = {
};
static const char* canon_BJC_S600_modeuses_PPpro[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh2",
"600x600dpi_photo2",
NULL
};
static const char* canon_BJC_S600_modeuses_coated[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh3",
"600x600dpi_photohigh",
"600x600dpi_photo",
@@ -1095,6 +1104,9 @@ static const char* canon_BJC_S600_modeuses_coated[] = {
};
static const char* canon_BJC_S600_modeuses_PPgloss[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh3",
"600x600dpi_photohigh",
"600x600dpi_photo",
@@ -1102,23 +1114,35 @@ static const char* canon_BJC_S600_modeuses_PPgloss[] = {
};
static const char* canon_BJC_S600_modeuses_inkjetHagaki[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photo3",
"600x600dpi_photodraft3",
NULL
};
static const char* canon_BJC_S600_modeuses_Envelope[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_high3",
"600x600dpi_std3",
NULL
};
static const char* canon_BJC_S600_modeuses_TShirt[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_tshirt",
NULL
};
static const char* canon_BJC_S600_modeuses_Transparency[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh5",
"600x600dpi_photohigh4",
"600x600dpi_photo4",
@@ -1219,64 +1243,88 @@ DECLARE_MODEUSES(canon_BJC_S750);
/* ----------------------------------- Canon BJC S800 ----------------------------------- */
static const char* canon_BJC_S800_modeuses_plain[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_high2",
- "600x600dpi_high",
- "600x600dpi",
+/* "600x600dpi_high",*/
+/* "600x600dpi",*/
"600x600dpi_draft",
/* Mono */
"600x600dpi_highmono2",
- "600x600dpi_highmono",
- "600x600dpi_mono",
+/* "600x600dpi_highmono",*/
+/* "600x600dpi_mono",*/
"600x600dpi_draftmono",
NULL
- };
+};
static const char* canon_BJC_S800_modeuses_PPpro[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh4",
- "600x600dpi_photohigh",
+/* "600x600dpi_photohigh",*/
NULL
};
static const char* canon_BJC_S800_modeuses_PPplus[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
+/* "600x600dpi_photo",*/ /*untested*/
NULL
};
static const char* canon_BJC_S800_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh3",*/
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_S800_modeuses_glossFilm[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
+/* "600x600dpi_photo",*/ /*untested*/
NULL
};
static const char* canon_BJC_S800_modeuses_PPother[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh4",
- "600x600dpi_photohigh",
- "600x600dpi_photo",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo",*/
"600x600dpi_photodraft",
/* Mono */
"600x600dpi_photomonohigh2",
- "600x600dpi_photomonohigh",
- "600x600dpi_photomono",
+/* "600x600dpi_photomonohigh",*/
+/* "600x600dpi_photomono",*/
"600x600dpi_photomonodraft",
NULL
};
static const char* canon_BJC_S800_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_S800_modeuses_Transparency[] = {
- "600x600dpi_std2",
- "600x600dpi_draft2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_std2",*/
+/* "600x600dpi_draft2",*/
NULL
};
@@ -1302,51 +1350,72 @@ DECLARE_MODEUSES(canon_BJC_S800);
/* ----------------------------------- Canon BJC S820 ----------------------------------- */
static const char* canon_BJC_S820_modeuses_plain[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_high2",
- "600x600dpi_high",/*untested*/
- "600x600dpi",
+/* "600x600dpi_high",*/ /*untested*/
+/* "600x600dpi",*/
"600x600dpi_draft",
/* Mono */
"600x600dpi_highmono2",/*untested*/
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",/*untested*/
+/* "600x600dpi_highmono",*/ /*untested*/
+/* "600x600dpi_mono",*/ /*untested*/
"600x600dpi_draftmono",
NULL
- };
+};
static const char* canon_BJC_S820_modeuses_PPpro[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh4",
- "600x600dpi_photohigh",
+/* "600x600dpi_photohigh",*/
NULL
};
static const char* canon_BJC_S820_modeuses_PPplus[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
+/* "600x600dpi_photo",*/ /*untested*/
NULL
};
static const char* canon_BJC_S820_modeuses_PPgloss[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh3",*/
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_S820_modeuses_glossFilm[] = {
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
"600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
+/* "600x600dpi_photo",*/ /*untested*/
NULL
};
static const char* canon_BJC_S820_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_S820_modeuses_Transparency[] = {
- "600x600dpi_std2",
- "600x600dpi_draft2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_std2",*/
+/* "600x600dpi_draft2",*/
NULL
};
@@ -1372,56 +1441,80 @@ DECLARE_MODEUSES(canon_BJC_S820);
/* ----------------------------------- Canon BJC S900 ----------------------------------- */
static const char* canon_BJC_S900_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high",*/
+/* "600x600dpi",*/
"600x600dpi_draft",
/* Mono */
"600x600dpi_highmono2",/*untested*/
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",/*untested*/
+/* "600x600dpi_highmono",*/ /*untested*/
+/* "600x600dpi_mono",*/ /*untested*/
"600x600dpi_draftmono",
NULL
- };
+};
static const char* canon_BJC_S900_modeuses_PPpro[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photohigh",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh5",*/
+/* "600x600dpi_photohigh",*/
NULL
};
static const char* canon_BJC_S900_modeuses_PPplus[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo2",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh3",*/
+/* "600x600dpi_photo2",*/ /*untested*/
NULL
};
static const char* canon_BJC_S900_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_S900_modeuses_coated[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh4",*/
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_S900_modeuses_glossFilm[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo",*/ /*untested*/
NULL
};
static const char* canon_BJC_S900_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_S900_modeuses_Transparency[] = {
- "600x600dpi_std2",
- "600x600dpi_draft2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_std2",*/
+/* "600x600dpi_draft2",*/
NULL
};
@@ -2227,68 +2320,98 @@ DECLARE_MODEUSES(canon_BJC_i900);
/* ----------------------------------- Canon i950 ----------------------------------- */
static const char* canon_BJC_i950_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high"/*untested*/,
- "600x600dpi",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high2",*/
+/* "600x600dpi_high",*/ /*untested*/
+/* "600x600dpi",*/
"600x600dpi_draft",/*untested*/
"600x600dpi_draft2",
"600x600dpi_draftmono",/* mono --- untested*/
"600x600dpi_draftmono2",/* mono */
NULL
- };
+};
static const char* canon_BJC_i950_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo3",*/
NULL
};
static const char* canon_BJC_i950_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo2",*/ /*untested*/
NULL
};
static const char* canon_BJC_i950_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_i950_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_i950_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo3",
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo3",*/
+/* "600x600dpi_photo",*/
NULL
};
static const char* canon_BJC_i950_modeuses_GlossyFilm[] = {
- "600x600dpi_photohigh",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
NULL
};
static const char* canon_BJC_i950_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh4",*/
+/* "600x600dpi_photo4",*/
+/* "600x600dpi_photodraft4",*/
NULL
};
static const char* canon_BJC_i950_modeuses_disc[] = {
- "600x600dpi_photo5",
- "600x600dpi_photodraft5",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo5",*/
+/* "600x600dpi_photodraft5",*/
NULL
};
static const char* canon_BJC_i950_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_high5",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high4",*/
+/* "600x600dpi_high5",*/ /*untested*/
"600x600dpi_std4",/*untested*/
"600x600dpi_std5",
"600x600dpi_draftmono4",/* mono---untested*/
@@ -2297,19 +2420,28 @@ static const char* canon_BJC_i950_modeuses_Hagaki[] = {
};
static const char* canon_BJC_i950_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_i950_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
- "600x600dpi_draft4",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_std3",*/
+/* "600x600dpi_draft3",*/
+/* "600x600dpi_draft4",*/
NULL
};
static const char* canon_BJC_i950_modeuses_PPother[] = {
- "600x600dpi_photo2",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo2",*/ /*untested*/
NULL
};
@@ -2336,65 +2468,91 @@ DECLARE_MODEUSES(canon_BJC_i950);
/* ----------------------------------- Canon i960 ----------------------------------- */
static const char* canon_BJC_i960_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high3",/* duplex */
- "600x600dpi_high",
- "600x600dpi",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high2",*/
+/* "600x600dpi_high3",*/ /* duplex */
+/* "600x600dpi_high",*/
+/* "600x600dpi",*/ /*untested*/
"600x600dpi_draft",
"600x600dpi_draft2",
"600x600dpi_draftmono",/* mono */
"600x600dpi_draftmono2",/* mono */
NULL
- };
+};
static const char* canon_BJC_i960_modeuses_PPpro[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo",*/
NULL
};
static const char* canon_BJC_i960_modeuses_PPplus[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo5",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo5",*/ /*untested*/
NULL
};
-
static const char* canon_BJC_i960_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_i960_modeuses_PPmatte[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_i960_modeuses_coated[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo",
- "600x600dpi_photo5",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo",*/
+/* "600x600dpi_photo5",*/
NULL
};
static const char* canon_BJC_i960_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh3",*/
+/* "600x600dpi_photo3",*/
NULL
};
static const char* canon_BJC_i960_modeuses_disc[] = {
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo4",*/
+/* "600x600dpi_photodraft4",*/
NULL
};
static const char* canon_BJC_i960_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_high5",
- "600x600dpi_std4",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high4",*/
+/* "600x600dpi_high5",*/
+/* "600x600dpi_std4",*/ /*untested*/
"600x600dpi_std5",
"600x600dpi_draft5",
"600x600dpi_draftmono4",
@@ -2403,19 +2561,28 @@ static const char* canon_BJC_i960_modeuses_Hagaki[] = {
};
static const char* canon_BJC_i960_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_i960_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
- "600x600dpi_draft4",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_std3",*/
+/* "600x600dpi_draft3",*/
+/* "600x600dpi_draft4",*/ /*untested*/
NULL
};
static const char* canon_BJC_i960_modeuses_PPother[] = {
- "600x600dpi_photo2",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo2",*/ /*untested*/
NULL
};
@@ -2441,65 +2608,92 @@ DECLARE_MODEUSES(canon_BJC_i960);
/* ----------------------------------- Canon i990 ----------------------------------- */
static const char* canon_BJC_i990_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high3", /*duplex*/
- "600x600dpi",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high2",*/
+/* "600x600dpi_high3",*/ /*duplex*/
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
"600x600dpi_draftmono",/*mono*/
"600x600dpi_draftmono2",/*mono*/
NULL
- };
+};
/* most photo modes use R ink and therefore unsupported */
/* unsupported */
static const char* canon_BJC_i990_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
NULL
};
/* highest mode not yet supported */
static const char* canon_BJC_i990_modeuses_PPplus[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
+/* "600x600dpi_photodraft",*/
NULL
};
/* unsupported */
static const char* canon_BJC_i990_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",/*stand-in*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
NULL
};
/* highest mode not yet supported */
static const char* canon_BJC_i990_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
+/* "600x600dpi_photodraft2",*/
NULL
};
static const char* canon_BJC_i990_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photomed",
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photomed",*/
+/* "600x600dpi_photo",*/
NULL
};
/* high mode not yet supported */
static const char* canon_BJC_i990_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_i990_modeuses_disc[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo3",*/
+/* "600x600dpi_photodraft3",*/
NULL
};
static const char* canon_BJC_i990_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_std4",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high4",*/
+/* "600x600dpi_std4",*/
"600x600dpi_draft5",
"600x600dpi_draft4",
"600x600dpi_draftmono4",/*mono*/
@@ -2508,19 +2702,28 @@ static const char* canon_BJC_i990_modeuses_Hagaki[] = {
};
static const char* canon_BJC_i990_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_i990_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_std3",*/
+/* "600x600dpi_draft3",*/
NULL
};
/* untested */
static const char* canon_BJC_i990_modeuses_PPother[] = {
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo",*/
NULL
};
@@ -2629,72 +2832,102 @@ DECLARE_MODEUSES(canon_BJC_i6100);
/* ----------------------------------- Canon i9100 ----------------------------------- */
static const char* canon_BJC_i9100_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi_high",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high2",*/
+/* "600x600dpi_high",*/
"600x600dpi",
"600x600dpi_draft",/*untested*/
"600x600dpi_mono",/*untested*/
"600x600dpi_draftmono",
NULL
- };
+};
static const char* canon_BJC_i9100_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_i9100_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photo2",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photo2",*/ /*untested*/
NULL
};
static const char* canon_BJC_i9100_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo",*/
NULL
};
static const char* canon_BJC_i9100_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo2",
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo2",*/
+/* "600x600dpi_photo",*/
NULL
};
static const char* canon_BJC_i9100_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
- "600x600dpi_photodraft4",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh4",*/
+/* "600x600dpi_photo4",*/
+/* "600x600dpi_photodraft4",*/
NULL
};
static const char* canon_BJC_i9100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high3",*/
+/* "600x600dpi_std3",*/
"600x600dpi_draft3",
"600x600dpi_draftmono2",
NULL
};
static const char* canon_BJC_i9100_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_i9100_modeuses_Transparency[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",/*untested*/
- "600x600dpi_photodraft3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh3",*/
+/* "600x600dpi_photo3",*/ /*untested*/
+/* "600x600dpi_photodraft3",*/
NULL
};
static const char* canon_BJC_i9100_modeuses_PPother[] = {
- "600x600dpi_photo2",/*untested*/
- "600x600dpi_photo",/*untested*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo2",*/ /*untested*/
+/* "600x600dpi_photo",*/ /*untested*/
NULL
- };
+};
static const canon_modeuse_t canon_BJC_i9100_modeuses[] = {
{ "Plain", canon_BJC_i9100_modeuses_plain, 0 },
@@ -2716,64 +2949,91 @@ DECLARE_MODEUSES(canon_BJC_i9100);
/* ----------------------------------- Canon i9900 ----------------------------------- */
static const char* canon_BJC_i9900_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high2",*/
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
"600x600dpi_draftmono",/*mono*/
"600x600dpi_draftmono2",/*mono*/
NULL
- };
+};
/* most photo modes use R,G inks and therefore unsupported */
/* unsupported */
static const char* canon_BJC_i9900_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*stand-in*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
NULL
};
/* highest mode not yet supported */
static const char* canon_BJC_i9900_modeuses_PPplus[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
+/* "600x600dpi_photodraft",*/
NULL
};
/* unsupported */
static const char* canon_BJC_i9900_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",/*stand-in*/
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
NULL
};
/* highest mode not yet supported */
static const char* canon_BJC_i9900_modeuses_PPgloss[] = {
- "600x600dpi_photohigh",/*stand-in*/
- "600x600dpi_photodraft",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/ /*stand-in*/
+/* "600x600dpi_photodraft",*/
NULL
};
static const char* canon_BJC_i9900_modeuses_coated[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photomed",
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photomed",*/
+/* "600x600dpi_photo",*/
NULL
};
/* high mode not yet supported */
static const char* canon_BJC_i9900_modeuses_inkjetHagaki[] = {
- "600x600dpi_photo2",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo2",*/
NULL
};
static const char* canon_BJC_i9900_modeuses_disc[] = {
- "600x600dpi_photo3",
- "600x600dpi_photodraft3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo3",*/
+/* "600x600dpi_photodraft3",*/
NULL
};
static const char* canon_BJC_i9900_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_std4",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_high4",*/
+/* "600x600dpi_std4",*/
"600x600dpi_draft5",
"600x600dpi_draft4",
"600x600dpi_draftmono4",/*mono*/
@@ -2782,20 +3042,29 @@ static const char* canon_BJC_i9900_modeuses_Hagaki[] = {
};
static const char* canon_BJC_i9900_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_tshirt",*/
NULL
};
static const char* canon_BJC_i9900_modeuses_Transparency[] = {
- "600x600dpi_std3",
- "600x600dpi_draft3",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_std3",*/
+/* "600x600dpi_draft3",*/
NULL
};
static const char* canon_BJC_i9900_modeuses_PPother[] = {
- "600x600dpi_photo",
+ "1200x1200dpi_legacy",
+ "600x600dpi_legacy",
+ "300x300dpi_legacy",
+/* "600x600dpi_photo",*/
NULL
- };
+};
static const canon_modeuse_t canon_BJC_i9900_modeuses[] = {
{ "Plain", canon_BJC_i9900_modeuses_plain, 0 },
@@ -2949,6 +3218,73 @@ static const canon_modeuse_t canon_PIXMA_iP100_modeuses[] = {
DECLARE_MODEUSES(canon_PIXMA_iP100);
+/* ----------------------------------- Canon iP110 ----------------------------------- */
+static const char* canon_PIXMA_iP110_modeuses_plain[] = {
+ "600x600dpi_high2",
+ "600x600dpi_high", /* mono */
+ "600x600dpi",
+ "600x600dpi_draft",
+ "300x300dpi",
+ "300x300dpi_draft",
+ NULL
+};
+
+static const char* canon_PIXMA_iP110_modeuses_PPpro[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_iP110_modeuses_PPplus[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_iP110_modeuses_PPmatte[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo2",
+ NULL
+};
+
+static const char* canon_PIXMA_iP110_modeuses_Hagaki[] = {
+ "600x600dpi_high4",
+ "600x600dpi_high3", /* mono */
+ "600x600dpi_std2",
+ NULL
+};
+
+static const char* canon_PIXMA_iP110_modeuses_TShirt[] = {
+ "600x600dpi_tshirt",
+ NULL
+};
+
+static const char* canon_PIXMA_iP110_modeuses_PPother[] = {
+ "600x600dpi_photohigh",
+ NULL
+ };
+
+static const canon_modeuse_t canon_PIXMA_iP110_modeuses[] = {
+ { "Plain", canon_PIXMA_iP110_modeuses_plain, 0 },/*INKSET_COLOR_SUPPORT | INKSET_COLOR_MODEREPL*/
+ { "PhotoPlusGloss2", canon_PIXMA_iP110_modeuses_PPpro, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_PIXMA_iP110_modeuses_PPplus, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_PIXMA_iP110_modeuses_PPplus, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss", canon_PIXMA_iP110_modeuses_PPplus, INKSET_COLOR_SUPPORT },
+ { "GlossyPaperStandard",canon_PIXMA_iP110_modeuses_PPplus, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_PIXMA_iP110_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_PIXMA_iP110_modeuses_PPmatte, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_PIXMA_iP110_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/
+ { "InkJetHagaki", canon_PIXMA_iP110_modeuses_PPplus, INKSET_COLOR_SUPPORT },
+ { "InkjetPhotoHagakiK", canon_PIXMA_iP110_modeuses_PPplus, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_PIXMA_iP110_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/
+ { "TShirt", canon_PIXMA_iP110_modeuses_TShirt, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_PIXMA_iP110_modeuses_Hagaki, 0 },/*INKSET_COLOR_SUPPORT*/
+ { "PhotopaperOther", canon_PIXMA_iP110_modeuses_PPother, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_PIXMA_iP110);
+
/* ----------------------------------- Canon iP2000 ----------------------------------- */
static const char* canon_PIXMA_iP2000_modeuses_plain[] = {
"600x600dpi_high2",
@@ -4635,9 +4971,9 @@ DECLARE_MODEUSES(canon_PIXMA_iP6700);
/* ----------------------------------- Canon iP7100 ----------------------------------- */
static const char* canon_PIXMA_iP7100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
+/* "600x600dpi_high",*/
+/* "600x600dpi_high2",*/ /* duplex */
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
/* Mono */
@@ -4646,87 +4982,86 @@ static const char* canon_PIXMA_iP7100_modeuses_plain[] = {
NULL
};
-static const char* canon_PIXMA_iP7100_modeuses_PPpro[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_PPpro[] = {
"600x600dpi_photohigh",
"600x600dpi_photo",
NULL
-};
-
+};*/
-static const char* canon_PIXMA_iP7100_modeuses_PPplus[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_PPplus[] = {
"600x600dpi_photohigh",
"600x600dpi_photo",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP7100_modeuses_PPplusDS[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_PPplusDS[] = {
"600x600dpi_photohigh",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP7100_modeuses_PPmatte[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_PPmatte[] = {
"600x600dpi_photohigh2",
"600x600dpi_photo",
NULL
-};
+};*/
static const char* canon_PIXMA_iP7100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
+/* "600x600dpi_high3",*/
+/* "600x600dpi_std3",*/
"600x600dpi_draft3",
/* Mono */
"600x600dpi_mono",
NULL
};
-static const char* canon_PIXMA_iP7100_modeuses_FA[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_FA[] = {
"600x600dpi_photohigh3",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP7100_modeuses_disc[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_disc[] = {
"600x600dpi_photo",
"600x600dpi_photodraft",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP7100_modeuses_TShirt[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_TShirt[] = {
"600x600dpi",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP7100_modeuses_Transparency[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_Transparency[] = {
"600x600dpi_std4",
"600x600dpi_draft4",
NULL
-};
+};*/
/*untested*/
-static const char* canon_PIXMA_iP7100_modeuses_PPother[] = {
+/*static const char* canon_PIXMA_iP7100_modeuses_PPother[] = {
"600x600dpi_photo",
"600x600dpi_photodraft",
NULL
- };
+ };*/
static const canon_modeuse_t canon_PIXMA_iP7100_modeuses[] = {
{ "Plain", canon_PIXMA_iP7100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP7100_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP7100_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP7100_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP7100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP7100_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP7100_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP7100_modeuses_PPplus, 0 },
+/* { "GlossyPro", canon_PIXMA_iP7100_modeuses_PPpro, 0 },*/
+/* { "PhotopaperPlus", canon_PIXMA_iP7100_modeuses_PPplus, 0 },*/
+/* { "PhotopaperPlusDouble", canon_PIXMA_iP7100_modeuses_PPplusDS, 0 },*/
+/* { "PhotopaperMatte", canon_PIXMA_iP7100_modeuses_PPmatte, 0 },*/
+/* { "GlossyPaper", canon_PIXMA_iP7100_modeuses_PPplusDS, 0 },*/
+/* { "Coated", canon_PIXMA_iP7100_modeuses_PPmatte, 0 },*/
+/* { "InkJetHagaki", canon_PIXMA_iP7100_modeuses_PPplus, 0 },*/
{ "Hagaki", canon_PIXMA_iP7100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "FineArtPhotoRag", canon_PIXMA_iP7100_modeuses_FA, 0 },
- { "FineArtOther", canon_PIXMA_iP7100_modeuses_FA, 0 },
- { "DiscCompat", canon_PIXMA_iP7100_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP7100_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP7100_modeuses_TShirt, 0 },
+/* { "FineArtPhotoRag", canon_PIXMA_iP7100_modeuses_FA, 0 },*/
+/* { "FineArtOther", canon_PIXMA_iP7100_modeuses_FA, 0 },*/
+/* { "DiscCompat", canon_PIXMA_iP7100_modeuses_disc, 0 },*/
+/* { "DiscOthers", canon_PIXMA_iP7100_modeuses_disc, 0 },*/
+/* { "TShirt", canon_PIXMA_iP7100_modeuses_TShirt, 0 },*/
{ "Envelope", canon_PIXMA_iP7100_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP7100_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP7100_modeuses_PPother, 0 },/*untested*/
+/* { "Transparency", canon_PIXMA_iP7100_modeuses_Transparency, 0 },*/
+/* { "PhotopaperOther", canon_PIXMA_iP7100_modeuses_PPother, 0 },*/ /*untested*/
};
DECLARE_MODEUSES(canon_PIXMA_iP7100);
@@ -4899,9 +5234,9 @@ DECLARE_MODEUSES(canon_PIXMA_iP7500);
/* ----------------------------------- Canon iP8100 ----------------------------------- */
static const char* canon_PIXMA_iP8100_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
+/* "600x600dpi_high",*/
+/* "600x600dpi_high2",*/ /* duplex */
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
/* Mono */
@@ -4911,199 +5246,204 @@ static const char* canon_PIXMA_iP8100_modeuses_plain[] = {
};
/* no support for modes using R yet */
-static const char* canon_PIXMA_iP8100_modeuses_PPpro[] = {
- "600x600dpi_photohigh",/*untested*/
- "600x600dpi_photo",
+/*static const char* canon_PIXMA_iP8100_modeuses_PPpro[] = {
+ "600x600dpi_photohigh",*/ /*untested*/
+/* "600x600dpi_photo",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_PPplus[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_PPplus[] = {
"600x600dpi_photohigh",
"600x600dpi_photo",
"600x600dpi_photodraft2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_PPplusDS[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_PPplusDS[] = {
"600x600dpi_photohigh",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_PPmatte[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_PPmatte[] = {
"600x600dpi_photohigh2",
"600x600dpi_photo",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_PPgloss[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_PPgloss[] = {
"600x600dpi_photohigh",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_inkjetHagaki[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_inkjetHagaki[] = {
"600x600dpi_photohigh",
"600x600dpi_photo",
NULL
-};
+};*/
static const char* canon_PIXMA_iP8100_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
+/* "600x600dpi_high3",*/
+/* "600x600dpi_std3",*/
"600x600dpi_draft3",
/* Mono */
"600x600dpi_mono",
NULL
};
-static const char* canon_PIXMA_iP8100_modeuses_FA[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_FA[] = {
"600x600dpi_photohigh3",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_disc[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_disc[] = {
"600x600dpi_photo",
"600x600dpi_photodraft",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_TShirt[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_TShirt[] = {
"600x600dpi",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8100_modeuses_Transparency[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_Transparency[] = {
"600x600dpi_std4",
"600x600dpi_draft4",
NULL
-};
+};*/
/*untested*/
-static const char* canon_PIXMA_iP8100_modeuses_PPother[] = {
+/*static const char* canon_PIXMA_iP8100_modeuses_PPother[] = {
"600x600dpi_photo",
"600x600dpi_photodraft2",
NULL
- };
+ };*/
static const canon_modeuse_t canon_PIXMA_iP8100_modeuses[] = {
{ "Plain", canon_PIXMA_iP8100_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP8100_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP8100_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP8100_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP8100_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP8100_modeuses_PPgloss, 0 },
- { "Coated", canon_PIXMA_iP8100_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP8100_modeuses_inkjetHagaki, 0 },
+/* { "GlossyPro", canon_PIXMA_iP8100_modeuses_PPpro, 0 },*/
+/* { "PhotopaperPlus", canon_PIXMA_iP8100_modeuses_PPplus, 0 },*/
+/* { "PhotopaperPlusDouble", canon_PIXMA_iP8100_modeuses_PPplusDS, 0 },*/
+/* { "PhotopaperMatte", canon_PIXMA_iP8100_modeuses_PPmatte, 0 },*/
+/* { "GlossyPaper", canon_PIXMA_iP8100_modeuses_PPgloss, 0 },*/
+/* { "Coated", canon_PIXMA_iP8100_modeuses_PPmatte, 0 },*/
+/* { "InkJetHagaki", canon_PIXMA_iP8100_modeuses_inkjetHagaki, 0 },*/
{ "Hagaki", canon_PIXMA_iP8100_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "FineArtPhotoRag", canon_PIXMA_iP8100_modeuses_FA, 0 },
- { "FineArtOther", canon_PIXMA_iP8100_modeuses_FA, 0 },
- { "DiscCompat", canon_PIXMA_iP8100_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP8100_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP8100_modeuses_TShirt, 0 },
+/* { "FineArtPhotoRag", canon_PIXMA_iP8100_modeuses_FA, 0 },*/
+/* { "FineArtOther", canon_PIXMA_iP8100_modeuses_FA, 0 },*/
+/* { "DiscCompat", canon_PIXMA_iP8100_modeuses_disc, 0 },*/
+/* { "DiscOthers", canon_PIXMA_iP8100_modeuses_disc, 0 },*/
+/* { "TShirt", canon_PIXMA_iP8100_modeuses_TShirt, 0 },*/
{ "Envelope", canon_PIXMA_iP8100_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP8100_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP8100_modeuses_PPother, 0 },/*untested*/
+/* { "Transparency", canon_PIXMA_iP8100_modeuses_Transparency, 0 },*/
+/* { "PhotopaperOther", canon_PIXMA_iP8100_modeuses_PPother, 0 },*/ /*untested*/
};
DECLARE_MODEUSES(canon_PIXMA_iP8100);
/* ----------------------------------- Canon iP8500 ----------------------------------- */
static const char* canon_PIXMA_iP8500_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
- "300x300dpi",
- "300x300dpi_draft",
+/* "600x600dpi_high",*/
+/* "600x600dpi_high2",*/
+/* "600x600dpi",*/
+ "600x600dpi_draft",
+ "600x600dpi_draft2",
+ "600x600dpi_mono",
+ "600x600dpi_draftmono",
NULL
};
/* modes not yet supported */
-static const char* canon_PIXMA_iP8500_modeuses_PPpro[] = {
- "600x600dpi_photodraft",/*temporary stand-in: untested*/
- NULL
-};
+/*static const char* canon_PIXMA_iP8500_modeuses_PPpro[] = {
+ "600x600dpi_photodraft", */ /*temporary stand-in: untested*/
+/* NULL
+};*/
/* most modes unsupported */
-static const char* canon_PIXMA_iP8500_modeuses_PPplus[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_PPplus[] = {
"600x600dpi_photodraft",
NULL
-};
+};*/
/* most modes unsupported */
-static const char* canon_PIXMA_iP8500_modeuses_PPplusDS[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_PPplusDS[] = {
"600x600dpi_photodraft2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8500_modeuses_PPhires[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_PPhires[] = {
"600x600dpi_photohigh",
"600x600dpi_photo",
NULL
-};
+};*/
/* US driver does not support this media: untested */
-static const char* canon_PIXMA_iP8500_modeuses_inkjetHagaki[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_inkjetHagaki[] = {
"600x600dpi_photohigh",
"600x600dpi_photo",
NULL
-};
+};*/
/* US driver does not support this media */
static const char* canon_PIXMA_iP8500_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
+/* "600x600dpi_high3",*/
+/* "600x600dpi_std3",*/
"600x600dpi_draft3",
+ "600x600dpi_mono",
+ "600x600dpi_draftmono",
NULL
};
-static const char* canon_PIXMA_iP8500_modeuses_disc[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_disc[] = {
"600x600dpi_photo3",
"600x600dpi_photodraft3",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8500_modeuses_TShirt[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_TShirt[] = {
"600x600dpi_tshirt",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8500_modeuses_Transparency[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_Transparency[] = {
"600x600dpi_photo4",
"600x600dpi_photodraft4",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8500_modeuses_PPother[] = {
+/*static const char* canon_PIXMA_iP8500_modeuses_PPother[] = {
"600x600dpi_photo3",
NULL
-};
+};*/
static const canon_modeuse_t canon_PIXMA_iP8500_modeuses[] = {
{ "Plain", canon_PIXMA_iP8500_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP8500_modeuses_PPpro, 0 },/*unsupported*/
- { "PhotopaperPlus", canon_PIXMA_iP8500_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP8500_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP8500_modeuses_PPpro, 0 },/*unsupported*/
- { "GlossyPaper", canon_PIXMA_iP8500_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP8500_modeuses_PPhires, 0 },
- { "InkJetHagaki", canon_PIXMA_iP8500_modeuses_inkjetHagaki, 0 },/*untested*/
+/* { "GlossyPro", canon_PIXMA_iP8500_modeuses_PPpro, 0 },*/ /*unsupported*/
+/* { "PhotopaperPlus", canon_PIXMA_iP8500_modeuses_PPplus, 0 },*/
+/* { "PhotopaperPlusDouble", canon_PIXMA_iP8500_modeuses_PPplusDS, 0 },*/
+/* { "PhotopaperMatte", canon_PIXMA_iP8500_modeuses_PPpro, 0 },*/ /*unsupported*/
+/* { "GlossyPaper", canon_PIXMA_iP8500_modeuses_PPplusDS, 0 },*/
+/* { "Coated", canon_PIXMA_iP8500_modeuses_PPhires, 0 },*/
+/* { "InkJetHagaki", canon_PIXMA_iP8500_modeuses_inkjetHagaki, 0 },*/ /*untested*/
{ "Hagaki", canon_PIXMA_iP8500_modeuses_Hagaki, DUPLEX_SUPPORT },/*untested*/
- { "DiscCompat", canon_PIXMA_iP8500_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP8500_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP8500_modeuses_TShirt, 0 },
+/* { "DiscCompat", canon_PIXMA_iP8500_modeuses_disc, 0 },*/
+/* { "DiscOthers", canon_PIXMA_iP8500_modeuses_disc, 0 },*/
+/* { "TShirt", canon_PIXMA_iP8500_modeuses_TShirt, 0 },*/
{ "Envelope", canon_PIXMA_iP8500_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP8500_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP8500_modeuses_PPother, 0 },
+/* { "Transparency", canon_PIXMA_iP8500_modeuses_Transparency, 0 },*/
+/* { "PhotopaperOther", canon_PIXMA_iP8500_modeuses_PPother, 0 },*/
};
DECLARE_MODEUSES(canon_PIXMA_iP8500);
/* ----------------------------------- Canon iP8600 ----------------------------------- */
static const char* canon_PIXMA_iP8600_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi_high2",/* duplex */
- "600x600dpi",
+/* "600x600dpi_high",*/
+/* "600x600dpi_high2",*/ /* duplex */
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
/* Mono */
@@ -5113,103 +5453,196 @@ static const char* canon_PIXMA_iP8600_modeuses_plain[] = {
};
/* modes using R not yet supported */
-static const char* canon_PIXMA_iP8600_modeuses_PPpro[] = {
- "600x600dpi_photohigh2",/*untested*/
- "600x600dpi_photo",
+/*static const char* canon_PIXMA_iP8600_modeuses_PPpro[] = {
+ "600x600dpi_photohigh2",*/ /*untested*/
+/* "600x600dpi_photo",
NULL
-};
+};*/
/* highest mode using R not supported yet */
-static const char* canon_PIXMA_iP8600_modeuses_PPplus[] = {
- "600x600dpi_photohigh2",/*untested*/
- "600x600dpi_photo",
+/*static const char* canon_PIXMA_iP8600_modeuses_PPplus[] = {
+ "600x600dpi_photohigh2",*/ /*untested*/
+/* "600x600dpi_photo",
"600x600dpi_photodraft2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8600_modeuses_PPplusDS[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_PPplusDS[] = {
"600x600dpi_photohigh",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8600_modeuses_PPmatte[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_PPmatte[] = {
"600x600dpi_photohigh2",
"600x600dpi_photo",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8600_modeuses_inkjetHagaki[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_inkjetHagaki[] = {
"600x600dpi_photohigh3",
"600x600dpi_photo3",
NULL
-};
+};*/
static const char* canon_PIXMA_iP8600_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
+/* "600x600dpi_high3",*/
+/* "600x600dpi_std3",*/
"600x600dpi_draft3",
/* Mono */
"600x600dpi_mono",
NULL
};
-static const char* canon_PIXMA_iP8600_modeuses_FA[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_FA[] = {
"600x600dpi_photohigh4",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8600_modeuses_disc[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_disc[] = {
"600x600dpi_photo",
"600x600dpi_photodraft",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8600_modeuses_TShirt[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_TShirt[] = {
"600x600dpi",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP8600_modeuses_Transparency[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_Transparency[] = {
"600x600dpi_std4",
"600x600dpi_draft4",
NULL
-};
+};*/
/*untested*/
-static const char* canon_PIXMA_iP8600_modeuses_PPother[] = {
+/*static const char* canon_PIXMA_iP8600_modeuses_PPother[] = {
"600x600dpi_photo",
"600x600dpi_photodraft",
NULL
- };
+};*/
static const canon_modeuse_t canon_PIXMA_iP8600_modeuses[] = {
{ "Plain", canon_PIXMA_iP8600_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP8600_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP8600_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP8600_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP8600_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP8600_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP8600_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP8600_modeuses_inkjetHagaki, 0 },
+/* { "GlossyPro", canon_PIXMA_iP8600_modeuses_PPpro, 0 },*/
+/* { "PhotopaperPlus", canon_PIXMA_iP8600_modeuses_PPplus, 0 },*/
+/* { "PhotopaperPlusDouble", canon_PIXMA_iP8600_modeuses_PPplusDS, 0 },*/
+/* { "PhotopaperMatte", canon_PIXMA_iP8600_modeuses_PPmatte, 0 },*/
+/* { "GlossyPaper", canon_PIXMA_iP8600_modeuses_PPplusDS, 0 },*/
+/* { "Coated", canon_PIXMA_iP8600_modeuses_PPmatte, 0 },*/
+/* { "InkJetHagaki", canon_PIXMA_iP8600_modeuses_inkjetHagaki, 0 },*/
{ "Hagaki", canon_PIXMA_iP8600_modeuses_Hagaki, DUPLEX_SUPPORT },
- { "FineArtPhotoRag", canon_PIXMA_iP8600_modeuses_FA, 0 },
- { "FineArtOther", canon_PIXMA_iP8600_modeuses_FA, 0 },
- { "DiscCompat", canon_PIXMA_iP8600_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP8600_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP8600_modeuses_TShirt, 0 },
+/* { "FineArtPhotoRag", canon_PIXMA_iP8600_modeuses_FA, 0 },*/
+/* { "FineArtOther", canon_PIXMA_iP8600_modeuses_FA, 0 },*/
+/* { "DiscCompat", canon_PIXMA_iP8600_modeuses_disc, 0 },*/
+/* { "DiscOthers", canon_PIXMA_iP8600_modeuses_disc, 0 },*/
+/* { "TShirt", canon_PIXMA_iP8600_modeuses_TShirt, 0 },*/
{ "Envelope", canon_PIXMA_iP8600_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP8600_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP8600_modeuses_PPother, 0 },/*untested*/
+/* { "Transparency", canon_PIXMA_iP8600_modeuses_Transparency, 0 },*/
+/* { "PhotopaperOther", canon_PIXMA_iP8600_modeuses_PPother, 0 },*/ /*untested*/
};
DECLARE_MODEUSES(canon_PIXMA_iP8600);
-/* ----------------------------------- Canon iP9910 ----------------------------------- */
-static const char* canon_PIXMA_iP9910_modeuses_plain[] = {
+/* ----------------------------------- Canon iP8700 ----------------------------------- */
+/* most photo modes use gray ink which is unsupported */
+/* TODO: mono modes for photo media */
+static const char* canon_PIXMA_iP8700_modeuses_plain[] = {
"600x600dpi_high",
- "600x600dpi_high2",/* duplex */
"600x600dpi",
+ "300x300dpi",
+ NULL
+ };
+
+/* unsupported*/
+static const char* canon_PIXMA_iP8700_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",/*stand-in*/
+ "600x600dpi_photo",/*stand-in*/
+ "600x600dpi_photo2",/*stand-in*/
+ NULL
+};
+
+/* unsupported*/
+static const char* canon_PIXMA_iP8700_modeuses_PPpro[] = {
+ "600x600dpi_photohigh",/*stand-in*/
+ "600x600dpi_photo",/*stand-in*/
+ "600x600dpi_photo2",/*stand-in*/
+ NULL
+};
+
+static const char* canon_PIXMA_iP8700_modeuses_PPmatte[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_iP8700_modeuses_Hagaki[] = {
+ "600x600dpi_high2",
+ "600x600dpi_std2",
+ NULL
+};
+
+static const char* canon_PIXMA_iP8700_modeuses_inkjetHagaki[] = {
+ "600x600dpi_photohigh4",
+ "600x600dpi_photo4",
+ NULL
+};
+
+static const char* canon_PIXMA_iP8700_modeuses_disc[] = {
+ "600x600dpi_photohigh3",
+ "600x600dpi_photo3",
+ NULL
+};
+
+static const char* canon_PIXMA_iP8700_modeuses_TShirt[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+/* unsupported*/
+static const char* canon_PIXMA_iP8700_modeuses_photorag[] = {
+ "600x600dpi_photohigh",/*stand-in*/
+ "600x600dpi_photo",/*stand-in*/
+ "600x600dpi_photo2",/*stand-in*/
+ NULL
+};
+
+static const char* canon_PIXMA_iP8700_modeuses_PPother[] = {
+ "600x600dpi_photo2",
+ NULL
+};
+
+static const canon_modeuse_t canon_PIXMA_iP8700_modeuses[] = {
+ { "Plain", canon_PIXMA_iP8700_modeuses_plain, 0},
+ { "PhotoPlusGloss2", canon_PIXMA_iP8700_modeuses_PPplusG2, 0 },
+ { "PhotoProPlat", canon_PIXMA_iP8700_modeuses_PPpro, 0 },
+ { "PhotoProLuster", canon_PIXMA_iP8700_modeuses_PPplusG2, 0 },
+ { "PhotoProSemiGloss",canon_PIXMA_iP8700_modeuses_PPplusG2, 0 },
+ { "GlossyPaperStandard",canon_PIXMA_iP8700_modeuses_PPplusG2, 0 },
+ { "PhotopaperMatte", canon_PIXMA_iP8700_modeuses_PPmatte, 0 },
+ { "GlossyPaper", canon_PIXMA_iP8700_modeuses_PPplusG2, 0 },
+ { "Coated", canon_PIXMA_iP8700_modeuses_PPmatte, 0 },
+ { "HagakiA", canon_PIXMA_iP8700_modeuses_Hagaki, 0 },
+ { "InkJetHagaki", canon_PIXMA_iP8700_modeuses_inkjetHagaki, 0 },
+ { "InkjetPhotoHagakiK",canon_PIXMA_iP8700_modeuses_PPplusG2, 0 },
+ { "Hagaki", canon_PIXMA_iP8700_modeuses_Hagaki, 0 },
+ { "DiscCompat", canon_PIXMA_iP8700_modeuses_disc, 0 },
+ { "DiscOthers", canon_PIXMA_iP8700_modeuses_disc, 0 },
+ { "TShirt", canon_PIXMA_iP8700_modeuses_TShirt, 0 },
+ { "Envelope", canon_PIXMA_iP8700_modeuses_Hagaki, 0 },
+ { "FineArtPhotoRag", canon_PIXMA_iP8700_modeuses_photorag, 0 },/*untested*/
+ { "FineArtOther", canon_PIXMA_iP8700_modeuses_photorag, 0 },
+ { "PhotopaperOther", canon_PIXMA_iP8700_modeuses_PPother, 0 },
+};
+
+DECLARE_MODEUSES(canon_PIXMA_iP8700);
+
+/* ----------------------------------- Canon iP9910 ----------------------------------- */
+static const char* canon_PIXMA_iP9910_modeuses_plain[] = {
+/* "600x600dpi_high",*/
+/* "600x600dpi_high2",*/ /*duplex*/
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
/* Mono */
@@ -5219,92 +5652,92 @@ static const char* canon_PIXMA_iP9910_modeuses_plain[] = {
};
/* highest mode using R not yet supported */
-static const char* canon_PIXMA_iP9910_modeuses_PPpro[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_PPpro[] = {
"600x600dpi_photo",
"600x600dpi_photo2",
NULL
-};
+};*/
/* highest mode using R not supported yet */
-static const char* canon_PIXMA_iP9910_modeuses_PPplus[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_PPplus[] = {
"600x600dpi_photo2",
"600x600dpi_photodraft2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP9910_modeuses_PPplusDS[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_PPplusDS[] = {
"600x600dpi_photohigh",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP9910_modeuses_PPmatte[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_PPmatte[] = {
"600x600dpi_photohigh2",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP9910_modeuses_inkjetHagaki[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_inkjetHagaki[] = {
"600x600dpi_photohigh3",
"600x600dpi_photo3",
NULL
-};
+};*/
static const char* canon_PIXMA_iP9910_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",
+/* "600x600dpi_high3",*/
+/* "600x600dpi_std3",*/
"600x600dpi_draft3",
/* Mono */
"600x600dpi_mono",
NULL
};
-static const char* canon_PIXMA_iP9910_modeuses_FA[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_FA[] = {
"600x600dpi_photohigh4",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP9910_modeuses_disc[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_disc[] = {
"600x600dpi_photo2",
"600x600dpi_photodraft",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP9910_modeuses_TShirt[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_TShirt[] = {
"600x600dpi",
NULL
-};
+};*/
-static const char* canon_PIXMA_iP9910_modeuses_Transparency[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_Transparency[] = {
"600x600dpi_std4",
"600x600dpi_draft4",
NULL
-};
+};*/
/*untested*/
-static const char* canon_PIXMA_iP9910_modeuses_PPother[] = {
+/*static const char* canon_PIXMA_iP9910_modeuses_PPother[] = {
"600x600dpi_photo2",
NULL
- };
+};*/
static const canon_modeuse_t canon_PIXMA_iP9910_modeuses[] = {
{ "Plain", canon_PIXMA_iP9910_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
- { "GlossyPro", canon_PIXMA_iP9910_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_PIXMA_iP9910_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_PIXMA_iP9910_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_PIXMA_iP9910_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_iP9910_modeuses_PPplusDS, 0 },
- { "Coated", canon_PIXMA_iP9910_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_iP9910_modeuses_inkjetHagaki, 0 },
+/* { "GlossyPro", canon_PIXMA_iP9910_modeuses_PPpro, 0 },*/
+/* { "PhotopaperPlus", canon_PIXMA_iP9910_modeuses_PPplus, 0 },*/
+/* { "PhotopaperPlusDouble", canon_PIXMA_iP9910_modeuses_PPplusDS, 0 },*/
+/* { "PhotopaperMatte", canon_PIXMA_iP9910_modeuses_PPmatte, 0 },*/
+/* { "GlossyPaper", canon_PIXMA_iP9910_modeuses_PPplusDS, 0 },*/
+/* { "Coated", canon_PIXMA_iP9910_modeuses_PPmatte, 0 },*/
+/* { "InkJetHagaki", canon_PIXMA_iP9910_modeuses_inkjetHagaki, 0 },*/
{ "Hagaki", canon_PIXMA_iP9910_modeuses_Hagaki, 0 },
- { "FineArtPhotoRag", canon_PIXMA_iP9910_modeuses_FA, 0 },
- { "FineArtOther", canon_PIXMA_iP9910_modeuses_FA, 0 },
- { "DiscCompat", canon_PIXMA_iP9910_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_iP9910_modeuses_disc, 0 },
- { "TShirt", canon_PIXMA_iP9910_modeuses_TShirt, 0 },
+/* { "FineArtPhotoRag", canon_PIXMA_iP9910_modeuses_FA, 0 },*/
+/* { "FineArtOther", canon_PIXMA_iP9910_modeuses_FA, 0 },*/
+/* { "DiscCompat", canon_PIXMA_iP9910_modeuses_disc, 0 },*/
+/* { "DiscOthers", canon_PIXMA_iP9910_modeuses_disc, 0 },*/
+/* { "TShirt", canon_PIXMA_iP9910_modeuses_TShirt, 0 },*/
{ "Envelope", canon_PIXMA_iP9910_modeuses_Hagaki, 0 },
- { "Transparency", canon_PIXMA_iP9910_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_PIXMA_iP9910_modeuses_PPother, 0 },
+/* { "Transparency", canon_PIXMA_iP9910_modeuses_Transparency, 0 },*/
+/* { "PhotopaperOther", canon_PIXMA_iP9910_modeuses_PPother, 0 },*/
};
DECLARE_MODEUSES(canon_PIXMA_iP9910);
@@ -5531,6 +5964,76 @@ static const canon_modeuse_t canon_PIXMA_iX6500_modeuses[] = {
DECLARE_MODEUSES(canon_PIXMA_iX6500);
+/* ----------------------------------- Canon iX6800 ----------------------------------- */
+
+static const char* canon_PIXMA_iX6800_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi",
+ "300x300dpi",
+ "300x300dpi_draft",
+ NULL
+ };
+
+static const char* canon_PIXMA_iX6800_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_iX6800_modeuses_PPpro[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_iX6800_modeuses_PPmatte[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo2",
+ NULL
+};
+
+static const char* canon_PIXMA_iX6800_modeuses_Hagaki[] = {
+ "600x600dpi_high2",
+ "600x600dpi_std2",
+ NULL
+};
+
+static const char* canon_PIXMA_iX6800_modeuses_inkjetHagaki[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photo3",
+ NULL
+};
+
+static const char* canon_PIXMA_iX6800_modeuses_TShirt[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const char* canon_PIXMA_iX6800_modeuses_PPother[] = {
+ "600x600dpi_photo",
+ NULL
+};
+
+static const canon_modeuse_t canon_PIXMA_iX6800_modeuses[] = {
+ { "Plain", canon_PIXMA_iX6800_modeuses_plain, 0},
+ { "PhotoPlusGloss2", canon_PIXMA_iX6800_modeuses_PPplusG2, 0 },
+ { "PhotoProPlat", canon_PIXMA_iX6800_modeuses_PPpro, 0 },
+ { "PhotoProLuster", canon_PIXMA_iX6800_modeuses_PPplusG2, 0 },
+ { "PhotoProSemiGloss",canon_PIXMA_iX6800_modeuses_PPplusG2, 0 },
+ { "GlossyPaperStandard",canon_PIXMA_iX6800_modeuses_PPplusG2, 0 },
+ { "PhotopaperMatte", canon_PIXMA_iX6800_modeuses_PPmatte, 0 },
+ { "Coated", canon_PIXMA_iX6800_modeuses_PPmatte, 0 },
+ { "HagakiA", canon_PIXMA_iX6800_modeuses_Hagaki, 0 },
+ { "InkJetHagaki", canon_PIXMA_iX6800_modeuses_inkjetHagaki, 0 },
+ { "InkjetPhotoHagakiK",canon_PIXMA_iX6800_modeuses_PPplusG2, 0 },
+ { "Hagaki", canon_PIXMA_iX6800_modeuses_Hagaki, 0 },
+ { "TShirt", canon_PIXMA_iX6800_modeuses_TShirt, 0 },
+ { "Envelope", canon_PIXMA_iX6800_modeuses_Hagaki, 0 },
+ { "PhotopaperOther", canon_PIXMA_iX6800_modeuses_PPother, 0 },
+};
+
+DECLARE_MODEUSES(canon_PIXMA_iX6800);
+
/* ----------------------------------- Canon iX7000 ----------------------------------- */
static const char* canon_PIXMA_iX7000_modeuses_plain[] = {
"600x600dpi_high",
@@ -7884,8 +8387,8 @@ DECLARE_MODEUSES(canon_MULTIPASS_MP830);
/* ----------------------------------- Canon MP900 ----------------------------------- */
static const char* canon_MULTIPASS_MP900_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
+/* "600x600dpi_high",*/
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
/* Mono */
@@ -7894,92 +8397,92 @@ static const char* canon_MULTIPASS_MP900_modeuses_plain[] = {
NULL
};
-static const char* canon_MULTIPASS_MP900_modeuses_PPpro[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_PPpro[] = {
"600x600dpi_photohigh",
"600x600dpi_photo",
- "600x600dpi_photo2",/*untested*/
- NULL
-};
+ "600x600dpi_photo2",*/ /*untested*/
+/* NULL
+};*/
-static const char* canon_MULTIPASS_MP900_modeuses_PPplus[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_PPplus[] = {
"600x600dpi_photohigh",
- "600x600dpi_photo2",/*untested*/
- NULL
-};
+ "600x600dpi_photo2",*/ /*untested*/
+/* NULL
+};*/
-static const char* canon_MULTIPASS_MP900_modeuses_PPplusDS[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_PPplusDS[] = {
"600x600dpi_photohigh",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_MULTIPASS_MP900_modeuses_PPmatte[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_PPmatte[] = {
"600x600dpi_photohigh2",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_MULTIPASS_MP900_modeuses_coated[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_coated[] = {
"600x600dpi_photohigh2",
"600x600dpi_photo",
"600x600dpi_photo2",
NULL
-};
+};*/
-static const char* canon_MULTIPASS_MP900_modeuses_inkjetHagaki[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_inkjetHagaki[] = {
"600x600dpi_photohigh3",
"600x600dpi_photo3",
NULL
-};
+};*/
static const char* canon_MULTIPASS_MP900_modeuses_Hagaki[] = {
- "600x600dpi_high4",
- "600x600dpi_std4",
+/* "600x600dpi_high4",*/
+/* "600x600dpi_std4",*/
"600x600dpi_draft4",
"600x600dpi_draftmono4",/* Mono */
NULL
};
-static const char* canon_MULTIPASS_MP900_modeuses_disc[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_disc[] = {
"600x600dpi_photo4",
"600x600dpi_photodraft4",
NULL
-};
+};*/
-static const char* canon_MULTIPASS_MP900_modeuses_TShirt[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_TShirt[] = {
"600x600dpi_tshirt",
NULL
-};
+};*/
-static const char* canon_MULTIPASS_MP900_modeuses_Transparency[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_Transparency[] = {
"600x600dpi_std3",
"600x600dpi_draft3",
NULL
-};
+};*/
/*untested*/
-static const char* canon_MULTIPASS_MP900_modeuses_PPother[] = {
+/*static const char* canon_MULTIPASS_MP900_modeuses_PPother[] = {
"600x600dpi_photohigh",
"600x600dpi_photo2",
NULL
- };
+ };*/
static const canon_modeuse_t canon_MULTIPASS_MP900_modeuses[] = {
{ "Plain", canon_MULTIPASS_MP900_modeuses_plain, 0 },
- { "GlossyPro", canon_MULTIPASS_MP900_modeuses_PPpro, 0 },
- { "PhotopaperPlus", canon_MULTIPASS_MP900_modeuses_PPplus, 0 },
- { "PhotopaperPlusDouble", canon_MULTIPASS_MP900_modeuses_PPplusDS, 0 },
- { "GlossyPaper", canon_MULTIPASS_MP900_modeuses_PPplusDS, 0 },
- { "PhotopaperMatte", canon_MULTIPASS_MP900_modeuses_PPmatte, 0 },
- { "Coated", canon_MULTIPASS_MP900_modeuses_coated, 0 },
- { "InkJetHagaki", canon_MULTIPASS_MP900_modeuses_inkjetHagaki, 0 },
+/* { "GlossyPro", canon_MULTIPASS_MP900_modeuses_PPpro, 0 },*/
+/* { "PhotopaperPlus", canon_MULTIPASS_MP900_modeuses_PPplus, 0 },*/
+/* { "PhotopaperPlusDouble", canon_MULTIPASS_MP900_modeuses_PPplusDS, 0 },*/
+/* { "GlossyPaper", canon_MULTIPASS_MP900_modeuses_PPplusDS, 0 },*/
+/* { "PhotopaperMatte", canon_MULTIPASS_MP900_modeuses_PPmatte, 0 },*/
+/* { "Coated", canon_MULTIPASS_MP900_modeuses_coated, 0 },*/
+/* { "InkJetHagaki", canon_MULTIPASS_MP900_modeuses_inkjetHagaki, 0 },*/
{ "Hagaki", canon_MULTIPASS_MP900_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_MULTIPASS_MP900_modeuses_disc, 0 },
- { "DiscOthers", canon_MULTIPASS_MP900_modeuses_disc, 0 },
- { "TShirt", canon_MULTIPASS_MP900_modeuses_TShirt, 0 },
+/* { "DiscCompat", canon_MULTIPASS_MP900_modeuses_disc, 0 },*/
+/* { "DiscOthers", canon_MULTIPASS_MP900_modeuses_disc, 0 },*/
+/* { "TShirt", canon_MULTIPASS_MP900_modeuses_TShirt, 0 },*/
{ "Envelope", canon_MULTIPASS_MP900_modeuses_Hagaki, 0 },
- { "Transparency", canon_MULTIPASS_MP900_modeuses_Transparency, 0 },
- { "PhotopaperOther", canon_MULTIPASS_MP900_modeuses_PPother, 0 },/*untested*/
+/* { "Transparency", canon_MULTIPASS_MP900_modeuses_Transparency, 0 },*/
+/* { "PhotopaperOther", canon_MULTIPASS_MP900_modeuses_PPother, 0 },*/ /*untested*/
};
DECLARE_MODEUSES(canon_MULTIPASS_MP900);
@@ -8993,6 +9496,65 @@ static const canon_modeuse_t canon_MULTIPASS_MX420_modeuses[] = {
DECLARE_MODEUSES(canon_MULTIPASS_MX420);
+/* ----------------------------------- Canon MX470 ----------------------------------- */
+
+static const char* canon_MULTIPASS_MX470_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi_high5",/* duplex */
+ "600x600dpi",
+ "300x300dpi",
+ NULL
+ };
+
+static const char* canon_MULTIPASS_MX470_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX470_modeuses_PPpro[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX470_modeuses_Hagaki[] = {
+ "600x600dpi_high3",
+ "600x600dpi_std3",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX470_modeuses_TShirt[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX470_modeuses_PPother[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const canon_modeuse_t canon_MULTIPASS_MX470_modeuses[] = {
+ { "Plain", canon_MULTIPASS_MX470_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "PhotoPlusGloss2", canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_MULTIPASS_MX470_modeuses_PPpro, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss",canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "GlossyPaperStandard", canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_MULTIPASS_MX470_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "InkJetHagaki", canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "InkjetPhotoHagakiK",canon_MULTIPASS_MX470_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_MULTIPASS_MX470_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "TShirt", canon_MULTIPASS_MX470_modeuses_TShirt, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_MULTIPASS_MX470_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "PhotopaperOther", canon_MULTIPASS_MX470_modeuses_PPother, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_MULTIPASS_MX470);
+
/* ----------------------------------- Canon MX510 ----------------------------------- */
static const char* canon_MULTIPASS_MX510_modeuses_plain[] = {
"600x600dpi_high",
@@ -9116,6 +9678,65 @@ static const canon_modeuse_t canon_MULTIPASS_MX520_modeuses[] = {
DECLARE_MODEUSES(canon_MULTIPASS_MX520);
+/* ----------------------------------- Canon MX530 ----------------------------------- */
+
+static const char* canon_MULTIPASS_MX530_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi_high5",/* duplex */
+ "600x600dpi",
+ "300x300dpi",
+ NULL
+ };
+
+static const char* canon_MULTIPASS_MX530_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX530_modeuses_PPpro[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX530_modeuses_Hagaki[] = {
+ "600x600dpi_high3",
+ "600x600dpi_std3",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX530_modeuses_TShirt[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const char* canon_MULTIPASS_MX530_modeuses_PPother[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const canon_modeuse_t canon_MULTIPASS_MX530_modeuses[] = {
+ { "Plain", canon_MULTIPASS_MX530_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL },
+ { "PhotoPlusGloss2", canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_MULTIPASS_MX530_modeuses_PPpro, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss",canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "GlossyPaperStandard", canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_MULTIPASS_MX530_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "InkJetHagaki", canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "InkjetPhotoHagakiK",canon_MULTIPASS_MX530_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_MULTIPASS_MX530_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "TShirt", canon_MULTIPASS_MX530_modeuses_TShirt, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_MULTIPASS_MX530_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "PhotopaperOther", canon_MULTIPASS_MX530_modeuses_PPother, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_MULTIPASS_MX530);
+
/* ----------------------------------- Canon MX700 ----------------------------------- */
static const char* canon_MULTIPASS_MX700_modeuses_plain[] = {
"600x600dpi_high",
@@ -9753,14 +10374,112 @@ static const canon_modeuse_t canon_MULTIPASS_MX7600_modeuses[] = {
DECLARE_MODEUSES(canon_MULTIPASS_MX7600);
+/* ----------------------------------- Canon E400 ----------------------------------- */
+
+static const char* canon_MULTIPASS_E400_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi",
+ "300x300dpi",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E400_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E400_modeuses_PPglossy[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const canon_modeuse_t canon_MULTIPASS_E400_modeuses[] = {
+ { "Plain", canon_MULTIPASS_E400_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "PhotoPlusGloss2", canon_MULTIPASS_E400_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss",canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "GlossyPaperStandard", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_MULTIPASS_E400_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "InkJetHagaki", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "InkjetPhotoHagakiK",canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_MULTIPASS_E400_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "TShirt", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_MULTIPASS_E400_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "PhotopaperOther", canon_MULTIPASS_E400_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_MULTIPASS_E400);
+
+/* ----------------------------------- Canon E480 ----------------------------------- */
+static const char* canon_MULTIPASS_E480_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi_high2",/* color-only */
+ "600x600dpi",
+ "300x300dpi",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E480_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E480_modeuses_PP[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E480_modeuses_Hagaki[] = {
+ "600x600dpi_high3",
+ "600x600dpi_std3",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E480_modeuses_TShirt[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E480_modeuses_PPother[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const canon_modeuse_t canon_MULTIPASS_E480_modeuses[] = {
+ { "Plain", canon_MULTIPASS_E480_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "PhotoPlusGloss2", canon_MULTIPASS_E480_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss",canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "GlossyPaperStandard", canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_MULTIPASS_E480_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "InkJetHagaki", canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "InkjetPhotoHagakiK",canon_MULTIPASS_E480_modeuses_PP, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_MULTIPASS_E480_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "TShirt", canon_MULTIPASS_E480_modeuses_TShirt, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_MULTIPASS_E480_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "PhotopaperOther", canon_MULTIPASS_E480_modeuses_PPother, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_MULTIPASS_E480);
+
/* ----------------------------------- Canon E500 ----------------------------------- */
static const char* canon_MULTIPASS_E500_modeuses_plain[] = {
"600x600dpi_high",
"600x600dpi_high2",/* color-only */
"600x600dpi",
- "600x600dpi_draft",/*untested*/
"300x300dpi",
- "300x300dpi_draft",
NULL
};
@@ -9872,6 +10591,106 @@ static const canon_modeuse_t canon_MULTIPASS_E510_modeuses[] = {
DECLARE_MODEUSES(canon_MULTIPASS_E510);
+/* ----------------------------------- Canon E560 ----------------------------------- */
+static const char* canon_MULTIPASS_E560_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi_high2",/* color-only */
+ "600x600dpi",
+ "300x300dpi",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E560_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E560_modeuses_PPproPlat[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E560_modeuses_Hagaki[] = {
+ "600x600dpi_high3",
+ "600x600dpi_std3",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E560_modeuses_TShirt[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const char* canon_MULTIPASS_E560_modeuses_PPother[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const canon_modeuse_t canon_MULTIPASS_E560_modeuses[] = {
+ { "Plain", canon_MULTIPASS_E560_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL},
+ { "PhotoPlusGloss2", canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_MULTIPASS_E560_modeuses_PPproPlat, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss",canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "GlossyPaperStandard", canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_MULTIPASS_E560_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "InkJetHagaki", canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "InkjetPhotoHagakiK",canon_MULTIPASS_E560_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_MULTIPASS_E560_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "TShirt", canon_MULTIPASS_E560_modeuses_TShirt, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_MULTIPASS_E560_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "PhotopaperOther", canon_MULTIPASS_E560_modeuses_PPother, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_MULTIPASS_E560);
+
+/* ----------------------------------- Canon P200 ----------------------------------- */
+
+static const char* canon_PIXMA_P200_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi",
+ "300x300dpi",
+ NULL
+};
+
+static const char* canon_PIXMA_P200_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_P200_modeuses_PPglossy[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const canon_modeuse_t canon_PIXMA_P200_modeuses[] = {
+ { "Plain", canon_PIXMA_P200_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "PhotoPlusGloss2", canon_PIXMA_P200_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss",canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "GlossyPaper", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_PIXMA_P200_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "InkJetHagaki", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "CanonPhotoHagakiK",canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_PIXMA_P200_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "TShirt", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_PIXMA_P200_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT },
+ { "PhotopaperOther", canon_PIXMA_P200_modeuses_PPglossy, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_PIXMA_P200);
+
/* ----------------------------------- Canon MG2100 ----------------------------------- */
static const char* canon_PIXMA_MG2100_modeuses_plain[] = {
"600x600dpi_high",
@@ -10070,6 +10889,63 @@ static const canon_modeuse_t canon_PIXMA_MG2400_modeuses[] = {
DECLARE_MODEUSES(canon_PIXMA_MG2400);
+/* ----------------------------------- Canon MG2900 ----------------------------------- */
+static const char* canon_PIXMA_MG2900_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi",
+ "300x300dpi",
+ NULL
+ };
+
+static const char* canon_PIXMA_MG2900_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_MG2900_modeuses_PPpro[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_MG2900_modeuses_Hagaki[] = {
+ "600x600dpi_high2",
+ "600x600dpi_std2",
+ NULL
+};
+
+static const char* canon_PIXMA_MG2900_modeuses_TShirt[] = {
+ "600x600dpi_photo",
+ NULL
+ };
+
+static const char* canon_PIXMA_MG2900_modeuses_PPother[] = {
+ "600x600dpi_photohigh",
+ NULL
+};
+
+static const canon_modeuse_t canon_PIXMA_MG2900_modeuses[] = {
+ { "Plain", canon_PIXMA_MG2900_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "PhotoPlusGloss2", canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProPlat", canon_PIXMA_MG2900_modeuses_PPpro, INKSET_COLOR_SUPPORT },
+ { "PhotoProLuster", canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotoProSemiGloss",canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "PhotopaperMatte", canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "GlossyPaperStandard", canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Coated", canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "HagakiA", canon_PIXMA_MG2900_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "InkJetHagaki", canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "InkjetPhotoHagakiK",canon_PIXMA_MG2900_modeuses_PPplusG2, INKSET_COLOR_SUPPORT },
+ { "Hagaki", canon_PIXMA_MG2900_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "TShirt", canon_PIXMA_MG2900_modeuses_TShirt, INKSET_COLOR_SUPPORT },
+ { "Envelope", canon_PIXMA_MG2900_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL },
+ { "PhotopaperOther", canon_PIXMA_MG2900_modeuses_PPother, INKSET_COLOR_SUPPORT },
+};
+
+DECLARE_MODEUSES(canon_PIXMA_MG2900);
+
/* ----------------------------------- Canon MG3100 ----------------------------------- */
static const char* canon_PIXMA_MG3100_modeuses_plain[] = {
"600x600dpi_high",
@@ -10243,7 +11119,7 @@ static const char* canon_PIXMA_MG3500_modeuses_Hagaki[] = {
};
static const char* canon_PIXMA_MG3500_modeuses_TShirt[] = {
- "600x600dpi_tshirt",
+ "600x600dpi_photohigh",
NULL
};
@@ -10643,6 +11519,72 @@ static const canon_modeuse_t canon_PIXMA_MG5500_modeuses[] = {
DECLARE_MODEUSES(canon_PIXMA_MG5500);
+/* ----------------------------------- Canon MG5600 ----------------------------------- */
+static const char* canon_PIXMA_MG5600_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi_high2",/* duplex */
+ "600x600dpi",
+ "600x600dpi_std2",/* duplex */
+ "300x300dpi",
+ NULL
+ };
+
+static const char* canon_PIXMA_MG5600_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_MG5600_modeuses_PPpro[] = {
+ /*ud1 not supported */
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_MG5600_modeuses_PPmatte[] = {
+ "600x600dpi_photohigh2",
+ "600x600dpi_photo2",
+ NULL
+};
+
+static const char* canon_PIXMA_MG5600_modeuses_Hagaki[] = {
+ "600x600dpi_high2",
+ "600x600dpi_std2",
+ NULL
+};
+
+static const char* canon_PIXMA_MG5600_modeuses_TShirt[] = {
+ "600x600dpi_photohigh2",
+ NULL
+};
+
+static const char* canon_PIXMA_MG5600_modeuses_PPother[] = {
+ "600x600dpi_photohigh", /* experimental */
+ "600x600dpi_photo",
+ NULL
+};
+
+static const canon_modeuse_t canon_PIXMA_MG5600_modeuses[] = {
+ { "Plain", canon_PIXMA_MG5600_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
+ { "PhotoPlusGloss2", canon_PIXMA_MG5600_modeuses_PPplusG2, 0 },
+ { "PhotoProPlat", canon_PIXMA_MG5600_modeuses_PPpro, 0 },
+ { "PhotoProLuster", canon_PIXMA_MG5600_modeuses_PPplusG2, 0 },
+ { "PhotoProSemiGloss",canon_PIXMA_MG5600_modeuses_PPplusG2, 0 },
+ { "PhotopaperMatte", canon_PIXMA_MG5600_modeuses_PPmatte, 0 },
+ { "GlossyPaperStandard", canon_PIXMA_MG5600_modeuses_PPplusG2, 0 },
+ { "Coated", canon_PIXMA_MG5600_modeuses_PPmatte, 0 },
+ { "HagakiA", canon_PIXMA_MG5600_modeuses_Hagaki, 0 },
+ { "InkJetHagaki", canon_PIXMA_MG5600_modeuses_PPplusG2, 0 },
+ { "InkjetPhotoHagakiK",canon_PIXMA_MG5600_modeuses_PPplusG2, 0 },
+ { "Hagaki", canon_PIXMA_MG5600_modeuses_Hagaki, 0 },
+ { "TShirt", canon_PIXMA_MG5600_modeuses_TShirt, 0 },
+ { "Envelope", canon_PIXMA_MG5600_modeuses_Hagaki, 0 },
+ { "PhotopaperOther", canon_PIXMA_MG5600_modeuses_PPother, 0 },
+};
+
+DECLARE_MODEUSES(canon_PIXMA_MG5600);
+
/* ----------------------------------- Canon MG6100 ----------------------------------- */
/* most photo modes use gray ink which is unsupported */
/* TODO: mono modes for photo media */
@@ -10905,7 +11847,7 @@ static const canon_modeuse_t canon_PIXMA_MG6300_modeuses[] = {
{ "PhotoProLuster", canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/
{ "PhotoProSemiGloss",canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/
{ "PhotopaperMatte", canon_PIXMA_MG6300_modeuses_PPmatte, 0 },
- { "GlossyPaper", canon_PIXMA_MG6300_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "GlossyPaper", canon_PIXMA_MG6300_modeuses_PPmatte, 0 },/*unsupported*/
{ "Coated", canon_PIXMA_MG6300_modeuses_PPmatte, 0 },
{ "HagakiA", canon_PIXMA_MG6300_modeuses_Hagaki, DUPLEX_SUPPORT },
{ "InkJetHagaki", canon_PIXMA_MG6300_modeuses_inkjetHagaki, 0 },
@@ -11016,6 +11958,100 @@ static const canon_modeuse_t canon_PIXMA_MG6500_modeuses[] = {
DECLARE_MODEUSES(canon_PIXMA_MG6500);
+/* ----------------------------------- Canon MG6700 ----------------------------------- */
+/* most photo modes use gray ink which is unsupported */
+/* TODO: mono modes for photo media */
+static const char* canon_PIXMA_MG6700_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi_high2",/* duplex */
+ "600x600dpi",
+ "600x600dpi_std2",/* duplex */
+ "300x300dpi",
+ NULL
+ };
+
+/* unsupported*/
+static const char* canon_PIXMA_MG6700_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",/*stand-in*/
+ "600x600dpi_photo",/*stand-in*/
+ "600x600dpi_photo2",/*stand-in*/
+ NULL
+};
+
+/* unsupported*/
+static const char* canon_PIXMA_MG6700_modeuses_PPpro[] = {
+ "600x600dpi_photohigh",/*stand-in*/
+ "600x600dpi_photo",/*stand-in*/
+ "600x600dpi_photo2",/*stand-in*/
+ NULL
+};
+
+static const char* canon_PIXMA_MG6700_modeuses_PPmatte[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_PIXMA_MG6700_modeuses_Hagaki[] = {
+ "600x600dpi_high2",
+ "600x600dpi_std2",
+ NULL
+};
+
+static const char* canon_PIXMA_MG6700_modeuses_inkjetHagaki[] = {
+ "600x600dpi_photohigh4",
+ "600x600dpi_photo4",
+ NULL
+};
+
+static const char* canon_PIXMA_MG6700_modeuses_disc[] = {
+ "600x600dpi_photohigh3",
+ "600x600dpi_photo3",
+ NULL
+};
+
+static const char* canon_PIXMA_MG6700_modeuses_TShirt[] = {
+ "600x600dpi_photo",
+ NULL
+};
+
+/* unsupported*/
+static const char* canon_PIXMA_MG6700_modeuses_photorag[] = {
+ "600x600dpi_photohigh",/*stand-in*/
+ "600x600dpi_photo",/*stand-in*/
+ "600x600dpi_photo2",/*stand-in*/
+ NULL
+};
+
+static const char* canon_PIXMA_MG6700_modeuses_PPother[] = {
+ "600x600dpi_photo2",
+ NULL
+};
+
+static const canon_modeuse_t canon_PIXMA_MG6700_modeuses[] = {
+ { "Plain", canon_PIXMA_MG6700_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL },
+ { "PhotoPlusGloss2", canon_PIXMA_MG6700_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "PhotoProPlat", canon_PIXMA_MG6700_modeuses_PPpro, 0 },/*unsupported*/
+ { "PhotoProLuster", canon_PIXMA_MG6700_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "PhotoProSemiGloss",canon_PIXMA_MG6700_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "PhotopaperMatte", canon_PIXMA_MG6700_modeuses_PPmatte, 0 },
+ { "GlossyPaperStandard", canon_PIXMA_MG6700_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "Coated", canon_PIXMA_MG6700_modeuses_PPmatte, 0 },
+ { "HagakiA", canon_PIXMA_MG6700_modeuses_Hagaki, DUPLEX_SUPPORT },
+ { "InkJetHagaki", canon_PIXMA_MG6700_modeuses_inkjetHagaki, 0 },
+ { "InkjetPhotoHagakiK",canon_PIXMA_MG6700_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "Hagaki", canon_PIXMA_MG6700_modeuses_Hagaki, DUPLEX_SUPPORT },
+ { "DiscCompat", canon_PIXMA_MG6700_modeuses_disc, 0 },
+ { "DiscOthers", canon_PIXMA_MG6700_modeuses_disc, 0 },
+ { "TShirt", canon_PIXMA_MG6700_modeuses_TShirt, 0 },
+ { "Envelope", canon_PIXMA_MG6700_modeuses_Hagaki, 0 },
+ { "FineArtPhotoRag", canon_PIXMA_MG6700_modeuses_photorag, 0 },/*unsupported*/
+ { "FineArtOther", canon_PIXMA_MG6700_modeuses_photorag, 0 },/*unsupported*/
+ { "PhotopaperOther", canon_PIXMA_MG6700_modeuses_PPother, 0 },
+};
+
+DECLARE_MODEUSES(canon_PIXMA_MG6700);
+
/* ----------------------------------- Canon MG8100 ----------------------------------- */
/* most photo modes use gray ink which is unsupported */
/* TODO: mono modes for photo media */
@@ -11205,155 +12241,155 @@ DECLARE_MODEUSES(canon_PIXMA_MG8200);
/* ----------------------------------- Canon Pro9000 ----------------------------------- */
static const char* canon_PIXMA_Pro9000_modeuses_plain[] = {
- "600x600dpi_high2",
- "600x600dpi",
+/* "600x600dpi_high2",*/
+/* "600x600dpi",*/
"600x600dpi_std2",
"600x600dpi_draft",
"600x600dpi_draft2",
/* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
+/* "600x600dpi_highmono",*/
+/* "600x600dpi_mono",*/
"600x600dpi_draftmono",
"600x600dpi_draftmono2",
NULL
};
/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000_modeuses_PPplusG2[] = {
- "600x600dpi_photo",
+/*static const char* canon_PIXMA_Pro9000_modeuses_PPplusG2[] = {
+ "600x600dpi_photo",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomono",
NULL
-};
+};*/
/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000_modeuses_PPplus[] = {
+/*static const char* canon_PIXMA_Pro9000_modeuses_PPplus[] = {
"600x600dpi_photo",
- "600x600dpi_photodraft2",
+ "600x600dpi_photodraft2",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomono",
"600x600dpi_photomonodraft",
NULL
-};
+};*/
-static const char* canon_PIXMA_Pro9000_modeuses_PPgloss[] = {
+/*static const char* canon_PIXMA_Pro9000_modeuses_PPgloss[] = {
"600x600dpi_photohigh3",
- "600x600dpi_photodraft",
+ "600x600dpi_photodraft",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomonodraft",
NULL
-};
+};*/
/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000_modeuses_PPpro[] = {
+/*static const char* canon_PIXMA_Pro9000_modeuses_PPpro[] = {
"600x600dpi_photohigh",
- "600x600dpi_photo",
+ "600x600dpi_photo",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomonomed",
"600x600dpi_photomono",
NULL
-};
+};*/
/* highest mode not yet supported (R,G inks) */
-static const char* canon_PIXMA_Pro9000_modeuses_PPproPlat[] = {
- "600x600dpi_photohigh",
+/*static const char* canon_PIXMA_Pro9000_modeuses_PPproPlat[] = {
+ "600x600dpi_photohigh",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomonomed",
NULL
-};
+};*/
-static const char* canon_PIXMA_Pro9000_modeuses_PPmatte[] = {
+/*static const char* canon_PIXMA_Pro9000_modeuses_PPmatte[] = {
"600x600dpi_photohigh2",
- "600x600dpi_photo",
+ "600x600dpi_photo",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomono",
NULL
-};
+};*/
-static const char* canon_PIXMA_Pro9000_modeuses_inkjetHagaki[] = {
+/*static const char* canon_PIXMA_Pro9000_modeuses_inkjetHagaki[] = {
"600x600dpi_photomed2",
- "600x600dpi_photomed",
+ "600x600dpi_photomed",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomono",
NULL
-};
+};*/
static const char* canon_PIXMA_Pro9000_modeuses_Hagaki[] = {
- "600x600dpi_high3",
- "600x600dpi_std3",/*Mono High*/
- "600x600dpi_std4",/* bw=2 for mono */
+/* "600x600dpi_high3",*/
+/* "600x600dpi_std3",*/ /*Mono High*/
+/* "600x600dpi_std4",*/ /* bw=2 for mono */
"600x600dpi_draft3",/* bw=2 for mono */
NULL
};
-static const char* canon_PIXMA_Pro9000_modeuses_disc[] = {
+/*static const char* canon_PIXMA_Pro9000_modeuses_disc[] = {
"600x600dpi_photohigh4",
- "600x600dpi_photo2",
+ "600x600dpi_photo2",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomono",
NULL
-};
+};*/
-static const char* canon_PIXMA_Pro9000_modeuses_board[] = {
- "600x600dpi_photohigh5",
+/*static const char* canon_PIXMA_Pro9000_modeuses_board[] = {
+ "600x600dpi_photohigh5",*/
/* Mono */
- "600x600dpi_photomono",
+/* "600x600dpi_photomono",
NULL
- };
+};*/
-static const char* canon_PIXMA_Pro9000_modeuses_photorag[] = {
+/*static const char* canon_PIXMA_Pro9000_modeuses_photorag[] = {
"600x600dpi_photohigh5",
- "600x600dpi_photo",
+ "600x600dpi_photo",*/
/* Mono */
- "600x600dpi_photomonohigh",
+/* "600x600dpi_photomonohigh",
"600x600dpi_photomono",
NULL
- };
+};*/
-static const char* canon_PIXMA_Pro9000_modeuses_TShirt[] = {
- "600x600dpi_tshirt",/* bw=2 for mono */
- NULL
-};
+/*static const char* canon_PIXMA_Pro9000_modeuses_TShirt[] = {
+ "600x600dpi_tshirt",*/ /* bw=2 for mono */
+/* NULL
+};*/
-static const char* canon_PIXMA_Pro9000_modeuses_PPother[] = {
- "600x600dpi_photo",
+/*static const char* canon_PIXMA_Pro9000_modeuses_PPother[] = {
+ "600x600dpi_photo",*/
/* Mono */
- "600x600dpi_photomono",
+/* "600x600dpi_photomono",
NULL
- };
+};*/
static const canon_modeuse_t canon_PIXMA_Pro9000_modeuses[] = {
{ "Plain", canon_PIXMA_Pro9000_modeuses_plain, 0 },
- { "PhotopaperPlus", canon_PIXMA_Pro9000_modeuses_PPplus, 0 },
- { "PhotoPlusGloss2", canon_PIXMA_Pro9000_modeuses_PPplusG2, 0 },
- { "GlossyPaper", canon_PIXMA_Pro9000_modeuses_PPgloss, 0 },
- { "PhotoProSemiGloss", canon_PIXMA_Pro9000_modeuses_PPplusG2, 0 },
- { "GlossyPro", canon_PIXMA_Pro9000_modeuses_PPpro, 0 },
- { "PhotoPro2", canon_PIXMA_Pro9000_modeuses_PPpro, 0 },
- { "PhotoProPlat", canon_PIXMA_Pro9000_modeuses_PPproPlat, 0 },
- { "PhotopaperMatte", canon_PIXMA_Pro9000_modeuses_PPmatte, 0 },
- { "Coated", canon_PIXMA_Pro9000_modeuses_PPmatte, 0 },
- { "InkJetHagaki", canon_PIXMA_Pro9000_modeuses_inkjetHagaki, 0 },
+/* { "PhotopaperPlus", canon_PIXMA_Pro9000_modeuses_PPplus, 0 },*/
+/* { "PhotoPlusGloss2", canon_PIXMA_Pro9000_modeuses_PPplusG2, 0 },*/
+/* { "GlossyPaper", canon_PIXMA_Pro9000_modeuses_PPgloss, 0 },*/
+/* { "PhotoProSemiGloss", canon_PIXMA_Pro9000_modeuses_PPplusG2, 0 },*/
+/* { "GlossyPro", canon_PIXMA_Pro9000_modeuses_PPpro, 0 },*/
+/* { "PhotoPro2", canon_PIXMA_Pro9000_modeuses_PPpro, 0 },*/
+/* { "PhotoProPlat", canon_PIXMA_Pro9000_modeuses_PPproPlat, 0 },*/
+/* { "PhotopaperMatte", canon_PIXMA_Pro9000_modeuses_PPmatte, 0 },*/
+/* { "Coated", canon_PIXMA_Pro9000_modeuses_PPmatte, 0 },*/
+/* { "InkJetHagaki", canon_PIXMA_Pro9000_modeuses_inkjetHagaki, 0 },*/
{ "Hagaki", canon_PIXMA_Pro9000_modeuses_Hagaki, 0 },
- { "DiscCompat", canon_PIXMA_Pro9000_modeuses_disc, 0 },
- { "DiscOthers", canon_PIXMA_Pro9000_modeuses_disc, 0 },
- { "Boardpaper", canon_PIXMA_Pro9000_modeuses_board, 0 },
- { "Canvas", canon_PIXMA_Pro9000_modeuses_board, 0 },
- { "FineArtPhotoRag", canon_PIXMA_Pro9000_modeuses_photorag, 0 },
- { "FineArtOther", canon_PIXMA_Pro9000_modeuses_board, 0 },
- { "FineArtPremiumMatte",canon_PIXMA_Pro9000_modeuses_board, 0 },
- { "FineArtMuseumEtching",canon_PIXMA_Pro9000_modeuses_photorag, 0 },
- { "TShirt", canon_PIXMA_Pro9000_modeuses_TShirt, 0 },
+/* { "DiscCompat", canon_PIXMA_Pro9000_modeuses_disc, 0 },*/
+/* { "DiscOthers", canon_PIXMA_Pro9000_modeuses_disc, 0 },*/
+/* { "Boardpaper", canon_PIXMA_Pro9000_modeuses_board, 0 },*/
+/* { "Canvas", canon_PIXMA_Pro9000_modeuses_board, 0 },*/
+/* { "FineArtPhotoRag", canon_PIXMA_Pro9000_modeuses_photorag, 0 },*/
+/* { "FineArtOther", canon_PIXMA_Pro9000_modeuses_board, 0 },*/
+/* { "FineArtPremiumMatte",canon_PIXMA_Pro9000_modeuses_board, 0 },*/
+/* { "FineArtMuseumEtching",canon_PIXMA_Pro9000_modeuses_photorag, 0 },*/
+/* { "TShirt", canon_PIXMA_Pro9000_modeuses_TShirt, 0 },*/
{ "Envelope", canon_PIXMA_Pro9000_modeuses_Hagaki, 0 },
- { "PhotopaperOther", canon_PIXMA_Pro9000_modeuses_PPother, 0 },
+/* { "PhotopaperOther", canon_PIXMA_Pro9000_modeuses_PPother, 0 },*/
};
DECLARE_MODEUSES(canon_PIXMA_Pro9000);
@@ -11361,13 +12397,13 @@ DECLARE_MODEUSES(canon_PIXMA_Pro9000);
/* ----------------------------------- Canon Pro9000mk2 ----------------------------------- */
static const char* canon_PIXMA_Pro9000mk2_modeuses_plain[] = {
- "600x600dpi_high",
- "600x600dpi",
+/* "600x600dpi_high",*/
+/* "600x600dpi",*/
"600x600dpi_draft",
"600x600dpi_draft2",
/* Mono */
- "600x600dpi_highmono",
- "600x600dpi_mono",
+/* "600x600dpi_highmono",*/
+/* "600x600dpi_mono",*/
"600x600dpi_draftmono",
"600x600dpi_draftmono2",
NULL
@@ -11375,7 +12411,7 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_plain[] = {
/* highest mode not yet supported (R,G inks) */
static const char* canon_PIXMA_Pro9000mk2_modeuses_PPplusG2[] = {
- "600x600dpi_photo",
+/* "600x600dpi_photo",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomono",
@@ -11383,8 +12419,8 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_PPplusG2[] = {
};
static const char* canon_PIXMA_Pro9000mk2_modeuses_PPgloss[] = {
- "600x600dpi_photohigh2",
- "600x600dpi_photodraft",
+/* "600x600dpi_photohigh2",*/
+/* "600x600dpi_photodraft",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomonodraft",
@@ -11393,8 +12429,8 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_PPgloss[] = {
/* highest mode not yet supported (R,G inks) */
static const char* canon_PIXMA_Pro9000mk2_modeuses_PPpro2[] = {
- "600x600dpi_photomed",
- "600x600dpi_photo",
+/* "600x600dpi_photomed",*/
+/* "600x600dpi_photo",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomonomed",/*untested: quality setting uncertain*/
@@ -11404,7 +12440,7 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_PPpro2[] = {
/* highest mode not yet supported (R,G inks) */
static const char* canon_PIXMA_Pro9000mk2_modeuses_PPproPlat[] = {
- "600x600dpi_photomed",
+/* "600x600dpi_photomed",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomonomed",
@@ -11412,8 +12448,8 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_PPproPlat[] = {
};
static const char* canon_PIXMA_Pro9000mk2_modeuses_PPmatte[] = {
- "600x600dpi_photohigh",
- "600x600dpi_photo",
+/* "600x600dpi_photohigh",*/
+/* "600x600dpi_photo",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomono",
@@ -11421,8 +12457,8 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_PPmatte[] = {
};
static const char* canon_PIXMA_Pro9000mk2_modeuses_inkjetHagaki[] = {
- "600x600dpi_photohigh3",
- "600x600dpi_photo3",
+/* "600x600dpi_photohigh3",*/
+/* "600x600dpi_photo3",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomono",
@@ -11430,17 +12466,17 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_inkjetHagaki[] = {
};
static const char* canon_PIXMA_Pro9000mk2_modeuses_Hagaki[] = {
- "600x600dpi_high2",/* bw=2 for mono */
- "600x600dpi_std2",/* bw=2 for mono */
+/* "600x600dpi_high2",*/ /* bw=2 for mono */
+/* "600x600dpi_std2",*/ /* bw=2 for mono */
"600x600dpi_draft2",/* bw=2 for mono */
/* Mono */
- "600x600dpi_high3",
+/* "600x600dpi_high3",*/
NULL
};
static const char* canon_PIXMA_Pro9000mk2_modeuses_disc[] = {
- "600x600dpi_photohigh4",
- "600x600dpi_photo4",
+/* "600x600dpi_photohigh4",*/
+/* "600x600dpi_photo4",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomono",
@@ -11448,28 +12484,28 @@ static const char* canon_PIXMA_Pro9000mk2_modeuses_disc[] = {
};
static const char* canon_PIXMA_Pro9000mk2_modeuses_board[] = {
- "600x600dpi_photohigh5",
+/* "600x600dpi_photohigh5",*/
/* Mono */
"600x600dpi_photomonohigh",
NULL
};
static const char* canon_PIXMA_Pro9000mk2_modeuses_photorag[] = {
- "600x600dpi_photohigh5",
- "600x600dpi_photo",
+/* "600x600dpi_photohigh5",*/
+/* "600x600dpi_photo",*/
/* Mono */
"600x600dpi_photomonohigh",
"600x600dpi_photomono",
NULL
};
-static const char* canon_PIXMA_Pro9000mk2_modeuses_TShirt[] = {
- "600x600dpi_tshirt",/* bw=2 for mono */
- NULL
-};
+/*static const char* canon_PIXMA_Pro9000mk2_modeuses_TShirt[] = {
+ "600x600dpi_tshirt",*/ /* bw=2 for mono */
+/* NULL
+};*/
static const char* canon_PIXMA_Pro9000mk2_modeuses_PPother[] = {
- "600x600dpi_photo",
+/* "600x600dpi_photo",*/
/* Mono */
"600x600dpi_photomono",
NULL
@@ -11494,7 +12530,7 @@ static const canon_modeuse_t canon_PIXMA_Pro9000mk2_modeuses[] = {
{ "FineArtOther", canon_PIXMA_Pro9000mk2_modeuses_board, 0 },
{ "FineArtPremiumMatte",canon_PIXMA_Pro9000mk2_modeuses_board, 0 },
{ "FineArtMuseumEtching",canon_PIXMA_Pro9000mk2_modeuses_photorag, 0 },
- { "TShirt", canon_PIXMA_Pro9000mk2_modeuses_TShirt, 0 },
+/* { "TShirt", canon_PIXMA_Pro9000mk2_modeuses_TShirt, 0 },*/
{ "Envelope", canon_PIXMA_Pro9000mk2_modeuses_Hagaki, 0 },
{ "PhotopaperOther", canon_PIXMA_Pro9000mk2_modeuses_PPother, 0 },
};
@@ -11508,9 +12544,9 @@ static const char* canon_PIXMA_Pro9500_modeuses_plain[] = {
"600x600dpi",
"600x600dpi_draft",
/* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",
+/* "600x600dpi_highmono2",*/
+/* "600x600dpi_highmono",*/ /*untested*/
+/* "600x600dpi_mono",*/
"600x600dpi_draftmono",
"600x600dpi_draftmono2",/*untested*/
NULL
@@ -11563,9 +12599,9 @@ static const char* canon_PIXMA_Pro9500_modeuses_inkjetHagaki[] = {
/* modes not yet supported (R,G inks) */
static const char* canon_PIXMA_Pro9500_modeuses_Hagaki[] = {
/* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",
- "600x600dpi_mono",/*untested*/
+/* "600x600dpi_highmono2",*/
+/* "600x600dpi_highmono",*/
+/* "600x600dpi_mono",*/ /*untested*/
"600x600dpi_draftmono",/*untested*/
"600x600dpi_draftmono2",/*untested*/
NULL
@@ -11638,9 +12674,9 @@ static const char* canon_PIXMA_Pro9500mk2_modeuses_plain[] = {
"600x600dpi",
"600x600dpi_draft",
/* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",/*untested*/
- "600x600dpi_mono",
+/* "600x600dpi_highmono2",*/
+/* "600x600dpi_highmono",*/ /*untested*/
+/* "600x600dpi_mono",*/
"600x600dpi_draftmono",
"600x600dpi_draftmono2",/*untested*/
NULL
@@ -11685,9 +12721,9 @@ static const char* canon_PIXMA_Pro9500mk2_modeuses_inkjetHagaki[] = {
/* modes not yet supported (R,G inks) */
static const char* canon_PIXMA_Pro9500mk2_modeuses_Hagaki[] = {
/* Mono */
- "600x600dpi_highmono2",
- "600x600dpi_highmono",
- "600x600dpi_mono",/*untested*/
+/* "600x600dpi_highmono2",*/
+/* "600x600dpi_highmono",*/
+/* "600x600dpi_mono",*/ /*untested*/
"600x600dpi_draftmono",/*untested*/
"600x600dpi_draftmono2",/*untested*/
NULL
@@ -11752,4 +12788,45 @@ static const canon_modeuse_t canon_PIXMA_Pro9500mk2_modeuses[] = {
DECLARE_MODEUSES(canon_PIXMA_Pro9500mk2);
+/* ----------------------------------- Canon MAXIFY iB4000 ----------------------------------- */
+
+static const char* canon_MAXIFY_iB4000_modeuses_plain[] = {
+ "600x600dpi_high",
+ "600x600dpi",
+ "600x600dpi_mono",
+ NULL
+};
+
+static const char* canon_MAXIFY_iB4000_modeuses_PPplusG2[] = {
+ "600x600dpi_photohigh",
+ "600x600dpi_photo",
+ NULL
+};
+
+static const char* canon_MAXIFY_iB4000_modeuses_Hagaki[] = {
+ "600x600dpi_high2",
+ "600x600dpi_std2",
+ NULL
+};
+
+static const canon_modeuse_t canon_MAXIFY_iB4000_modeuses[] = {
+ { "Plain", canon_MAXIFY_iB4000_modeuses_plain, DUPLEX_SUPPORT },
+ { "PhotoPlusGloss2", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "PhotoProPlat", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "PhotoProLuster", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "PhotoProSemiGloss",canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "GlossyPaperStandard",canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "PhotopaperMatte", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "Coated", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "HagakiA", canon_MAXIFY_iB4000_modeuses_Hagaki, 0 },
+ { "InkJetHagaki", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "InkjetPhotoHagakiK",canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },
+ { "Hagaki", canon_MAXIFY_iB4000_modeuses_Hagaki, 0 },
+ { "TShirt", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },/*unsupported*/
+ { "Envelope", canon_MAXIFY_iB4000_modeuses_Hagaki, 0 },
+ { "PhotopaperOther", canon_MAXIFY_iB4000_modeuses_PPplusG2, 0 },/*unsupported*/
+};
+
+DECLARE_MODEUSES(canon_MAXIFY_iB4000);
+
#endif
diff --git a/src/main/canon-media.h b/src/main/canon-media.h
index b7cd87e..7d0069e 100644
--- a/src/main/canon-media.h
+++ b/src/main/canon-media.h
@@ -252,6 +252,13 @@ static const canon_slot_t canon_PIXMA_iP8700_slots[] = {
};
DECLARE_SLOTS(canon_PIXMA_iP8700);
+static const canon_slot_t canon_MAXIFY_iB4000_slots[] = {
+ { "Auto", N_ ("Cassette (Auto)"), 0xd },
+ { "Cassette1", N_ ("Cassette 1"), 0x8 },
+ { "Cassette2", N_ ("Cassette 2"), 0x9 },
+};
+DECLARE_SLOTS(canon_MAXIFY_iB4000);
+
/* media types */
typedef struct {
@@ -376,6 +383,25 @@ static const canon_paper_t canon_PIXMA_iP3100_papers[] = {
};
DECLARE_PAPERS(canon_PIXMA_iP3100);
+static const canon_paper_t canon_MULTIPASS_MP900_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+/* { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* untested */
+};
+DECLARE_PAPERS(canon_MULTIPASS_MP900);
+
static const canon_paper_t canon_PIXMA_iP4100_papers[] = {
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
{ "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
@@ -992,6 +1018,28 @@ static const canon_paper_t canon_PIXMA_iP7100_papers[] = { /* k_lo
};
DECLARE_PAPERS(canon_PIXMA_iP7100);
+static const canon_paper_t canon_PIXMA_iP7100_limited_papers[] = { /* k_lower_scale *hue_adjustment *sat_adjustment */
+ /* Name Text (c (l (P Density k_upper *lum_adjustment */
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },*/
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x02,0x0d,0x28,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* note: different c,l from usual */
+/* { "FineArtOther", N_ ("Fine Art Other"), 0x02,0x0d,0x29,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* note: different c,l from usual */
+/* { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,1.00, 0.25, 0.500, 0, 0, 0 },*/
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* untested */
+};
+DECLARE_PAPERS(canon_PIXMA_iP7100_limited);
+
static const canon_paper_t canon_PIXMA_iP7500_papers[] = { /* k_lower_scale *hue_adjustment *sat_adjustment */
/* Name Text (c (l (P Density k_upper *lum_adjustment */
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
@@ -1033,6 +1081,25 @@ static const canon_paper_t canon_PIXMA_iP8500_papers[] = {
};
DECLARE_PAPERS(canon_PIXMA_iP8500);
+static const canon_paper_t canon_PIXMA_iP8500_limited_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+/* { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* untested */
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */
+/* { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0.78, 0.25, 0.900, 0, 0, 0 },*/
+/* { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0.78, 0.25, 0.500, 0, 0, 0 },*/
+};
+DECLARE_PAPERS(canon_PIXMA_iP8500_limited);
+
static const canon_paper_t canon_PIXMA_iP9910_papers[] = { /* k_lower_scale *hue_adjustment *sat_adjustment */
/* Name Text (c (l (P Density k_upper *lum_adjustment */
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
@@ -1055,32 +1122,54 @@ static const canon_paper_t canon_PIXMA_iP9910_papers[] = { /* k_lo
};
DECLARE_PAPERS(canon_PIXMA_iP9910);
+static const canon_paper_t canon_PIXMA_iP9910_limited_papers[] = { /* k_lower_scale *hue_adjustment *sat_adjustment */
+ /* Name Text (c (l (P Density k_upper *lum_adjustment */
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x09,0x11,0x25,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* note: different c,l from usual */
+/* { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },*/
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x09,0x0d,0x28,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* note: different c,l from usual */
+/* { "FineArtOther", N_ ("Fine Art Other"), 0x09,0x0d,0x29,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* note: different c,l from usual */
+/* { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,1.00, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },*/
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },
+};
+DECLARE_PAPERS(canon_PIXMA_iP9910_limited);
+
/* PIXMA Pro9000 */
static const canon_paper_t canon_PIXMA_Pro9000_papers[] = {
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
- { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 },/*PPsuper*/
- { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x0b,0x11,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGgold*/
- { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/*PPgloss*/
- { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },
- { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 },/*PPpro*/
- { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x09,0x0d,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGpro*/
- { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x09,0x11,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGproPlat*/
- { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },
- { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },
- { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },
- { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 },
- { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 },*/ /*PPsuper*/
+/* { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x0b,0x11,0x32,0.78, 0.25, 0.500, 0, 0, 0 },*/ /*PPGgold*/
+/* { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },*/ /*PPgloss*/
+/* { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 },*/ /*PPpro*/
+/* { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x09,0x0d,0x34,0.78, 0.25, 0.500, 0, 0, 0 },*/ /*PPGpro*/
+/* { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x09,0x11,0x33,0.78, 0.25, 0.500, 0, 0, 0 },*/ /*PPGproPlat*/
+/* { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0.78, 0.25, 0.500, 0, 0, 0 },*/
{ "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },
{ "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },
- { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },
- { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x20,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different c,l from usual */
+/* { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x20,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* note: different c,l from usual */
/* special papers */
- { "Boardpaper", N_ ("Board Paper"), 0x18,0x1d,0x2e,0.78, 0.25, 0.500, 0, 0, 0 },
- { "Canvas", N_ ("Canvas"), 0x19,0x1e,0x2d,0.78, 0.25, 0.500, 0, 0, 0 },
- { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 },
- { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x1b,0x29,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different from usual 13,1b,29 */
- { "FineArtPremiumMatte",N_ ("Fine Art Premium Matte"), 0x15,0x1a,0x2c,0.78, 0.25, 0.500, 0, 0, 0 },
- { "FineArtMuseumEtching",N_ ("Fine Art Museum Etching"), 0x14,0x19,0x31,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "Boardpaper", N_ ("Board Paper"), 0x18,0x1d,0x2e,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "Canvas", N_ ("Canvas"), 0x19,0x1e,0x2d,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x1b,0x29,0.78, 0.25, 0.500, 0, 0, 0 },*/ /* note: different from usual 13,1b,29 */
+/* { "FineArtPremiumMatte",N_ ("Fine Art Premium Matte"), 0x15,0x1a,0x2c,0.78, 0.25, 0.500, 0, 0, 0 },*/
+/* { "FineArtMuseumEtching",N_ ("Fine Art Museum Etching"), 0x14,0x19,0x31,0.78, 0.25, 0.500, 0, 0, 0 },*/
};
DECLARE_PAPERS(canon_PIXMA_Pro9000);
@@ -1094,7 +1183,7 @@ static const canon_paper_t canon_PIXMA_Pro9000mk2_papers[] = {
{ "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGproPlat*/
{ "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },
{ "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },
- { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },
+/* { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },*/
{ "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 },
{ "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0.78, 0.25, 0.500, 0, 0, 0 },
{ "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },
@@ -1902,19 +1991,19 @@ DECLARE_PAPERS(canon_MULTIPASS_MP990);
static const canon_paper_t canon_PIXMA_MG2400_papers[] = {
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */
{ "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
- { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */
- { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: PPproLuster*/
- { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */
+ { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
+ { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: PPproLuster*/
+ { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
{ "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* glossy */
- { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */
- { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed */
- { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: all hagaki */
- { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: inkjet hagaki */
- { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: Canon photo hagaki*/
- { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: hagaki*/
- { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: T-shirt */
+ { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
+ { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
+ { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: all hagaki */
+ { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: inkjet hagaki */
+ { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: Canon photo hagaki */
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: hagaki */
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: T-shirt */
{ "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */
- { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* uncomfirmed: PP other */
+ { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: PP other */
};
DECLARE_PAPERS(canon_PIXMA_MG2400);
@@ -1938,6 +2027,25 @@ static const canon_paper_t canon_PIXMA_MG3200_papers[] = {
};
DECLARE_PAPERS(canon_PIXMA_MG3200);
+static const canon_paper_t canon_PIXMA_P200_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+};
+DECLARE_PAPERS(canon_PIXMA_P200);
+
static const canon_paper_t canon_PIXMA_MG5100_papers[] = {
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
{ "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
@@ -2045,6 +2153,25 @@ static const canon_paper_t canon_PIXMA_MG6300_papers[] = {
DECLARE_PAPERS(canon_PIXMA_MG6300);
/* new paper type from February 2014 */
+static const canon_paper_t canon_PIXMA_MG2900_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
+ { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
+ { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: PPproLuster*/
+ { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
+ { "GlossyPaperStandard", N_ ("Standard Glossy Photo Paper"), 0x05,0x05,0x44,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */
+ { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
+ { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */
+ { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: all hagaki */
+ { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: inkjet hagaki */
+ { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: Canon photo hagaki */
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: hagaki */
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: T-shirt */
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */
+ { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: PP other */
+};
+DECLARE_PAPERS(canon_PIXMA_MG2900);
+
static const canon_paper_t canon_PIXMA_iP8700_papers[] = {
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
{ "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
@@ -2068,6 +2195,44 @@ static const canon_paper_t canon_PIXMA_iP8700_papers[] = {
};
DECLARE_PAPERS(canon_PIXMA_iP8700);
+static const canon_paper_t canon_MULTIPASS_E400_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "GlossyPaperStandard", N_ ("Standard Glossy Photo Paper"), 0x05,0x05,0x44,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/
+};
+DECLARE_PAPERS(canon_MULTIPASS_E400);
+
+static const canon_paper_t canon_MULTIPASS_E480_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
+ { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/* PPproLuster */
+ { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "GlossyPaperStandard", N_ ("Standard Glossy Photo Paper"), 0x05,0x05,0x44,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */
+ { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: all hagaki */
+ { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: inkjet hagaki */
+ { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: Inkjet photo hagaki */
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: hagaki */
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: T-shirt */
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */
+ { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */
+};
+DECLARE_PAPERS(canon_MULTIPASS_E480);
+
static const canon_paper_t canon_PIXMA_iX6800_papers[] = {
{ "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
{ "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
@@ -2087,4 +2252,42 @@ static const canon_paper_t canon_PIXMA_iX6800_papers[] = {
};
DECLARE_PAPERS(canon_PIXMA_iX6800);
+static const canon_paper_t canon_PIXMA_iP110_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
+ { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+ { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+ { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+ { "GlossyPaperStandard", N_ ("Standard Glossy Photo Paper"), 0x05,0x05,0x44,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+ { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x09,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* note Esc (l different */
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+};
+DECLARE_PAPERS(canon_PIXMA_iP110);
+
+static const canon_paper_t canon_MAXIFY_iB4000_papers[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */
+ { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+ { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "GlossyPaperStandard", N_ ("Standard Glossy Photo Paper"), 0x05,0x05,0x44,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */
+ { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+ { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },
+ { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */
+};
+DECLARE_PAPERS(canon_MAXIFY_iB4000);
+
#endif
diff --git a/src/main/canon-modes.h b/src/main/canon-modes.h
index b3f0ef1..653cb43 100644
--- a/src/main/canon-modes.h
+++ b/src/main/canon-modes.h
@@ -628,121 +628,129 @@ DECLARE_MODES(canon_BJC_i900,1);
/* inkjetHagaki, Hagaki and CD from 950i */
static const canon_mode_t canon_BJC_i950_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI MEDIUM"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI MEDIUM"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/ /* untested */
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO LOW"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/HiRes/PhotoFilm"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO DRAFT HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/HiRes/PhotoFilm"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO DRAFT HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* inkjet Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* CD */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo5",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft5",N_("600x600 DPI CD DRAFT"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,0},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo5",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft5",N_("600x600 DPI CD DRAFT"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,0},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI LOW Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI LOW Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},*/
/* T-Shirt --- same as plain std */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Env/Hagaki --- same as plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI STD Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI STD Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/ /* untested */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI LOW Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_std5",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono4",N_("600x600 DPI MONO LOW Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono5",N_("600x600 DPI MONO DRAFT Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
};
-DECLARE_MODES(canon_BJC_i950,2);
+DECLARE_MODES(canon_BJC_i950,1);
/* inkjetHagaki, Hagaki and CD from 960i */
static const canon_mode_t canon_BJC_i960_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH (duplex)"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI MEDIUM"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH (duplex)"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI MEDIUM"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/ /* untested */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO LOW"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo5",N_("600x600 DPI PHOTO DRAFT HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo5",N_("600x600 DPI PHOTO DRAFT HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* inkjet Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* CD */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI LOW Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},/*untested*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI LOW Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},*/ /*untested*/
/* T-Shirt --- same as plain std */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Env/Hagaki --- same as plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI MEDIUM Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI STD Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI MEDIUM Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI STD Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/ /* untested */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_std5",N_("600x600 DPI LOW Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft5",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
-
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono4",N_("600x600 DPI MONO LOW Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono5",N_("600x600 DPI MONO DRAFT Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
};
-DECLARE_MODES(canon_BJC_i960,2);
+DECLARE_MODES(canon_BJC_i960,1);
/* inkjetHagaki and Hagaki from 990i */
static const canon_mode_t canon_BJC_i990_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH (duplex)"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI MEDIUM"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH (duplex)"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI MEDIUM"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO LOW"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes --- many use R ink which is not yet supported */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI PHOTO MEDIUM HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO HiRes/other"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT gloss"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI PHOTO MEDIUM HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO HiRes/other"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT gloss"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* inkjet Hagaki --- high mode uses unsupported R ink */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* CD */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* T-Shirt --- same as plain std */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Env/Hagaki --- same as plain modes: but no special duplex modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft5",N_("600x600 DPI LOW Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono4",N_("600x600 DPI MONO LOW Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono5",N_("600x600 DPI MONO DRAFT Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
};
-DECLARE_MODES(canon_BJC_i990,2);
+DECLARE_MODES(canon_BJC_i990,1);
/* inkjetHagaki and Hagaki from 6100i */
static const canon_mode_t canon_BJC_i6100_modes[] = {
@@ -776,31 +784,34 @@ DECLARE_MODES(canon_BJC_i6100,2);
/* inkjetHagaki and Hagaki from 9100i */
static const canon_mode_t canon_BJC_i9100_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C5M5Y5K9c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C5M5Y5K9c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI LOW"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
- { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH pro/plusGlossy"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/gloss/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo2",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo",N_("600x600 DPI PHOTO matte/gloss/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH pro/plusGlossy"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/gloss/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo2",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo",N_("600x600 DPI PHOTO matte/gloss/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* inkjet Hagaki */
- { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT inkjet Hagaki"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/ /* untested */
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},*/
/* T-Shirt */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Env/Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C5M5Y5K9c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C5M5Y5K9c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
};
@@ -808,31 +819,34 @@ DECLARE_MODES(canon_BJC_i9100,1);
static const canon_mode_t canon_BJC_i9900_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI MEDIUM"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI MEDIUM"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO LOW"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes --- many use R, G inks which are not yet supported */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH HiRes"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI PHOTO MEDIUM HiRes"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO HiRes/other"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT gloss/plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH HiRes"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI PHOTO MEDIUM HiRes"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO HiRes/other"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT gloss/plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* inkjet Hagaki --- high mode uses unsupported R,G inks */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI inkjet Hagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI inkjet Hagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* CD */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* T-Shirt --- same as plain std */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Env/Hagaki --- same as plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft5",N_("600x600 DPI LOW Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono4",N_("600x600 DPI MONO LOW Env/Hagaki"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
@@ -973,6 +987,9 @@ DECLARE_MODES(canon_BJC_S520,2);
static const canon_mode_t canon_BJC_S600_modes[] = {
/* plain modes */
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},
{ 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
{ 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
@@ -1027,87 +1044,96 @@ DECLARE_MODES(canon_BJC_S750,1);
static const canon_mode_t canon_BJC_S800_modes[] = {
/* plain modes --- also for Env/Hagaki */
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH 2"),INKSET(9_C9M9Y9K9c9m9),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(4_C2M2Y2K2),16,0,NULL,1.0,1.0,NULL,NULL,NULL,0},/* 1bpp */
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_highmono2",N_("600x600 DPI HIGH MONO 2"),INKSET(9_K9),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_K,"600x600dpi_highmono",N_("600x600 DPI HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_K,"600x600dpi_highmono",N_("600x600 DPI HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(1_K2),16,0,NULL,1.0,1.0,NULL,NULL,NULL,0},/* 1bpp */
/* photo modes */
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO HIGHEST pro/other"),INKSET(9_C9M9Y9K9c9m9),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST matte/gloss/HiRes/PhotoCard/"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST matte/gloss/HiRes/PhotoCard/"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH plusGlossy/PhotoFilm"),INKSET(9_C9M9Y9K9c9m9),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH pro/matte/gloss/HiRes/PhotoCard/other"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/gloss/HiRes/PhotoCard"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO other"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH pro/matte/gloss/HiRes/PhotoCard/other"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/gloss/HiRes/PhotoCard"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO other"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT other"),INKSET(4_C2M2Y2K2),16,0,NULL,1.0,1.0,NULL,NULL,NULL,0},/* 1bpp */
/* mono photo modes for PPother only --- manual feed preferred in Windows driver */
{ 600, 600,CANON_INK_K,"600x600dpi_photomonohigh2",N_("600x600 DPI PHOTO HIGHEST MONO other"),INKSET(9_K9),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_K,"600x600dpi_photomonohigh",N_("600x600 DPI PHOTO HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_K,"600x600dpi_photomono",N_("600x600 DPI PHOTO MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_K,"600x600dpi_photomonohigh",N_("600x600 DPI PHOTO HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_K,"600x600dpi_photomono",N_("600x600 DPI PHOTO MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_K,"600x600dpi_photomonodraft",N_("600x600 DPI PHOTO MONO DRAFT"),INKSET(1_K2),16,0,NULL,1.0,1.0,NULL,NULL,NULL,0},/* 1bpp */
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},*/
/* T-Shirt */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
};
-DECLARE_MODES(canon_BJC_S800,2);
+DECLARE_MODES(canon_BJC_S800,1);
/* Windows driver shows fewer modes than S800, but it could be they exist */
/* modes present in S800 but not accessible in Windows driver for S820 are marked as untested */
static const canon_mode_t canon_BJC_S820_modes[] = {
/* plain modes --- also for Env/Hagaki */
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH 2"),INKSET(9_C9M9Y9K9c9m9),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},/* untested */
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/ /* untested */
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_highmono2",N_("600x600 DPI HIGH MONO 2"),INKSET(9_K9),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},/* untested */
- { 600, 600,CANON_INK_K,"600x600dpi_highmono",N_("600x600 DPI HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},/* untested */
- { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+/* { 600, 600,CANON_INK_K,"600x600dpi_highmono",N_("600x600 DPI HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},*/ /* untested */
+/* { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/ /* untested */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO HIGHEST pro/other"),INKSET(9_C9M9Y9K9c9m9),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST matte/gloss/HiRes/PhotoCard/"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST matte/gloss/HiRes/PhotoCard/"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH plusGlossy/PhotoFilm"),INKSET(9_C9M9Y9K9c9m9),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH pro/matte/gloss/HiRes/PhotoCard/other"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/gloss/HiRes/PhotoCard"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO other"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH pro/matte/gloss/HiRes/PhotoCard/other"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/gloss/HiRes/PhotoCard"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO other"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/ /* untested */
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},*/
/* T-Shirt */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
};
-DECLARE_MODES(canon_BJC_S820,2);
+DECLARE_MODES(canon_BJC_S820,1);
static const canon_mode_t canon_BJC_S900_modes[] = {
/* plain modes --- also for Env/Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH 2"),INKSET(9_C5M5Y5K9c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ { 1200,1200,CANON_INK_CMYK,"1200x1200dpi_legacy",N_("1200x1200 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_legacy",N_("600x600 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ { 300, 300,CANON_INK_CMYK,"300x300dpi_legacy",N_("300x300 DPI (legacy)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH 2"),INKSET(9_C5M5Y5K9c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_highmono2",N_("600x600 DPI HIGH MONO 2"),INKSET(9_K9),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},/* untested */
- { 600, 600,CANON_INK_K,"600x600dpi_highmono",N_("600x600 DPI HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},/* untested */
- { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+/* { 600, 600,CANON_INK_K,"600x600dpi_highmono",N_("600x600 DPI HIGH MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},*/ /* untested */
+/* { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(9_K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/ /* untested */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh5",N_("600x600 DPI PHOTO HIGHEST pro"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO HIGHEST HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGH plusGlossy"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/gloss/PhotoFilm"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH pro/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/gloss/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO DRAFT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh5",N_("600x600 DPI PHOTO HIGHEST pro"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO HIGHEST HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGH plusGlossy"),INKSET(9_C5M5Y5K5c9m9_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/gloss/PhotoFilm"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH pro/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/gloss/HiRes"),INKSET(9_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO DRAFT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/ /* untested */
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,0},*/
/* T-Shirt */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K5_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
};
DECLARE_MODES(canon_BJC_S900,1);
@@ -1201,6 +1227,33 @@ static const canon_mode_t canon_PIXMA_iP100_modes[] = {
};
DECLARE_MODES(canon_PIXMA_iP100,2);
+/* simpler compared to iP110, in fact commands in line with other normal-sized PIXMA devices */
+/* no Esc (S command */
+/* 2 ink carts: (1) CMYk (2) pigment black K */
+/* special inksaving options to save ink and/or use only remaining ink: */
+/* (not exclusive): black-saving mode, composite black, black-saving + composite black both active */
+static const canon_mode_t canon_PIXMA_iP110_modes[] = {
+ /* plain modes */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH MONO"),INKSET(11_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},/* color untested */
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(11_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(11_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(11_C2M2Y2K2),8,MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(11_C2M2Y2K2),8,MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},/* untested */
+ /* photo modes CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST (Plus Glossy II)"),INKSET(11_C9M9Y4k6),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(11_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO (Matte/HiRes)"),INKSET(11_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(11_C5M5Y3k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* TST - copied from iP100 */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ /* Env/Hagaki */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_high4",N_("600x600 DPI HIGH (Env/Hagaki)"),INKSET(11_C6M6Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH MONO (Env/Hagaki)"),INKSET(11_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},/* color untested */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI (Env/Hagaki)"),INKSET(11_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+};
+DECLARE_MODES(canon_PIXMA_iP110,2);
+
/* testing */
static const canon_mode_t canon_PIXMA_iP1000_modes[] = {
{ 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH 2"),INKSET(9_C4M4Y4K2),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
@@ -1640,6 +1693,67 @@ static const canon_mode_t canon_PIXMA_iP6700_modes[] = {
};
DECLARE_MODES(canon_PIXMA_iP6700,1);
+/* ------------------------------Start of MP series------------------------------ */
+
+/* MP5, MP10 */
+static const canon_mode_t canon_PIXMA_MP5_modes[] = {
+ /* plain modes */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C4M4Y4K3),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_MP360,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C3M3Y2K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(4_C2M2Y2K2),16,0,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(4_C2M2Y2K2),16,0,NULL,1.0,1.0,NULL,NULL,NULL,0},
+ /* photo modes */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST Gloss"),INKSET(9_C7M7Y7K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH Pro,Super,Matte,HiRes,GlossyFilm"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO High Gloss"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO Matte,HiRes,GlossyFilm"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO Pro,Super,Gloss"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+ /* inkjet Kansei Hagaki */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO HIGH inkjet Hagaki"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI PHOTO inkjet Hagaki"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Transparency */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_ohphigh",N_("600x600 DPI HIGH Transparency"),INKSET(9_C4M4Y4K3),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_MP360,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_ohp",N_("600x600 DPI Transparency"),INKSET(9_C3M3Y2K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* T-shirt */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C5M5Y5K2plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Env/Hagaki */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C4M4Y4K3),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_MP360,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(9_C3M3Y2K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_K,"600x600dpi_stdmono2",N_("600x600 DPI MONO Env/Hagaki"),INKSET(9_C4M4Y4K3),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_MP360,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(9_C3M3Y2K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+};
+DECLARE_MODES(canon_PIXMA_MP5,1);
+
+/* MP55 */
+static const canon_mode_t canon_PIXMA_MP55_modes[] = {
+ /* plain modes */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_medium",N_("600x600 MEDIUM DPI"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,1},/* untested */
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,0},
+ /* photo modes */
+ { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST Gloss"),INKSET(9_C4M4Y4K2c4m4y4plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH Pro,Super,GlossyFilm"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH Matte,Gloss,HiRes"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO Pro,Super,GlossyFilm"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO Matte,Gloss,HiRes"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT HiRes"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* inkjet Kansei Hagaki Note: has monochrome */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO HIGH inkjet Hagaki"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI PHOTO inkjet Hagaki"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* Transparency */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_ohphigh",N_("600x600 DPI HIGH Transparency"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_ohp",N_("600x600 DPI Transparency"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* T-shirt */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Env/Hagaki */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C4M4Y4K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+};
+DECLARE_MODES(canon_PIXMA_MP55,2);
+
static const canon_mode_t canon_MULTIPASS_MP150_modes[] = {
/* plain modes */
{ 600, 600,CANON_INK_CcMmYyK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y4K2c4m4y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* subtract 0x60 from cmy */
@@ -2007,6 +2121,23 @@ static const canon_mode_t canon_MULTIPASS_MX420_modes[] = {
};
DECLARE_MODES(canon_MULTIPASS_MX420,1);
+/* same as MX420, but try to use inktypes to control use of inks in inkets */
+static const canon_mode_t canon_MULTIPASS_MX470_modes[] = {
+ /* plain modes - borderless uses CMY */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI HIGH (COLOR-ONLY)"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* Photo modes */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST proPlat"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH / T-SHIRT"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Env/Hagaki modes - borderless uses CMY */
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+};
+DECLARE_MODES(canon_MULTIPASS_MX470,1);
+
static const canon_mode_t canon_MULTIPASS_MX510_modes[] = {
/* plain modes --- try to use based on inkset definitions */
{ 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3},
@@ -2534,36 +2665,36 @@ DECLARE_MODES(canon_MULTIPASS_MP710,1);
static const canon_mode_t canon_MULTIPASS_MP900_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* mono */
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO LOW"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO / DRAFT PHOTO HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro/HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO / DRAFT PHOTO HiRes"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* inkjet Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(9_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* CD */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft4",N_("600x600 DPI DRAFT CD"),INKSET(9_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Transparency"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* T-Shirt --- same as plain std */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Env/Hagaki --- same as plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(9_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(9_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono4",N_("600x600 DPI MONO Env/Hagaki"),INKSET(9_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
};
-DECLARE_MODES(canon_MULTIPASS_MP900,1);
+DECLARE_MODES(canon_MULTIPASS_MP900,0);
static const canon_mode_t canon_PIXMA_iP2700_modes[] = {
/* plain modes */
@@ -2718,6 +2849,22 @@ static const canon_mode_t canon_MULTIPASS_MX7600_modes[] = {
};
DECLARE_MODES(canon_MULTIPASS_MX7600,1);
+static const canon_mode_t canon_MULTIPASS_E480_modes[] = {
+ /* plain modes */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(7_K3C4M4Y3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_high2",N_("600x600 DPI HIGH (COLOR-ONLY)"),INKSET(7_K2C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(7_K2C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(7_K2C2M2Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* photo modes */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST plus Glossy II"),INKSET(7_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, /* CMYcmy, cmy less 0x60 */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(7_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(7_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Env/Hagaki */
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH (Env/Hagaki)"),INKSET(7_K2C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI (Env/Hagaki)"),INKSET(7_K2C3M3Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+};
+DECLARE_MODES(canon_MULTIPASS_E480,1);
+
static const canon_mode_t canon_MULTIPASS_E500_modes[] = {
/* plain modes */
{ 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3},
@@ -2736,6 +2883,34 @@ static const canon_mode_t canon_MULTIPASS_E500_modes[] = {
};
DECLARE_MODES(canon_MULTIPASS_E500,2);
+static const canon_mode_t canon_MULTIPASS_E560_modes[] = {
+ /* plain modes */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH DUPLEX / COLOR-ONLY"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* photo modes */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST proPlat"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, /* CMYcmy, cmy less 0x60 */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH / T-SHIRT"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Env/Hagaki */
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,2},
+};
+DECLARE_MODES(canon_MULTIPASS_E560,2);
+
+static const canon_mode_t canon_PIXMA_P200_modes[] = {
+ /* plain modes, also for Env/Hagaki */
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_COLOR|MODE_FLAG_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* photo modes */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST plus Glossy II"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4}, /* CMYcmy, cmy less 0x60 */
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
+};
+DECLARE_MODES(canon_PIXMA_P200,1);
+
static const canon_mode_t canon_PIXMA_iP4500_modes[] = {
/* plain modes -- duplex same (except no mono) */
{ 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C6M6Y4K2y4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
@@ -3170,6 +3345,25 @@ static const canon_mode_t canon_PIXMA_iX5000_modes[] = {
};
DECLARE_MODES(canon_PIXMA_iX5000,1);
+static const canon_mode_t canon_PIXMA_iX6800_modes[] = {
+ /* plain */
+ { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C6M6Y4K3k4_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_CMYK|CANON_INK_K,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ { 300, 300,CANON_INK_CMYK|CANON_INK_K,"300x300dpi_draft",N_("300x300 DPI DRAFT"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0}, /* untested */
+ /* photo CMYKk */
+ { 600, 600,CANON_INK_CMYKk,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH / T-Shirt"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYKk,"600x600dpi_photo2",N_("600x600 DPI PHOTO Matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYKk,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Inkjet Hagaki*/
+ { 600, 600,CANON_INK_CMYKk,"600x600dpi_photohigh2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYKk,"600x600dpi_photo3",N_("600x600 DPI Env/Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Env/Hagaki */
+ { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_high2",N_("600x600 DPI"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_std2",N_("600x600 DPI"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+};
+DECLARE_MODES(canon_PIXMA_iX6800,1);
+
static const canon_mode_t canon_PIXMA_iX7000_modes[] = {
/* plain */
{ 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C6M6Y4K3k4_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
@@ -3191,88 +3385,88 @@ DECLARE_MODES(canon_PIXMA_iX7000,1);
/* mono uses bw=2 */
static const canon_mode_t canon_PIXMA_Pro9000_modes[] = {
/* Plain Modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH 2"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH 2"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI LOW"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,2},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT 2"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* plain mono */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT 2"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* Photo Modes */
/* highest uses R,G so cannot support */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGH gloss"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH GlossPro/proPlat/pro"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGH gloss"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH GlossPro/proPlat/pro"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* inkjet Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed2",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI inkjet Hagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed2",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI inkjet Hagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* CD */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* photo mono */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonohigh",N_("600x600 DPI PHOTO MONO HIGH / CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonomed",N_("600x600 DPI PHOTO MONO MEDIUM"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomono",N_("600x600 DPI PHOTO MONO / CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonodraft",N_("600x600 DPI PHOTO MONO DRAFT"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- /* Env/Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki 2"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI MONO HIGH Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonohigh",N_("600x600 DPI PHOTO MONO HIGH / CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonomed",N_("600x600 DPI PHOTO MONO MEDIUM"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomono",N_("600x600 DPI PHOTO MONO / CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonodraft",N_("600x600 DPI PHOTO MONO DRAFT"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+ /* Env/Hagaki */
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki 2"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI MONO HIGH Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* T-shirt */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* board, canvas, FineArt, Museum Etching */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh5",N_("600x600 DPI Board/Canvas/FineArt/Museum"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh5",N_("600x600 DPI Board/Canvas/FineArt/Museum"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
};
-DECLARE_MODES(canon_PIXMA_Pro9000,1);
+DECLARE_MODES(canon_PIXMA_Pro9000,0);
/* all use normal BJ format and ink codes */
/* mono uses bw=2 */
static const canon_mode_t canon_PIXMA_Pro9000mk2_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT 2"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* plain mono modes */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT 2"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes --- highest use RGH so cannot support yet */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH gloss"),INKSET(11_C6M6Y6K6c16m16_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI PHOTO MEDIUM pro/proPlat/"),INKSET(11_C6M6Y6K6c16m16_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO gloss"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH gloss"),INKSET(11_C6M6Y6K6c16m16_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomed",N_("600x600 DPI PHOTO MEDIUM pro/proPlat/"),INKSET(11_C6M6Y6K6c16m16_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO gloss"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* inkjet Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(11_C6M6Y6K6c16m16_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(11_C6M6Y6K6c16m16_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjet Hagaki"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* CD */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH CD"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo4",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* photo mono */
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonohigh",N_("600x600 DPI PHOTO MONO HIGH / CD"),INKSET(11_C16M16Y16K16c16m16),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonomed",N_("600x600 DPI PHOTO MONO MEDIUM"),INKSET(11_C16M16Y16K16c16m16),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomono",N_("600x600 DPI PHOTO MONO / CD"),INKSET(11_C16M16Y16K16c16m16),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
{ 600, 600,CANON_INK_CcMmYK,"600x600dpi_photomonodraft",N_("600x600 DPI PHOTO MONO DRAFT"),INKSET(11_C16M16Y16K16c16m16),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* Env/Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI MONO HIGH Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI MONO HIGH Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* T-Shirt */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* board, canvas, FineArt, Museum Etching */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh5",N_("600x600 DPI Board/Canvas/FineArt/Museum"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh5",N_("600x600 DPI Board/Canvas/FineArt/Museum"),INKSET(11_C6M6Y6K6c6m6_c),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
};
-DECLARE_MODES(canon_PIXMA_Pro9000mk2,1);
+DECLARE_MODES(canon_PIXMA_Pro9000mk2,0);
/* all modes use normal BJ ink and format codes */
/* However, most modes use RGH inks as well as CMYKcmyk, and so cannot be currently supported */
@@ -3285,16 +3479,16 @@ static const canon_mode_t canon_PIXMA_Pro9500_modes[] = {
/* plain mono: these modes use CMYK inks also */
/* used for plain, hagaki */
/* bw=2 */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono2",N_("600x600 DPI MONO PLAIN/Hagaki HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO Hagaki STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO PLAIN STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono2",N_("600x600 DPI MONO PLAIN/Hagaki HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO Hagaki STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO PLAIN STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT2"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},/*untested*/
/* Photo modes: only mono using CMYK-only can be supported currently */
/* this has k instead of K --- also CD */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_photomono",N_("600x600 DPI MONO PHOTO / CD"),INKSET(11_C16M16Y16k16),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},
};
-DECLARE_MODES(canon_PIXMA_Pro9500,1);
+DECLARE_MODES(canon_PIXMA_Pro9500,0);
/* all modes use normal BJ ink and format codes */
/* However, most modes use RGH inks as well as CMYKcmyk, and so cannot be currently supported */
@@ -3306,46 +3500,46 @@ static const canon_mode_t canon_PIXMA_Pro9500mk2_modes[] = {
/* plain mono: these modes use CMYK inks also */
/* used for plain, hagaki */
/* bw=2 */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono2",N_("600x600 DPI MONO PLAIN/Hagaki HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO Hagaki STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO PLAIN STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono2",N_("600x600 DPI MONO PLAIN/Hagaki HIGH"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_highmono",N_("600x600 DPI MONO Hagaki STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_mono",N_("600x600 DPI MONO PLAIN STD"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draftmono2",N_("600x600 DPI MONO DRAFT2"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* Photo modes: only mono using CMYK-only can be supported currently */
/* this has k instead of K --- also CD */
{ 600, 600,CANON_INK_CMYK,"600x600dpi_photomono",N_("600x600 DPI MONO PHOTO / CD"),INKSET(11_C16M16Y16k16),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,4},
};
-DECLARE_MODES(canon_PIXMA_Pro9500mk2,1);
+DECLARE_MODES(canon_PIXMA_Pro9500mk2,0);
/* iP7100 */
/* ESC (r command is 0x64 but another one befor data is sent: ESC (r 0x62 0x0 */
static const canon_mode_t canon_PIXMA_iP7100_modes[] = {
/* plain modes: color */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* Hagaki/Env */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* plain modes: mono */
{ 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO / CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO plusDS/gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO / CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO plusDS/gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* Fine Art*/
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
};
-DECLARE_MODES(canon_PIXMA_iP7100,2);
+DECLARE_MODES(canon_PIXMA_iP7100,0);
static const canon_mode_t canon_PIXMA_iP7200_modes[] = {
/* plain - used for mono also. For duplex use CMYKk */
@@ -3395,136 +3589,160 @@ DECLARE_MODES(canon_PIXMA_iP7500,1);
/* ESC (r command is 0x64 but another one befor data is sent: ESC (r 0x62 0x0 */
static const canon_mode_t canon_PIXMA_iP8100_modes[] = {
/* plain modes: color */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* Hagaki/Env */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* plain modes: mono */
{ 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
/* one mode for PPpro ud1, hi cannot be supported yet as it uses Red ink (R) in addtion to CMYKcm */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO / CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO plusDS/gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO / CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO plusDS/gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* Fine Art*/
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
};
-DECLARE_MODES(canon_PIXMA_iP8100,2);
+DECLARE_MODES(canon_PIXMA_iP8100,0);
/* iP8500 */
/* ESC (r command is 0x64 but another one befor data is sent: ESC (r 0x62 0x0 */
static const canon_mode_t canon_PIXMA_iP8500_modes[] = {
/* plain modes */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* Env/Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* plain modes: mono */
{ 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
/* some modes cannot be supported yet as they use Red (R) and Green (G) ink in addition to CMYKcm */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO HiRes/other"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT plus"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusDS/glossy"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO HiRes/other"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO DRAFT plus"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusDS/glossy"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* CD CMYKcm */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft3",N_("600x600 DPI DRAFT CD"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* Transparency CMYK */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* T-Shirt CMYK */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
};
-DECLARE_MODES(canon_PIXMA_iP8500,2);
+DECLARE_MODES(canon_PIXMA_iP8500,0);
/* iP8600 */
/* ESC (r command is 0x64 but another one befor data is sent: ESC (r 0x62 0x0 */
static const canon_mode_t canon_PIXMA_iP8600_modes[] = {
/* plain modes: color */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* Env/Hagaki */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* plain modes: mono */
{ 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
/* one mode for PPpro ud1, hi, and PPplusGlossy hi cannot be supported yet as it uses Red (R) and Green (G) ink in addition to CMYKcm */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH plusDS/gloss"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro/plusGlossy/matte/HiRes CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO plusDS/gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH plusDS/gloss"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro/plusGlossy/matte/HiRes CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO plusDS/gloss"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* inkjet Hagaki separate out */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjetHagaki"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjetHagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjetHagaki"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjetHagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Fine Art */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+};
+DECLARE_MODES(canon_PIXMA_iP8600,0);
+
+/* for this printer most photo modes have grey (H) ink. */
+/* borderless: plain (qlty 2 only), hagaki (qlty 3 and 2) use std mode with CMYk, those with photo modes unchanged. No env, HiRes, TST for borderless */
+/* Mono modes not yet checked */
+static const canon_mode_t canon_PIXMA_iP8700_modes[] = {
+ /* plain modes --- duplex no mono CMYK */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(30_K3C6M6Y4k4off_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(30_K3C3M3Y2k3off_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(30_K2C2M2Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* Env/Hagaki CMYKk */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* photo modes CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/HiRes/T-shirt"),INKSET(30_M8K8m4k4H8off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(30_M8K8m4k4H8off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO other"),INKSET(30_M6K6m4k4H6off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* CD CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},/*untested*/
+ /* inkjet hagaki CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
};
-DECLARE_MODES(canon_PIXMA_iP8600,2);
+DECLARE_MODES(canon_PIXMA_iP8700,1);
/* iP9910 */
/* ESC (r command before data is sent: ESC (r 0x62 0x0 */
static const canon_mode_t canon_PIXMA_iP9910_modes[] = {
/* plain modes: color */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH (duplex)"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI plain/T-Shirt"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI LOW"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft2",N_("600x600 DPI DRAFT"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* Hagaki/Env */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(11_C6M6Y6K9c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
{ 600, 600,CANON_INK_CMYK,"600x600dpi_draft3",N_("600x600 DPI DRAFT Env/Hagaki"),INKSET(11_C2M2Y2K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* plain modes: mono */
{ 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
{ 600, 600,CANON_INK_K,"600x600dpi_draftmono",N_("600x600 DPI MONO DRAFT"),INKSET(11_K2),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,0},
/* photo modes */
/* one mode for PPpro hi, and PPplusGlossy hi cannot be supported yet as it uses Red (R) and Green (G) ink in addtion to CMYKcm */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH plusDS/gloss"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO pro/plusGlossy/matte/HiRes/other CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO gloss CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH plusDS/gloss"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo",N_("600x600 DPI PHOTO pro"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,3},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO pro/plusGlossy/matte/HiRes/other CD High"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft",N_("600x600 DPI PHOTO gloss CD Draft"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photodraft2",N_("600x600 DPI PHOTO DRAFT plusGlossy"),INKSET(11_C5M5Y5K5c5m5_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
/* inkjet Hagaki separate out */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjetHagaki"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjetHagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH inkjetHagaki"),INKSET(11_C6M6Y6K6c16m16_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photo3",N_("600x600 DPI inkjetHagaki"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
/* Fine Art */
- { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},
+/* { 600, 600,CANON_INK_CcMmYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH FineArt"),INKSET(11_C6M6Y6K6c6m6_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_PRO,NULL,1.0,1.0,NULL,NULL,NULL,4},*/
/* Transparency */
- { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_std4",N_("600x600 DPI Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},*/
+/* { 600, 600,CANON_INK_CMYK,"600x600dpi_draft4",N_("600x600 DPI DRAFT Transparency"),INKSET(11_C6M6Y6K6_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1},*/
};
-DECLARE_MODES(canon_PIXMA_iP9910,2);
+DECLARE_MODES(canon_PIXMA_iP9910,0);
static const canon_mode_t canon_PIXMA_MG2100_modes[] = {
/* plain modes */
@@ -3562,7 +3780,7 @@ static const canon_mode_t canon_PIXMA_MG2400_modes[] = {
{ 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI (incl. T-shirt)"),INKSET(13_C3M3Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
{ 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* Photo modes */
- { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST glossGold"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST Plus Glossy II"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4},
{ 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
/* Env/Hagaki modes */
@@ -3605,16 +3823,14 @@ DECLARE_MODES(canon_PIXMA_MG3100,1);
/* same as MG3100, but try to use inktypes to control use of inks in inkets */
static const canon_mode_t canon_PIXMA_MG3500_modes[] = {
/* plain modes - borderless uses CMY */
- { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX|MODE_FLAG_BLACK|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C4M4Y3K4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high5",N_("600x600 DPI HIGH (duplex)"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
- { 300, 300,CANON_INK_CMY,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ { 300, 300,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,1},
/* Photo modes */
{ 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGHEST proPlat"),INKSET(13_C14M14Y14c14m14y14),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,4},
- { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH / T-Shirt"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_CMY,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
- /* T-Shirt */
- { 600, 600,CANON_INK_CMY,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C4M4Y4),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
/* Env/Hagaki modes - borderless uses CMY */
{ 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_K|CANON_INK_CMY|CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K3),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_BLACK|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2},
@@ -3692,6 +3908,30 @@ static const canon_mode_t canon_PIXMA_MG5300_modes[] = {
};
DECLARE_MODES(canon_PIXMA_MG5300,1);
+static const canon_mode_t canon_PIXMA_MG5400_modes[] = {
+ /* plain modes -- B/W also */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(13_C6M6Y4K3k4_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(13_C3M3Y2K3k3_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Duplex/Env/Hagaki CMYKk */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH duplex/Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI duplex/Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* draft */
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(13_C2M2Y2K2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* photo modes CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* CD CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* inkjet hagaki CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* T-Shirt CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(13_C8M8Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+};
+DECLARE_MODES(canon_PIXMA_MG5400,1);
+
/* borderless: plain (qlty 2 only), hagaki (qlty 3 and 2) use std mode with CMYk, those with photo modes unchanged. No env, HiRes, TST for borderless */
static const canon_mode_t canon_PIXMA_MG5500_modes[] = {
/* plain modes -- B/W also */
@@ -3761,11 +4001,39 @@ static const canon_mode_t canon_PIXMA_MG6200_modes[] = {
DECLARE_MODES(canon_PIXMA_MG6200,1);
/* for this printer most photo modes have grey (H) ink. */
+static const canon_mode_t canon_PIXMA_MG6300_modes[] = {
+ /* plain modes --- duplex no mono CMYK */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(30_K3C6M6Y4k4off_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(30_K3C3M3Y2k3off_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Duplex/Env/Hagaki CMYKk and K */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH duplex/Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI duplex/Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* draft */
+ { 300, 300,CANON_INK_K|CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(30_K2C2M2Y2),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_IP8500,NULL,1.0,1.0,NULL,NULL,NULL,1},
+ /* most photo modes CMYkH */
+ /* photo modes CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH matte/HiRes"),INKSET(30_M8K8m4k4H8off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO matte/HiRes"),INKSET(30_M8K8m4k4H8off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* above also for PPgloss mono only CMYk */
+ /* PPother */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo2",N_("600x600 DPI PHOTO PPother"),INKSET(30_M6K6m4k4H6off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ /* CD CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh3",N_("600x600 DPI HIGH CD"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo3",N_("600x600 DPI CD"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */
+ /* inkjet hagaki CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh4",N_("600x600 DPI HIGH inkjet Hagaki"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI inkjet Hagaki"),INKSET(30_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* T-Shirt CMYk */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(30_M8K8m4k4H8off),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+};
+DECLARE_MODES(canon_PIXMA_MG6300,1);
+
+/* for this printer most photo modes have grey (H) ink. */
/* borderless: plain (qlty 2 only), hagaki (qlty 3 and 2) use std mode with CMYk, those with photo modes unchanged. No env, HiRes, TST for borderless */
static const canon_mode_t canon_PIXMA_MG6500_modes[] = {
/* plain modes --- duplex no mono CMYK */
{ 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(30_K3C6M6Y4k4off_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3},
- { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(30_K3C3M3Y2k3off_c),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2},
/* Duplex/Env/Hagaki CMYKk */
{ 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH duplex/Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
{ 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std2",N_("600x600 DPI duplex/Env/Hagaki"),INKSET(30_K3C3M3Y2k3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
@@ -3834,6 +4102,20 @@ static const canon_mode_t canon_PIXMA_MG8200_modes[] = {
};
DECLARE_MODES(canon_PIXMA_MG8200,1);
+/* MAXIFY models: iB4000, MB2000, MB2300, MB5000, MB5300 */
+static const canon_mode_t canon_MAXIFY_iB4000_modes[] = {
+ /* plain modes, including duplex */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(4_C4M4Y4K4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(4_C3M3Y3K3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ { 600, 600,CANON_INK_K,"600x600dpi_mono",N_("600x600 DPI MONO"),INKSET(4_K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Photo modes, unusually using CMYK */
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH"),INKSET(4_C4M4Y4K4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_CMYK,"600x600dpi_photo",N_("600x600 DPI PHOTO"),INKSET(4_C4M4Y4K4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+ /* Env/Hagaki modes */
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(4_C3M3Y3K3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},
+ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI Env/Hagaki"),INKSET(4_C3M3Y3K3_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},
+};
+DECLARE_MODES(canon_MAXIFY_iB4000,1);
#endif
diff --git a/src/main/canon-printers.h b/src/main/canon-printers.h
index c2f9232..2447c29 100644
--- a/src/main/canon-printers.h
+++ b/src/main/canon-printers.h
@@ -50,6 +50,7 @@ typedef struct canon_caps {
unsigned char ESC_r_arg; /* argument used for the ESC (r command during init */
int ESC_l_len; /* length of ESC (l command, in bytes */
int ESC_P_len; /* length of ESC (P command, in bytes */
+ int CassetteTray_Opts; /* upper/lower cassette tray option */
const char** control_cmdlist;
const canon_modelist_t* modelist;
const canon_paperlist_t* paperlist;
@@ -245,6 +246,12 @@ static const char* control_cmd_PIXMA_MG3500[] = {
NULL
};
+static const char* control_cmd_PIXMA_MG5600[] = {
+/*"SetTime=20060722092503", */ /*what is this for?*/
+ "ForcePMDetection=OFF",
+ NULL
+};
+
static const char iP4500_channel_order[STP_NCOLORS] = {1,2,3,0}; /* CMYK */
static const canon_cap_t canon_model_capabilities[] =
@@ -257,6 +264,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP830_modelist,
&canon_MULTIPASS_MP600_paperlist,
@@ -273,6 +281,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP800_modelist,
&canon_MULTIPASS_MP600_paperlist,
@@ -289,6 +298,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP810_modelist,
&canon_MULTIPASS_MP600_paperlist,
@@ -305,6 +315,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /* features */
&canon_MULTIPASS_MP950_modelist,
&canon_MULTIPASS_MP950_paperlist,
@@ -321,6 +332,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4600_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /* features */
&canon_MULTIPASS_MP960_modelist,
&canon_MULTIPASS_MP960_paperlist,
@@ -337,6 +349,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_P|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP970_modelist,
&canon_MULTIPASS_MP970_paperlist,
@@ -353,6 +366,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4600_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_P|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP980_modelist,
&canon_MULTIPASS_MP980_paperlist,
@@ -369,6 +383,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4600_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP990_modelist,
&canon_MULTIPASS_MP990_paperlist,
@@ -401,6 +416,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD1 | CANON_CAP_rr,0x61,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_S200_modelist,
&canon_BJC_S200_paperlist,
@@ -417,6 +433,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_ackshort,
&canon_BJC_S300_modelist,
&canon_BJC_S300_paperlist,
@@ -433,6 +450,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_S330_modelist,
&canon_BJC_S330_paperlist,
@@ -449,6 +467,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_p,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100,
&canon_BJC_S500_modelist,
&canon_BJC_S300_paperlist,
@@ -465,6 +484,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100,
&canon_BJC_S520_modelist,
&canon_BJC_S520_paperlist,
@@ -481,6 +501,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_p,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100,
&canon_BJC_S600_modelist,
&canon_BJC_S300_paperlist,
@@ -497,6 +518,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i550,
&canon_BJC_S750_modelist,
&canon_BJC_S750_paperlist,
@@ -513,6 +535,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_BJC_S800_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_p,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100,
&canon_BJC_S800_modelist,
&canon_BJC_S800_paperlist,
@@ -529,6 +552,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px|CANON_CAP_rr,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i550,
&canon_BJC_S820_modelist,
&canon_BJC_S800_paperlist,
@@ -545,6 +569,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px|CANON_CAP_rr,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_S820_modelist,
&canon_BJC_S800_paperlist,
@@ -561,6 +586,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px|CANON_CAP_rr,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_S900_modelist,
&canon_BJC_S800_paperlist,
@@ -577,6 +603,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_a,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_30_modelist,
&canon_default_paperlist,
@@ -593,6 +620,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_a,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_85_modelist,
&canon_default_paperlist,
@@ -610,6 +638,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_cart,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_4300_modelist,
&canon_default_paperlist,
@@ -627,6 +656,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_a,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_4400_modelist,
&canon_default_paperlist,
@@ -643,6 +673,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_a | CANON_CAP_cart,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_4550_modelist,
&canon_default_paperlist,
@@ -660,6 +691,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD1 | CANON_CAP_cart,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100,
&canon_BJC_6000_modelist,
&canon_default_paperlist,
@@ -677,6 +709,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD1,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_ackshort,
&canon_BJC_6000_modelist,
&canon_default_paperlist,
@@ -694,6 +727,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD1 | CANON_CAP_cart,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100,
&canon_BJC_6000_modelist,
&canon_default_paperlist,
@@ -710,6 +744,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD1 | CANON_CAP_r,0x61,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_ackshort,
&canon_BJC_8200_modelist,
&canon_default_paperlist,
@@ -734,6 +769,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_210_modelist,
&canon_default_paperlist,
@@ -750,6 +786,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_240_modelist,
&canon_default_paperlist,
@@ -766,6 +803,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_240_modelist,
&canon_default_paperlist,
@@ -782,6 +820,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_a,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_240_modelist,
&canon_default_paperlist,
@@ -798,6 +837,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_a,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_2000_modelist,
&canon_default_paperlist,
@@ -814,6 +854,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* cartridge selection option */
CANON_CAP_STD0 | CANON_CAP_p | CANON_CAP_cart,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100,
&canon_BJC_3000_modelist,
&canon_default_paperlist,
@@ -830,6 +871,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD1 | CANON_CAP_a | CANON_CAP_r,0x61,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_3000_modelist,
&canon_default_paperlist,
@@ -846,6 +888,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD1,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_7000_modelist,
&canon_default_paperlist,
@@ -862,6 +905,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_7100_modelist,
&canon_default_paperlist,
@@ -879,6 +923,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_px|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i50_modelist,
&canon_BJC_i50_paperlist,
@@ -895,6 +940,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i80_modelist,
&canon_BJC_i80_paperlist,
@@ -912,6 +958,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i250_modelist,
&canon_BJC_i250_paperlist,
@@ -928,6 +975,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i320_modelist,
&canon_BJC_i320_paperlist,
@@ -945,6 +993,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i450_modelist,
&canon_BJC_i450_paperlist,
@@ -961,6 +1010,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i455_modelist,
&canon_BJC_i455_paperlist,
@@ -977,6 +1027,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i550,
&canon_BJC_i550_modelist,
&canon_BJC_i550_paperlist,
@@ -993,6 +1044,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i550,
&canon_BJC_i560_modelist,
&canon_BJC_i560_paperlist,
@@ -1009,6 +1061,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i550,
&canon_BJC_i850_modelist,
&canon_BJC_i850_paperlist,
@@ -1025,6 +1078,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_BJC_i860_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_M|CANON_CAP_BORDERLESS,0,/* ESC (M 0x0 0x0 0x0 */
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i550,
&canon_BJC_i860_modelist,
&canon_BJC_i560_paperlist,
@@ -1041,6 +1095,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_M|CANON_CAP_BORDERLESS,0,/* ESC (M 0x0 0x0 0x0 */
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i900_modelist,
&canon_BJC_i560_paperlist,
@@ -1057,6 +1112,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i950_modelist,
&canon_BJC_i950_paperlist,
@@ -1073,6 +1129,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_BJC_i860_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_M|CANON_CAP_BORDERLESS,0,/* ESC (M 0x0 0x0 0x0 */
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i960_modelist,
&canon_BJC_i560_paperlist,
@@ -1089,6 +1146,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_BJC_i860_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_M|CANON_CAP_BORDERLESS,0,/* ESC (M 0x0 0x0 0x0 */
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i990_modelist,
&canon_BJC_i560_paperlist,
@@ -1105,6 +1163,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i6100, /* 32 times 0x0 before form feed not implemented */
&canon_BJC_i6100_modelist,
&canon_BJC_i6100_paperlist,
@@ -1121,6 +1180,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i9100_modelist,
&canon_BJC_i9100_paperlist,
@@ -1137,6 +1197,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_M|CANON_CAP_BORDERLESS,0,/* ESC (M 0x0 0x0 0x0 */
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700,
&canon_BJC_i9900_modelist,
&canon_BJC_i9900_paperlist,
@@ -1158,6 +1219,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300,
&canon_PIXMA_mini220_modelist,
&canon_SELPHY_DS810_paperlist,
@@ -1174,6 +1236,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300,
&canon_PIXMA_mini320_modelist,
&canon_PIXMA_mini320_paperlist,
@@ -1196,6 +1259,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_SELPHY_DS700_modelist,
&canon_SELPHY_DS700_paperlist,
@@ -1212,6 +1276,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_SELPHY_DS810_modelist,
&canon_SELPHY_DS810_paperlist,
@@ -1236,6 +1301,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_3000_modelist,
&canon_default_paperlist,
@@ -1252,6 +1318,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0 | CANON_CAP_a,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_5500_modelist,
&canon_default_paperlist,
@@ -1268,6 +1335,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD1 | CANON_CAP_a,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_3000_modelist,
&canon_default_paperlist,
@@ -1284,6 +1352,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_default_slotlist,
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
NULL,
&canon_BJC_8500_modelist,
&canon_default_paperlist,
@@ -1300,6 +1369,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_NOBLACK|CANON_CAP_S|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iP90_modelist,
&canon_PIXMA_iP90_paperlist,
@@ -1316,6 +1386,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_NOBLACK|CANON_CAP_S|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iP100_modelist,
&canon_PIXMA_iP100_paperlist,
@@ -1325,6 +1396,26 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA iP110 */
+ /* 2 ink carts: (1) CMYK (2) pigment black */
+ /* special inksaving options to save ink and/or use only remaining ink: */
+ /* (not exclusive): black-saving mode, composite black, black-saving + composite black both active */
+ "PIXMA iP110", 3, /*model, model_id*/
+ INCH(17/2), INCH(23), /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP250_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_v|CANON_CAP_BORDERLESS,0,
+ 2,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG3500,
+ &canon_PIXMA_iP110_modelist,
+ &canon_PIXMA_iP110_paperlist,
+ &canon_PIXMA_iP110_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
#if 0
{ /* Canon PIXMA iP1000 */
"PIXMA iP1000", 3, /*model, model_id*/
@@ -1333,6 +1424,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* auto sheet feeder only */
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP1000_modelist,
&canon_PIXMA_iP1000_paperlist,
@@ -1349,6 +1441,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* auto sheet feeder only */
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP1200_modelist,
&canon_PIXMA_iP1200_paperlist,
@@ -1365,6 +1458,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* auto sheet feeder only */
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP1500_modelist,
&canon_PIXMA_iP1500_paperlist,
@@ -1381,6 +1475,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* auto sheet feeder only */
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_MULTIPASS_MP150_modelist,
&canon_PIXMA_iP1500_paperlist,
@@ -1397,6 +1492,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* rear only */
CANON_CAP_STD0|CANON_CAP_P,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP1900_modelist,
&canon_PIXMA_iP1900_paperlist,
@@ -1414,6 +1510,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP2000_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iP2000_modelist,
&canon_PIXMA_iP2000_paperlist,
@@ -1431,6 +1528,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* auto sheet feeder only */
CANON_CAP_STD0,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP1900_modelist,
&canon_PIXMA_iP2200_paperlist,
@@ -1446,6 +1544,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* auto sheet feeder only */
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP1900_modelist,
&canon_PIXMA_iP2200_paperlist,/* OHP experimental */
@@ -1462,6 +1561,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* auto sheet feeder only */
CANON_CAP_STD0,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP1900_modelist,
&canon_PIXMA_iP2600_paperlist,
@@ -1479,6 +1579,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* rear only */
CANON_CAP_STD0|CANON_CAP_P|CANON_CAP_I|CANON_CAP_px|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iP2700_modelist,
&canon_PIXMA_iP2700_paperlist,
@@ -1488,6 +1589,23 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA iP2800 */
+ "PIXMA iP2800", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height */ /* not confirmed yet */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP250_slotlist, /* rear only */
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_v|CANON_CAP_XML,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300, /*features */
+ &canon_PIXMA_MG2400_modelist,
+ &canon_PIXMA_MG2900_paperlist,
+ &canon_PIXMA_MG2900_modeuselist, /* incorporate new media */
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon PIXMA iP3000 */
"PIXMA iP3000", 3, /*model, model_id*/
INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */
@@ -1495,6 +1613,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP3000_modelist,
&canon_PIXMA_iP3000_paperlist,
@@ -1511,6 +1630,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP3100_modelist,
&canon_PIXMA_iP3100_paperlist,
@@ -1527,6 +1647,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3500_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP520_modelist,
&canon_PIXMA_iP3300_paperlist,
@@ -1543,6 +1664,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3500_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP520_modelist,
&canon_MULTIPASS_MP520_paperlist,
@@ -1559,6 +1681,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3600_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_r|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP540_modelist,
&canon_PIXMA_iP3600_paperlist,
@@ -1575,6 +1698,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4000, /*features */
&canon_PIXMA_iP4000_modelist,
&canon_PIXMA_iP4000_paperlist,
@@ -1591,6 +1715,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP4100_modelist,
&canon_PIXMA_iP4100_paperlist,
@@ -1607,6 +1732,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP4200_modelist,
&canon_PIXMA_iP4200_paperlist,
@@ -1623,6 +1749,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP4300_modelist, /* slight differences to iP4200 */
&canon_PIXMA_iP4200_paperlist,
@@ -1639,6 +1766,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4500_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /* features */
&canon_PIXMA_iP4500_modelist,
&canon_PIXMA_iP4500_paperlist,
@@ -1655,6 +1783,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4600_slotlist, /* iP4600 uses ESC (r 0x64 at reset followed by 0x65 later for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_P|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP4600_modelist,
&canon_PIXMA_iP4600_paperlist,
@@ -1671,6 +1800,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4600_slotlist, /* iP4700 uses ESC (r 0x64 at reset followed by 0x65 later for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /* features */
&canon_PIXMA_iP4700_modelist,
&canon_PIXMA_iP4700_paperlist,
@@ -1687,6 +1817,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4600_slotlist, /* iP4800 uses ESC (r 0x64 at reset followed by 0x68 later for CD media only */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /* features */
&canon_PIXMA_iP4700_modelist,/* same for iP4800 */
&canon_PIXMA_iP4700_paperlist,/* same for iP4800 */
@@ -1703,6 +1834,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4600_slotlist, /* iP4900 uses ESC (r 0x68 command for CD tray only */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features Uses ESC (r only for CD media */
&canon_PIXMA_iP4900_modelist,
&canon_PIXMA_MG5200_paperlist,
@@ -1719,6 +1851,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP5000_modelist,
&canon_PIXMA_iP5000_paperlist,
@@ -1735,6 +1868,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP3100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP5300_modelist,
&canon_MULTIPASS_MP600_paperlist,
@@ -1751,6 +1885,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_px|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP6000_modelist,
&canon_PIXMA_iP4000_paperlist,
@@ -1767,6 +1902,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_px|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP6000_modelist,
&canon_PIXMA_iP6100_paperlist,
@@ -1783,6 +1919,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* has ESC (T */
CANON_CAP_STD0|CANON_CAP_T|CANON_CAP_NOBLACK|CANON_CAP_P|CANON_CAP_I|CANON_CAP_px|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iP6210_modelist,
&canon_PIXMA_iP90_paperlist,
@@ -1799,6 +1936,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_P|CANON_CAP_I|CANON_CAP_r|CANON_CAP_px|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP6600_modelist,
&canon_PIXMA_iP6600_paperlist,
@@ -1815,6 +1953,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_P|CANON_CAP_I|CANON_CAP_r|CANON_CAP_px|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP6700_modelist,
&canon_PIXMA_iP6700_paperlist,
@@ -1831,6 +1970,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5400_slotlist, /* iP7200 uses ESC (r 0x68 command for CD tray only */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features Uses ESC (r only for CD media */
&canon_PIXMA_iP7200_modelist,
&canon_PIXMA_MG5400_paperlist,
@@ -1847,6 +1987,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iX4000_modelist,
&canon_PIXMA_iP1500_paperlist,
@@ -1863,6 +2004,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iX5000_modelist,
&canon_PIXMA_iP1500_paperlist,
@@ -1879,6 +2021,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP540_modelist,
&canon_MULTIPASS_MX880_paperlist,
@@ -1888,6 +2031,23 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA iX6800 --- with XML */
+ "PIXMA iX6800", 3, /*model, model_id*/
+ 933, 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP250_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG3500, /*features */
+ &canon_PIXMA_iX6800_modelist,
+ &canon_PIXMA_iX6800_paperlist,
+ &canon_PIXMA_iX6800_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon PIXMA iX7000 --- with XML */
"PIXMA iX7000", 3, /*model, model_id*/
933, INCH(23), /* max paper width and height */ /* from MacOSX driver */
@@ -1895,6 +2055,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iX7000_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_DUPLEX|CANON_CAP_I|CANON_CAP_r|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iX7000_modelist,
&canon_PIXMA_iX7000_paperlist,
@@ -1911,6 +2072,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP520_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP520_modelist,
&canon_MULTIPASS_MP520_paperlist, /* Windows driver lacks PPGgold, but let us try anyway */
@@ -1927,6 +2089,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP520_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP520_modelist,
&canon_MULTIPASS_MP520_paperlist,
@@ -1943,6 +2106,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP530_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_r|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP530_modelist,
&canon_MULTIPASS_MP600_paperlist,
@@ -1959,6 +2123,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_r|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP540_modelist,
&canon_MULTIPASS_MX330_paperlist,
@@ -1975,6 +2140,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_r|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP550_modelist, /* similar to MP540 but fewer modes */
&canon_MULTIPASS_MP250_paperlist,
@@ -1991,6 +2157,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_I|CANON_CAP_r|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP560_modelist, /* like MP550 but has duplex */
&canon_MULTIPASS_MP250_paperlist,
@@ -2007,6 +2174,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MX850_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_P|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP600_modelist,
&canon_MULTIPASS_MP600_paperlist,
@@ -2023,6 +2191,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4500_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP610_modelist,
&canon_MULTIPASS_MP610_paperlist,
@@ -2039,6 +2208,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_r|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP540_modelist,
&canon_MULTIPASS_MX330_paperlist,
@@ -2055,6 +2225,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_r|CANON_CAP_DUPLEX|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP640_modelist,
&canon_MULTIPASS_MP630_paperlist,
@@ -2071,6 +2242,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_DUPLEX|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_r|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_MULTIPASS_MP640_modelist,
&canon_MULTIPASS_MP640_paperlist,
@@ -2089,6 +2261,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,0,
+ 0, /* Upper/Lower Cassette option */
control_cmd_BJC_i550, /*features */
&canon_MULTIPASS_MP700_modelist,
&canon_MULTIPASS_MP700_paperlist,
@@ -2105,6 +2278,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP710_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP710_modelist,
&canon_MULTIPASS_MP710_paperlist,
@@ -2119,8 +2293,9 @@ static const canon_cap_t canon_model_capabilities[] =
INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */
10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
&canon_PIXMA_iP3100_slotlist,
- CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iP4100_modelist,
&canon_MULTIPASS_MP750_paperlist,
@@ -2137,9 +2312,10 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist, /* auto sheetfeeder amd CD tray only */
CANON_CAP_STD0|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP900_modelist,
- &canon_PIXMA_iP3100_paperlist,
+ &canon_MULTIPASS_MP900_paperlist, /* was: &canon_PIXMA_iP3100_paperlist, */
&canon_MULTIPASS_MP900_modeuselist,
NULL,
NULL,
@@ -2153,6 +2329,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_Pro9000_slotlist,
CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_Pro9000_modelist,
&canon_PIXMA_Pro9000_paperlist,
@@ -2169,6 +2346,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_Pro9000_slotlist,
CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_Pro9000mk2_modelist,
&canon_PIXMA_Pro9000mk2_paperlist,
@@ -2185,6 +2363,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_Pro9000_slotlist,
CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_Pro9500_modelist,
&canon_PIXMA_Pro9500_paperlist,
@@ -2201,6 +2380,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_Pro9000_slotlist,
CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_Pro9500mk2_modelist,
&canon_PIXMA_Pro9500mk2_paperlist,
@@ -2217,9 +2397,10 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_I|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP7100_modelist,
- &canon_PIXMA_iP7100_paperlist,
+ &canon_PIXMA_iP7100_limited_paperlist, /* was: &canon_PIXMA_iP7100_paperlist, */
&canon_PIXMA_iP7100_modeuselist,
NULL,
NULL,
@@ -2233,6 +2414,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_I|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP7500_modelist,
&canon_PIXMA_iP7500_paperlist,
@@ -2249,9 +2431,10 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_I|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP8100_modelist,
- &canon_PIXMA_iP7100_paperlist,
+ &canon_PIXMA_iP7100_limited_paperlist, /* was: &canon_PIXMA_iP7100_paperlist,*/
&canon_PIXMA_iP8100_modeuselist,
NULL,
NULL,
@@ -2265,9 +2448,10 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP8500_modelist,
- &canon_PIXMA_iP8500_paperlist,
+ &canon_PIXMA_iP8500_limited_paperlist, /* was: &canon_PIXMA_iP8500_paperlist,*/
&canon_PIXMA_iP8500_modeuselist,
NULL,
NULL,
@@ -2281,15 +2465,33 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_iP4000_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_I|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_P|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features */
&canon_PIXMA_iP8600_modelist,
- &canon_PIXMA_iP7100_paperlist,
+ &canon_PIXMA_iP7100_limited_paperlist, /* was: &canon_PIXMA_iP7100_paperlist,*/
&canon_PIXMA_iP8600_modeuselist,
NULL,
NULL,
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA iP8700 CD-R tray L */
+ "PIXMA iP8700", 3, /*model, model_id*/
+ INCH(17/2), INCH(14), /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_PIXMA_iP8700_slotlist, /* iP7200 uses ESC (r 0x68 command for CD tray only */
+ CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG3500, /* features Uses ESC (r only for CD media */
+ &canon_PIXMA_iP8700_modelist,
+ &canon_PIXMA_iP8700_paperlist,
+ &canon_PIXMA_iP8700_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon PIXMA iP9910 */
"PIXMA iP9910", 3, /*model, model_id*/
933, INCH(23), /* max paper width and height */ /* from MacOSX driver */
@@ -2297,15 +2499,50 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP900_slotlist,
CANON_CAP_STD0|CANON_CAP_I|CANON_CAP_rr|CANON_CAP_px|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_PIXMA_iP9910_modelist,
- &canon_PIXMA_iP9910_paperlist,
+ &canon_PIXMA_iP9910_limited_paperlist, /* was: &canon_PIXMA_iP9910_paperlist,*/
&canon_PIXMA_iP9910_modeuselist,
NULL,
NULL,
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA MP5 */
+ "PIXMA MP5", 3, /*model, model_id*/
+ INCH(17/2), INCH(23), /* max paper width and height */ /* assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
+ 2,0, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_iP2700, /*features */
+ &canon_MULTIPASS_MP150_modelist,
+ &canon_MULTIPASS_MP150_paperlist,
+ &canon_MULTIPASS_MP150_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ NULL /* KYMC */
+ },
+ { /* Canon PIXMA MP55 */
+ "PIXMA MP55", 3, /*model, model_id*/
+ INCH(17/2), INCH(23), /* max paper width and height */ /* assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
+ 2,0, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_BJC_i550, /*features */
+ &canon_MULTIPASS_MP150_modelist,
+ &canon_MULTIPASS_MP150_paperlist,
+ &canon_MULTIPASS_MP150_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ NULL /* KYMC */
+ },
{ /* Canon MULTIPASS MP150 */
"PIXMA MP150", 3, /*model, model_id*/
INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */
@@ -2313,6 +2550,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP150_modelist,
&canon_MULTIPASS_MP150_paperlist,
@@ -2329,6 +2567,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP190_modelist,
&canon_MULTIPASS_MP190_paperlist,
@@ -2345,6 +2584,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP210_modelist,
&canon_MULTIPASS_MP150_paperlist,
@@ -2361,6 +2601,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,2, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP360_modelist,
&canon_MULTIPASS_MP360_paperlist,
@@ -2377,6 +2618,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP150_modelist,
&canon_MULTIPASS_MP150_paperlist,
@@ -2393,6 +2635,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP470_modelist,
&canon_MULTIPASS_MP470_paperlist,
@@ -2409,6 +2652,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP480_modelist,
&canon_MULTIPASS_MP480_paperlist,
@@ -2425,6 +2669,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP490_modelist,
&canon_MULTIPASS_MP493_paperlist,
@@ -2441,6 +2686,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP480_modelist,
&canon_MULTIPASS_MP493_paperlist,
@@ -2457,6 +2703,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP280_modelist,
&canon_MULTIPASS_MP280_paperlist,
@@ -2473,6 +2720,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0, /* borderless not in Windows driver---untested */
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /*features */
&canon_MULTIPASS_MP230_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -2489,6 +2737,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_T|CANON_CAP_BORDERLESS,0,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP240_modelist,
&canon_MULTIPASS_MP240_paperlist,
@@ -2505,6 +2754,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP250_modelist,
&canon_MULTIPASS_MP250_paperlist,
@@ -2521,6 +2771,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP250_modelist,
&canon_MULTIPASS_MP250_paperlist,
@@ -2537,6 +2788,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MP280_modelist,
&canon_MULTIPASS_MP280_paperlist,
@@ -2553,6 +2805,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features Also uses CAP_T */
&canon_PIXMA_MG2100_modelist,
&canon_PIXMA_MG5100_paperlist,
@@ -2569,6 +2822,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features Also uses CAP_T */
&canon_PIXMA_MG2100_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -2585,6 +2839,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_v|CANON_CAP_XML,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features Also uses CAP_T */
&canon_PIXMA_MG2400_modelist,
&canon_PIXMA_MG2400_paperlist,
@@ -2594,6 +2849,23 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA MG2900 */
+ "PIXMA MG2900", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height */ /* not confirmed yet */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP250_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_v|CANON_CAP_XML,0,
+ 2,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300, /* features Also uses CAP_T */
+ &canon_PIXMA_MG2400_modelist,
+ &canon_PIXMA_MG2900_paperlist,
+ &canon_PIXMA_MG2900_modeuselist, /* incorporate new media */
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon PIXMA MG3100 */
"PIXMA MG3100", 3, /*model, model_id*/
INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.60 */
@@ -2601,6 +2873,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features Also uses CAP_T */
&canon_PIXMA_MG3100_modelist,
&canon_PIXMA_MG5100_paperlist,
@@ -2617,6 +2890,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features: also uses CAP_T */
&canon_PIXMA_MG3100_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -2633,6 +2907,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_T|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG3500, /* features: also uses CAP_T */
&canon_PIXMA_MG3500_modelist, /* same as MG3100 but try to use inktypes to control use of inks in inksets */
&canon_PIXMA_MG3200_paperlist, /* Canon Photo Hagaki changed to merely Photo Hagaki in Windows driver */
@@ -2649,6 +2924,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /* features */
&canon_PIXMA_MG5100_modelist,
&canon_PIXMA_MG5100_paperlist,
@@ -2665,6 +2941,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist, /* ESC (r only for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /* features */
&canon_PIXMA_MG5200_modelist,
&canon_PIXMA_MG5200_paperlist,
@@ -2681,6 +2958,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist, /* ESC (r only for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features */
&canon_PIXMA_MG5300_modelist,
&canon_PIXMA_MG5200_paperlist,
@@ -2697,8 +2975,9 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 1, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features */
- &canon_PIXMA_MG5300_modelist,
+ &canon_PIXMA_MG5400_modelist,
&canon_PIXMA_MG5400_paperlist,
&canon_PIXMA_MG5400_modeuselist,
NULL,
@@ -2713,6 +2992,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG3500,
&canon_PIXMA_MG5500_modelist,
&canon_PIXMA_MG3200_paperlist, /* Canon Photo Hagaki changed to merely Photo Hagaki in Windows driver */
@@ -2722,6 +3002,24 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA MG5600 */
+ /* no support for Esc (s and ESC (u commands yet for duplex */
+ "PIXMA MG5600", 3, /*model, model_id*/
+ INCH(17/2), INCH(14), /* max paper width and height */ /* not confirmed yet */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MX7600_slotlist,
+ CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5600,
+ &canon_PIXMA_MG5500_modelist,
+ &canon_MAXIFY_iB4000_paperlist, /* Canon Photo Hagaki changed to merely Photo Hagaki in Windows driver */
+ &canon_PIXMA_MG5600_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon PIXMA MG6100 */
"PIXMA MG6100", 3, /*model, model_id*/
INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.40 */
@@ -2729,6 +3027,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /* features */
&canon_PIXMA_MG6100_modelist,
&canon_PIXMA_MG6100_paperlist,
@@ -2745,6 +3044,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist, /* ESC (r only for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 1, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features */
&canon_PIXMA_MG6200_modelist,
&canon_PIXMA_MG6100_paperlist,
@@ -2761,8 +3061,9 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 1, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features */
- &canon_PIXMA_MG6200_modelist,
+ &canon_PIXMA_MG6300_modelist,
&canon_PIXMA_MG6300_paperlist,
&canon_PIXMA_MG6300_modeuselist,
NULL,
@@ -2777,6 +3078,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 1, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG3500,
&canon_PIXMA_MG6500_modelist,
&canon_PIXMA_MG6300_paperlist,
@@ -2786,6 +3088,40 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA MG6700 */
+ "PIXMA MG6700", 3, /*model, model_id*/
+ INCH(17/2), INCH(14), /* max paper width and height */ /* not confirmed yet */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */
+ CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 1, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG3500,
+ &canon_PIXMA_MG6500_modelist,
+ &canon_PIXMA_iP8700_paperlist,
+ &canon_PIXMA_MG6700_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
+ { /* Canon PIXMA MG7500 */
+ "PIXMA MG7500", 3, /*model, model_id*/
+ INCH(17/2), INCH(14), /* max paper width and height */ /* not confirmed yet */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_PIXMA_MG5400_slotlist, /* ESC (r only for CD media */
+ CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_v|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 1, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5600,
+ &canon_PIXMA_MG6500_modelist,
+ &canon_PIXMA_iP8700_paperlist,
+ &canon_PIXMA_MG6700_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon PIXMA MG8100 */
"PIXMA MG8100", 3, /*model, model_id*/
INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.40 */
@@ -2793,6 +3129,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /* features */
&canon_PIXMA_MG8100_modelist,
&canon_PIXMA_MG6100_paperlist,
@@ -2809,6 +3146,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5200_slotlist, /* ESC (r only for CD media */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_rr|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features */
&canon_PIXMA_MG8200_modelist,
&canon_PIXMA_MG6100_paperlist,
@@ -2826,6 +3164,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
2,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MX300_modelist,
&canon_MULTIPASS_MX300_paperlist,
@@ -2842,6 +3181,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MX330_modelist,
&canon_MULTIPASS_MX330_paperlist,
@@ -2858,6 +3198,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MX340_modelist,
&canon_MULTIPASS_MX340_paperlist,
@@ -2874,6 +3215,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MX360_modelist,
&canon_MULTIPASS_MX360_paperlist,
@@ -2890,6 +3232,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist, /* only front tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,8, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300,
&canon_MULTIPASS_MX370_modelist,
&canon_MULTIPASS_MX420_paperlist,
@@ -2906,6 +3249,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist, /* only front tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300,
&canon_MULTIPASS_MX370_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -2922,6 +3266,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features */
&canon_MULTIPASS_MX420_modelist,
&canon_MULTIPASS_MX420_paperlist,
@@ -2931,6 +3276,40 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon MULTIPASS MX470 --- with XML */
+ "PIXMA MX470", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_PIXMA_MG2100_slotlist, /* only rear tray also uses CAP_T */
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_v|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG3500, /*features */
+ &canon_MULTIPASS_MX470_modelist,
+ &canon_PIXMA_iX6800_paperlist,
+ &canon_MULTIPASS_MX470_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
+ { /* Canon MULTIPASS MX490 --- with XML */
+ "PIXMA MX490", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MX7600_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5600,
+ &canon_MULTIPASS_E480_modelist,
+ &canon_MULTIPASS_E480_paperlist,
+ &canon_MULTIPASS_E480_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon MULTIPASS MX510 --- with XML */
"PIXMA MX510", 3, /*model, model_id*/
INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.70 */
@@ -2938,6 +3317,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist, /* only front tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,8, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300,
&canon_MULTIPASS_MX510_modelist,
&canon_MULTIPASS_MX420_paperlist,
@@ -2954,6 +3334,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist, /* only front tray also uses CAP_T */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300,
&canon_MULTIPASS_MX510_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -2963,6 +3344,23 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon MULTIPASS MX530 --- with XML */
+ "PIXMA MX530", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_PIXMA_MG2100_slotlist, /* only front tray also uses CAP_T */
+ CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG3500,
+ &canon_PIXMA_MG3500_modelist,
+ &canon_PIXMA_iX6800_paperlist,
+ &canon_MULTIPASS_MX530_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon MULTIPASS MX700 */
"PIXMA MX700", 3, /*model, model_id*/
INCH(17/2), INCH(23), /* max paper width and height */ /* from MacOSX driver */
@@ -2970,6 +3368,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MP520_slotlist, /* front, rear, button, and front/plain-only */
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features*/
&canon_MULTIPASS_MP520_modelist,
&canon_MULTIPASS_MX300_paperlist,
@@ -2986,6 +3385,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,8, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /*features*/
&canon_MULTIPASS_MX710_modelist,
&canon_MULTIPASS_MX420_paperlist,
@@ -3002,6 +3402,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MX720_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300,
&canon_PIXMA_MX720_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -3018,6 +3419,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MX850_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features*/
&canon_PIXMA_iP4500_modelist, /* same inksets as iP4500 */
&canon_MULTIPASS_MX850_paperlist,
@@ -3034,6 +3436,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features*/
&canon_MULTIPASS_MX860_modelist,
&canon_MULTIPASS_MX330_paperlist,
@@ -3050,6 +3453,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0x64,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features*/
&canon_MULTIPASS_MX860_modelist,
&canon_MULTIPASS_MX340_paperlist,
@@ -3066,6 +3470,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5100_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP2700, /*features*/
&canon_MULTIPASS_MX880_modelist,
&canon_MULTIPASS_MX880_paperlist,
@@ -3082,6 +3487,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG5400_slotlist, /* iP7200 uses ESC (r 0x68 command for CD tray only */
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /* features Uses ESC (r only for CD media */
&canon_PIXMA_MX920_modelist,
&canon_PIXMA_MG5400_paperlist,
@@ -3098,6 +3504,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_MULTIPASS_MX7600_slotlist,
CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_BORDERLESS,0x64,
3,4, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_iP4200, /*features*/
&canon_MULTIPASS_MX7600_modelist,
&canon_MULTIPASS_MX7600_paperlist,
@@ -3107,6 +3514,57 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon MULTIPASS E400 --- with XML */
+ "PIXMA E400", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP250_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300,
+ &canon_PIXMA_P200_modelist,
+ &canon_MULTIPASS_E400_paperlist,
+ &canon_MULTIPASS_E400_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
+ { /* Canon MULTIPASS E460 --- with XML */
+ "PIXMA E460", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP250_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML,0,
+ 2,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300,
+ &canon_PIXMA_P200_modelist,
+ &canon_MULTIPASS_E400_paperlist,
+ &canon_MULTIPASS_E400_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
+ { /* Canon MULTIPASS E480 --- with XML */
+ "PIXMA E480", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MX7600_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5600,
+ &canon_MULTIPASS_E480_modelist,
+ &canon_MULTIPASS_E480_paperlist,
+ &canon_MULTIPASS_E480_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon MULTIPASS E500 --- with XML */
"PIXMA E500", 3, /*model, model_id*/
INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.60 */
@@ -3114,6 +3572,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,6, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /*features*/
&canon_MULTIPASS_E500_modelist,
&canon_MULTIPASS_MX880_paperlist,
@@ -3130,6 +3589,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /*features*/
&canon_MULTIPASS_E500_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -3139,6 +3599,23 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon MULTIPASS E560 --- with XML */
+ "PIXMA E560", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_PIXMA_MG2100_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_DUPLEX|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300, /*features*/
+ &canon_MULTIPASS_E560_modelist,
+ &canon_PIXMA_iX6800_paperlist,
+ &canon_MULTIPASS_E560_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
{ /* Canon MULTIPASS E600 --- with XML */
"PIXMA E600", 3, /*model, model_id*/
INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.70 */
@@ -3146,6 +3623,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,8, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /*features*/
&canon_MULTIPASS_E500_modelist,
&canon_MULTIPASS_MX880_paperlist,
@@ -3162,6 +3640,7 @@ static const canon_cap_t canon_model_capabilities[] =
&canon_PIXMA_MG2100_slotlist,
CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
control_cmd_PIXMA_MG5300, /*features*/
&canon_MULTIPASS_E500_modelist,
&canon_PIXMA_MG3200_paperlist,
@@ -3171,6 +3650,79 @@ static const canon_cap_t canon_model_capabilities[] =
NULL,
iP4500_channel_order
},
+ { /* Canon PIXMA P200 --- with XML */
+ "PIXMA P200", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MP250_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML|CANON_CAP_BORDERLESS,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300, /*features*/
+ &canon_PIXMA_P200_modelist,
+ &canon_PIXMA_P200_paperlist,
+ &canon_PIXMA_P200_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
+ { /* Canon MAXIFY iB4000 --- with XML */
+ /* no support for Esc (s and ESC (u commands yet for duplex */
+ "MAXIFY iB4000", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MAXIFY_iB4000_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300, /*features*/
+ &canon_MAXIFY_iB4000_modelist,
+ &canon_MAXIFY_iB4000_paperlist,
+ &canon_MAXIFY_iB4000_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
+ { /* Canon MAXIFY MB2000 --- with XML */
+ /* Same: MB5000 */
+ /* no support for Esc (s and ESC (u commands yet for duplex */
+ "MAXIFY MB2000", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MULTIPASS_MX7600_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300, /*features*/
+ &canon_MAXIFY_iB4000_modelist,
+ &canon_MAXIFY_iB4000_paperlist,
+ &canon_MAXIFY_iB4000_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
+ { /* Canon MAXIFY MB2300 --- with XML */
+ /* Same: MB5300 */
+ /* no support for Esc (s and ESC (u commands yet for duplex */
+ "MAXIFY MB2300", 3, /*model, model_id*/
+ INCH(17/2), 1917, /* max paper width and height assumed */
+ 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */
+ &canon_MAXIFY_iB4000_slotlist,
+ CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_v|CANON_CAP_XML,0,
+ 3,9, /* ESC (l and (P command lengths */
+ 0, /* Upper/Lower Cassette option */
+ control_cmd_PIXMA_MG5300, /*features*/
+ &canon_MAXIFY_iB4000_modelist,
+ &canon_MAXIFY_iB4000_paperlist,
+ &canon_MAXIFY_iB4000_modeuselist,
+ NULL,
+ NULL,
+ NULL,
+ iP4500_channel_order
+ },
};
#endif
diff --git a/src/main/print-canon.c b/src/main/print-canon.c
index edf7b55..f5d0714 100644
--- a/src/main/print-canon.c
+++ b/src/main/print-canon.c
@@ -1,5 +1,5 @@
/*
- * "$Id: print-canon.c,v 1.552 2014/01/24 17:21:46 gernot2270 Exp $"
+ * "$Id: print-canon.c,v 1.569 2015/05/26 16:33:07 gernot2270 Exp $"
*
* Print plug-in CANON BJL driver for the GIMP.
*
@@ -297,6 +297,12 @@ static const stp_parameter_t the_parameters[] =
STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0
},
{
+ "CassetteTray", N_("Cassette Tray"), "Color=No,Category=Basic Printer Setup",
+ N_("Tray selection for cassette media source"),
+ STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
+ STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0
+ },
+ {
"CDInnerRadius", N_("CD Hub Size"), "Color=No,Category=Basic Printer Setup",
N_("Print only outside of the hub of the CD, or all the way to the hole"),
STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
@@ -499,18 +505,21 @@ get_media_type(const canon_cap_t* caps,const char *name)
static const char* canon_families[] = {
"", /* the old BJC printers */
- "S",
- "i",
- "PIXMA iP",
- "PIXMA iX",
- "PIXMA MP",
- "PIXUS",
- "PIXMA Pro",
- "PIXMA MG",
- "PIXMA MX",
- "SELPHY DS",
- "PIXMA mini",
- "PIXMA E",
+ "S", /* 1 */
+ "i", /* 2 */
+ "PIXMA iP", /* 3 */
+ "PIXMA iX", /* 4 */
+ "PIXMA MP", /* 5 */
+ "PIXUS", /* 6 */
+ "PIXMA Pro", /* 7 */
+ "PIXMA MG", /* 8 */
+ "PIXMA MX", /* 9 */
+ "SELPHY DS", /* 10 */
+ "PIXMA mini",/* 11 */
+ "PIXMA E", /* 12 */
+ "PIXMA P", /* 13 */
+ "MAXIFY iB", /* 14 */
+ "MAXIFY MB", /* 15 */
};
/* canon model ids look like the following
@@ -2596,7 +2605,7 @@ canon_size_type(const stp_vars_t *v, const canon_cap_t * caps)
/* if (!strcmp(name,"CD5Inch")) return 0x57; */ /* CD Tray H */
/* Fine Art paper codes */
- /* MG6300, MG6500, MG7100 (only A4) */
+ /* MG6300, MG6500, MG6700, MG7100, MG7500 (only A4) */
/* iP8700, iX6800 (A3 */
/* if (!strcmp(name,"A4")) return 0x58; */ /* FineArt A4 35mm border */
/* if (!strcmp(name,"Letter")) return 0x5a; */ /* FineArt Letter 35mm border */
@@ -2902,6 +2911,22 @@ canon_parameters(const stp_vars_t *v, const char *name,
canon_slot_list[i].name,
gettext(canon_slot_list[i].text));
}
+ else if (strcmp(name, "CassetteTray") == 0)
+ {
+ description->bounds.str= stp_string_list_create();
+ if (caps->CassetteTray_Opts == 1) {
+ stp_string_list_add_string
+ (description->bounds.str, "Upper", _("Upper Tray"));
+ stp_string_list_add_string
+ (description->bounds.str, "Lower", _("Lower Tray"));
+ } else {
+ /* make sure to have at least a default value: no choice */
+ stp_string_list_add_string
+ (description->bounds.str, "None", _("None"));
+ }
+ description->deflt.str =
+ stp_string_list_param(description->bounds.str, 0)->name;
+ }
else if (strcmp(name, "PrintingMode") == 0)
{
int found_color, found_mono;
@@ -4024,7 +4049,7 @@ canon_init_setPageMargins2(const stp_vars_t *v, canon_privdata_t *init)
if ((init->caps->features & CANON_CAP_px) ) {
/* workaround for CD writing that uses CANON_CAP_px --- fix with capabilities */
- if ( !( input_slot && !(strcmp(input_slot,"CD")) ) || !(strcmp(init->caps->name,"PIXMA iP4500")) || !(strcmp(init->caps->name,"PIXMA iP4600")) || !(strcmp(init->caps->name,"PIXMA iP4700")) || !(strcmp(init->caps->name,"PIXMA iP4800")) || !(strcmp(init->caps->name,"PIXMA iP4900")) || !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MG5200")) || !(strcmp(init->caps->name,"PIXMA MG5300")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA MP710")) || !(strcmp(init->caps->name,"PIXMA iP3000")) || !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) )
+ if ( !( input_slot && !(strcmp(input_slot,"CD")) ) || !(strcmp(init->caps->name,"PIXMA iP4500")) || !(strcmp(init->caps->name,"PIXMA iP4600")) || !(strcmp(init->caps->name,"PIXMA iP4700")) || !(strcmp(init->caps->name,"PIXMA iP4800")) || !(strcmp(init->caps->name,"PIXMA iP4900")) || !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MP980")) || !(strcmp(init->caps->name,"PIXMA MP990")) || !(strcmp(init->caps->name,"PIXMA MG5200")) || !(strcmp(init->caps->name,"PIXMA MG5300")) || !(strcmp(init->caps->name,"PIXMA MG6100")) || !(strcmp(init->caps->name,"PIXMA MG6200")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) || !(strcmp(init->caps->name,"PIXMA MG8100")) || !(strcmp(init->caps->name,"PIXMA MG8200")) || !(strcmp(init->caps->name,"PIXMA iP9910")) || !(strcmp(init->caps->name,"PIXMA MP710")) || !(strcmp(init->caps->name,"PIXMA iP3000")) || !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) )
/* need to check if iP9910, MP710, iP3000, Pro9000 use Esc (p */
{
@@ -4208,10 +4233,10 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
arg_ESCP_1 = (init->pt) ? canon_size_type(v,init->caps): 0x03;
arg_ESCP_2 = (init->pt) ? init->pt->media_code_P: 0x00;
- if ( !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MG5400")) || !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) ) {
+ if ( !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MG5400")) || !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) ) {
arg_ESCP_9 = 0x02;
}
- else if ( !(strcmp(init->caps->name,"PIXMA MG3500")) || !(strcmp(init->caps->name,"PIXMA MG5500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) {
+ else if ( !(strcmp(init->caps->name,"PIXMA E400")) || !(strcmp(init->caps->name,"PIXMA E460")) || !(strcmp(init->caps->name,"PIXMA E480")) || !(strcmp(init->caps->name,"PIXMA E560")) || !(strcmp(init->caps->name,"PIXMA MG2900")) || !(strcmp(init->caps->name,"PIXMA MG3500")) || !(strcmp(init->caps->name,"PIXMA MG5500")) || !(strcmp(init->caps->name,"PIXMA MG5600")) || !(strcmp(init->caps->name,"PIXMA iP110")) || !(strcmp(init->caps->name,"PIXMA iP2800")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) || !(strcmp(init->caps->name,"MAXIFY iB4000")) || !(strcmp(init->caps->name,"MAXIFY MB2000")) || !(strcmp(init->caps->name,"MAXIFY MB2300")) || !(strcmp(init->caps->name,"PIXMA MX470")) || !(strcmp(init->caps->name,"PIXMA MX490")) ) {
arg_ESCP_9 = 0xff;
}
@@ -4259,11 +4284,11 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
arg_ESCP_1 = 0x56;
}
/* Tray J from iP7200 onwards */
- if ( !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MG5400")) || !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MX920")) ) {
+ if ( !(strcmp(init->caps->name,"PIXMA iP7200")) || !(strcmp(init->caps->name,"PIXMA MG5400")) || !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) || !(strcmp(init->caps->name,"PIXMA MX920")) ) {
arg_ESCP_1 = 0x5b;
arg_ESCP_9 = 0x00;
}
- /* Tray J from iP8700 onwards */
+ /* Tray L from iP8700 onwards */
if ( !(strcmp(init->caps->name,"PIXMA iP8700")) ) {
arg_ESCP_1 = 0x62;
}
@@ -4329,6 +4354,8 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
/* MG6200: CD Tray G : 0x56 */
/* MG6300: CD Tray J : 0x5b */
/* MG6500: CD Tray J : 0x5b */
+ /* MG6700: CD Tray J : 0x5b */
+ /* MG7500: CD Tray J : 0x5b */
/* MG8100: CD Tray G : 0x56 */
/* MG8200: CD Tray G : 0x56 */
/* pro9000:CD Tray E : 0x4c */
@@ -4358,7 +4385,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
/* if (!strcmp(name,"Letter")) return 0x4f; */ /* FineArt Letter 35mm border */
/* Fine Art paper codes */
- /* MG6300, MG6500, MG7100 */
+ /* MG6300, MG6500, MG6700, MG7100, MG7500 */
/* if (!strcmp(name,"A4")) return 0x58; */ /* FineArt A4 35mm border */
/* if (!strcmp(name,"Letter")) return 0x5a; */ /* FineArt Letter 35mm border */
@@ -4380,7 +4407,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
else if ( !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) {
arg_ESCP_1 = 0x4d;
}
- else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) {
+ else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) {
arg_ESCP_1 = 0x58;
}
else {
@@ -4398,7 +4425,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
}
#if 0
/* no known papersize code yet, since these printers do not handle A3 */
- else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) {
+ else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) {
arg_ESCP_1 = 0x59;
}
#endif
@@ -4415,7 +4442,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
else if ( !(strcmp(init->caps->name,"PIXMA Pro9000")) || !(strcmp(init->caps->name,"PIXMA Pro9002")) || !(strcmp(init->caps->name,"PIXMA Pro9500")) || !(strcmp(init->caps->name,"PIXMA Pro9502")) ) {
arg_ESCP_1 = 0x4f;
}
- else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) {
+ else if ( !(strcmp(init->caps->name,"PIXMA MG6300")) || !(strcmp(init->caps->name,"PIXMA MG6500")) || !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) || !(strcmp(init->caps->name,"PIXMA iP8700")) || !(strcmp(init->caps->name,"PIXMA iX6800")) ) {
arg_ESCP_1 = 0x5a;
}
else {
@@ -4445,6 +4472,7 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
/* workaround for media type based differences in 9-parameter ESC (P commands */
/* MX720, MX920, MG6500 uses 2 usually, 1 with various Hagaki media, and 0 with CD media */
+ /* Note: issue is use of upper (1)/lower tray(2) wth cassette media source, 0 for CD media */
if ( !(strcmp(init->caps->name,"PIXMA MX720")) || !(strcmp(init->caps->name,"PIXMA MX920")) || !(strcmp(init->caps->name,"PIXMA MG6500")) ) {
switch(arg_ESCP_2)
{
@@ -4461,6 +4489,16 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init)
default: arg_ESCP_9=0x02; break;;
}
}
+
+ /* MG6700, MG7500 uses 0xff with CD media tray */
+ if ( !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) ) {
+ switch(arg_ESCP_2)
+ {
+ /* CD media */
+ case 0x1f: arg_ESCP_9=0x00; break;;
+ case 0x20: arg_ESCP_9=0x00; break;;
+ }
+ }
if ( init->caps->ESC_P_len == 9 ) /* support for new devices from October 2012. */
{/* the 4th of the 6 bytes is the media type. 2nd byte is media size. Both read from canon-media array. */
@@ -4583,8 +4621,8 @@ canon_init_setCartridge(const stp_vars_t *v, const canon_privdata_t *init)
ink_set = stp_get_string_parameter(v, "InkSet");
if (ink_set && !(strcmp(ink_set,"Both"))) {
- if ( !(strcmp(init->caps->name,"PIXMA iP90")) || !(strcmp(init->caps->name,"PIXMA iP100")) ) {
- canon_cmd(v,ESC28,0x54,3,0x02,0x00,0x00); /* default for iP90, iP100 */
+ if ( !(strcmp(init->caps->name,"PIXMA iP90")) || !(strcmp(init->caps->name,"PIXMA iP100")) || !(strcmp(init->caps->name,"PIXMA iP110")) ) {
+ canon_cmd(v,ESC28,0x54,3,0x02,0x00,0x00); /* default for iP90, iP100, iP110 */
}
else if ( !(strcmp(init->caps->name,"PIXMA iP6210")) ) {
canon_cmd(v,ESC28,0x54,3,0x03,0x06,0x06); /* default for iP6210D, iP6220D, iP6310D */
@@ -4596,8 +4634,8 @@ canon_init_setCartridge(const stp_vars_t *v, const canon_privdata_t *init)
}
}
else if (ink_set && !(strcmp(ink_set,"Black"))) {
- if ( !(strcmp(init->caps->name,"PIXMA iP90")) || !(strcmp(init->caps->name,"PIXMA iP100")) ) {
- canon_cmd(v,ESC28,0x54,3,0x02,0x00,0x00); /* default for iP90, iP100 */
+ if ( !(strcmp(init->caps->name,"PIXMA iP90")) || !(strcmp(init->caps->name,"PIXMA iP100")) || !(strcmp(init->caps->name,"PIXMA iP110")) ) {
+ canon_cmd(v,ESC28,0x54,3,0x02,0x00,0x00); /* default for iP90, iP100, iP110 */
}
else if ( !(strcmp(init->caps->name,"PIXMA iP6210")) ) {
canon_cmd(v,ESC28,0x54,3,0x03,0x06,0x06); /* default for iP6210D, iP6220D, iP6310D */
@@ -4610,8 +4648,8 @@ canon_init_setCartridge(const stp_vars_t *v, const canon_privdata_t *init)
}
}
else if (ink_set && !(strcmp(ink_set,"Color"))) {
- if ( !(strcmp(init->caps->name,"PIXMA iP90")) || !(strcmp(init->caps->name,"PIXMA iP100")) ) {
- canon_cmd(v,ESC28,0x54,3,0x02,0x00,0x01); /* composite for iP90, iP100 */
+ if ( !(strcmp(init->caps->name,"PIXMA iP90")) || !(strcmp(init->caps->name,"PIXMA iP100")) || !(strcmp(init->caps->name,"PIXMA iP110")) ) {
+ canon_cmd(v,ESC28,0x54,3,0x02,0x00,0x01); /* composite for iP90, iP100, iP110 */
/* black save : 2 1 0 for selected plain (600dpi std) modes, rest remain 2 0 0 */
/* composite black: 2 0 1 for selected plain (600dpi std & draft) modes, rest remain 2 0 0 */
/* both above set : AND of bytes above */
@@ -4835,7 +4873,7 @@ canon_init_setMultiRaster(const stp_vars_t *v, const canon_privdata_t *init){
stp_put16_le(init->num_channels, v);
/* add an exception here to add 0x60 of cmy channels for those printers/modes that require it */
raster_channel_order=init->channel_order;
- if ( !(strcmp(init->caps->name,"PIXMA MP140")) || !(strcmp(init->caps->name,"PIXMA MP150")) || !(strcmp(init->caps->name,"PIXMA MP160")) || !(strcmp(init->caps->name,"PIXMA MP170")) || !(strcmp(init->caps->name,"PIXMA MP180")) || !(strcmp(init->caps->name,"PIXMA MP190")) || !(strcmp(init->caps->name,"PIXMA MP210")) || !(strcmp(init->caps->name,"PIXMA MP220")) || !(strcmp(init->caps->name,"PIXMA MP240")) || !(strcmp(init->caps->name,"PIXMA MP250")) || !(strcmp(init->caps->name,"PIXMA MP270")) || !(strcmp(init->caps->name,"PIXMA MP280")) || !(strcmp(init->caps->name,"PIXMA MP450")) || !(strcmp(init->caps->name,"PIXMA MP460")) || !(strcmp(init->caps->name,"PIXMA MP470")) || !(strcmp(init->caps->name,"PIXMA MP480")) || !(strcmp(init->caps->name,"PIXMA MP490")) || !(strcmp(init->caps->name,"PIXMA MP495")) || !(strcmp(init->caps->name,"PIXMA MX300")) || !(strcmp(init->caps->name,"PIXMA MX310")) || !(strcmp(init->caps->name,"PIXMA MX330")) || !(strcmp(init->caps->name,"PIXMA MX340")) || !(strcmp(init->caps->name,"PIXMA MX350")) || !(strcmp(init->caps->name,"PIXMA MX360")) || !(strcmp(init->caps->name,"PIXMA MX370")) || !(strcmp(init->caps->name,"PIXMA MX410")) || !(strcmp(init->caps->name,"PIXMA MX510")) || !(strcmp(init->caps->name,"PIXMA MX520")) || !(strcmp(init->caps->name,"PIXMA iP2700")) || !(strcmp(init->caps->name,"PIXMA MG2100")) || !(strcmp(init->caps->name,"PIXMA MG2400")) || !(strcmp(init->caps->name,"PIXMA MG3500")) )
+ if ( !(strcmp(init->caps->name,"PIXMA MP140")) || !(strcmp(init->caps->name,"PIXMA MP150")) || !(strcmp(init->caps->name,"PIXMA MP160")) || !(strcmp(init->caps->name,"PIXMA MP170")) || !(strcmp(init->caps->name,"PIXMA MP180")) || !(strcmp(init->caps->name,"PIXMA MP190")) || !(strcmp(init->caps->name,"PIXMA MP210")) || !(strcmp(init->caps->name,"PIXMA MP220")) || !(strcmp(init->caps->name,"PIXMA MP240")) || !(strcmp(init->caps->name,"PIXMA MP250")) || !(strcmp(init->caps->name,"PIXMA MP270")) || !(strcmp(init->caps->name,"PIXMA MP280")) || !(strcmp(init->caps->name,"PIXMA MP450")) || !(strcmp(init->caps->name,"PIXMA MP460")) || !(strcmp(init->caps->name,"PIXMA MP470")) || !(strcmp(init->caps->name,"PIXMA MP480")) || !(strcmp(init->caps->name,"PIXMA MP490")) || !(strcmp(init->caps->name,"PIXMA MP495")) || !(strcmp(init->caps->name,"PIXMA MX300")) || !(strcmp(init->caps->name,"PIXMA MX310")) || !(strcmp(init->caps->name,"PIXMA MX330")) || !(strcmp(init->caps->name,"PIXMA MX340")) || !(strcmp(init->caps->name,"PIXMA MX350")) || !(strcmp(init->caps->name,"PIXMA MX360")) || !(strcmp(init->caps->name,"PIXMA MX370")) || !(strcmp(init->caps->name,"PIXMA MX410")) || !(strcmp(init->caps->name,"PIXMA MX510")) || !(strcmp(init->caps->name,"PIXMA MX520")) || !(strcmp(init->caps->name,"PIXMA iP2700")) || !(strcmp(init->caps->name,"PIXMA MG2100")) || !(strcmp(init->caps->name,"PIXMA MG2400")) || !(strcmp(init->caps->name,"PIXMA MG2500")) || !(strcmp(init->caps->name,"PIXMA MG3500")) )
{
/* if cmy there, add 0x60 to each --- all modes using cmy require it */
for(i=0;i<init->num_channels;i++){
diff --git a/src/main/print-olympus.c b/src/main/print-olympus.c
index 42c4897..7499cda 100644
--- a/src/main/print-olympus.c
+++ b/src/main/print-olympus.c
@@ -1,5 +1,5 @@
/*
- * "$Id: print-olympus.c,v 1.165 2014/05/07 11:16:56 speachy Exp $"
+ * "$Id: print-olympus.c,v 1.195 2015/06/26 02:47:11 rlk Exp $"
*
* Print plug-in DyeSub driver (formerly Olympus driver) for the GIMP.
*
@@ -28,9 +28,6 @@
* This file must include only standard C header files. The core code must
* compile on generic platforms that don't support glib, gimp, gtk, etc.
*/
-
-/* #define DNPX2 */
-
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -45,21 +42,27 @@
#define inline __inline__
#endif
-#define DYESUB_FEATURE_NONE 0x00000000
-#define DYESUB_FEATURE_FULL_WIDTH 0x00000001
-#define DYESUB_FEATURE_FULL_HEIGHT 0x00000002
-#define DYESUB_FEATURE_BLOCK_ALIGN 0x00000004
-#define DYESUB_FEATURE_BORDERLESS 0x00000008
-#define DYESUB_FEATURE_WHITE_BORDER 0x00000010
-#define DYESUB_FEATURE_PLANE_INTERLACE 0x00000020
-#define DYESUB_FEATURE_PLANE_LEFTTORIGHT 0x00000040
-#define DYESUB_FEATURE_ROW_INTERLACE 0x00000080
-#define DYESUB_FEATURE_12BPP 0x00000100
-#define DYESUB_FEATURE_16BPP 0x00000200
-#define DYESUB_FEATURE_BIGENDIAN 0x00000400
-
-#define DYESUB_PORTRAIT 0
-#define DYESUB_LANDSCAPE 1
+/* Uncomment this to add full multicut support to all printers that support
+ it. Be warned that you will also need a patch to papers.xml to define
+ the additional paper types. */
+/* #define MULTICUT */
+
+#define DYESUB_FEATURE_NONE 0x00000000
+#define DYESUB_FEATURE_FULL_WIDTH 0x00000001
+#define DYESUB_FEATURE_FULL_HEIGHT 0x00000002
+#define DYESUB_FEATURE_BLOCK_ALIGN 0x00000004
+#define DYESUB_FEATURE_BORDERLESS 0x00000008
+#define DYESUB_FEATURE_WHITE_BORDER 0x00000010
+#define DYESUB_FEATURE_PLANE_INTERLACE 0x00000020
+#define DYESUB_FEATURE_PLANE_LEFTTORIGHT 0x00000040
+#define DYESUB_FEATURE_ROW_INTERLACE 0x00000080
+#define DYESUB_FEATURE_12BPP 0x00000100
+#define DYESUB_FEATURE_16BPP 0x00000200
+#define DYESUB_FEATURE_BIGENDIAN 0x00000400
+#define DYESUB_FEATURE_RGBtoYCBCR 0x00000800
+
+#define DYESUB_PORTRAIT 0
+#define DYESUB_LANDSCAPE 1
#ifndef MIN
# define MIN(a,b) (((a) < (b)) ? (a) : (b))
@@ -192,7 +195,7 @@ typedef struct {
int byteswap;
int plane_interlacing;
int row_interlacing;
- char empty_byte;
+ unsigned char empty_byte[MAX_INK_CHANNELS]; /* one for each color plane */
unsigned short **image_data;
int outh_px, outw_px, outt_px, outb_px, outl_px, outr_px;
int imgh_px, imgw_px;
@@ -259,7 +262,6 @@ static const ink_t bgr_inks[] =
LIST(ink_list_t, bgr_ink_list, ink_t, bgr_inks);
-
/* Olympus P-10 */
static const dyesub_resolution_t res_310dpi[] =
{
@@ -1328,7 +1330,6 @@ static const dyesub_pagesize_t updr150_page[] =
{ "B7", "2UPC-154 (3.5x5)", PT(1210,334)+1, PT(1728,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
{ "w360h504", "2UPC-155 (5x7)", PT(1728,334)+1, PT(2380,334)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
{ "w432h576", "2UPC-156 (6x8)", PT(2048,334)+1, PT(2724,334)+1, 0, 0, 0, DYESUB_PORTRAIT},
- { "Custom", NULL, PT(1382,334)+1, PT(2048,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
};
LIST(dyesub_pagesize_list_t, updr150_page_list, dyesub_pagesize_t, updr150_page);
@@ -1339,65 +1340,105 @@ static const dyesub_printsize_t updr150_printsize[] =
{ "334x334", "B7", 1210, 1728},
{ "334x334", "w360h504", 1728, 2380},
{ "334x334", "w432h576", 2048, 2724},
- { "334x334", "Custom", 1382, 2048},
};
LIST(dyesub_printsize_list_t, updr150_printsize_list, dyesub_printsize_t, updr150_printsize);
static void updr150_200_printer_init_func(stp_vars_t *v, int updr200)
{
- char pg = '\0';
+ char pg;
- stp_zfwrite("\x6a\xff\xff\xff\xef\xff\xff\xff", 1, 8, v);
+ stp_zfwrite("\x6a\xff\xff\xff"
+ "\xef\xff\xff\xff", 1, 8, v);
+ /* This is actually ***MEDIA*** size, not print size. They aren't
+ necessarily the same, but for now, they are. */
if (strcmp(privdata.pagesize,"B7") == 0)
pg = '\x01';
else if (strcmp(privdata.pagesize,"w288h432") == 0)
pg = '\x02';
+ else if (updr200 && strcmp(privdata.pagesize,"w144h432") == 0)
+ pg = '\x02';
else if (strcmp(privdata.pagesize,"w360h504") == 0)
pg = '\x03';
else if (strcmp(privdata.pagesize,"w432h576") == 0)
pg = '\x04';
+ else
+ pg = 0;
stp_putc(pg, v);
-
- stp_zfwrite("\x00\x00\x00\xfc\xff\xff\xff"
- "\xfb\xff\xff\xff\xf4\xff\xff\xff"
- "\xf5\xff\xff\xff\x01\x00\x00\x00"
- "\x07\x00\x00\x00\x1b\xe5\x00\x00"
- "\x00\x08\x00\x08\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x00\x01\x00\xed"
- "\xff\xff\xff\x07\x00\x00\x00\x1b"
- "\xee\x00\x00\x00\x02\x00\x02\x00"
- "\x00\x00\x00\x01", 1, 67, v);
+ dyesub_nputc(v, '\0', 3);
+
+ stp_zfwrite("\xfc\xff\xff\xff"
+ "\xfb\xff\xff\xff"
+ "\xf4\xff\xff\xff"
+ "\xf5\xff\xff\xff",
+ 1, 16, v);
+
+ if (updr200 && (strcmp(privdata.pagesize,"B7") == 0 ||
+ strcmp(privdata.pagesize,"w432h576") == 0)) {
+ /* SONY_MULTICUT -- B7 on 5x7 media also gets 0x01 */
+ pg = 0x4;
+ } else {
+ pg = 0x1;
+ }
+ stp_put32_le(pg, v);
+
+ stp_zfwrite("\x07\x00\x00\x00"
+ "\x1b\xe5\x00\x00\x00\x08\x00"
+ "\x08\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x01\x00"
+ "\xed\xff\xff\xff"
+ "\x07\x00\x00\x00"
+ "\x1b\xee\x00\x00\x00\x02\x00"
+ "\x02\x00\x00\x00"
+ "\x00", 1, 43, v);
+ stp_putc(1, v); /* Copies */
if (updr200) { /* UP-DR200-specific! */
stp_zfwrite("\x07\x00\x00\x00"
- "\x1b\xc0\x00\x03\x00\x05", 1, 10, v);
- stp_putc(0x00, v); /* 0x02 for doubled-up prints. */
- /* eg 2x6 on 4x6 media, 3.5x5 on 5x7 media, 4x6 on 8x6 media */
+ "\x1b\xc0\x00\x03\x00\x05\x00", 1, 11, v);
}
-
stp_zfwrite("\x05\x00\x00\x00"
- "\x02\x03\x00\x01\x00", 1, 9, v);
+ "\x02\x03\x00\x01", 1, 8, v);
+ if (updr200) {
+ if (strcmp(privdata.pagesize,"w144h432") == 0)
+ stp_putc(0x02, v); /* SONY_MULTICUT: 2x6 on 4x6, 4x6 on 8x6, 3x5 on 7x5 */
+ else
+ stp_putc(0x00, v);
+ } else {
+ stp_putc(0x00, v);
+ }
+
stp_zfwrite("\x07\x00\x00\x00"
- "\x1b\x15\x00\x00\x00\x0d\x00\x0d"
- "\x00\x00\x00\x00\x00\x00\x00\x07"
- "\x00\x00\x00\x00", 1, 24, v);
- stp_put16_be(privdata.w_size, v);
- stp_put16_be(privdata.h_size, v);
- stp_zfwrite("\xf9\xff\xff\xff\x07\x00\x00\x00"
- "\x1b\xe1\x00\x00\x00\x0b\x00\x0b"
- "\x00\x00\x00\x00\x80", 1, 21, v);
+ "\x1b\x15\x00\x00\x00\x0d\x00"
+ "\x0d\x00\x00\x00"
+ "\x00\x00\x00\x00\x07\x00\x00\x00\x00", 1, 24, v);
+ stp_put16_be(privdata.w_size, v);
+ if (updr200 && strcmp(privdata.pagesize,"w144h432") == 0) {
+ stp_put16_be(1382, v);
+ /* SONY_MULTICUT -- 4x6 on 8x6 uses 2674 rows, 3x7 on 5x7 uses 2420 */
+ } else {
+ stp_put16_be(privdata.h_size, v);
+ }
+
+ stp_zfwrite("\xf9\xff\xff\xff",
+ 1, 4, v);
+ stp_zfwrite("\x07\x00\x00\x00"
+ "\x1b\xe1\x00\x00\x00\x0b\x00"
+ "\x0b\x00\x00\x00\x00\x80", 1, 17, v);
stp_zfwrite((privdata.laminate->seq).data, 1,
(privdata.laminate->seq).bytes, v); /*laminate pattern*/
stp_zfwrite("\x00\x00\x00\x00", 1, 4, v);
stp_put16_be(privdata.w_size, v);
stp_put16_be(privdata.h_size, v);
+
stp_zfwrite("\xf8\xff\xff\xff"
- "\xec\xff\xff\xff"
- "\x0b\x00\x00\x00\x1b\xea"
- "\x00\x00\x00\x00", 1, 18, v);
+ "\xec\xff\xff\xff",
+ 1, 8, v);
+
+ stp_zfwrite("\x0b\x00\x00\x00\x1b\xea"
+ "\x00\x00\x00\x00", 1, 10, v);
stp_put32_be(privdata.w_size*privdata.h_size*3, v);
stp_zfwrite("\x00", 1, 1, v);
stp_put32_le(privdata.w_size*privdata.h_size*3, v);
@@ -1411,19 +1452,47 @@ static void updr150_printer_init_func(stp_vars_t *v)
static void updr150_printer_end_func(stp_vars_t *v)
{
stp_zfwrite("\xeb\xff\xff\xff"
- "\xfc\xff\xff"
- "\xff\xfa\xff\xff\xff\x07\x00\x00"
- "\x00\x1b\x0a\x00\x00\x00\x00\x00"
- "\x07\x00\x00\x00\x1b\x17\x00\x00"
- "\x00\x00\x00\xf3\xff\xff\xff"
- , 1, 38, v);
+ "\xfc\xff\xff\xff"
+ "\xfa\xff\xff\xff",
+ 1, 12, v);
+ stp_zfwrite("\x07\x00\x00\x00"
+ "\x1b\x0a\x00\x00\x00\x00\x00"
+ "\x07\x00\x00\x00"
+ "\x1b\x17\x00\x00\x00\x00\x00",
+ 1, 22, v);
+ stp_zfwrite("\xf3\xff\xff\xff",
+ 1, 4, v);
}
/* Sony UP-DR200 */
+static const dyesub_pagesize_t updr200_page[] =
+{
+ { "w144h432", "2UPC-R204 (2x6)", PT(691,334)+1, PT(2048,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w288h432", "2UPC-R204 (4x6)", PT(1382,334)+1, PT(2048,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "B7", "2UPC-R203 (3.5x5)", PT(1210,334)+1, PT(1728,334)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w360h504", "2UPC-R205 (5x7)", PT(1728,334)+1, PT(2380,334)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+ { "w432h576", "2UPC-R206 (6x8)", PT(2048,334)+1, PT(2724,334)+1, 0, 0, 0, DYESUB_PORTRAIT},
+};
+
+LIST(dyesub_pagesize_list_t, updr200_page_list, dyesub_pagesize_t, updr200_page);
+
+static const dyesub_printsize_t updr200_printsize[] =
+{
+ { "334x334", "w144h432", 691, 2048},
+ { "334x334", "w288h432", 1382, 2048},
+ { "334x334", "B7", 1210, 1728},
+ { "334x334", "w360h504", 1728, 2380},
+ { "334x334", "w432h576", 2048, 2724},
+};
+
+LIST(dyesub_printsize_list_t, updr200_printsize_list, dyesub_printsize_t, updr200_printsize);
+
static const laminate_t updr200_laminate[] =
{
{"Glossy", N_("Glossy"), {1, "\x00"}},
{"Matte", N_("Matte"), {1, "\x0c"}},
+ {"Glossy_NoCorr", N_("Glossy_NoCorr"), {1, "\x10"}},
+ {"Matte_NoCorr", N_("Matte_NoCorr"), {1, "\x1c"}},
};
LIST(laminate_list_t, updr200_laminate_list, laminate_t, updr200_laminate);
@@ -1433,6 +1502,91 @@ static void updr200_printer_init_func(stp_vars_t *v)
updr150_200_printer_init_func(v, 1);
}
+static void updr200_printer_end_func(stp_vars_t *v)
+{
+ if (strcmp(privdata.pagesize,"w144h432") == 0) {
+ /* SONY_MULTICUT -- 2x6 on 4x6, 3x5 on 5x7, 4x6 on 8x6 */
+ stp_zfwrite("\xfc\xff\xff\xff"
+ "\xfa\xff\xff\xff",
+ 1, 8, v);
+ stp_zfwrite("\x07\x00\x00\x00"
+ "\x1b\xc0\x00\x03\x00\x05\x00"
+ "\x05\x00\x00\x00"
+ "\x02\x03\x00\x01\x01",
+ 1, 20, v);
+ stp_zfwrite("\x07\x00\x00\x00"
+ "\x1b\x0a\x00\x00\x00\x00\x00"
+ "\x07\x00\x00\x00"
+ "\x1b\x17\x00\x00\x00\x00\x00",
+ 1, 22, v);
+ stp_zfwrite("\xf3\xff\xff\xff",
+ 1, 4, v);
+ } else {
+ /* Normal operation */
+ updr150_printer_end_func(v);
+ }
+}
+
+/* Sony UP-CR10L / DNP SL10 */
+static const dyesub_pagesize_t upcr10_page[] =
+{
+ { "w288h432", "4x6", PT(1248,300)+1, PT(1848,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "B7", "3.5x5", PT(1100,300)+1, PT(1536,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w360h504", "5x7", PT(1536,300)+1, PT(2148,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+};
+
+LIST(dyesub_pagesize_list_t, upcr10_page_list, dyesub_pagesize_t, upcr10_page);
+
+static const dyesub_printsize_t upcr10_printsize[] =
+{
+ { "300x300", "w288h432", 1248, 1848},
+ { "300x300", "B7", 1100, 1536},
+ { "300x300", "w360h504", 1536, 2148},
+};
+
+LIST(dyesub_printsize_list_t, upcr10_printsize_list, dyesub_printsize_t, upcr10_printsize);
+
+static void upcr10_printer_init_func(stp_vars_t *v)
+{
+ stp_zfwrite("\x60\xff\xff\xff"
+ "\xf8\xff\xff\xff"
+ "\xfd\xff\xff\xff\x14\x00\x00\x00"
+ "\x1b\x15\x00\x00\x00\x0d\x00\x00"
+ "\x00\x00\x00\x07\x00\x00\x00\x00", 1, 32, v);
+ stp_put16_be(privdata.w_size, v);
+ stp_put16_be(privdata.h_size, v);
+ stp_zfwrite("\xfb\xff\xff\xff"
+ "\xf4\xff\xff\xff\x0b\x00\x00\x00"
+ "\x1b\xea\x00\x00\x00\x00", 1, 18, v);
+ stp_put32_be(privdata.w_size * privdata.h_size * 3, v);
+ stp_putc(0, v);
+ stp_put32_le(privdata.w_size * privdata.h_size * 3, v);
+}
+
+static void upcr10_printer_end_func(stp_vars_t *v)
+{
+ stp_zfwrite("\xf3\xff\xff\xff"
+ "\x0f\x00\x00\x00"
+ "\x1b\xe5\x00\x00\x00\x08\x00\x00"
+ "\x00\x00\x00\x00\x00\x0d\x00", 1, 23, v);
+ stp_zfwrite("\x12\x00\x00\x00\x1b\xe1\x00\x00"
+ "\x000x0b\x00\x00\x80\x08\x00\x00"
+ "\x00\x00", 1, 18, v);
+ stp_put16_be(privdata.w_size, v);
+ stp_put16_be(privdata.h_size, v);
+ stp_zfwrite("\xfa\xff\xff\xff"
+ "\x09\x00\x00\x00"
+ "\x1b\xee\x00\x00\x00\x02\x00\x00", 1, 16, v);
+ stp_putc(1, v); /* Copies */
+ stp_zfwrite("\x07\x00\x00\x00"
+ "\x1b\x17\x00\x00\x00\x00\x00", 1, 11, v);
+ stp_zfwrite("\xf9\xff\xff\xff"
+ "\xfc\xff\xff\xff"
+ "\x07\x00\x00\x00"
+ "\x1b\x17\x00\x00\x00\x00\x00", 1, 19, v);
+ stp_zfwrite("\xf7\xff\xff\xff", 1, 4, v);
+}
+
/* Fujifilm CX-400 */
static const dyesub_pagesize_t cx400_page[] =
{
@@ -2001,6 +2155,56 @@ static void kodak_9810_plane_init(stp_vars_t *v)
stp_zfwrite("Image ", 1, 8, v);
}
+/* Kodak 8810 */
+static const dyesub_pagesize_t kodak_8810_page[] =
+{
+ { "w288h576", "8x4", PT(1208,300)+1, PT(2464,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "c8x10", "8x10", PT(2464,300)+1, PT(3024,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+#if 0
+ { "???", "203x297mm", PT(2464,300)+1, PT(3531,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+#endif
+ { "w576h864", "8x12", PT(2464,300)+1, PT(3624,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+};
+LIST(dyesub_pagesize_list_t, kodak_8810_page_list, dyesub_pagesize_t, kodak_8810_page);
+
+static const dyesub_printsize_t kodak_8810_printsize[] =
+{
+ { "300x300", "w288h576", 1208, 2464},
+ { "300x300", "c8x10", 2464, 3024},
+#if 0
+ { "300x300", "???", 2464, 3531},
+#endif
+ { "300x300", "w576h864", 2464, 3624},
+};
+
+LIST(dyesub_printsize_list_t, kodak_8810_printsize_list, dyesub_printsize_t, kodak_8810_printsize);
+
+static const laminate_t kodak_8810_laminate[] =
+{
+ {"Glossy", N_("Glossy"), {1, "\x03"}},
+ {"Satin", N_("Satin"), {1, "\x02"}},
+};
+
+LIST(laminate_list_t, kodak_8810_laminate_list, laminate_t, kodak_8810_laminate);
+
+static void kodak_8810_printer_init(stp_vars_t *v)
+{
+ stp_putc(0x01, v);
+ stp_putc(0x40, v);
+ stp_putc(0x12, v);
+ stp_putc(0x00, v);
+ stp_putc(0x01, v);
+ stp_putc(0x01, v); /* Actually, # of copies */
+ stp_putc(0x00, v);
+ stp_put16_le(privdata.w_size, v);
+ stp_put16_le(privdata.h_size, v);
+ stp_put16_le(privdata.w_size, v);
+ stp_put16_le(privdata.h_size, v);
+ dyesub_nputc(v, 0, 4);
+ stp_zfwrite((privdata.laminate->seq).data, 1,
+ (privdata.laminate->seq).bytes, v);
+ dyesub_nputc(v, 0, 2);
+}
/* Kodak Professional 8500 */
static const dyesub_pagesize_t kodak_8500_page[] =
@@ -2303,7 +2507,7 @@ static const dyesub_pagesize_t mitsu_cp9550_page[] =
DYESUB_LANDSCAPE},
{ "w288h432", "4x6", PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "2x6_x2", "2x6*2", PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
#endif
@@ -2315,8 +2519,6 @@ static const dyesub_pagesize_t mitsu_cp9550_page[] =
DYESUB_PORTRAIT},
{ "w432h648", "6x9", PT(2152,346)+1, PT(3146,346)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
- { "Custom", NULL, PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0,
- DYESUB_LANDSCAPE},
};
LIST(dyesub_pagesize_list_t, mitsu_cp9550_page_list, dyesub_pagesize_t, mitsu_cp9550_page);
@@ -2325,14 +2527,13 @@ static const dyesub_printsize_t mitsu_cp9550_printsize[] =
{
{ "346x346", "B7", 1240, 1812},
{ "346x346", "w288h432", 1416, 2152},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "346x346", "2x6_x2", 1416, 2152},
#endif
{ "346x346", "w360h504", 1812, 2402},
{ "346x346", "w432h576", 2152, 2792},
{ "346x346", "w432h612", 2152, 2956},
{ "346x346", "w432h648", 2152, 3146},
- { "346x346", "Custom", 1416, 2152},
};
LIST(dyesub_printsize_list_t, mitsu_cp9550_printsize_list, dyesub_printsize_t, mitsu_cp9550_printsize);
@@ -2547,11 +2748,11 @@ static const dyesub_pagesize_t mitsu_cpd70x_page[] =
DYESUB_LANDSCAPE},
{ "w288h432", "4x6", PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "2x6_x2", "4x6*2", PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
#endif
- { "w360h504", "5x7", PT(1572,300)+1, PT(2128,300)+1, 0, 0, 0, 0,
+ { "w360h504", "5x7", PT(1568,300)+1, PT(2128,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
{ "w432h432", "6x6", PT(1820,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
@@ -2561,12 +2762,10 @@ static const dyesub_pagesize_t mitsu_cpd70x_page[] =
DYESUB_PORTRAIT},
{ "w432h648", "6x9", PT(1864,300)+1, PT(2730,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "4x6_x2", "4x6*2", PT(1864,300)+1, PT(2730,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
#endif
- { "Custom", NULL, PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
- DYESUB_LANDSCAPE},
};
LIST(dyesub_pagesize_list_t, mitsu_cpd70x_page_list, dyesub_pagesize_t, mitsu_cpd70x_page);
@@ -2575,18 +2774,17 @@ static const dyesub_printsize_t mitsu_cpd70x_printsize[] =
{
{ "300x300", "B7", 1076, 1568},
{ "300x300", "w288h432", 1228, 1864},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "2x6_x2", 1228, 1864},
#endif
- { "300x300", "w360h504", 1572, 2128},
+ { "300x300", "w360h504", 1568, 2128},
{ "300x300", "w432h432", 1820, 1864},
{ "300x300", "w432h576", 1864, 2422},
{ "300x300", "w432h612", 1864, 2564},
{ "300x300", "w432h648", 1864, 2730},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "4x6_x2", 1864, 2730},
#endif
- { "300x300", "Custom", 1220, 1868},
};
LIST(dyesub_printsize_list_t, mitsu_cpd70x_printsize_list, dyesub_printsize_t, mitsu_cpd70x_printsize);
@@ -2599,7 +2797,7 @@ static const laminate_t mitsu_cpd70x_laminate[] =
LIST(laminate_list_t, mitsu_cpd70x_laminate_list, laminate_t, mitsu_cpd70x_laminate);
-static void mitsu_cpd70k60_printer_init(stp_vars_t *v, int is_k60)
+static void mitsu_cpd70k60_printer_init(stp_vars_t *v, int is_k60, int is_305)
{
/* Printer init */
stp_putc(0x1b, v);
@@ -2613,7 +2811,9 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, int is_k60)
stp_putc(0x5a, v);
stp_putc(0x54, v);
if (is_k60) {
- stp_putc(0x0, v);
+ stp_putc(0x00, v);
+ } else if (is_305) {
+ stp_putc(0x90, v);
} else {
stp_putc(0x01, v);
}
@@ -2636,7 +2836,7 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, int is_k60)
}
dyesub_nputc(v, 0x00, 7);
- if (is_k60) {
+ if (is_k60 || is_305) {
stp_putc(0x01, v); /* K60 has a single "lower" deck */
} else {
stp_putc(0x00, v); /* Auto deck selection, or 0x01 for Lower, 0x02 for Upper */
@@ -2648,14 +2848,22 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, int is_k60)
dyesub_nputc(v, 0x00, 6);
/* Multi-cut control */
- if (strcmp(privdata.pagesize,"4x6_x2") == 0) {
- stp_putc(0x01, v);
- } else if (strcmp(privdata.pagesize,"B7_x2") == 0) {
- stp_putc(0x01, v);
- } else if (strcmp(privdata.pagesize,"2x6_x2") == 0) {
- stp_putc(0x05, v);
+ if (is_305) {
+ if (strcmp(privdata.pagesize,"w288h432") == 0) {
+ stp_putc(0x01, v);
+ } else {
+ stp_putc(0x00, v);
+ }
} else {
- stp_putc(0x00, v);
+ if (strcmp(privdata.pagesize,"4x6_x2") == 0) {
+ stp_putc(0x01, v);
+ } else if (strcmp(privdata.pagesize,"B7_x2") == 0) {
+ stp_putc(0x01, v);
+ } else if (strcmp(privdata.pagesize,"2x6_x2") == 0) {
+ stp_putc(0x05, v);
+ } else {
+ stp_putc(0x00, v);
+ }
}
dyesub_nputc(v, 0x00, 15);
@@ -2664,7 +2872,7 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, int is_k60)
static void mitsu_cpd70x_printer_init(stp_vars_t *v)
{
- mitsu_cpd70k60_printer_init(v, 0);
+ mitsu_cpd70k60_printer_init(v, 0, 0);
}
static void mitsu_cpd70x_printer_end(stp_vars_t *v)
@@ -2673,7 +2881,7 @@ static void mitsu_cpd70x_printer_end(stp_vars_t *v)
if (*((const char*)((privdata.laminate->seq).data)) != 0x00) {
/* The Windows drivers generate a lamination pattern consisting of
- four values: 0xab58, 0x286a, 0x6c22 */
+ three values: 0xe84b, 0x286a, 0x6c22 */
int r, c;
unsigned long seed = 1;
@@ -2681,10 +2889,10 @@ static void mitsu_cpd70x_printer_end(stp_vars_t *v)
/* Now generate lamination pattern */
for (c = 0 ; c < privdata.w_size ; c++) {
for (r = 0 ; r < privdata.h_size + 12 ; r++) {
- int i = xrand(&seed) & 0x1f;
- if (i < 24)
- stp_put16_be(0xab58, v);
- else if (i < 29)
+ int i = xrand(&seed) & 0x3f;
+ if (i < 42)
+ stp_put16_be(0xe84b, v);
+ else if (i < 62)
stp_put16_be(0x286a, v);
else
stp_put16_be(0x6c22, v);
@@ -2695,6 +2903,35 @@ static void mitsu_cpd70x_printer_end(stp_vars_t *v)
}
}
+static void mitsu_cpk60_printer_end(stp_vars_t *v)
+{
+ /* If Matte lamination is enabled, generate a lamination plane */
+ if (*((const char*)((privdata.laminate->seq).data)) != 0x00) {
+
+ /* The Windows drivers generate a lamination pattern consisting of
+ three values: 0x9d00, 0x6500, 0x2900 */
+
+ int r, c;
+ unsigned long seed = 1;
+
+ /* Now generate lamination pattern */
+ for (c = 0 ; c < privdata.w_size ; c++) {
+ for (r = 0 ; r < privdata.h_size + 12 ; r++) {
+ int i = xrand(&seed) & 0x3f;
+ if (i < 42)
+ stp_put16_be(0x9d00, v);
+ else if (i < 62)
+ stp_put16_be(0x2900, v);
+ else
+ stp_put16_be(0x6500, v);
+ }
+ }
+ /* Pad up to a 512-byte block */
+ dyesub_nputc(v, 0x00, 512 - ((privdata.w_size * (privdata.h_size + 12) * 2) % 512));
+ }
+}
+
+
static void mitsu_cpd70x_plane_end(stp_vars_t *v)
{
/* Pad up to a 512-byte block */
@@ -2708,13 +2945,13 @@ static const dyesub_pagesize_t mitsu_cpk60_page[] =
DYESUB_LANDSCAPE},
{ "w288h432", "4x6", PT(1218,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "2x6_x2", "2x6*2", PT(1218,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
#endif
{ "w360h504", "5x7", PT(1568,300)+1, PT(2128,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "B7_x2", "3.5x5*2", PT(1568,300)+1, PT(2190,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
#endif
@@ -2722,12 +2959,10 @@ static const dyesub_pagesize_t mitsu_cpk60_page[] =
DYESUB_PORTRAIT},
{ "w432h576", "6x8", PT(1864,300)+1, PT(2422,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "4x6_x2", "4x6*2", PT(1864,300)+1, PT(2454,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
#endif
- { "Custom", NULL, PT(1218,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
- DYESUB_LANDSCAPE},
};
LIST(dyesub_pagesize_list_t, mitsu_cpk60_page_list, dyesub_pagesize_t, mitsu_cpk60_page);
@@ -2736,26 +2971,91 @@ static const dyesub_printsize_t mitsu_cpk60_printsize[] =
{
{ "300x300", "B7", 1076, 1568},
{ "300x300", "w288h432", 1218, 1864},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "2x6_x2", 1218, 1864},
#endif
{ "300x300", "w360h504", 1568, 2128},
-#ifdef DNPX2
- { "B7_x2", "3.5x5*24", 1568, 2190},
+#ifdef MULTICUT
+ { "B7_x2", "3.5x5*2", 1568, 2190},
#endif
{ "300x300", "w432h432", 1864, 1820},
{ "300x300", "w432h576", 1864, 2422},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "4x6_x2", 1864, 2454},
#endif
- { "300x300", "Custom", 1218, 1864},
};
LIST(dyesub_printsize_list_t, mitsu_cpk60_printsize_list, dyesub_printsize_t, mitsu_cpk60_printsize);
static void mitsu_cpk60_printer_init(stp_vars_t *v)
{
- mitsu_cpd70k60_printer_init(v, 1);
+ mitsu_cpd70k60_printer_init(v, 1, 0);
+}
+
+static const dyesub_pagesize_t mitsu_cpd80_page[] =
+{
+ { "w288h432", "4x6", PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+#ifdef MULTICUT
+ { "2x6_x2", "2x6*2", PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+#endif
+ { "w360h360", "5x5", PT(1524,300)+1, PT(1568,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w360h504", "5x7", PT(1568,300)+1, PT(2128,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+ { "w432h432", "6x6", PT(1864,300)+1, PT(1820,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+ { "w432h576", "6x8", PT(1864,300)+1, PT(2422,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "4x6_x2", "4x6*2", PT(1864,300)+1, PT(2730,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+#endif
+};
+
+LIST(dyesub_pagesize_list_t, mitsu_cpd80_page_list, dyesub_pagesize_t, mitsu_cpd80_page);
+
+static const dyesub_printsize_t mitsu_cpd80_printsize[] =
+{
+ { "300x300", "w288h432", 1228, 1864},
+#ifdef MULTICUT
+ { "300x300", "2x6_x2", 1228, 1864},
+#endif
+ { "300x300", "w360h360", 1524, 1568},
+ { "300x300", "w360h504", 1568, 2128},
+ { "300x300", "w432h432", 1864, 1820},
+ { "300x300", "w432h576", 1864, 2422},
+#ifdef MULTICUT
+ { "300x300", "4x6_x2", 1864, 2730},
+#endif
+};
+
+LIST(dyesub_printsize_list_t, mitsu_cpd80_printsize_list, dyesub_printsize_t, mitsu_cpd80_printsize);
+
+
+/* Kodak 305 */
+static const dyesub_pagesize_t kodak305_page[] =
+{
+ { "w288h432", "4x6", PT(1218,300)+1, PT(1864,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w432h576", "6x8", PT(1864,300)+1, PT(2422,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+};
+
+LIST(dyesub_pagesize_list_t, kodak305_page_list, dyesub_pagesize_t, kodak305_page);
+
+static const dyesub_printsize_t kodak305_printsize[] =
+{
+ { "300x300", "w288h432", 1218, 1864},
+ { "300x300", "w432h576", 1864, 2422},
+};
+
+LIST(dyesub_printsize_list_t, kodak305_printsize_list, dyesub_printsize_t, kodak305_printsize);
+
+static void kodak305_printer_init(stp_vars_t *v)
+{
+ mitsu_cpd70k60_printer_init(v, 0, 1);
}
/* Shinko CHC-S9045 (experimental) */
@@ -2820,7 +3120,7 @@ static const dyesub_pagesize_t shinko_chcs2145_page[] =
DYESUB_LANDSCAPE},
{ "w288h432", "4x6", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "2x6_x2", "2x6*2", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
DYESUB_LANDSCAPE},
#endif
@@ -2830,7 +3130,7 @@ static const dyesub_pagesize_t shinko_chcs2145_page[] =
DYESUB_PORTRAIT},
{ "w432h576", "6x8", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "4x6_x2", "4x6*2", PT(1844,300)+1, PT(2492,300)+1, 0, 0, 0, 0,
DYESUB_PORTRAIT},
#endif
@@ -2846,13 +3146,13 @@ static const dyesub_printsize_t shinko_chcs2145_printsize[] =
{
{ "300x300", "w144h432", 634, 1844},
{ "300x300", "w288h432", 1240, 1844},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "2x6_x2", 1240, 1844},
#endif
{ "300x300", "B7", 1088, 1548},
{ "300x300", "w360h504", 1548, 2140},
{ "300x300", "w432h576", 1844, 2434},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "4x6_x2", 1844, 2492},
#endif
{ "300x300", "w432h648", 1844, 2740},
@@ -2949,6 +3249,445 @@ static void shinko_chcs2145_printer_end(stp_vars_t *v)
stp_putc(0x01, v);
}
+/* Shinko CHC-S1245 */
+static const dyesub_pagesize_t shinko_chcs1245_page[] =
+{
+ { "w288h576", "8x4", PT(1229,300)+1, PT(2446,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w360h576", "8x5", PT(1530,300)+1, PT(2446,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w432h576", "8x6", PT(1831,300)+1, PT(2446,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w576h576", "8x8", PT(2436,300)+1, PT(2446,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+#ifdef MULTICUT
+ { "8x4_x2", "8x4*2", PT(2446,300)+1, PT(2468,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+#endif
+ { "c8x10", "8x10", PT(2446,300)+1, PT(3036,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "8x6_8x4", "8x6+8x4", PT(2446,300)+1, PT(3070,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+ { "8x5_x2", "8x5*2", PT(2446,300)+1, PT(3070,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+#endif
+ { "w576h864", "8x12", PT(2446,300)+1, PT(3636,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "8x6_x2", "8x6*2", PT(2446,300)+1, PT(3672,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+ { "8x4_x3", "8x4*3", PT(2446,300)+1, PT(3707,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+#endif
+};
+
+LIST(dyesub_pagesize_list_t, shinko_chcs1245_page_list, dyesub_pagesize_t, shinko_chcs1245_page);
+
+static const dyesub_printsize_t shinko_chcs1245_printsize[] =
+{
+ { "300x300", "w288h576", 1229, 2446},
+ { "300x300", "w360h576", 1530, 2446},
+ { "300x300", "w432h576", 1831, 2446},
+ { "300x300", "w576h576", 2436, 2446},
+#ifdef MULTICUT
+ { "300x300", "8x4_x2", 2446, 2468},
+#endif
+ { "300x300", "c8x10", 2446, 3036},
+#ifdef MULTICUT
+ { "300x300", "8x6_8x4", 2446, 3070},
+ { "300x300", "8x5_x2", 2446, 3070},
+#endif
+ { "300x300", "w576h864", 2446, 3636},
+#ifdef MULTICUT
+ { "300x300", "8x6_x2", 2446, 3672},
+ { "300x300", "8x4_x3", 2446, 3707},
+#endif
+};
+
+LIST(dyesub_printsize_list_t, shinko_chcs1245_printsize_list, dyesub_printsize_t, shinko_chcs1245_printsize);
+
+static const laminate_t shinko_chcs1245_laminate[] =
+{
+ {"PrinterDefault", N_("Printer Default"), {1, "\x01"}},
+ {"Glossy", N_("Glossy"), {1, "\x02\0\0\0"}},
+ {"GlossyFine", N_("Glossy Fine"), {1, "\x03"}},
+ {"Matte", N_("Matte"), {1, "\x04"}},
+ {"MatteFine", N_("Matte Fine"), {1, "\x05"}},
+};
+
+LIST(laminate_list_t, shinko_chcs1245_laminate_list, laminate_t, shinko_chcs1245_laminate);
+
+static void shinko_chcs1245_printer_init(stp_vars_t *v)
+{
+ int media = 0;
+
+ if (strcmp(privdata.pagesize,"w288h576") == 0)
+ media = 5;
+ else if (strcmp(privdata.pagesize,"w360h576") == 0)
+ media = 4;
+ else if (strcmp(privdata.pagesize,"w432h576") == 0)
+ media = 6;
+ else if (strcmp(privdata.pagesize,"w576h576") == 0)
+ media = 9;
+ else if (strcmp(privdata.pagesize,"8x4_x2") == 0)
+ media = 2;
+ else if (strcmp(privdata.pagesize,"c8x10") == 0)
+ media = 0;
+ else if (strcmp(privdata.pagesize,"8x6_8x4") == 0)
+ media = 3;
+ else if (strcmp(privdata.pagesize,"8x5_x2") == 0)
+ media = 1;
+ else if (strcmp(privdata.pagesize,"w576h864") == 0)
+ media = 0;
+ else if (strcmp(privdata.pagesize,"8x6_x2") == 0)
+ media = 7;
+ else if (strcmp(privdata.pagesize,"8x4_x3") == 0)
+ media = 8;
+
+ stp_put32_le(0x10, v);
+ stp_put32_le(1245, v); /* Printer Model */
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x01, v);
+
+ stp_put32_le(0x64, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x10, v); /* Seems to be fixed */
+ stp_put32_le(0x00, v);
+
+ stp_put32_le(media, v);
+ stp_zfwrite((privdata.laminate->seq).data, 1,
+ (privdata.laminate->seq).bytes, v); /* Print Mode */
+ stp_put32_le(0x00, v);
+ if (((const unsigned char*)(privdata.laminate->seq).data)[0] == 0x02 ||
+ ((const unsigned char*)(privdata.laminate->seq).data)[0] == 0x03) {
+ stp_put32_le(0x07fffffff, v); /* Glossy */
+ } else {
+ stp_put32_le(0x0, v); /* XXX -25>0>+25 */
+ }
+
+ stp_put32_le(0x00, v); /* XXX 0x00 printer default, 0x02 for "dust removal" on, 0x01 for off. */
+ stp_put32_le(privdata.w_size, v); /* Columns */
+ stp_put32_le(privdata.h_size, v); /* Rows */
+ stp_put32_le(0x01, v); /* Copies */
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+ stp_put32_le(privdata.w_dpi, v); /* Dots Per Inch */
+ stp_put32_le(0xffffffce, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+
+ stp_put32_le(0x00, v);
+}
+
+/* Shinko CHC-S6245 */
+static const dyesub_pagesize_t shinko_chcs6245_page[] =
+{
+ { "w288h576", "8x4", PT(1236,300)+1, PT(2464,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w360h576", "8x5", PT(1536,300)+1, PT(2464,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w432h576", "8x6", PT(1836,300)+1, PT(2464,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "w576h576", "8x8", PT(2436,300)+1, PT(2464,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE},
+ { "c8x10", "8x10", PT(2464,300)+1, PT(3036,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+ { "w576h864", "8x12", PT(2464,300)+1, PT(3636,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT},
+};
+
+LIST(dyesub_pagesize_list_t, shinko_chcs6245_page_list, dyesub_pagesize_t, shinko_chcs6245_page);
+
+static const dyesub_printsize_t shinko_chcs6245_printsize[] =
+{
+ { "300x300", "w288h576", 1236, 2464},
+ { "300x300", "w360h576", 1536, 2464},
+ { "300x300", "w432h576", 1836, 2464},
+ { "300x300", "w576h576", 2436, 2464},
+ { "300x300", "c8x10", 2464, 3036},
+ { "300x300", "w576h864", 2464, 3636},
+};
+
+LIST(dyesub_printsize_list_t, shinko_chcs6245_printsize_list, dyesub_printsize_t, shinko_chcs6245_printsize);
+
+static const laminate_t shinko_chcs6245_laminate[] =
+{
+ {"Glossy", N_("Glossy"), {4, "\x03\x00\x00\x00"}},
+ {"Matte", N_("Matte"), {4, "\x02\x00\x00\x00"}},
+ {"None", N_("None"), {4, "\x01\x00\x00\x00"}},
+};
+
+LIST(laminate_list_t, shinko_chcs6245_laminate_list, laminate_t, shinko_chcs6245_laminate);
+
+static void shinko_chcs6245_printer_init(stp_vars_t *v)
+{
+ int media = 0;
+
+ if (strcmp(privdata.pagesize,"w288h576") == 0)
+ media = 0x20;
+ else if (strcmp(privdata.pagesize,"w360h576") == 0)
+ media = 0x21;
+ else if (strcmp(privdata.pagesize,"w432h576") == 0)
+ media = 0x22;
+ else if (strcmp(privdata.pagesize,"w576h576") == 0)
+ media = 0x23;
+ else if (strcmp(privdata.pagesize,"c8x10") == 0)
+ media = 0x10;
+ else if (strcmp(privdata.pagesize,"w576h864") == 0)
+ media = 0x11;
+
+ stp_put32_le(0x10, v);
+ stp_put32_le(6245, v); /* Printer Model */
+ stp_put32_le(0x01, v);
+ stp_put32_le(0x01, v);
+
+ stp_put32_le(0x64, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(media, v);
+ stp_put32_le(0x00, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_zfwrite((privdata.laminate->seq).data, 1,
+ (privdata.laminate->seq).bytes, v); /* Lamination */
+ stp_put32_le(0x00, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(privdata.w_size, v); /* Columns */
+ stp_put32_le(privdata.h_size, v); /* Rows */
+ stp_put32_le(0x01, v); /* Copies */
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+ stp_put32_le(privdata.w_dpi, v); /* Dots Per Inch */
+ stp_put32_le(0xffffffce, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+
+ stp_put32_le(0x00, v);
+}
+
+/* Shinko CHC-S6145 */
+static const dyesub_pagesize_t shinko_chcs6145_page[] =
+{
+ { "w144h432", "2x6", PT(634,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w288h432", "4x6", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+#ifdef MULTICUT
+ { "2x6_x2", "2x6*2", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+#endif
+ { "w360h360", "5x5", PT(1536,300)+1, PT(1548,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w360h504", "5x7", PT(1548,300)+1, PT(2140,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+ { "w432h432", "6x6", PT(1832,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w432h576", "6x8", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "4x6_2x6", "4x6+2x6", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+#endif
+};
+
+LIST(dyesub_pagesize_list_t, shinko_chcs6145_page_list, dyesub_pagesize_t, shinko_chcs6145_page);
+
+static const dyesub_printsize_t shinko_chcs6145_printsize[] =
+{
+ { "300x300", "w144h432", 634, 1844},
+ { "300x300", "w288h432", 1240, 1844},
+#ifdef MULTICUT
+ { "300x300", "2x6_x2", 1240, 1844},
+#endif
+ { "300x300", "w360h360", 1536, 1548},
+ { "300x300", "w360h504", 1548, 2140},
+ { "300x300", "w432h432", 1832, 1844},
+ { "300x300", "w432h576", 1844, 2434},
+#ifdef MULTICUT
+ { "300x300", "4x6_2x6", 1844, 2434},
+#endif
+};
+
+LIST(dyesub_printsize_list_t, shinko_chcs6145_printsize_list, dyesub_printsize_t, shinko_chcs6145_printsize);
+
+static const laminate_t shinko_chcs6145_laminate[] =
+{
+ {"PrinterDefault", N_("Printer Default"), {4, "\x01\0\0\0"}},
+ {"Glossy", N_("Glossy"), {4, "\x02\0\0\0"}},
+ {"Matte", N_("Matte"), {4, "\x03\0\0\0"}},
+};
+
+LIST(laminate_list_t, shinko_chcs6145_laminate_list, laminate_t, shinko_chcs6145_laminate);
+
+static void shinko_chcs6145_printer_init(stp_vars_t *v)
+{
+ int media = 0;
+
+ if (strcmp(privdata.pagesize,"w288h432") == 0)
+ media = 0x00;
+ else if (strcmp(privdata.pagesize,"2x6_x2") == 0)
+ media = 0x00;
+ else if (strcmp(privdata.pagesize,"w360h360") == 0)
+ media = 0x08;
+ else if (strcmp(privdata.pagesize,"w360h504") == 0)
+ media = 0x03;
+ else if (strcmp(privdata.pagesize,"w432h432") == 0)
+ media = 0x06;
+ else if (strcmp(privdata.pagesize,"w432h576") == 0)
+ media = 0x06;
+ else if (strcmp(privdata.pagesize,"w144h432") == 0)
+ media = 0x07;
+ else if (strcmp(privdata.pagesize,"4x6_2x6") == 0)
+ media = 0x06;
+ else if (strcmp(privdata.pagesize,"6x6_2x6") == 0)
+ media = 0x06;
+
+ stp_put32_le(0x10, v);
+ stp_put32_le(6145, v); /* Printer Model */
+ if (!strcmp(privdata.pagesize,"w360h360") ||
+ !strcmp(privdata.pagesize,"w360h504"))
+ stp_put32_le(0x02, v); /* 5" media */
+ else
+ stp_put32_le(0x03, v); /* 6" media */
+ stp_put32_le(0x01, v);
+
+ stp_put32_le(0x64, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(media, v); /* Media Type */
+ stp_put32_le(0x00, v);
+
+ if (strcmp(privdata.pagesize,"6x6_2x6") == 0) {
+ stp_put32_le(0x05, v);
+ } else if (strcmp(privdata.pagesize,"2x6_x2") == 0) {
+ stp_put32_le(0x04, v);
+ } else {
+ stp_put32_le(0x00, v);
+ }
+ stp_put32_le(0x00, v); /* XXX quality; 00 == default, 0x01 == std */
+ stp_zfwrite((privdata.laminate->seq).data, 1,
+ (privdata.laminate->seq).bytes, v); /* Lamination */
+ stp_put32_le(0x00, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(privdata.w_size, v); /* Columns */
+ stp_put32_le(privdata.h_size, v); /* Rows */
+ stp_put32_le(0x01, v); /* Copies */
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+ stp_put32_le(privdata.w_dpi, v); /* Dots Per Inch */
+ stp_put32_le(0xffffffce, v);
+
+ stp_put32_le(0x00, v);
+ stp_put32_le(0xffffffce, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+
+ stp_put32_le(0x00, v);
+}
+
+/* Ciaat Brava 21 */
+static const dyesub_pagesize_t ciaat_brava21_page[] =
+{
+ { "w144h432", "2x6", PT(634,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+ { "w288h432", "4x6", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+#ifdef MULTICUT
+ { "2x6_x2", "2x6*2", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0,
+ DYESUB_LANDSCAPE},
+#endif
+ { "w360h504", "5x7", PT(1548,300)+1, PT(2140,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+ { "w432h576", "6x8", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "4x6_x2", "4x6*2", PT(1844,300)+1, PT(2492,300)+1, 0, 0, 0, 0,
+ DYESUB_PORTRAIT},
+#endif
+};
+
+LIST(dyesub_pagesize_list_t, ciaat_brava21_page_list, dyesub_pagesize_t, ciaat_brava21_page);
+
+static const dyesub_printsize_t ciaat_brava21_printsize[] =
+{
+ { "300x300", "w144h432", 634, 1844},
+ { "300x300", "w288h432", 1240, 1844},
+#ifdef MULTICUT
+ { "300x300", "2x6_x2", 1240, 1844},
+#endif
+ { "300x300", "w360h504", 1548, 2140},
+ { "300x300", "w432h576", 1844, 2434},
+#ifdef MULTICUT
+ { "300x300", "4x6_x2", 1844, 2492},
+#endif
+};
+
+LIST(dyesub_printsize_list_t, ciaat_brava21_printsize_list, dyesub_printsize_t, ciaat_brava21_printsize);
+
+static const laminate_t ciaat_brava21_laminate[] =
+{
+ {"Off", N_("Off"), {1, "\x01"}},
+ {"Glossy", N_("Glossy"), {1, "\x02"}},
+ {"Matte", N_("Matte"), {1, "\x03"}},
+};
+
+LIST(laminate_list_t, ciaat_brava21_laminate_list, laminate_t, ciaat_brava21_laminate);
+
+static void ciaat_brava21_printer_init(stp_vars_t *v)
+{
+ int media = 0;
+
+ if (strcmp(privdata.pagesize,"w288h432") == 0)
+ media = 0x00;
+ else if (strcmp(privdata.pagesize,"2x6_x2") == 0)
+ media = 0x00;
+ else if (strcmp(privdata.pagesize,"w360h504") == 0)
+ media = 0x03;
+ else if (strcmp(privdata.pagesize,"w432h576") == 0)
+ media = 0x06;
+ else if (strcmp(privdata.pagesize,"w144h432") == 0)
+ media = 0x07;
+ else if (strcmp(privdata.pagesize,"w4x6_x2") == 0)
+ media = 0x06;
+
+ stp_putc(0x01, v);
+ stp_putc(0x40, v);
+ stp_putc(0x12, v);
+ stp_putc(0x00, v);
+ stp_putc(0x01, v);
+ stp_putc(0x01, v); /* Copies */
+ stp_putc(0x00, v);
+ stp_put16_le(privdata.w_size, v); /* Columns */
+ stp_put16_le(privdata.h_size, v); /* Rows */
+
+ stp_putc(media, v);
+
+ dyesub_nputc(v, 0x00, 6);
+ stp_putc(0x01, v);
+
+ if (strcmp(privdata.pagesize,"2x6_x2") == 0)
+ media = 0x04;
+ else if (strcmp(privdata.pagesize,"4x6_x2") == 0)
+ media = 0x02;
+ else
+ media = 0x00; /* or 0x01 to turn off trimming */
+
+ stp_zfwrite((privdata.laminate->seq).data, 1,
+ (privdata.laminate->seq).bytes, v); /* Lamination */
+
+ stp_putc(media, v);
+ stp_putc(0x00, v);
+}
+
/* Dai Nippon Printing DS40 */
static const dyesub_resolution_t res_dnpds40_dpi[] =
{
@@ -2958,32 +3697,31 @@ static const dyesub_resolution_t res_dnpds40_dpi[] =
LIST(dyesub_resolution_list_t, res_dnpds40_dpi_list, dyesub_resolution_t, res_dnpds40_dpi);
-/* Imaging area is wider than print size, we always must supply the
- printer with the full imaging width. */
-static const dyesub_pagesize_t dnpds40_dock_page[] =
+/* Imaging area is wider than print size, we always must supply the printer with the full imaging width. */
+static const dyesub_pagesize_t dnpds40_page[] =
{
- { "B7", "3.5x5", PT(1088,300)+1, PT(1920,300)+1, 0, 0, PT(112,300), PT(112,300), DYESUB_LANDSCAPE},
+ { "B7", "3.5x5", PT(1088,300)+1, PT(1920,300)+1, 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE},
{ "w288h432", "4x6", PT(1240,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "2x6_x2", "2x6*2", PT(1240,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE},
#endif
- { "w360h504", "5x7", PT(1920,300)+1, PT(2138,300)+1, PT(112,300), PT(112,300), 0, 0, DYESUB_PORTRAIT},
+ { "w360h504", "5x7", PT(1920,300)+1, PT(2138,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT},
{ "A5", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "4x6_x2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
#endif
{ "w432h576", "6x9", PT(1920,300)+1, PT(2740,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
};
-LIST(dyesub_pagesize_list_t, dnpds40_dock_page_list, dyesub_pagesize_t, dnpds40_dock_page);
+LIST(dyesub_pagesize_list_t, dnpds40_page_list, dyesub_pagesize_t, dnpds40_page);
-static const dyesub_printsize_t dnpds40_dock_printsize[] =
+static const dyesub_printsize_t dnpds40_printsize[] =
{
{ "300x300", "B7", 1088, 1920},
{ "300x600", "B7", 2176, 1920},
{ "300x300", "w288h432", 1240, 1920},
{ "300x600", "w288h432", 2480, 1920},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "2x6_x2", 1240, 1920},
{ "300x600", "2x6_x2", 2480, 1920},
#endif
@@ -2991,7 +3729,7 @@ static const dyesub_printsize_t dnpds40_dock_printsize[] =
{ "300x600", "w360h504", 1920, 4276},
{ "300x300", "A5", 1920, 2436},
{ "300x600", "A5", 1920, 4872},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "4x6_x2", 1920, 2498},
{ "300x600", "4x6_x2", 1920, 4996},
#endif
@@ -2999,7 +3737,7 @@ static const dyesub_printsize_t dnpds40_dock_printsize[] =
{ "300x600", "w432h576", 1920, 5480},
};
-LIST(dyesub_printsize_list_t, dnpds40_dock_printsize_list, dyesub_printsize_t, dnpds40_dock_printsize);
+LIST(dyesub_printsize_list_t, dnpds40_printsize_list, dyesub_printsize_t, dnpds40_printsize);
static const laminate_t dnpds40_laminate[] =
{
@@ -3010,28 +3748,21 @@ static const laminate_t dnpds40_laminate[] =
LIST(laminate_list_t, dnpds40_laminate_list, laminate_t, dnpds40_laminate);
-static void dnpds40ds80_printer_start(stp_vars_t *v)
+static void dnp_printer_start_common(stp_vars_t *v)
{
- /* XXX Unknown purpose. */
- stp_zprintf(v, "\033PCNTRL RETENTION 0000000800000000");
-
/* Configure Lamination */
stp_zprintf(v, "\033PCNTRL OVERCOAT 00000008000000");
stp_zfwrite((privdata.laminate->seq).data, 1,
(privdata.laminate->seq).bytes, v); /* Lamination mode */
- /* Don't resume after error.. XXX should be in backend */
- stp_zprintf(v, "\033PCNTRL BUFFCNTRL 0000000800000000");
-
/* Set quantity.. Backend overrides as needed. */
stp_zprintf(v, "\033PCNTRL QTY 000000080000001\r");
-
}
static void dnpds40_printer_start(stp_vars_t *v)
{
/* Common code */
- dnpds40ds80_printer_start(v);
+ dnp_printer_start_common(v);
/* Set cutter option to "normal" */
stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000");
@@ -3046,7 +3777,8 @@ static void dnpds40_printer_start(stp_vars_t *v)
if (!strcmp(privdata.pagesize, "B7")) {
stp_zprintf(v, "01");
- } else if (!strcmp(privdata.pagesize, "w288h432")) {
+ } else if (!strcmp(privdata.pagesize, "w288h432") ||
+ !strcmp(privdata.pagesize, "2x6_x2")) {
stp_zprintf(v, "02");
} else if (!strcmp(privdata.pagesize, "w360h504")) {
stp_zprintf(v, "03");
@@ -3057,7 +3789,7 @@ static void dnpds40_printer_start(stp_vars_t *v)
} else if (!strcmp(privdata.pagesize, "4x6_x2")) {
stp_zprintf(v, "12");
} else {
- stp_zprintf(v, "00");
+ stp_zprintf(v, "00"); /* should be impossible. */
}
}
@@ -3107,34 +3839,34 @@ static void dnpds40_plane_init(stp_vars_t *v)
/* Dai Nippon Printing DS80 */
/* Imaging area is wider than print size, we always must supply the
printer with the full imaging width. */
-static const dyesub_pagesize_t dnpds80_dock_page[] =
+static const dyesub_pagesize_t dnpds80_page[] =
{
{ "w288h576", "8x4", PT(1236,300)+1, PT(2560,300)+1, 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE},
{ "w360h576", "8x5", PT(1536,300)+1, PT(2560,300)+1, 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE},
{ "w432h576", "8x6", PT(1836,300)+1, PT(2560,300)+1, 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE},
{ "w576h576", "8x8", PT(2436,300)+1, PT(2560,300)+1, 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "8x4_x2", "8x4*2", PT(2502,300)+1, PT(2560,300)+1, 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE},
{ "8x5_8x4", "8x5+8x4", PT(2560,300)+1, PT(2802,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
#endif
{ "c8x10", "8x10", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "8x5_x2", "8x5*2", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
{ "8x6_8x4", "8x6+8x4", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
{ "8x6_8x5", "8x6+8x5", PT(2560,300)+1, PT(3402,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
#endif
{ "A4", "A4 Length", PT(2560,300)+1, PT(3544,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
{ "w576h864", "8x12", PT(2560,300)+1, PT(3636,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "8x6_x2", "8x6*2", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
{ "8x8_8x4", "8x8+8x4", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
{ "8x4_x3", "8x4*3", PT(2560,300)+1, PT(3768,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT},
#endif
};
-LIST(dyesub_pagesize_list_t, dnpds80_dock_page_list, dyesub_pagesize_t, dnpds80_dock_page);
+LIST(dyesub_pagesize_list_t, dnpds80_page_list, dyesub_pagesize_t, dnpds80_page);
-static const dyesub_printsize_t dnpds80_dock_printsize[] =
+static const dyesub_printsize_t dnpds80_printsize[] =
{
{ "300x300", "w288h576", 1236, 2560},
{ "300x600", "w288h576", 2472, 2560},
@@ -3144,7 +3876,7 @@ static const dyesub_printsize_t dnpds80_dock_printsize[] =
{ "300x600", "w432h576", 3672, 2560},
{ "300x300", "w576h576", 2436, 2560},
{ "300x600", "w576h576", 4872, 2560},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "8x4_x2", 2502, 2560},
{ "300x600", "8x4_x2", 5004, 2560},
{ "300x300", "8x5_8x4", 2560, 2802},
@@ -3152,7 +3884,7 @@ static const dyesub_printsize_t dnpds80_dock_printsize[] =
#endif
{ "300x300", "c8x10", 2560, 3036},
{ "300x600", "c8x10", 2560, 6072},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "8x5_x2", 2560, 3102},
{ "300x600", "8x5_x2", 2560, 6204},
{ "300x300", "8x6_8x4", 2560, 3102},
@@ -3164,7 +3896,7 @@ static const dyesub_printsize_t dnpds80_dock_printsize[] =
{ "300x600", "A4", 2560, 7088},
{ "300x300", "w576h864", 2560, 3636},
{ "300x600", "w576h864", 2560, 7272},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "8x6_x2", 2560, 3702},
{ "300x600", "8x6_x2", 2560, 7404},
{ "300x300", "8x8_8x4", 2560, 3702},
@@ -3174,12 +3906,12 @@ static const dyesub_printsize_t dnpds80_dock_printsize[] =
#endif
};
-LIST(dyesub_printsize_list_t, dnpds80_dock_printsize_list, dyesub_printsize_t, dnpds80_dock_printsize);
+LIST(dyesub_printsize_list_t, dnpds80_printsize_list, dyesub_printsize_t, dnpds80_printsize);
static void dnpds80_printer_start(stp_vars_t *v)
{
/* Common code */
- dnpds40ds80_printer_start(v);
+ dnp_printer_start_common(v);
/* Set cutter option to "normal" */
stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000000");
@@ -3218,35 +3950,37 @@ static void dnpds80_printer_start(stp_vars_t *v)
} else if (!strcmp(privdata.pagesize, "A4")) {
stp_zprintf(v, "21");
} else {
- stp_zprintf(v, "00");
+ stp_zprintf(v, "00"); /* should not be possible */
}
}
+/* Dai Nippon Printing DS-RX1 */
/* Imaging area is wider than print size, we always must supply the
printer with the full imaging width. */
-static const dyesub_pagesize_t dnpsrx1_dock_page[] =
+static const dyesub_pagesize_t dnpsrx1_page[] =
{
- { "B7", "3.5x5", PT(1920,300)+1, PT(1088,300)+1, PT(112,300), PT(112,300), 0, 0, DYESUB_PORTRAIT},
+ { "B7", "3.5x5", PT(1920,300)+1, PT(1088,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT},
{ "w288h432", "4x6", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "2x6_x2", "2x6*2", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
#endif
- { "w360h504", "5x7", PT(1920,300)+1, PT(2138,300)+1, PT(112,300), PT(112,300), 0, 0, DYESUB_PORTRAIT},
+ { "w360h504", "5x7", PT(1920,300)+1, PT(2138,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT},
{ "A5", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
-#ifdef DNPX2
+#ifdef MULTICUT
+ { "2x6_x4", "2x6*4", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
{ "4x6_x2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
#endif
};
-LIST(dyesub_pagesize_list_t, dnpsrx1_dock_page_list, dyesub_pagesize_t, dnpsrx1_dock_page);
+LIST(dyesub_pagesize_list_t, dnpsrx1_page_list, dyesub_pagesize_t, dnpsrx1_page);
-static const dyesub_printsize_t dnpsrx1_dock_printsize[] =
+static const dyesub_printsize_t dnpsrx1_printsize[] =
{
{ "300x300", "B7", 1920, 1088},
{ "300x600", "B7", 1920, 2176},
{ "300x300", "w288h432", 1920, 1240},
{ "300x600", "w288h432", 1920, 2480},
-#ifdef DNPX2
+#ifdef MULTICUT
{ "300x300", "2x6_x2", 1920, 1240},
{ "300x600", "2x6_x2", 1920, 2480},
#endif
@@ -3254,23 +3988,27 @@ static const dyesub_printsize_t dnpsrx1_dock_printsize[] =
{ "300x600", "w360h504", 1920, 4276},
{ "300x300", "A5", 1920, 2436},
{ "300x600", "A5", 1920, 4872},
-#ifdef DNPX2
+#ifdef MULTICUT
+ { "300x300", "2x6_x4", 1920, 2436},
+ { "300x600", "2x6_x4", 1920, 4872},
{ "300x300", "4x6_x2", 1920, 2498},
{ "300x600", "4x6_x2", 1920, 4996},
#endif
};
-LIST(dyesub_printsize_list_t, dnpsrx1_dock_printsize_list, dyesub_printsize_t, dnpsrx1_dock_printsize);
+LIST(dyesub_printsize_list_t, dnpsrx1_printsize_list, dyesub_printsize_t, dnpsrx1_printsize);
static void dnpdsrx1_printer_start(stp_vars_t *v)
{
/* Common code */
- dnpds40ds80_printer_start(v);
+ dnp_printer_start_common(v);
/* Set cutter option to "normal" */
stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000");
if (!strcmp(privdata.pagesize, "2x6_x2")) {
stp_zprintf(v, "120");
+ } else if (!strcmp(privdata.pagesize, "2x6_x4")) {
+ stp_zprintf(v, "120");
} else {
stp_zprintf(v, "000");
}
@@ -3288,11 +4026,248 @@ static void dnpdsrx1_printer_start(stp_vars_t *v)
stp_zprintf(v, "04");
} else if (!strcmp(privdata.pagesize, "4x6_x2")) {
stp_zprintf(v, "12");
+ } else if (!strcmp(privdata.pagesize, "2x6_x2")) {
+ stp_zprintf(v, "02");
+ } else if (!strcmp(privdata.pagesize, "2x6_x4")) {
+ stp_zprintf(v, "04");
} else {
stp_zprintf(v, "00");
}
}
+/* Dai Nippon Printing DS620 */
+/* Imaging area is wider than print size, we always must supply the
+ printer with the full imaging width. */
+static const dyesub_pagesize_t dnpds620_page[] =
+{
+ { "B7", "3.5x5", PT(1920,300)+1, PT(1088,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT},
+ { "w288h432", "4x6", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "2x6_x2", "2x6*2", PT(1920,300)+1, PT(1240,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+#endif
+ { "w324h432", "4.5x6", PT(1920,300)+1, PT(1386,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+ { "w360h360", "5x5", PT(1920,300)+1, PT(1540,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT},
+ { "w360h504", "5x7", PT(1920,300)+1, PT(2138,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "B7_x2", "3.5x5*2", PT(1920,300)+1, PT(2176,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT},
+#endif
+ { "w432h432", "6x6", PT(1920,300)+1, PT(1836,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+ { "A5", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "6x6_2x6", "6x6+2x6", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+ { "2x6_x4", "2x6*4", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+ { "4x6_x2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+#endif
+ { "w432h576", "6x9", PT(1920,300)+1, PT(2740,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+#ifdef MULTICUT
+ { "w324h432_x2", "4.5x6*2", PT(1920,300)+1, PT(2802,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT},
+#endif
+};
+
+LIST(dyesub_pagesize_list_t, dnpds620_page_list, dyesub_pagesize_t, dnpds620_page);
+
+static const dyesub_printsize_t dnpds620_printsize[] =
+{
+ { "300x300", "B7", 1920, 1088},
+ { "300x600", "B7", 1920, 2176},
+ { "300x300", "w288h432", 1920, 1240},
+ { "300x600", "w288h432", 1920, 2480},
+#ifdef MULTICUT
+ { "300x300", "2x6_x2", 1920, 1240},
+ { "300x600", "2x6_x2", 1920, 2480},
+#endif
+ { "300x300", "w324h432", 1920, 1386},
+ { "300x600", "w324h432", 1920, 2772},
+ { "300x300", "w360h360", 1920, 1540},
+ { "300x600", "w360h360", 1920, 3080},
+ { "300x300", "w360h504", 1920, 2138},
+ { "300x600", "w360h504", 1920, 4276},
+#ifdef MULTICUT
+ { "300x300", "B7_x2", 1920, 2176},
+ { "300x600", "B7_x2", 1920, 4352},
+#endif
+ { "300x300", "w432h432", 1920, 1836},
+ { "300x600", "w432h432", 1920, 3672},
+ { "300x300", "A5", 1920, 2436},
+ { "300x600", "A5", 1920, 4872},
+#ifdef MULTICUT
+ { "300x300", "2x6_x4", 1920, 2436},
+ { "300x600", "2x6_x4", 1920, 4872},
+ { "300x300", "6x6_2x6", 1920, 2436},
+ { "300x600", "6x6_2x6", 1920, 4872},
+ { "300x300", "4x6_x2", 1920, 2498},
+ { "300x600", "4x6_x2", 1920, 4996},
+#endif
+ { "300x300", "w432h576", 1920, 2740},
+ { "300x600", "w432h576", 1920, 5480},
+#ifdef MULTICUT
+ { "300x300", "w324h432_x2", 1920, 2802},
+ { "300x600", "w324h432_x2", 1920, 5604},
+#endif
+};
+
+LIST(dyesub_printsize_list_t, dnpds620_printsize_list, dyesub_printsize_t, dnpds620_printsize);
+
+static void dnpds620_printer_start(stp_vars_t *v)
+{
+ /* Common code */
+ dnp_printer_start_common(v);
+
+ /* Multicut when 8x6 media is in use */
+ if (!strcmp(privdata.pagesize, "A5") &&
+ !strcmp(privdata.pagesize, "w432h648")) {
+ stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016");
+ stp_zprintf(v, "0000000000000000");
+ } else if (!strcmp(privdata.pagesize, "2x6_x4")) {
+ stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016");
+ stp_zprintf(v, "0200200200200000");
+ } else if (!strcmp(privdata.pagesize, "6x6_2x6")) {
+ stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016");
+ stp_zprintf(v, "0600200000000000");
+ } else if (!strcmp(privdata.pagesize, "2x6_x2")) {
+ stp_zprintf(v, "\033PCNTRL CUTTER 00000008");
+ stp_zprintf(v, "00000120");
+ }
+
+ /* Configure multi-cut/page size */
+ stp_zprintf(v, "\033PIMAGE MULTICUT 00000008000000");
+
+ if (!strcmp(privdata.pagesize, "B7")) {
+ stp_zprintf(v, "01");
+ } else if (!strcmp(privdata.pagesize, "w288h432")) {
+ stp_zprintf(v, "02");
+ } else if (!strcmp(privdata.pagesize, "w324h432")) {
+ stp_zprintf(v, "30");
+ } else if (!strcmp(privdata.pagesize, "w360h360")) {
+ stp_zprintf(v, "29");
+ } else if (!strcmp(privdata.pagesize, "w360h504")) {
+ stp_zprintf(v, "03");
+ } else if (!strcmp(privdata.pagesize, "w432h432")) {
+ stp_zprintf(v, "27");
+ } else if (!strcmp(privdata.pagesize, "A5")) {
+ stp_zprintf(v, "04");
+ } else if (!strcmp(privdata.pagesize, "w432h576")) {
+ stp_zprintf(v, "05");
+ } else if (!strcmp(privdata.pagesize, "6x6_2x6")) {
+ stp_zprintf(v, "04");
+ } else if (!strcmp(privdata.pagesize, "2x6_x4")) {
+ stp_zprintf(v, "04");
+ } else if (!strcmp(privdata.pagesize, "2x6_x2")) {
+ stp_zprintf(v, "02");
+ } else if (!strcmp(privdata.pagesize, "4x6_x2")) {
+ stp_zprintf(v, "12");
+ } else if (!strcmp(privdata.pagesize, "w324h432_x2")) {
+ stp_zprintf(v, "31");
+ } else {
+ stp_zprintf(v, "00"); /* Should be impossible */
+ }
+}
+
+/* Citizen CW-01 */
+static const dyesub_resolution_t res_citizen_cw01_dpi[] =
+{
+ { "334x334", 334, 334},
+ { "334x600", 334, 600},
+};
+
+LIST(dyesub_resolution_list_t, res_citizen_cw01_dpi_list, dyesub_resolution_t,res_citizen_cw01_dpi);
+
+static const dyesub_pagesize_t citizen_cw01_page[] =
+{
+ { "w252h338", "3.5x4.7", PT(1210,334)+1, PT(2048,334)+1, 0, 0, PT(225,334), PT(225,334), DYESUB_LANDSCAPE},
+ { "B7", "3.5x5", PT(1210,334)+1, PT(2048,334)+1, 0, 0, PT(169,334), PT(169,334), DYESUB_LANDSCAPE},
+ { "w288h432", "4x6", PT(1380,334)+1, PT(2048,334)+1, 0, 0, PT(5,334), PT(5,334), DYESUB_LANDSCAPE},
+ { "w338h504", "4.7x7", PT(2048,334)+1, PT(2380,334)+1, PT(225,334), PT(225,334), 0, 0, DYESUB_PORTRAIT},
+ { "w360h504", "5x7", PT(2048,334)+1, PT(2380,334)+1, PT(169,334), PT(169,334), 0, 0, DYESUB_PORTRAIT},
+ { "A5", "6x8", PT(2048,334)+1, PT(2710,300)+1, PT(5,334), PT(5,334), 0, 0, DYESUB_PORTRAIT},
+ { "w432h576", "6x9", PT(2048,334)+1, PT(3050,334)+1, PT(5,334), PT(5,334), 0, 0, DYESUB_PORTRAIT},
+};
+
+LIST(dyesub_pagesize_list_t, citizen_cw01_page_list, dyesub_pagesize_t, citizen_cw01_page);
+
+static const dyesub_printsize_t citizen_cw01_printsize[] =
+{
+ { "334x334", "w252h338", 1210, 2048},
+ { "334x600", "w252h388", 2176, 2048},
+ { "334x334", "B7", 1210, 2048},
+ { "334x600", "B7", 2176, 2048},
+ { "334x334", "w288h432", 1380, 2048},
+ { "334x600", "w288h432", 2480, 2048},
+ { "334x334", "w338h504", 2048, 2380},
+ { "334x600", "w338h504", 2048, 4276},
+ { "334x334", "w360h504", 2048, 2380},
+ { "334x600", "w360h504", 2048, 4276},
+ { "334x334", "A5", 2048, 2710},
+ { "334x600", "A5", 2048, 4870},
+ { "334x334", "w432h576", 2048, 3050},
+ { "334x600", "w432h576", 2048, 5480},
+};
+
+LIST(dyesub_printsize_list_t, citizen_cw01_printsize_list, dyesub_printsize_t, citizen_cw01_printsize);
+
+static void citizen_cw01_printer_start(stp_vars_t *v)
+{
+ int media = 0;
+
+ if (strcmp(privdata.pagesize,"w252h338") == 0)
+ media = 0x00;
+ else if (strcmp(privdata.pagesize,"B7") == 0)
+ media = 0x01;
+ else if (strcmp(privdata.pagesize,"w288h432") == 0)
+ media = 0x02;
+ else if (strcmp(privdata.pagesize,"w338h504") == 0)
+ media = 0x03;
+ else if (strcmp(privdata.pagesize,"w360h504") == 0)
+ media = 0x04;
+ else if (strcmp(privdata.pagesize,"A5") == 0)
+ media = 0x05;
+ else if (strcmp(privdata.pagesize,"w432h576") == 0)
+ media = 0x06;
+
+ stp_putc(media, v);
+ if (privdata.h_dpi == 600) {
+ stp_putc(0x01, v);
+ } else {
+ stp_putc(0x00, v);
+ }
+ stp_putc(0x01, v); /* This is actually number of copies */
+ stp_putc(0x00, v);
+
+ /* Compute plane size */
+ media = (privdata.w_size * privdata.h_size) + 1024 + 40;
+
+ stp_put32_le(media, v);
+ stp_put32_le(0x0, v);
+}
+
+static void citizen_cw01_plane_init(stp_vars_t *v)
+{
+ int i;
+
+ stp_put32_le(0x28, v);
+ stp_put32_le(0x0800, v);
+ stp_put16_le(privdata.h_size, v); /* number of rows */
+ stp_put16_le(0x0, v);
+ stp_put32_le(0x080001, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x00, v);
+ stp_put32_le(0x335a, v);
+ if (privdata.h_dpi == 600) {
+ stp_put32_le(0x5c40, v);
+ } else {
+ stp_put32_le(0x335a, v);
+ }
+ stp_put32_le(0x0100, v);
+ stp_put32_le(0x00, v);
+
+ /* Write the color curve data. */
+ for (i = 0xff; i >= 0 ; i--) {
+ unsigned long tmp;
+ tmp = i | (i << 8) | (i << 16);
+ stp_put32_le(tmp, v);
+ }
+}
+
/* Model capabilities */
static const dyesub_cap_t dyesub_model_capabilities[] =
@@ -3550,18 +4525,18 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
},
{ /* Canon CP820, CP910 */
1011,
- &bgr_ink_list,
+ &rgb_ink_list,
&res_300dpi_list,
&cp910_page_list,
&cp910_printsize_list,
SHRT_MAX,
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
| DYESUB_FEATURE_BORDERLESS | DYESUB_FEATURE_WHITE_BORDER
- | DYESUB_FEATURE_PLANE_INTERLACE,
+ | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_RGBtoYCBCR,
&cp910_printer_init_func, NULL,
NULL, NULL,
NULL, NULL,
- NULL, NULL, NULL, /* Unknown color correction! */
+ NULL, NULL, NULL, /* Printer handles color correction! */
NULL, NULL,
},
{ /* Sony UP-DP10 */
@@ -3626,16 +4601,30 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
2004,
&rgb_ink_list,
&res_334dpi_list,
- &updr150_page_list,
- &updr150_printsize_list,
+ &updr200_page_list,
+ &updr200_printsize_list,
SHRT_MAX,
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT,
- &updr200_printer_init_func, &updr150_printer_end_func,
+ &updr200_printer_init_func, &updr200_printer_end_func,
NULL, NULL,
NULL, NULL,
NULL, NULL, NULL,
&updr200_laminate_list, NULL,
},
+ { /* Sony UP-CR10L / DNP SL10 */
+ 2005,
+ &rgb_ink_list,
+ &res_300dpi_list,
+ &upcr10_page_list,
+ &upcr10_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT,
+ &upcr10_printer_init_func, &upcr10_printer_end_func,
+ NULL, NULL,
+ NULL, NULL,
+ NULL, NULL, NULL,
+ NULL, NULL,
+ },
{ /* Fujifilm Printpix CX-400 */
3000,
&rgb_ink_list,
@@ -3785,6 +4774,22 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
&kodak_9810_laminate_list, NULL,
},
+ { /* Kodak 8810 */
+ 4007,
+ &bgr_ink_list,
+ &res_300dpi_list,
+ &kodak_8810_page_list,
+ &kodak_8810_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
+ | DYESUB_FEATURE_PLANE_INTERLACE,
+ &kodak_8810_printer_init, NULL,
+ NULL, NULL,
+ NULL, NULL, /* No block funcs */
+ NULL, NULL, NULL, /* color profile/adjustment is built into printer */
+ &kodak_8810_laminate_list, NULL,
+ },
+
{ /* Kodak Professional 8500 */
4100,
&bgr_ink_list,
@@ -3832,7 +4837,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
},
{ /* Mitsubishi CP9550D */
4103,
- &bgr_ink_list,
+ &rgb_ink_list,
&res_346dpi_list,
&mitsu_cp9550_page_list,
&mitsu_cp9550_printsize_list,
@@ -3863,7 +4868,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
},
{ /* Mitsubishi CPD70D/CPD707D */
4105,
- &bgr_ink_list,
+ &ymc_ink_list,
&res_300dpi_list,
&mitsu_cpd70x_page_list,
&mitsu_cpd70x_printsize_list,
@@ -3879,7 +4884,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
},
{ /* Mitsubishi CPK60D */
4106,
- &bgr_ink_list,
+ &ymc_ink_list,
&res_300dpi_list,
&mitsu_cpk60_page_list,
&mitsu_cpk60_printsize_list,
@@ -3887,13 +4892,44 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
| DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP
| DYESUB_FEATURE_BIGENDIAN,
- &mitsu_cpk60_printer_init, &mitsu_cpd70x_printer_end,
+ &mitsu_cpk60_printer_init, &mitsu_cpk60_printer_end,
+ NULL, &mitsu_cpd70x_plane_end,
+ NULL, NULL, /* No block funcs */
+ NULL, NULL, NULL, /* color profile/adjustment is built into printer */
+ &mitsu_cpd70x_laminate_list, NULL,
+ },
+ { /* Mitsubishi CPD80D */
+ 4107,
+ &ymc_ink_list,
+ &res_300dpi_list,
+ &mitsu_cpd80_page_list,
+ &mitsu_cpd80_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
+ | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP
+ | DYESUB_FEATURE_BIGENDIAN,
+ &mitsu_cpd70x_printer_init, &mitsu_cpd70x_printer_end,
+ NULL, &mitsu_cpd70x_plane_end,
+ NULL, NULL, /* No block funcs */
+ NULL, NULL, NULL, /* color profile/adjustment is built into printer */
+ &mitsu_cpd70x_laminate_list, NULL,
+ },
+ { /* Kodak 305 */
+ 4108,
+ &ymc_ink_list,
+ &res_300dpi_list,
+ &kodak305_page_list,
+ &kodak305_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT
+ | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_16BPP
+ | DYESUB_FEATURE_BIGENDIAN,
+ &kodak305_printer_init, &mitsu_cpk60_printer_end,
NULL, &mitsu_cpd70x_plane_end,
NULL, NULL, /* No block funcs */
NULL, NULL, NULL, /* color profile/adjustment is built into printer */
&mitsu_cpd70x_laminate_list, NULL,
},
-
{ /* Shinko CHC-S9045 (experimental) */
5000,
&rgb_ink_list,
@@ -3922,12 +4958,68 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, NULL, /* Color correction in printer */
&shinko_chcs2145_laminate_list, NULL,
},
+ { /* Shinko/Sinfonia CHC-S1245 */
+ 5002,
+ &rgb_ink_list,
+ &res_300dpi_list,
+ &shinko_chcs1245_page_list,
+ &shinko_chcs1245_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT,
+ &shinko_chcs1245_printer_init, &shinko_chcs2145_printer_end,
+ NULL, NULL, /* No planes */
+ NULL, NULL, /* No blocks */
+ NULL, NULL, NULL, /* Color correction in printer */
+ &shinko_chcs1245_laminate_list, NULL,
+ },
+ { /* Shinko/Sinfonia CHC-S6245 */
+ 5003,
+ &rgb_ink_list,
+ &res_300dpi_list,
+ &shinko_chcs6245_page_list,
+ &shinko_chcs6245_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT,
+ &shinko_chcs6245_printer_init, &shinko_chcs2145_printer_end,
+ NULL, NULL, /* No planes */
+ NULL, NULL, /* No blocks */
+ NULL, NULL, NULL, /* Color correction in printer */
+ &shinko_chcs6245_laminate_list, NULL,
+ },
+ { /* Shinko/Sinfonia CHC-S6145 */
+ 5004,
+ &rgb_ink_list,
+ &res_300dpi_list,
+ &shinko_chcs6145_page_list,
+ &shinko_chcs6145_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT,
+ &shinko_chcs6145_printer_init, &shinko_chcs2145_printer_end,
+ NULL, NULL, /* No planes */
+ NULL, NULL, /* No blocks */
+ NULL, NULL, NULL, /* Color correction in printer */
+ &shinko_chcs6145_laminate_list, NULL,
+ },
+ { /* CIAAT Brava 21 */
+ 5005,
+ &rgb_ink_list,
+ &res_300dpi_list,
+ &ciaat_brava21_page_list,
+ &ciaat_brava21_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT,
+ &ciaat_brava21_printer_init, NULL,
+ NULL, NULL, /* No planes */
+ NULL, NULL, /* No blocks */
+ NULL, NULL, NULL, /* Color correction in printer */
+ &ciaat_brava21_laminate_list, NULL,
+ },
{ /* Dai Nippon Printing DS40 */
6000,
&bgr_ink_list,
&res_dnpds40_dpi_list,
- &dnpds40_dock_page_list,
- &dnpds40_dock_printsize_list,
+ &dnpds40_page_list,
+ &dnpds40_printsize_list,
SHRT_MAX,
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER
| DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT,
@@ -3941,8 +5033,8 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
6001,
&bgr_ink_list,
&res_dnpds40_dpi_list,
- &dnpds80_dock_page_list,
- &dnpds80_dock_printsize_list,
+ &dnpds80_page_list,
+ &dnpds80_printsize_list,
SHRT_MAX,
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER
| DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT,
@@ -3956,8 +5048,8 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
6002,
&bgr_ink_list,
&res_dnpds40_dpi_list,
- &dnpsrx1_dock_page_list,
- &dnpsrx1_dock_printsize_list,
+ &dnpsrx1_page_list,
+ &dnpsrx1_printsize_list,
SHRT_MAX,
DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER
| DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT,
@@ -3967,6 +5059,36 @@ static const dyesub_cap_t dyesub_model_capabilities[] =
NULL, NULL, NULL,
&dnpds40_laminate_list, NULL,
},
+ { /* Dai Nippon Printing DS620 */
+ 6003,
+ &bgr_ink_list,
+ &res_dnpds40_dpi_list,
+ &dnpds620_page_list,
+ &dnpds620_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER
+ | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT,
+ &dnpds620_printer_start, &dnpds40_printer_end,
+ &dnpds40_plane_init, NULL,
+ NULL, NULL,
+ NULL, NULL, NULL,
+ &dnpds40_laminate_list, NULL,
+ },
+ { /* Citizen CW-01 */
+ 6005,
+ &bgr_ink_list,
+ &res_citizen_cw01_dpi_list,
+ &citizen_cw01_page_list,
+ &citizen_cw01_printsize_list,
+ SHRT_MAX,
+ DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER
+ | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT,
+ &citizen_cw01_printer_start, NULL,
+ &citizen_cw01_plane_init, NULL,
+ NULL, NULL,
+ NULL, NULL, NULL,
+ NULL, NULL,
+ },
};
static const stp_parameter_t the_parameters[] =
@@ -4618,13 +5740,14 @@ dyesub_read_image(stp_vars_t *v,
static int
dyesub_print_pixel(stp_vars_t *v,
dyesub_print_vars_t *pv,
+ const dyesub_cap_t *caps,
int row,
int col,
int plane)
{
- unsigned short ink[MAX_INK_CHANNELS * MAX_BYTES_PER_CHANNEL], *out;
+ unsigned short ink[MAX_INK_CHANNELS], *out;
int i, j, b;
-
+
if (pv->print_mode == DYESUB_LANDSCAPE)
{ /* "rotate" image */
dyesub_swap_ints(&col, &row);
@@ -4637,7 +5760,28 @@ dyesub_print_pixel(stp_vars_t *v,
{
if (pv->out_channels == pv->ink_channels)
{ /* copy out_channel (image) to equiv ink_channel (printer) */
- ink[i] = out[i];
+ if (dyesub_feature(caps, DYESUB_FEATURE_RGBtoYCBCR)) {
+ /* Convert RGB -> YCbCr (JPEG YCbCr444 coefficients) */
+ double R, G, B;
+ double Y, Cr, Cb;
+ R = out[0];
+ G = out[1];
+ B = out[2];
+
+ Y = R * 0.29900 + G * 0.58700 + B * 0.11400;
+ Cb = R * -0.16874 + G * -0.33126 + B * 0.50000 + 32768;
+ Cr = R * 0.50000 + G * -0.41869 + B * -0.08131 + 32768;
+
+ ink[0] = Y;
+ ink[1] = Cb;
+ ink[2] = Cr;
+
+ /* XXX this is sub-optimal; we compute the full YCbCr
+ values and throw away 2/3 for each pixel printed
+ if we are plane or row interleaved */
+ } else {
+ ink[i] = out[i];
+ }
}
else if (pv->out_channels < pv->ink_channels)
{ /* several ink_channels (printer) "share" same out_channel (image) */
@@ -4657,10 +5801,14 @@ dyesub_print_pixel(stp_vars_t *v,
if (pv->bytes_per_ink_channel == 1)
{
unsigned char *ink_u8 = (unsigned char *) ink;
- for (i = 0; i < pv->ink_channels; i++)
- ink_u8[i] = ink[i] / 257;
- /* FIXME: This really should be corrected to be: */
- /* ink_u8[i] = ink[i] >> 8; */
+ for (i = 0; i < pv->ink_channels; i++) {
+#if 0
+ if (dyesub_feature(caps, DYESUB_FEATURE_RGBtoYCBCR))
+ ink_u8[i] = ink[i] >> 8;
+ else
+#endif
+ ink_u8[i] = ink[i] / 257;
+ }
}
else if (pv->bits_per_ink_channel != 16)
{
@@ -4688,6 +5836,7 @@ dyesub_print_pixel(stp_vars_t *v,
static int
dyesub_print_row(stp_vars_t *v,
dyesub_print_vars_t *pv,
+ const dyesub_cap_t *caps,
int row,
int plane)
{
@@ -4698,9 +5847,9 @@ dyesub_print_row(stp_vars_t *v,
{
col = dyesub_interpolate(w, pv->outw_px, pv->imgw_px);
if (pv->plane_lefttoright)
- ret = dyesub_print_pixel(v, pv, row, pv->imgw_px - col - 1, plane);
+ ret = dyesub_print_pixel(v, pv, caps, row, pv->imgw_px - col - 1, plane);
else
- ret = dyesub_print_pixel(v, pv, row, col, plane);
+ ret = dyesub_print_pixel(v, pv, caps, row, col, plane);
if (ret > 1)
break;
}
@@ -4737,26 +5886,26 @@ dyesub_print_plane(stp_vars_t *v,
if (h + pv->prnt_px < pv->outt_px || h + pv->prnt_px >= pv->outb_px)
{ /* empty part above or below image area */
- dyesub_nputc(v, pv->empty_byte, out_bytes * pv->prnw_px);
+ dyesub_nputc(v, pv->empty_byte[plane], out_bytes * pv->prnw_px);
}
else
{
if (dyesub_feature(caps, DYESUB_FEATURE_FULL_WIDTH)
&& pv->outl_px > 0)
{ /* empty part left of image area */
- dyesub_nputc(v, pv->empty_byte, out_bytes * pv->outl_px);
+ dyesub_nputc(v, pv->empty_byte[plane], out_bytes * pv->outl_px);
}
row = dyesub_interpolate(h + pv->prnt_px - pv->outt_px,
pv->outh_px, pv->imgh_px);
stp_deprintf(STP_DBG_DYESUB,
"dyesub_print_plane: h = %d, row = %d\n", h, row);
- ret = dyesub_print_row(v, pv, row, p);
+ ret = dyesub_print_row(v, pv, caps, row, p);
if (dyesub_feature(caps, DYESUB_FEATURE_FULL_WIDTH)
&& pv->outr_px < pv->prnw_px)
{ /* empty part right of image area */
- dyesub_nputc(v, pv->empty_byte, out_bytes
+ dyesub_nputc(v, pv->empty_byte[plane], out_bytes
* (pv->prnw_px - pv->outr_px));
}
}
@@ -4911,9 +6060,26 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image)
}
pv.image_data = dyesub_read_image(v, &pv, image);
- pv.empty_byte = (ink_type &&
- (strcmp(ink_type, "RGB") == 0 || strcmp(ink_type, "BGR") == 0)
- ? '\xff' : '\0');
+ if (ink_type) {
+ if (dyesub_feature(caps, DYESUB_FEATURE_RGBtoYCBCR)) {
+ pv.empty_byte[0] = 0xff; /* Y */
+ pv.empty_byte[1] = 0x80; /* Cb */
+ pv.empty_byte[2] = 0x80; /* Cr */
+ } else if (strcmp(ink_type, "RGB") == 0 || strcmp(ink_type, "BGR") == 0) {
+ pv.empty_byte[0] = 0xff;
+ pv.empty_byte[1] = 0xff;
+ pv.empty_byte[2] = 0xff;
+ } else {
+ pv.empty_byte[0] = 0x0;
+ pv.empty_byte[1] = 0x0;
+ pv.empty_byte[2] = 0x0;
+ }
+ } else {
+ pv.empty_byte[0] = 0x0;
+ pv.empty_byte[1] = 0x0;
+ pv.empty_byte[2] = 0x0;
+ }
+
pv.plane_interlacing = dyesub_feature(caps, DYESUB_FEATURE_PLANE_INTERLACE);
pv.row_interlacing = dyesub_feature(caps, DYESUB_FEATURE_ROW_INTERLACE);
pv.plane_lefttoright = dyesub_feature(caps, DYESUB_FEATURE_PLANE_LEFTTORIGHT);
diff --git a/src/main/print-pcl.c b/src/main/print-pcl.c
index 68d69d2..239eb74 100644
--- a/src/main/print-pcl.c
+++ b/src/main/print-pcl.c
@@ -1,5 +1,5 @@
/*
- * "$Id: print-pcl.c,v 1.162 2014/01/04 23:07:22 rlk Exp $"
+ * "$Id: print-pcl.c,v 1.163 2015/05/05 02:13:14 rlk Exp $"
*
* Print plug-in HP PCL driver for the GIMP.
*
@@ -62,6 +62,8 @@ typedef struct
int duplex;
int tumble;
int use_crd;
+ int orientation;
+ int label_separator;
} pcl_privdata_t;
/*
@@ -330,6 +332,7 @@ typedef struct {
#define PCL_PRINTER_CUSTOM_SIZE 32 /* Custom sizes supported */
#define PCL_PRINTER_BLANKLINE 64 /* Blank line removal supported */
#define PCL_PRINTER_DUPLEX 128 /* Printer can have duplexer */
+#define PCL_PRINTER_LABEL 256 /* Datamax-O'Neil PCL Label Printer */
/*
* FIXME - the 520 shouldn't be lumped in with the 500 as it supports
@@ -348,6 +351,12 @@ static const short emptylist[] =
-1
};
+static const short custom_papersizes[] =
+{
+ PCL_PAPERSIZE_CUSTOM,
+ -1,
+};
+
static const short standard_papersizes[] =
{
PCL_PAPERSIZE_EXECUTIVE,
@@ -697,6 +706,104 @@ static const pcl_cap_t pcl_model_capabilities[] =
emptylist,
emptylist,
},
+/* Datamax-O'Neil Thermal PCL printers */
+ { 10010, /* p1115 */
+ 4 * 72, 99 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300, /* Resolutions */
+ {0, 0, 0, 0}, /* non-A4 Margins */
+ {0, 0, 0, 0}, /* A4 Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL |
+ PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE,
+ custom_papersizes,
+ emptylist,
+ emptylist,
+ },
+/* Datamax-O'Neil Thermal PCL printers */
+ { 10011, /* p1115s */
+ 4 * 72, 99 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600, /* Resolutions */
+ {0, 0, 0, 0}, /* non-A4 Margins */
+ {0, 0, 0, 0}, /* A4 Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL |
+ PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE,
+ custom_papersizes,
+ emptylist,
+ emptylist,
+ },
+/* Datamax-O'Neil Thermal PCL printers */
+ { 10012, /* p1120n */
+ 4 * 72, 99 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300, /* Resolutions */
+ {0, 0, 0, 0}, /* non-A4 Margins */
+ {0, 0, 0, 0}, /* A4 Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL |
+ PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE,
+ custom_papersizes,
+ emptylist,
+ emptylist,
+ },
+/* Datamax-O'Neil Thermal PCL printers */
+ { 10013, /* p1125 */
+ 4 * 72, 99 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300, /* Resolutions */
+ {0, 0, 0, 0}, /* non-A4 Margins */
+ {0, 0, 0, 0}, /* A4 Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL |
+ PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE,
+ custom_papersizes,
+ emptylist,
+ emptylist,
+ },
+/* Datamax-O'Neil Thermal PCL printers */
+ { 10014, /* p1725 */
+ 6 * 72, 99 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300, /* Resolutions */
+ {0, 0, 0, 0}, /* non-A4 Margins */
+ {0, 0, 0, 0}, /* A4 Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL |
+ PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE,
+ custom_papersizes,
+ emptylist,
+ emptylist,
+ },
+/* Datamax-O'Neil Thermal PCL printers */
+ { 10015, /* w1110 */
+ 4 * 72, 99 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300, /* Resolutions */
+ {0, 0, 0, 0}, /* non-A4 Margins */
+ {0, 0, 0, 0}, /* A4 Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL |
+ PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE,
+ custom_papersizes,
+ emptylist,
+ emptylist,
+ },
+/* Datamax-O'Neil Thermal PCL printers */
+ { 10016, /* H8308p */
+ 17 * 72 / 2, 99 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300, /* Resolutions */
+ {0, 0, 0, 0}, /* non-A4 Margins */
+ {0, 0, 0, 0}, /* A4 Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_LABEL |
+ PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE,
+ custom_papersizes,
+ emptylist,
+ emptylist,
+ },
/* DesignJet 230/430 (monochrome ) */
{ 10230,
36 * 72, 150 * 12 * 72, /* 150ft in roll mode, 64" in sheet */
@@ -1396,6 +1503,19 @@ static const stp_parameter_t the_parameters[] =
STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0
},
+ {
+ "Orientation", N_("Orientation"), "Color=No,Category=Basic Printer Setup",
+ N_("Orientation, Portrait, Landscape, Upside Down, Seascape"),
+ STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
+ STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0,
+ },
+ {
+ "LabelSeparator", N_("Paper Sensor Type"),
+ "Color=No,Category=Basic Printer Setup",
+ N_("Gap, Mark on Top, Mark on Bottom, Notch, Continuous"),
+ STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE,
+ STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0,
+ },
};
static const int the_parameter_count =
@@ -1687,6 +1807,37 @@ static const stp_param_string_t duplex_types[] =
#define NUM_DUPLEX (sizeof (duplex_types) / sizeof (stp_param_string_t))
/*
+ * Orientation support - modes available
+ * Note that the internal names MUST match those in cups/genppd.c else the
+ * PPD files will not be generated correctly
+ */
+
+static const stp_param_string_t orientation_types[] =
+{
+ { "Portrait", N_ ("Portrait") },
+ { "Landscape", N_ ("Landscape") },
+ { "UpsideDown", N_ ("Reverse Portrait") },
+ { "Seascape", N_ ("Reverse Landscape") },
+};
+#define NUM_ORIENTATION (sizeof (orientation_types) / sizeof (stp_param_string_t))
+
+/*
+ * Label Separator Support for D-O printers, modes available
+ */
+
+static const stp_param_string_t label_separator_types[] =
+{
+ { "IGNORE", N_ ("Keep Previous") },
+ { "GAP", N_ ("Gap") },
+ { "TOP", N_ ("Mark on Top") },
+ { "BOTTOM", N_ ("Mark on Bottom") },
+ { "NOTCH", N_ ("Notch") },
+ { "NONE", N_ ("Continuous") },
+};
+#define NUM_LABEL_SEPARATOR (sizeof (label_separator_types) / sizeof (stp_param_string_t))
+
+
+/*
* 'pcl_papersize_valid()' - Is the paper size valid for this printer.
*/
@@ -1738,6 +1889,22 @@ pcl_papersize_valid(const stp_papersize_t *pt,
return(0);
/*
+ * We are allowed custom paper sizes. Check that the name contains
+ * d-o if this is the Datamax O'Neil label printer and not custom paper
+ */
+
+ if (caps->stp_printer_type & PCL_PRINTER_LABEL) {
+ if (strcmp(pt->name, "Custom")) {
+ if (NULL != strstr(pt->name, "d-o")) {
+ return(1);
+ } else {
+ return(0);
+ }
+ }
+ }
+
+
+/*
* We are allowed custom paper sizes. Check that the size is within
* limits.
*/
@@ -1956,6 +2123,40 @@ pcl_parameters(const stp_vars_t *v, const char *name,
else
description->is_active = 0; /* Not in "Job" mode */
}
+ else if (strcmp(name, "Orientation") == 0)
+ {
+ if (caps->stp_printer_type & PCL_PRINTER_LABEL)
+ {
+ description->bounds.str = stp_string_list_create();
+ description->deflt.str = orientation_types[0].name;
+ for (i=0; i < NUM_ORIENTATION; i++)
+ {
+ stp_string_list_add_string(description->bounds.str,
+ orientation_types[i].name,gettext(orientation_types[i].text));
+ }
+ }
+ else
+ {
+ description->is_active = 0;
+ }
+ }
+ else if (strcmp(name, "LabelSeparator") == 0)
+ {
+ if (caps->stp_printer_type & PCL_PRINTER_LABEL)
+ {
+ description->bounds.str = stp_string_list_create();
+ description->deflt.str = label_separator_types[0].name;
+ for (i=0; i < NUM_LABEL_SEPARATOR; i++)
+ {
+ stp_string_list_add_string(description->bounds.str,
+ label_separator_types[i].name, gettext(label_separator_types[i].text));
+ }
+ }
+ else
+ {
+ description->is_active = 0;
+ }
+ }
else if (strcmp(name, "CyanDensity") == 0 ||
strcmp(name, "MagentaDensity") == 0 ||
strcmp(name, "YellowDensity") == 0 ||
@@ -2262,6 +2463,8 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image)
const char *ink_type = stp_get_string_parameter(v, "InkType");
const char *print_mode = stp_get_string_parameter(v, "PrintingMode");
const char *duplex_mode = stp_get_string_parameter(v, "Duplex");
+ const char *orientation_mode = stp_get_string_parameter(v, "Orientation");
+ const char *label_separator_mode = stp_get_string_parameter(v, "LabelSeparator");
int page_number = stp_get_int_parameter(v, "PageNumber");
int printing_color = 0;
int top = stp_get_top(v);
@@ -2299,6 +2502,7 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image)
stp_curve_t *lum_adjustment;
stp_curve_t *hue_adjustment;
double density;
+ int label = 0;
if (!stp_verify(v))
{
@@ -2425,6 +2629,37 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image)
}
/*
+ * Label (PJL) settings and Orientation
+ */
+
+ if ((caps->stp_printer_type & PCL_PRINTER_LABEL)) {
+ label = 1;
+ privdata.orientation = 0;
+ if ((strncmp(orientation_mode, "Landscape", 9) == 0))
+ privdata.orientation = 1;
+ else if ((strncmp(orientation_mode, "UpsideDown", 10) == 0))
+ privdata.orientation = 2;
+ else if ((strncmp(orientation_mode, "Seascape", 8) == 0))
+ privdata.orientation = 3;
+
+ /*
+ * Label Separator mode
+ */
+ privdata.label_separator = 0;
+ if ((strncmp(label_separator_mode, "GAP", 3) == 0))
+ privdata.label_separator = 1;
+ if ((strncmp(label_separator_mode, "TOP", 3) == 0))
+ privdata.label_separator = 2;
+ if ((strncmp(label_separator_mode, "BOTTOM", 6) == 0))
+ privdata.label_separator = 3;
+ if ((strncmp(label_separator_mode, "NOTCH", 5) == 0))
+ privdata.label_separator = 4;
+ if ((strncmp(label_separator_mode, "NONE", 10) == 0))
+ privdata.label_separator = 5;
+ }
+
+
+ /*
* Send PCL initialization commands...
*/
@@ -2435,16 +2670,47 @@ pcl_do_print(stp_vars_t *v, stp_image_t *image)
stp_deprintf(STP_DBG_PCL, "Normal init\n");
- if (privdata.do_cretb)
- stp_puts("\033*rbC", v); /* End raster graphics */
- stp_puts("\033E", v); /* PCL reset */
- if (privdata.do_cretb)
- stp_zprintf(v, "\033%%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n");
+ if (label)
+ {
+ if (privdata.do_cretb)
+ stp_puts("\033*rbC", v); /* End raster graphics */
+ stp_puts("\033E", v); /* PCL reset */
+ if (privdata.do_cretb)
+ stp_zprintf(v, "\033%%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n");
+
+ stp_zprintf(v, "\033%%-12345X@PJL SET RESOLUTION=%d\n"
+ "@PJL SET PAPERWIDTH=%d\n"
+ "@PJL SET PAPERLENGTH=%d\n"
+ "@PJL ENTER LANGUAGE=PCL\n", xdpi, out_width*10,
+ out_height*10);
+
+ if ( privdata.label_separator != 0) {
+ stp_zprintf(v, "\033%%-12345X@PJL JOB SETUP = \"ON\" "
+ "NAME = \"JOB_MEDIACONFIG\"\n"
+ "@PJL DEFAULT PAPERSENSORTYPE=%s\n"
+ "@PJL RESET\n@PJL EOJ\n", label_separator_mode);
+ }
+
+ stp_zprintf(v, "\033&l%dA", pcl_media_size); /* Set media size we calculated above */
- stp_puts("\033&l6D\033&k12H",v); /* 6 lines per inch, 10 chars per inch */
- stp_puts("\033&l0O",v); /* Portrait */
+ stp_zprintf(v, "\033&l%dO", privdata.orientation);
+ stp_puts("\033*r0F",v); /* Presentation mode */
+ stp_puts("\033&l6D\033&k12H",v); /* 6 lines per inch, 10 chars per inch */
+ }
+ else
+ {
+ if (privdata.do_cretb)
+ stp_puts("\033*rbC", v); /* End raster graphics */
+ stp_puts("\033E", v); /* PCL reset */
+ if (privdata.do_cretb)
+ stp_zprintf(v, "\033%%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n");
+
+ stp_puts("\033&l6D\033&k12H",v); /* 6 lines per inch, 10 chars per inch */
+ stp_puts("\033&l0O",v); /* Portrait */
+
+ stp_zprintf(v, "\033&l%dA", pcl_media_size); /* Set media size we calculated above */
+ }
- stp_zprintf(v, "\033&l%dA", pcl_media_size); /* Set media size we calculated above */
stp_zprintf(v, "\033&l%dP", stp_get_page_height(v) / 12);
/* Length of "forms" in "lines" */
stp_puts("\033&l0L", v); /* Turn off perforation skip */
diff --git a/src/main/print-util.c b/src/main/print-util.c
index 3f1488e..c5bfebd 100644
--- a/src/main/print-util.c
+++ b/src/main/print-util.c
@@ -1,5 +1,5 @@
/*
- * "$Id: print-util.c,v 1.120 2014/01/13 02:59:14 rlk Exp $"
+ * "$Id: print-util.c,v 1.121 2015/04/11 16:19:46 rlk Exp $"
*
* Print plug-in driver utility functions for the GIMP.
*
@@ -64,9 +64,9 @@ typedef struct
#define STPI_VASPRINTF(result, bytes, format) \
{ \
- int current_allocation = 64; \
+ int current_allocation = 64; /* vsnprintf returns int */ \
result = stp_malloc(current_allocation); \
- while (1) \
+ while (current_allocation < INT_MAX / 2) \
{ \
va_list args; \
va_start(args, format); \
diff --git a/src/main/printers.c b/src/main/printers.c
index 81be870..997a0ba 100644
--- a/src/main/printers.c
+++ b/src/main/printers.c
@@ -1,5 +1,5 @@
/*
- * "$Id: printers.c,v 1.91 2014/01/12 01:30:44 rlk Exp $"
+ * "$Id: printers.c,v 1.92 2014/05/22 02:08:20 rlk Exp $"
*
* Print plug-in driver utility functions for the GIMP.
*
@@ -67,6 +67,7 @@ struct stp_printer
char *manufacturer; /* Printer manufacturer */
char *device_id; /* IEEE 1284 device ID */
char *foomatic_id; /* Foomatic printer ID */
+ char *comment; /* Comment string, if any */
int model; /* Model number */
int vars_initialized;
const stp_printfuncs_t *printfuncs;
@@ -130,6 +131,16 @@ static void
stpi_printer_freefunc(void *item)
{
stp_printer_t *printer = (stp_printer_t *) item;
+ if (printer->comment)
+ {
+ stp_free(printer->comment);
+ printer->comment = NULL;
+ }
+ if (printer->foomatic_id)
+ {
+ stp_free(printer->foomatic_id);
+ printer->comment = NULL;
+ }
stp_free(printer->long_name);
stp_free(printer->family);
stp_free(printer);
@@ -198,6 +209,12 @@ stp_printer_get_foomatic_id(const stp_printer_t *printer)
return printer->foomatic_id;
}
+const char *
+stp_printer_get_comment(const stp_printer_t *printer)
+{
+ return printer->comment;
+}
+
int
stp_printer_get_model(const stp_printer_t *printer)
{
@@ -1075,8 +1092,10 @@ stp_printer_create_from_xmltree(stp_mxml_node_t *printer, /* The printer node */
/* Family printfuncs */
{
stp_mxml_node_t *prop; /* Temporary node pointer */
+ stp_mxml_node_t *child;
const char *stmp; /* Temporary string */
stp_printer_t *outprinter; /* Generated printer */
+ size_t slen = 0;
int
driver = 0, /* Check driver */
long_name = 0;
@@ -1112,6 +1131,33 @@ stp_printer_create_from_xmltree(stp_mxml_node_t *printer, /* The printer node */
if (stmp)
outprinter->foomatic_id = stp_strdup(stmp);
+ child = printer->child;
+ while (child)
+ {
+ if (child->type == STP_MXML_TEXT)
+ {
+ if (outprinter->comment)
+ {
+ size_t oslen = slen;
+ slen += strlen(child->value.text.string);
+ if (child->value.text.whitespace)
+ slen += 1;
+ outprinter->comment = stp_realloc(outprinter->comment, slen + 1);
+ (void) memset(outprinter->comment + oslen, 0, slen - oslen);
+ if (child->value.text.whitespace)
+ outprinter->comment[oslen++] = ' ';
+ strncat(outprinter->comment + oslen,
+ child->value.text.string, slen - oslen);
+ }
+ else
+ {
+ outprinter->comment = stp_strdup(child->value.text.string);
+ slen = strlen(outprinter->comment);
+ }
+ }
+ child = child->next;
+ }
+
if (stp_get_driver(outprinter->printvars))
driver = 1;
if (outprinter->long_name)
diff --git a/src/testpattern/run-testpattern-2.in b/src/testpattern/run-testpattern-2.in
index ed1a21c..4c44027 100644
--- a/src/testpattern/run-testpattern-2.in
+++ b/src/testpattern/run-testpattern-2.in
@@ -23,7 +23,7 @@ my @special_options = ();
my $include_pattern = '';
my $exclude_pattern = '';
my %exclude_list = ();
-my @standard_options = qw(InkType InkSet,RawChannels DitherAlgorithm Duplex MediaType InputSlot ColorCorrection ImageType FullBleed Quality UseGloss Weave PrintingDirection Density CyanDensity);
+my @standard_options = qw(InkType InkSet,RawChannels DitherAlgorithm Duplex MediaType InputSlot ColorCorrection ImageType FullBleed Quality UseGloss Weave PrintingDirection Density CyanDensity Orientation LabelSeparator);
my $global_status = 1;
my $run_installed = 0;
my $use_min_res = 0;
diff --git a/src/testpattern/testpattern.c b/src/testpattern/testpattern.c
index b31128f..2e14faa 100644
--- a/src/testpattern/testpattern.c
+++ b/src/testpattern/testpattern.c
@@ -1,5 +1,5 @@
/*
- * "$Id: testpattern.c,v 1.64 2014/05/17 21:56:46 rlk Exp $"
+ * "$Id: testpattern.c,v 1.65 2015/04/11 20:35:42 rlk Exp $"
*
* Test pattern generator for Gutenprint
*
@@ -623,7 +623,7 @@ fill_black_##bits(unsigned char *data, size_t len, size_t scount) \
memset(s_data, 0, sizeof(T) * 3); \
s_data += 3; \
} \
- memset(s_data, 0xff, sizeof(T) * extra * 3); \
+ memset(s_data, 0, sizeof(T) * extra * 3); \
} \
else if (strcmp(global_image_type, "CMY") == 0) \
{ \
diff --git a/src/xml/papers.xml b/src/xml/papers.xml
index a532352..7b6d2f9 100644
--- a/src/xml/papers.xml
+++ b/src/xml/papers.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- "$Id: papers.xml,v 1.16 2014/01/22 13:52:41 rlk Exp $"
+ "$Id: papers.xml,v 1.20 2015/06/22 23:02:44 speachy Exp $"
XML description of papers known to libgutenprint.
You can add additional paper sizes here.
@@ -116,6 +116,12 @@
<height value="360"/>
<unit value="english-extended"/>
</paper>
+ <paper name="w252h338">
+ <description translate="value" value="3.5x4.7"/>
+ <width value="252"/>
+ <height value="338"/>
+ <unit value="english-extended"/>
+ </paper>
<paper name="w252h360">
<description translate="value" value="3 1/2 x5"/>
<width value="252"/>
@@ -146,6 +152,12 @@
<height value="432"/>
<unit value="english"/>
</paper>
+ <paper name="w324h432">
+ <description translate="value" value="4.5x6"/>
+ <width value="324"/>
+ <height value="432"/>
+ <unit value="english"/>
+ </paper>
<paper name="w324h495">
<description translate="value" value="Epson 4x6 Photo Paper (tear-off borders)"/>
<width value="324"/>
@@ -172,6 +184,12 @@
<height value="576"/>
<unit value="english-extended"/>
</paper>
+ <paper name="w338h504">
+ <description translate="value" value="4.7x7"/>
+ <width value="338"/>
+ <height value="504"/>
+ <unit value="english-extended"/>
+ </paper>
<paper name="w360h504">
<description translate="value" value="5x7"/>
<width value="360"/>
@@ -256,6 +274,12 @@
<!--
Other common photographic paper sizes
-->
+ <paper name="w360h360">
+ <description translate="value" value="5x5"/>
+ <width value="360"/>
+ <height value="360"/>
+ <unit value="english-extended"/>
+ </paper>
<paper name="w576h576">
<description translate="value" value="8x8"/>
<width value="576"/>
@@ -1353,6 +1377,272 @@
<unit value="metric-extended"/>
</paper>
+<!-- Group Labels -->
+ <paper name="d-o400x600">
+ <description translate="value" value="4.00x6.00 in label"/>
+ <width value="288"/>
+ <height value="432"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o100x400">
+ <description translate="value" value="1.00x4.00 in label"/>
+ <width value="72"/>
+ <height value="288"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o131x400">
+ <description translate="value" value="1.31x4.00 in label"/>
+ <width value="94"/>
+ <height value="288"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o056x344">
+ <description translate="value" value="0.56x3.44 in label"/>
+ <width value="40"/>
+ <height value="248"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o319x350">
+ <description translate="value" value="3.19x3.50 in label"/>
+ <width value="230"/>
+ <height value="252"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o100x263">
+ <description translate="value" value="1.00x2.63 in label"/>
+ <width value="72"/>
+ <height value="189"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o200x100">
+ <description translate="value" value="2.00x1.00 in label"/>
+ <width value="144"/>
+ <height value="72"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o200x150">
+ <description translate="value" value="2.00x1.50 in label"/>
+ <width value="144"/>
+ <height value="108"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o200x400">
+ <description translate="value" value="2.00x4.00 in label"/>
+ <width value="144"/>
+ <height value="288"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o225x550">
+ <description translate="value" value="2.25x5.50 in label"/>
+ <width value="162"/>
+ <height value="396"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o300x200">
+ <description translate="value" value="3.00x2.00 in label"/>
+ <width value="216"/>
+ <height value="144"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o300x300">
+ <description translate="value" value="3.00x3.00 in label"/>
+ <width value="216"/>
+ <height value="216"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o319x175">
+ <description translate="value" value="3.19x1.75 in label"/>
+ <width value="230"/>
+ <height value="126"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o350x200">
+ <description translate="value" value="3.50x2.00 in label"/>
+ <width value="252"/>
+ <height value="144"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o400x200">
+ <description translate="value" value="4.00x2.00 in label"/>
+ <width value="288"/>
+ <height value="144"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o400x300">
+ <description translate="value" value="4.00x3.00 in label"/>
+ <width value="288"/>
+ <height value="216"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o400x400">
+ <description translate="value" value="4.00x4.00 in label"/>
+ <width value="288"/>
+ <height value="288"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o400x500">
+ <description translate="value" value="4.00x5.00 in label"/>
+ <width value="288"/>
+ <height value="360"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o400x650">
+ <description translate="value" value="4.00x6.50 in label"/>
+ <width value="288"/>
+ <height value="468"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o400x800">
+ <description translate="value" value="4.00x8.00 in label"/>
+ <width value="288"/>
+ <height value="576"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o400x1300">
+ <description translate="value" value="4.00x13.00 in label"/>
+ <width value="288"/>
+ <height value="936"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o600x200">
+ <description translate="value" value="6.00x2.00 in label"/>
+ <width value="432"/>
+ <height value="144"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o600x300">
+ <description translate="value" value="6.00x3.00 in label"/>
+ <width value="432"/>
+ <height value="216"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o600x400">
+ <description translate="value" value="6.00x4.00 in label"/>
+ <width value="432"/>
+ <height value="288"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o600x500">
+ <description translate="value" value="6.00x5.00 in label"/>
+ <width value="432"/>
+ <height value="360"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o600x600">
+ <description translate="value" value="6.00x6.00 in label"/>
+ <width value="432"/>
+ <height value="432"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o800x1200">
+ <description translate="value" value="8.00x12.00 in label"/>
+ <width value="576"/>
+ <height value="864"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o850x600">
+ <description translate="value" value="8.50x6.00 in label"/>
+ <width value="612"/>
+ <height value="432"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o850x1100">
+ <description translate="value" value="8.50x11.00 in label"/>
+ <width value="612"/>
+ <height value="792"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o250x313">
+ <description translate="value" value="2.50x3.13 in label"/>
+ <width value="180"/>
+ <height value="225"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o050x175">
+ <description translate="value" value="0.50x1.75 in label"/>
+ <width value="36"/>
+ <height value="126"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o175x300">
+ <description translate="value" value="1.75x3.00 in label"/>
+ <width value="126"/>
+ <height value="216"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o075x575">
+ <description translate="value" value="0.75x5.75 label"/>
+ <width value="54"/>
+ <height value="414"/>
+ <unit value="english"/>
+ </paper>
+ <paper name="d-o44x31">
+ <description translate="value" value="44x31 mm label"/>
+ <width value="125"/>
+ <height value="88"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o62x44">
+ <description translate="value" value="62x44 mm label"/>
+ <width value="176"/>
+ <height value="125"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o74x52">
+ <description translate="value" value="74x52 mm label"/>
+ <width value="210"/>
+ <height value="147"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o88x62">
+ <description translate="value" value="88x62 mm label"/>
+ <width value="249"/>
+ <height value="176"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o105x74">
+ <description translate="value" value="105x74 mm label"/>
+ <width value="298"/>
+ <height value="210"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o125x88">
+ <description translate="value" value="125x88 mm label"/>
+ <width value="354"/>
+ <height value="249"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o148x105">
+ <description translate="value" value="148x105 mm label"/>
+ <width value="420"/>
+ <height value="298"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o176x125">
+ <description translate="value" value="176x125 mm label"/>
+ <width value="499"/>
+ <height value="354"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o210x148">
+ <description translate="value" value="210x148 mm label"/>
+ <width value="595"/>
+ <height value="420"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o250x176">
+ <description translate="value" value="250x176 mm label"/>
+ <width value="709"/>
+ <height value="499"/>
+ <unit value="metric"/>
+ </paper>
+ <paper name="d-o297x210">
+ <description translate="value" value="297x210 mm label"/>
+ <width value="842"/>
+ <height value="595"/>
+ <unit value="metric"/>
+ </paper>
+
<!--
Custom
-->
diff --git a/src/xml/printers.xml b/src/xml/printers.xml
index a943dc8..bffe238 100644
--- a/src/xml/printers.xml
+++ b/src/xml/printers.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!--
- "$Id: printers.xml,v 1.357 2014/05/08 12:58:54 speachy Exp $"
+ "$Id: printers.xml,v 1.407 2015/06/24 15:01:03 gernot2270 Exp $"
XML description of printers known to libgutenprint
You can add additional printers here, but the underlying driver has
@@ -143,870 +143,1080 @@
<printer translate="name" name="Canon SELPHY DS700" driver="bjc-SELPHY-DS700" manufacturer="Canon" model="10000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-SELPHY-DS700" />
<printer translate="name" name="Canon SELPHY DS810" driver="bjc-SELPHY-DS810" manufacturer="Canon" model="10000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-SELPHY-DS810" />
<printer translate="name" name="Canon PIXMA mini220" driver="bjc-PIXMA-mini220" manufacturer="Canon" model="11000220" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-mini220" />
+ <printer translate="name" name="Canon PIXUS mini220" driver="bjc-PIXUS-mini220" manufacturer="Canon" model="11000220" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-mini220" />
<printer translate="name" name="Canon PIXMA mini320" driver="bjc-PIXMA-mini320" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-mini320" />
<printer translate="name" name="Canon PIXMA mini360" driver="bjc-PIXMA-mini360" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-mini360" />
+ <printer translate="name" name="Canon PIXUS mini360" driver="bjc-PIXUS-mini360" manufacturer="Canon" model="11000320" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-mini360" />
+ <!-- Canon iP90 family -->
+ <printer translate="name" name="Canon iP90 series" driver="bjc-iP90-series" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP90-series"/>
<printer translate="name" name="Canon PIXMA iP90" driver="bjc-PIXMA-iP90" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP90" />
+ <printer translate="name" name="Canon PIXUS iP90" driver="bjc-PIXUS-iP90" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP90" />
<printer translate="name" name="Canon PIXMA iP90v" driver="bjc-PIXMA-iP90v" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP90v" />
+ <printer translate="name" name="Canon PIXUS iP90v" driver="bjc-PIXUS-iP90v" manufacturer="Canon" model="3000090" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP90v" />
+ <!-- Canon iP100 family -->
+ <printer translate="name" name="Canon iP100 series" driver="bjc-iP100-series" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP100-series"/>
<printer translate="name" name="Canon PIXMA iP100" driver="bjc-PIXMA-iP100" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP100" />
- <printer translate="name" name="Canon PIXMA iP2000" driver="bjc-PIXMA-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2000" />
+ <printer translate="name" name="Canon PIXUS iP100" driver="bjc-PIXUS-iP100" manufacturer="Canon" model="3000100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP100" />
+ <!-- Canon iP110 family -->
+ <printer translate="name" name="Canon iP110 series" driver="bjc-iP110-series" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP110-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP110" driver="bjc-PIXMA-iP110" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP110">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP110" driver="bjc-PIXUS-iP110" manufacturer="Canon" model="3000110" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP110">EXPERIMENTAL</printer>
+ <!-- Canon iP2000 family -->
+ <printer translate="name" name="Canon iP2000 series" driver="bjc-iP2000-series" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP2000-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2000" driver="bjc-PIXMA-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2000">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP2000" driver="bjc-PIXUS-iP2000" manufacturer="Canon" model="3002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP2000">>EXPERIMENTAL</printer>
<!-- Canon iP2700 family -->
- <printer translate="name" name="Canon iP2700 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;SOJ:TXT01;MDL:iP2700 series;CLS:PRINTER;DES:Canon iP2700 series;VER:1.030;STA:30;FSI:00;HRI:EU;MSI:AOFF,BOFF,DAT,E3;PDR:4;" driver="bjc-iP2700-series" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP2700-series" />
- <printer translate="name" name="Canon PIXMA iP2700" driver="bjc-PIXMA-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2700" />
- <printer translate="name" name="Canon PIXUS iP2700" driver="bjc-PIXUS-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP2700" />
- <printer translate="name" name="Canon PIXMA iP2701" driver="bjc-PIXMA-iP2701" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2701" />
- <printer translate="name" name="Canon PIXMA iP2702" driver="bjc-PIXMA-iP2702" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2702" />
- <printer translate="name" name="Canon PIXMA iP2740" driver="bjc-PIXMA-iP2740" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2740" />
- <printer translate="name" name="Canon PIXMA iP2760" driver="bjc-PIXMA-iP2760" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2760" />
- <printer translate="name" name="Canon PIXMA iP2770" driver="bjc-PIXMA-iP2770" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2770" />
- <printer translate="name" name="Canon PIXMA iP2772" driver="bjc-PIXMA-iP2772" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2772" />
- <printer translate="name" name="Canon PIXMA iP2780" driver="bjc-PIXMA-iP2780" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2780" />
- <printer translate="name" name="Canon PIXMA iP2788" driver="bjc-PIXMA-iP2788" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2788" />
+ <printer translate="name" name="Canon iP2700 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;SOJ:TXT01;MDL:iP2700 series;CLS:PRINTER;DES:Canon iP2700 series;VER:1.030;STA:30;FSI:00;HRI:EU;MSI:AOFF,BOFF,DAT,E3;PDR:4;" driver="bjc-iP2700-series" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP2700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2700" driver="bjc-PIXMA-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2700">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP2700" driver="bjc-PIXUS-iP2700" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP2700">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2701" driver="bjc-PIXMA-iP2701" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2701">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2702" driver="bjc-PIXMA-iP2702" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2702">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2740" driver="bjc-PIXMA-iP2740" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2740">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2760" driver="bjc-PIXMA-iP2760" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2760">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2770" driver="bjc-PIXMA-iP2770" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2770">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2772" driver="bjc-PIXMA-iP2772" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2772">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2780" driver="bjc-PIXMA-iP2780" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2780">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2788" driver="bjc-PIXMA-iP2788" manufacturer="Canon" model="3002700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2788">EXPERIMENTAL</printer>
+ <!-- Canon iP2800 family -->
+ <printer translate="name" name="Canon iP2800 series" driver="bjc-iP2800-series" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP2800-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2810" driver="bjc-PIXMA-iP2810" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2810">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2820" driver="bjc-PIXMA-iP2820" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2820">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2840" driver="bjc-PIXMA-iP2840" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2840">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2850" driver="bjc-PIXMA-iP2850" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2850">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2870" driver="bjc-PIXMA-iP2870" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2870">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2872" driver="bjc-PIXMA-iP2872" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2872">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2880" driver="bjc-PIXMA-iP2880" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2880">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP2890" driver="bjc-PIXMA-iP2890" manufacturer="Canon" model="3002800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP2890">EXPERIMENTAL</printer>
<!-- Canon iP3000 -->
- <printer translate="name" name="Canon PIXMA iP3000" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:iP3000;CLS:PRINTER;DES:Canon iP3000;VER:1.06;STA:10;FSI:03;" driver="bjc-PIXMA-iP3000" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3000" />
+ <printer translate="name" name="Canon PIXMA iP3000" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:iP3000;CLS:PRINTER;DES:Canon iP3000;VER:1.06;STA:10;FSI:03;" driver="bjc-PIXMA-iP3000" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3000">EXPERIMENTAL</printer>
<!-- Canon iP3100 (PIXUS only, PIXMA iP3100 does not exist) -->
- <printer translate="name" name="Canon PIXMA iP3100" driver="bjc-PIXMA-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3100" />
- <printer translate="name" name="Canon PIXUS iP3100" driver="bjc-PIXUS-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3100" />
+ <printer translate="name" name="Canon PIXMA iP3100" driver="bjc-PIXMA-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP3100" driver="bjc-PIXUS-iP3100" manufacturer="Canon" model="3003100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3100">EXPERIMENTAL</printer>
<!-- Canon iP3300 family -->
- <printer translate="name" name="Canon iP3300 series" driver="bjc-iP3300-series" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3300-series" />
- <printer translate="name" name="Canon PIXMA iP3300" driver="bjc-PIXMA-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3300" />
- <printer translate="name" name="Canon PIXUS iP3300" driver="bjc-PIXUS-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3300" />
+ <printer translate="name" name="Canon iP3300 series" driver="bjc-iP3300-series" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3300-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP3300" driver="bjc-PIXMA-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3300">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP3300" driver="bjc-PIXUS-iP3300" manufacturer="Canon" model="3003300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3300">EXPERIMENTAL</printer>
<!-- Canon iP3500 family -->
- <printer translate="name" name="Canon iP3500 series" driver="bjc-iP3500-series" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3500-series" />
- <printer translate="name" name="Canon PIXMA iP3500" driver="bjc-PIXMA-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3500" />
- <printer translate="name" name="Canon PIXUS iP3500" driver="bjc-PIXUS-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3500" />
+ <printer translate="name" name="Canon iP3500 series" driver="bjc-iP3500-series" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP3500" driver="bjc-PIXMA-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3500">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP3500" driver="bjc-PIXUS-iP3500" manufacturer="Canon" model="3003500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3500">EXPERIMENTAL</printer>
<!-- Canon iP3600 family -->
- <printer translate="name" name="Canon iP3600 series" driver="bjc-iP3600-series" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3600-series" />
- <printer translate="name" name="Canon PIXMA iP3600" driver="bjc-PIXMA-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3600" />
- <printer translate="name" name="Canon PIXUS iP3600" driver="bjc-PIXUS-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3600" />
- <printer translate="name" name="Canon PIXMA iP3680" driver="bjc-PIXMA-iP3680" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3680" />
+ <printer translate="name" name="Canon iP3600 series" driver="bjc-iP3600-series" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP3600-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP3600" driver="bjc-PIXMA-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3600">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP3600" driver="bjc-PIXUS-iP3600" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP3600">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP3680" driver="bjc-PIXMA-iP3680" manufacturer="Canon" model="3003600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP3680">EXPERIMENTAL</printer>
<!-- Canon iP4000 -->
<printer translate="name" name="Canon PIXMA iP4000" deviceid="MFG:Canon;MDL:iP4000;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4000" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP4000" /><!-- driver and foomaticid legacy: missing brand name in both -->
<!-- Canon iP4000R -->
<printer translate="name" name="Canon PIXMA iP4000R" driver="bjc-PIXMA-iP4000R" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP4000R" /><!-- driver and foomaticid legacy: missing brand name in one -->
<!-- Canon iP4100 (PIXUS only, PIXMA iP4100 does not exist) -->
- <printer translate="name" name="Canon PIXMA iP4100" driver="bjc-PIXMA-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP4100" />
- <printer translate="name" name="Canon PIXUS iP4100" driver="bjc-PIXUS-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP4100" />
+ <printer translate="name" name="Canon PIXMA iP4100" driver="bjc-PIXMA-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP4100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4100" driver="bjc-PIXUS-iP4100" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP4100">EXPERIMENTAL</printer>
<!-- Canon iP4100R (PIXUS only, PIXMA iP4100R does not exist) -->
- <printer translate="name" name="Canon PIXUS iP4100R" driver="bjc-PIXUS-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP4100R" />
- <printer translate="name" name="Canon PIXMA iP4100R" driver="bjc-PIXMA-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP4100R" />
+ <printer translate="name" name="Canon PIXUS iP4100R" driver="bjc-PIXUS-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP4100R">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4100R" driver="bjc-PIXMA-iP4100R" manufacturer="Canon" model="3004100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP4100R">EXPERIMENTAL</printer>
<!-- Canon iP4200 family -->
- <printer translate="name" name="Canon iP4200 series" deviceid="MFG:Canon;MDL:iP4200;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4200-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-iP4200-series" />
- <printer translate="name" name="Canon PIXMA iP4200" driver="bjc-PIXMA-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-PIXMA-iP4200" />
- <printer translate="name" name="Canon PIXUS iP4200" driver="bjc-PIXUS-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-PIXUS-iP4200" />
+ <printer translate="name" name="Canon iP4200 series" deviceid="MFG:Canon;MDL:iP4200;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-iP4200-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-iP4200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4200" driver="bjc-PIXMA-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-PIXMA-iP4200">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4200" driver="bjc-PIXUS-iP4200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4200_params" foomaticid="Canon-PIXUS-iP4200">EXPERIMENTAL</printer>
<!-- Canon iP4300 family -->
- <printer translate="name" name="Canon iP4300 series" driver="bjc-iP4300-series" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4300-series" />
- <printer translate="name" name="Canon PIXMA iP4300" driver="bjc-PIXMA-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4300" />
- <printer translate="name" name="Canon PIXUS iP4300" driver="bjc-PIXUS-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4300" />
+ <printer translate="name" name="Canon iP4300 series" driver="bjc-iP4300-series" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4300-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4300" driver="bjc-PIXMA-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4300">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4300" driver="bjc-PIXUS-iP4300" manufacturer="Canon" model="3004300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4300">EXPERIMENTAL</printer>
<!-- Canon iP4500 family -->
- <printer translate="name" name="Canon iP4500 series" driver="bjc-iP4500-series" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4500-series" />
- <printer translate="name" name="Canon PIXMA iP4500" driver="bjc-PIXMA-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4500" />
- <printer translate="name" name="Canon PIXUS iP4500" driver="bjc-PIXUS-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4500" />
+ <printer translate="name" name="Canon iP4500 series" driver="bjc-iP4500-series" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4500" driver="bjc-PIXMA-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4500">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4500" driver="bjc-PIXUS-iP4500" manufacturer="Canon" model="3004500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4500">EXPERIMENTAL</printer>
<!-- Canon iP4600 family -->
- <printer translate="name" name="Canon iP4600 series" driver="bjc-iP4600-series" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4600-series" />
- <printer translate="name" name="Canon PIXMA iP4600" driver="bjc-PIXMA-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4600" />
- <printer translate="name" name="Canon PIXUS iP4600" driver="bjc-PIXUS-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4600" />
- <printer translate="name" name="Canon PIXMA iP4680" driver="bjc-PIXMA-iP4680" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4680" />
+ <printer translate="name" name="Canon iP4600 series" driver="bjc-iP4600-series" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4600-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4600" driver="bjc-PIXMA-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4600">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4600" driver="bjc-PIXUS-iP4600" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4600">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4680" driver="bjc-PIXMA-iP4680" manufacturer="Canon" model="3004600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4680">EXPERIMENTAL</printer>
<!-- Canon iP4700 family -->
- <printer translate="name" name="Canon iP4700 series" driver="bjc-iP4700-series" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4700-series" />
- <printer translate="name" name="Canon PIXMA iP4700" driver="bjc-PIXMA-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4700" />
- <printer translate="name" name="Canon PIXUS iP4700" driver="bjc-PIXUS-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4700" />
- <printer translate="name" name="Canon PIXMA iP4760" driver="bjc-PIXMA-iP4760" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4760" />
+ <printer translate="name" name="Canon iP4700 series" driver="bjc-iP4700-series" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4700" driver="bjc-PIXMA-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4700">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4700" driver="bjc-PIXUS-iP4700" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4700">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4760" driver="bjc-PIXMA-iP4760" manufacturer="Canon" model="3004700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4760">EXPERIMENTAL</printer>
<!-- Canon iP4800 family -->
- <printer translate="name" name="Canon iP4800 series" driver="bjc-iP4800-series" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4800-series" />
- <printer translate="name" name="Canon PIXMA iP4800" driver="bjc-PIXMA-iP4800" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4800" />
- <printer translate="name" name="Canon PIXMA iP4810" driver="bjc-PIXMA-iP4810" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4810" />
- <printer translate="name" name="Canon PIXMA iP4820" driver="bjc-PIXMA-iP4820" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4820" />
- <printer translate="name" name="Canon PIXUS iP4830" driver="bjc-PIXUS-iP4830" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4830" />
- <printer translate="name" name="Canon PIXMA iP4840" driver="bjc-PIXMA-iP4840" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4840" />
- <printer translate="name" name="Canon PIXMA iP4850" driver="bjc-PIXMA-iP4850" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4850" />
- <printer translate="name" name="Canon PIXMA iP4870" driver="bjc-PIXMA-iP4870" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4870" />
- <printer translate="name" name="Canon PIXMA iP4880" driver="bjc-PIXMA-iP4880" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4880" />
+ <printer translate="name" name="Canon iP4800 series" driver="bjc-iP4800-series" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4800-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4800" driver="bjc-PIXMA-iP4800" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4800">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4810" driver="bjc-PIXMA-iP4810" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4810">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4820" driver="bjc-PIXMA-iP4820" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4820">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4830" driver="bjc-PIXUS-iP4830" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4830">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4840" driver="bjc-PIXMA-iP4840" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4840">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4850" driver="bjc-PIXMA-iP4850" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4850">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4870" driver="bjc-PIXMA-iP4870" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4870">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4880" driver="bjc-PIXMA-iP4880" manufacturer="Canon" model="3004800" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4880">EXPERIMENTAL</printer>
<!-- Canon iP4900 family -->
- <printer translate="name" name="Canon iP4900 series" driver="bjc-iP4900-series" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4900-series" />
- <printer translate="name" name="Canon PIXMA iP4900" driver="bjc-PIXMA-iP4900" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4900" />
- <printer translate="name" name="Canon PIXMA iP4910" driver="bjc-PIXMA-iP4910" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4910" />
- <printer translate="name" name="Canon PIXMA iP4920" driver="bjc-PIXMA-iP4920" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4920" />
- <printer translate="name" name="Canon PIXUS iP4930" driver="bjc-PIXUS-iP4930" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4930" />
- <printer translate="name" name="Canon PIXMA iP4940" driver="bjc-PIXMA-iP4940" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4940" />
- <printer translate="name" name="Canon PIXMA iP4950" driver="bjc-PIXMA-iP4950" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4950" />
- <printer translate="name" name="Canon PIXMA iP4970" driver="bjc-PIXMA-iP4970" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4970" />
- <printer translate="name" name="Canon PIXMA iP4980" driver="bjc-PIXMA-iP4980" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4980" />
+ <printer translate="name" name="Canon iP4900 series" driver="bjc-iP4900-series" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-iP4900-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4900" driver="bjc-PIXMA-iP4900" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4900">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4910" driver="bjc-PIXMA-iP4910" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4910">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4920" driver="bjc-PIXMA-iP4920" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4920">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP4930" driver="bjc-PIXUS-iP4930" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-iP4930">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4940" driver="bjc-PIXMA-iP4940" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4940">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4950" driver="bjc-PIXMA-iP4950" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4950">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4970" driver="bjc-PIXMA-iP4970" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4970">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP4980" driver="bjc-PIXMA-iP4980" manufacturer="Canon" model="3004900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-iP4980">EXPERIMENTAL</printer>
<!-- Canon iP5000 -->
- <printer translate="name" name="Canon PIXMA iP5000" driver="bjc-PIXMA-iP5000" manufacturer="Canon" model="3005000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5000" />
+ <printer translate="name" name="Canon PIXMA iP5000" driver="bjc-PIXMA-iP5000" manufacturer="Canon" model="3005000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5000">EXPERIMENTAL</printer>
<!-- Canon iP5200 -->
- <printer translate="name" name="Canon PIXMA iP5200" driver="bjc-PIXMA-iP5200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5200" />
+ <printer translate="name" name="Canon PIXMA iP5200" driver="bjc-PIXMA-iP5200" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5200">EXPERIMENTAL</printer>
<!-- Canon iP5200R family -->
- <printer translate="name" name="Canon iP5200R series" driver="bjc-iP5200R-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP5200R-series" />
- <printer translate="name" name="Canon PIXMA iP5200R" driver="bjc-PIXMA-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5200R" />
- <printer translate="name" name="Canon PIXUS iP5200R" driver="bjc-PIXUS-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP5200R" />
+ <printer translate="name" name="Canon iP5200R series" driver="bjc-iP5200R-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP5200R-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP5200R" driver="bjc-PIXMA-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5200R">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP5200R" driver="bjc-PIXUS-iP5200R" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP5200R">EXPERIMENTAL</printer>
<!-- Canon iP5300 -->
- <printer translate="name" name="Canon PIXMA iP5300" driver="bjc-PIXMA-iP5300" manufacturer="Canon" model="3005300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5300" />
+ <printer translate="name" name="Canon PIXMA iP5300" driver="bjc-PIXMA-iP5300" manufacturer="Canon" model="3005300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP5300">EXPERIMENTAL</printer>
<!-- Canon iP6000D -->
- <printer translate="name" name="Canon PIXMA iP6000D" driver="bjc-PIXMA-iP6000D" manufacturer="Canon" model="3006000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6000D" />
+ <printer translate="name" name="Canon PIXMA iP6000D" driver="bjc-PIXMA-iP6000D" manufacturer="Canon" model="3006000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6000D">EXPERIMENTAL</printer>
<!-- Canon iP6100D (PIXUS only, PIXMA iP6100D does not exist) -->
- <printer translate="name" name="Canon PIXMA iP6100D" driver="bjc-PIXMA-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6100D" />
- <printer translate="name" name="Canon PIXUS iP6100D" driver="bjc-PIXUS-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6100D" />
+ <printer translate="name" name="Canon PIXMA iP6100D" driver="bjc-PIXMA-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6100D">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP6100D" driver="bjc-PIXUS-iP6100D" manufacturer="Canon" model="3006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6100D">EXPERIMENTAL</printer>
<!-- Canon iP6210 -->
- <printer translate="name" name="Canon PIXMA iP6210D" driver="bjc-PIXMA-iP6210D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6210D" />
+ <printer translate="name" name="Canon PIXMA iP6210D" driver="bjc-PIXMA-iP6210D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6210D">EXPERIMENTAL</printer>
<!-- Canon iP6220 -->
- <printer translate="name" name="Canon PIXMA iP6220D" driver="bjc-PIXMA-iP6220D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6220D" />
+ <printer translate="name" name="Canon PIXMA iP6220D" driver="bjc-PIXMA-iP6220D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6220D">EXPERIMENTAL</printer>
<!-- Canon iP6310 -->
- <printer translate="name" name="Canon PIXMA iP6310D" driver="bjc-PIXMA-iP6310D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6310D" />
+ <printer translate="name" name="Canon PIXMA iP6310D" driver="bjc-PIXMA-iP6310D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6310D">EXPERIMENTAL</printer>
<!-- Canon iP6320D -->
- <printer translate="name" name="Canon PIXMA iP6320D" driver="bjc-PIXMA-iP6320D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6320D" />
+ <printer translate="name" name="Canon PIXMA iP6320D" driver="bjc-PIXMA-iP6320D" manufacturer="Canon" model="3006210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6320D">EXPERIMENTAL</printer>
<!-- Canon iP6600D family -->
- <printer translate="name" name="Canon iP6600D series" driver="bjc-iP6600D-series" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP6600D-series" />
- <printer translate="name" name="Canon PIXMA iP6600D" driver="bjc-PIXMA-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6600D" />
- <printer translate="name" name="Canon PIXUS iP6600D" driver="bjc-PIXUS-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6600D" />
+ <printer translate="name" name="Canon iP6600D series" driver="bjc-iP6600D-series" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP6600D-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP6600D" driver="bjc-PIXMA-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6600D">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP6600D" driver="bjc-PIXUS-iP6600D" manufacturer="Canon" model="3006600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6600D">EXPERIMENTAL</printer>
<!-- Canon iP6700D family -->
- <printer translate="name" name="Canon iP6700D series" driver="bjc-iP6700-series" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP6700-series" />
- <printer translate="name" name="Canon PIXMA iP6700D" driver="bjc-PIXMA-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6700" />
- <printer translate="name" name="Canon PIXUS iP6700D" driver="bjc-PIXUS-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6700" />
+ <printer translate="name" name="Canon iP6700D series" driver="bjc-iP6700-series" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP6700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP6700D" driver="bjc-PIXMA-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP6700">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP6700D" driver="bjc-PIXUS-iP6700" manufacturer="Canon" model="3006700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP6700">EXPERIMENTAL</printer>
<!-- Canon iP7100 (PIXUS only, PIXMA iP7100 does not exist) -->
- <printer translate="name" name="Canon PIXMA iP7100" driver="bjc-PIXMA-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7100" />
- <printer translate="name" name="Canon PIXUS iP7100" driver="bjc-PIXUS-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7100" />
+ <printer translate="name" name="Canon PIXMA iP7100" driver="bjc-PIXMA-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP7100" driver="bjc-PIXUS-iP7100" manufacturer="Canon" model="3007100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7100">EXPERIMENTAL</printer>
<!-- Canon iP7200 family -->
- <printer translate="name" name="Canon iP7200 series" driver="bjc-iP7200-series" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP7200-series" />
- <printer translate="name" name="Canon PIXMA iP7210" driver="bjc-PIXMA-iP7210" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7210" />
- <printer translate="name" name="Canon PIXMA iP7220" driver="bjc-PIXMA-iP7220" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7220" />
- <printer translate="name" name="Canon PIXUS iP7230" driver="bjc-PIXUS-iP7230" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7230" />
- <printer translate="name" name="Canon PIXMA iP7240" driver="bjc-PIXMA-iP7240" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7240" />
- <printer translate="name" name="Canon PIXMA iP7250" driver="bjc-PIXMA-iP7250" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7250" />
- <printer translate="name" name="Canon PIXMA iP7260" driver="bjc-PIXMA-iP7260" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7260" />
- <printer translate="name" name="Canon PIXMA iP7270" driver="bjc-PIXMA-iP7270" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7270" />
- <printer translate="name" name="Canon PIXMA iP7280" driver="bjc-PIXMA-iP7280" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7280" />
+ <printer translate="name" name="Canon iP7200 series" driver="bjc-iP7200-series" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP7200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7210" driver="bjc-PIXMA-iP7210" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7210">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7220" driver="bjc-PIXMA-iP7220" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7220">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP7230" driver="bjc-PIXUS-iP7230" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7230">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7240" driver="bjc-PIXMA-iP7240" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7240">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7250" driver="bjc-PIXMA-iP7250" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7250">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7260" driver="bjc-PIXMA-iP7260" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7260">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7270" driver="bjc-PIXMA-iP7270" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7270">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7280" driver="bjc-PIXMA-iP7280" manufacturer="Canon" model="3007200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7280">EXPERIMENTAL</printer>
<!-- Canon iP7500 (PIXUS only, PIXMA iP7500 does not exist) -->
- <printer translate="name" name="Canon PIXMA iP7500" driver="bjc-PIXMA-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7500" />
- <printer translate="name" name="Canon PIXUS iP7500" driver="bjc-PIXUS-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7500" />
+ <printer translate="name" name="Canon PIXMA iP7500" driver="bjc-PIXMA-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP7500">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP7500" driver="bjc-PIXUS-iP7500" manufacturer="Canon" model="3007500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP7500">EXPERIMENTAL</printer>
<!-- Canon iP8100 (PIXUS only, PIXMA iP8100 does not exist) -->
- <printer translate="name" name="Canon PIXMA iP8100" driver="bjc-PIXMA-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8100" />
- <printer translate="name" name="Canon PIXUS iP8100" driver="bjc-PIXUS-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP8100" />
+ <printer translate="name" name="Canon PIXMA iP8100" driver="bjc-PIXMA-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP8100" driver="bjc-PIXUS-iP8100" manufacturer="Canon" model="3008100" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP8100">EXPERIMENTAL</printer>
<!-- Canon iP8500 -->
- <printer translate="name" name="Canon PIXMA iP8500" driver="bjc-PIXMA-iP8500" manufacturer="Canon" model="3008500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8500" />
+ <printer translate="name" name="Canon PIXMA iP8500" driver="bjc-PIXMA-iP8500" manufacturer="Canon" model="3008500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8500">EXPERIMENTAL</printer>
<!-- Canon iP8600 (PIXUS only, PIXMA iP8600 does not exist) -->
- <printer translate="name" name="Canon PIXMA iP8600" driver="bjc-PIXMA-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8600" />
- <printer translate="name" name="Canon PIXUS iP8600" driver="bjc-PIXUS-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP8600" />
+ <printer translate="name" name="Canon PIXMA iP8600" driver="bjc-PIXMA-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8600">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP8600" driver="bjc-PIXUS-iP8600" manufacturer="Canon" model="3008600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP8600">EXPERIMENTAL</printer>
+ <!-- Canon iP8700 family -->
+ <printer translate="name" name="Canon iP8700 series" driver="bjc-iP8700-series" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-iP8700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP7810" driver="bjc-PIXMA-iP8710" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8710">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP8720" driver="bjc-PIXMA-iP8720" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8720">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP8730" driver="bjc-PIXUS-iP8730" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP8730">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP8740" driver="bjc-PIXMA-iP8740" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8740">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP8750" driver="bjc-PIXMA-iP8750" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8750">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP8760" driver="bjc-PIXMA-iP8760" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8760">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP8770" driver="bjc-PIXMA-iP8770" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8770">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iP8780" driver="bjc-PIXMA-iP8780" manufacturer="Canon" model="3008700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP8780">EXPERIMENTAL</printer>
<!-- Canon iP9910 (PIXUS only, PIXMA iP9910 does not exist) -->
- <printer translate="name" name="Canon PIXMA iP9910" driver="bjc-PIXMA-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP9910" />
- <printer translate="name" name="Canon PIXUS iP9910" driver="bjc-PIXUS-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP9910" />
+ <printer translate="name" name="Canon PIXMA iP9910" driver="bjc-PIXMA-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-iP9910">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iP9910" driver="bjc-PIXUS-iP9910" manufacturer="Canon" model="3009910" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-iP9910">EXPERIMENTAL</printer>
<!-- Canon iX4000 -->
- <printer translate="name" name="Canon PIXMA iX4000" driver="bjc-PIXMA-iX4000" manufacturer="Canon" model="4004000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX4000" />
+ <printer translate="name" name="Canon PIXMA iX4000" driver="bjc-PIXMA-iX4000" manufacturer="Canon" model="4004000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX4000">EXPERIMENTAL</printer>
<!-- Canon iX5000 family -->
- <printer translate="name" name="Canon iX5000 series" driver="bjc-iX5000-series" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX5000-series" />
- <printer translate="name" name="Canon PIXMA iX5000" driver="bjc-PIXMA-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX5000" />
- <printer translate="name" name="Canon PIXUS iX5000" driver="bjc-PIXUS-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX5000" />
+ <printer translate="name" name="Canon iX5000 series" driver="bjc-iX5000-series" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX5000-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX5000" driver="bjc-PIXMA-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX5000">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iX5000" driver="bjc-PIXUS-iX5000" manufacturer="Canon" model="4005000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX5000">EXPERIMENTAL</printer>
<!-- Canon iX6500 family -->
- <printer translate="name" name="Canon iX6500 series" driver="bjc-iX6500-series" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX6500-series" />
- <printer translate="name" name="Canon PIXMA iX6500" driver="bjc-PIXMA-iX6500" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6500" />
- <printer translate="name" name="Canon PIXMA iX6510" driver="bjc-PIXMA-iX6510" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6510" />
- <printer translate="name" name="Canon PIXMA iX6520" driver="bjc-PIXMA-iX6520" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6520" />
- <printer translate="name" name="Canon PIXUS iX6530" driver="bjc-PIXUS-iX6530" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX6530" />
- <printer translate="name" name="Canon PIXMA iX6540" driver="bjc-PIXMA-iX6540" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6540" />
- <printer translate="name" name="Canon PIXMA iX6550" driver="bjc-PIXMA-iX6550" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6550" />
- <printer translate="name" name="Canon PIXMA iX6560" driver="bjc-PIXMA-iX6560" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6560" />
- <printer translate="name" name="Canon PIXMA iX6580" driver="bjc-PIXMA-iX6580" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6580" />
+ <printer translate="name" name="Canon iX6500 series" driver="bjc-iX6500-series" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX6500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6500" driver="bjc-PIXMA-iX6500" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6500">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6510" driver="bjc-PIXMA-iX6510" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6510">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6520" driver="bjc-PIXMA-iX6520" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6520">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iX6530" driver="bjc-PIXUS-iX6530" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX6530">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6540" driver="bjc-PIXMA-iX6540" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6540">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6550" driver="bjc-PIXMA-iX6550" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6550">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6560" driver="bjc-PIXMA-iX6560" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6560">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6580" driver="bjc-PIXMA-iX6580" manufacturer="Canon" model="4006500" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6580">EXPERIMENTAL</printer>
+ <!-- Canon iX6700 family -->
+ <printer translate="name" name="Canon iX6700 series" driver="bjc-iX6700-series" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX6700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6770" driver="bjc-PIXMA-iX6770" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6770">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6780" driver="bjc-PIXMA-iX6780" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6780">EXPERIMENTAL</printer>
+ <!-- Canon iX6800 family -->
+ <printer translate="name" name="Canon iX6800 series" driver="bjc-iX6800-series" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX6800-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6810" driver="bjc-PIXMA-iX6810" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6810">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6820" driver="bjc-PIXMA-iX6820" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6820">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iX6830" driver="bjc-PIXUS-iX6830" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX6830">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6840" driver="bjc-PIXMA-iX6840" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6840">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6850" driver="bjc-PIXMA-iX6850" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6850">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6860" driver="bjc-PIXMA-iX6860" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6860">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6870" driver="bjc-PIXMA-iX6870" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6870">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX6880" driver="bjc-PIXMA-iX6880" manufacturer="Canon" model="4006800" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX6880">EXPERIMENTAL</printer>
<!-- Canon iX7000 family -->
- <printer translate="name" name="Canon iX7000 series" driver="bjc-iX7000-series" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX7000-series" />
- <printer translate="name" name="Canon PIXMA iX7000" driver="bjc-PIXMA-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX7000" />
- <printer translate="name" name="Canon PIXUS iX7000" driver="bjc-PIXUS-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX7000" />
+ <printer translate="name" name="Canon iX7000 series" driver="bjc-iX7000-series" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-iX7000-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA iX7000" driver="bjc-PIXMA-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXMA-iX7000">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS iX7000" driver="bjc-PIXUS-iX7000" manufacturer="Canon" model="4007000" parameters="PIXMA_iX5000_params" foomaticid="Canon-PIXUS-iX7000">EXPERIMENTAL</printer>
<!-- Canon Pro9000 family -->
- <printer translate="name" name="Canon Pro9000 series" driver="bjc-Pro9000-series" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9000-series" />
- <printer translate="name" name="Canon PIXMA Pro9000" driver="bjc-PIXMA-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9000" />
- <printer translate="name" name="Canon PIXUS Pro9000" driver="bjc-PIXUS-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9000" />
+ <printer translate="name" name="Canon Pro9000 series" driver="bjc-Pro9000-series" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9000-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA Pro9000" driver="bjc-PIXMA-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9000">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS Pro9000" driver="bjc-PIXUS-Pro9000" manufacturer="Canon" model="7009000" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9000">EXPERIMENTAL</printer>
<!-- Canon Pro9000 Mk.II family -->
- <printer translate="name" name="Canon Pro9000 Mk.II series" deviceid="MFG:Canon;MDL:Pro9000II series;CMD:BJL,BJRaster3,BSCCe,PLI;" driver="bjc-Pro9000mk2-series" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9000-Mk2-series" />
- <printer translate="name" name="Canon PIXMA Pro9000mk2" driver="bjc-PIXMA-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9000-Mk2" />
- <printer translate="name" name="Canon PIXUS Pro9000mk2" driver="bjc-PIXUS-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9000-Mk2" />
+ <printer translate="name" name="Canon Pro9000 Mk.II series" deviceid="MFG:Canon;MDL:Pro9000II series;CMD:BJL,BJRaster3,BSCCe,PLI;" driver="bjc-Pro9000mk2-series" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9000-Mk2-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA Pro9000mk2" driver="bjc-PIXMA-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9000-Mk2">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS Pro9000mk2" driver="bjc-PIXUS-Pro9000mk2" manufacturer="Canon" model="7009002" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9000-Mk2">EXPERIMENTAL</printer>
<!-- Canon Pro9500 family -->
- <printer translate="name" name="Canon Pro9500 series" driver="bjc-Pro9500-series" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9500-series" />
- <printer translate="name" name="Canon PIXMA Pro9500" driver="bjc-PIXMA-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9500" />
- <printer translate="name" name="Canon PIXUS Pro9500" driver="bjc-PIXUS-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9500" />
+ <printer translate="name" name="Canon Pro9500 series" driver="bjc-Pro9500-series" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA Pro9500" driver="bjc-PIXMA-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9500">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS Pro9500" driver="bjc-PIXUS-Pro9500" manufacturer="Canon" model="7009500" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9500">EXPERIMENTAL</printer>
<!-- Canon Pro9500 Mk.II family -->
- <printer translate="name" name="Canon Pro9500 Mk.II series" driver="bjc-Pro9500mk2-series" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9500-Mk2-series" />
- <printer translate="name" name="Canon PIXMA Pro9500mk2" driver="bjc-PIXMA-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9500- Mk2" />
- <printer translate="name" name="Canon PIXUS Pro9500mk2" driver="bjc-PIXUS-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9500-Mk2" />
+ <printer translate="name" name="Canon Pro9500 Mk.II series" driver="bjc-Pro9500mk2-series" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-Pro9500-Mk2-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA Pro9500mk2" driver="bjc-PIXMA-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-Pro9500- Mk2">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS Pro9500mk2" driver="bjc-PIXUS-Pro9500mk2" manufacturer="Canon" model="7009502" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-Pro9500-Mk2">EXPERIMENTAL</printer>
<!-- Canon MP140 family -->
- <printer translate="name" name="Canon MP140 series" driver="bjc-MP140-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP140-series" />
- <printer translate="name" name="Canon PIXMA MP140" driver="bjc-MULTIPASS-MP140" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP140" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP145" driver="bjc-PIXMA-MP145" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP145" />
+ <printer translate="name" name="Canon MP140 series" driver="bjc-MP140-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP140-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP140" driver="bjc-MULTIPASS-MP140" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP140">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP145" driver="bjc-PIXMA-MP145" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP145">EXPERIMENTAL</printer>
<!-- Canon MP150 family -->
- <printer translate="name" name="Canon MP150 series" driver="bjc-MP150-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP150-series" />
- <printer translate="name" name="Canon PIXMA MP150" driver="bjc-MULTIPASS-MP150" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP150" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP150 series" driver="bjc-MP150-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP150-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP150" driver="bjc-MULTIPASS-MP150" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP150">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP160 family -->
- <printer translate="name" name="Canon MP160 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:MP160;CLS:PRINTER;DES:Canon MP160;VER:1.06;STA:10;HRI:OTH;" driver="bjc-MP160-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP160-series" />
- <printer translate="name" name="Canon PIXMA MP160" driver="bjc-MULTIPASS-MP160" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP160" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP160 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;SOJ:TXT01;MDL:MP160;CLS:PRINTER;DES:Canon MP160;VER:1.06;STA:10;HRI:OTH;" driver="bjc-MP160-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP160-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP160" driver="bjc-MULTIPASS-MP160" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP160">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP170 family -->
- <printer translate="name" name="Canon MP170 series" driver="bjc-MP170-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP170-series" />
- <printer translate="name" name="Canon PIXMA MP170" driver="bjc-MULTIPASS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP170" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP170" driver="bjc-PIXUS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP170" />
+ <printer translate="name" name="Canon MP170 series" driver="bjc-MP170-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP170-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP170" driver="bjc-MULTIPASS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP170">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP170" driver="bjc-PIXUS-MP170" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP170">EXPERIMENTAL</printer>
<!-- Canon MP180 family -->
- <printer translate="name" name="Canon MP180 series" driver="bjc-MP180-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP180-series" />
- <printer translate="name" name="Canon PIXMA MP180" driver="bjc-MULTIPASS-MP180" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP180" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP180 series" driver="bjc-MP180-series" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP180-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP180" driver="bjc-MULTIPASS-MP180" manufacturer="Canon" model="5000150" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP180">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP190 family -->
- <printer translate="name" name="Canon MP190 series" driver="bjc-MP190-series" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP190-series" />
- <printer translate="name" name="Canon PIXMA MP190" driver="bjc-MULTIPASS-MP190" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP190" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP198" driver="bjc-PIXMA-MP198" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP198" />
+ <printer translate="name" name="Canon MP190 series" driver="bjc-MP190-series" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP190-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP190" driver="bjc-MULTIPASS-MP190" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP190">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP198" driver="bjc-PIXMA-MP198" manufacturer="Canon" model="5000190" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP198">EXPERIMENTAL</printer>
<!-- Canon MP210 family -->
- <printer translate="name" name="Canon MP210 series" driver="bjc-MP210-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP210-series" />
- <printer translate="name" name="Canon PIXMA MP210" driver="bjc-MULTIPASS-MP210" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP210" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP218" driver="bjc-PIXMA-MP218" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP218" />
+ <printer translate="name" name="Canon MP210 series" driver="bjc-MP210-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP210-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP210" driver="bjc-MULTIPASS-MP210" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP210">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP218" driver="bjc-PIXMA-MP218" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP218">EXPERIMENTAL</printer>
<!-- Canon MP220 family -->
- <printer translate="name" name="Canon MP220 series" driver="bjc-MP220-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP220-series" />
- <printer translate="name" name="Canon PIXMA MP220" driver="bjc-MULTIPASS-MP220" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP220" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP228" driver="bjc-PIXMA-MP228" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP228" />
+ <printer translate="name" name="Canon MP220 series" driver="bjc-MP220-series" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP220-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP220" driver="bjc-MULTIPASS-MP220" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP220">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP228" driver="bjc-PIXMA-MP228" manufacturer="Canon" model="5000210" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP228">EXPERIMENTAL</printer>
<!-- Canon MP230 family -->
- <printer translate="name" name="Canon MP230 series" driver="bjc-MP230-series" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP230-series" />
- <printer translate="name" name="Canon PIXMA MP230" driver="bjc-MULTIPASS-MP230" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP230" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP236" driver="bjc-PIXMA-MP236" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP236" />
- <printer translate="name" name="Canon PIXMA MP237" driver="bjc-PIXMA-MP237" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP237" />
+ <printer translate="name" name="Canon MP230 series" driver="bjc-MP230-series" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP230-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP230" driver="bjc-MULTIPASS-MP230" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP230">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP236" driver="bjc-PIXMA-MP236" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP236">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP237" driver="bjc-PIXMA-MP237" manufacturer="Canon" model="5000230" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP237">EXPERIMENTAL</printer>
<!-- Canon MP240 family -->
- <printer translate="name" name="Canon MP240 series" driver="bjc-MP240-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP240-series" />
- <printer translate="name" name="Canon PIXMA MP240" driver="bjc-MULTIPASS-MP240" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP240" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP245" driver="bjc-PIXMA-MP245" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP245" />
+ <printer translate="name" name="Canon MP240 series" driver="bjc-MP240-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP240-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP240" driver="bjc-MULTIPASS-MP240" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP240">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP245" driver="bjc-PIXMA-MP245" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP245">EXPERIMENTAL</printer>
<!-- Canon MP250 family -->
- <printer translate="name" name="Canon MP250 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;MDL:MP250 series;DES:Canon MP250 series;" driver="bjc-MP250-series" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP250-series" />
- <printer translate="name" name="Canon PIXMA MP250" driver="bjc-MULTIPASS-MP250" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP250" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP252" driver="bjc-PIXMA-MP252" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP252" />
- <printer translate="name" name="Canon PIXMA MP258" driver="bjc-PIXMA-MP258" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP258" />
- <printer translate="name" name="Canon PIXMA MP259" driver="bjc-PIXMA-MP259" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP259" />
+ <printer translate="name" name="Canon MP250 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe,IVEC,IVECPLI;MDL:MP250 series;DES:Canon MP250 series;" driver="bjc-MP250-series" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP250-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP250" driver="bjc-MULTIPASS-MP250" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP250">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP252" driver="bjc-PIXMA-MP252" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP252">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP258" driver="bjc-PIXMA-MP258" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP258">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP259" driver="bjc-PIXMA-MP259" manufacturer="Canon" model="5000250" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP259">EXPERIMENTAL</printer>
<!-- Canon MP260 family -->
- <printer translate="name" name="Canon MP260 series" driver="bjc-MP260-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP260-series" />
- <printer translate="name" name="Canon PIXMA MP260" driver="bjc-MULTIPASS-MP260" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP260" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP268" driver="bjc-PIXMA-MP268" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP268" />
+ <printer translate="name" name="Canon MP260 series" driver="bjc-MP260-series" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP260-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP260" driver="bjc-MULTIPASS-MP260" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP260">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP268" driver="bjc-PIXMA-MP268" manufacturer="Canon" model="5000240" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP268">EXPERIMENTAL</printer>
<!-- Canon MP270 family -->
- <printer translate="name" name="Canon MP270 series" driver="bjc-MP270-series" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP270-series" />
- <printer translate="name" name="Canon PIXMA MP270" driver="bjc-MULTIPASS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP270" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP270" driver="bjc-PIXUS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP270" />
- <printer translate="name" name="Canon PIXMA MP272" driver="bjc-PIXMA-MP272" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP272" />
- <printer translate="name" name="Canon PIXMA MP276" driver="bjc-PIXMA-MP276" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP276" />
+ <printer translate="name" name="Canon MP270 series" driver="bjc-MP270-series" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP270-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP270" driver="bjc-MULTIPASS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP270">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP270" driver="bjc-PIXUS-MP270" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP270">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP272" driver="bjc-PIXMA-MP272" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP272">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP276" driver="bjc-PIXMA-MP276" manufacturer="Canon" model="5000270" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP276">EXPERIMENTAL</printer>
<!-- Canon MP280 family -->
- <printer translate="name" name="Canon MP280 series" driver="bjc-MP280-series" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP280-series" />
- <printer translate="name" name="Canon PIXMA MP280" deviceid="MFG:Canon;MDL:MP280 series;" driver="bjc-MULTIPASS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP280" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP280" driver="bjc-PIXUS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP280" />
- <printer translate="name" name="Canon PIXMA MP282" driver="bjc-PIXMA-MP282" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP282" />
- <printer translate="name" name="Canon PIXMA MP287" driver="bjc-PIXMA-MP287" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP287" />
- <printer translate="name" name="Canon PIXMA MP288" driver="bjc-PIXMA-MP288" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP288" />
+ <printer translate="name" name="Canon MP280 series" driver="bjc-MP280-series" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP280-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP280" deviceid="MFG:Canon;MDL:MP280 series;" driver="bjc-MULTIPASS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP280">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP280" driver="bjc-PIXUS-MP280" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP280">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP282" driver="bjc-PIXMA-MP282" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP282">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP287" driver="bjc-PIXMA-MP287" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP287">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP288" driver="bjc-PIXMA-MP288" manufacturer="Canon" model="5000280" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP288">EXPERIMENTAL</printer>
<!-- Canon MP360 family (PIXMA MP360 does not exist) -->
- <printer translate="name" name="Canon MP360 series" driver="bjc-MP360-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP360-series" />
- <printer translate="name" name="Canon PIXMA MP360" driver="bjc-PIXMA-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP360" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
- <printer translate="name" name="Canon PIXUS MP360" driver="bjc-PIXUS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP360" />
- <printer translate="name" name="Canon SmartBase MP360" driver="bjc-SmartBase-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP360" />
- <printer translate="name" name="Canon SmartBase MP360S" driver="bjc-SmartBase-MP360S" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP360S" />
- <printer translate="name" name="Canon MultiPASS MP360" driver="bjc-MULTIPASS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP360" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP360 entry to reflect proper brand name -->
+ <printer translate="name" name="Canon MP360 series" driver="bjc-MP360-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP360-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP360" driver="bjc-PIXMA-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP360">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
+ <printer translate="name" name="Canon PIXUS MP360" driver="bjc-PIXUS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP360">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon SmartBase MP360" driver="bjc-SmartBase-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP360">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon SmartBase MP360S" driver="bjc-SmartBase-MP360S" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP360S">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MultiPASS MP360" driver="bjc-MULTIPASS-MP360" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP360">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP360 entry to reflect proper brand name -->
<!-- Canon MP370 family (PIXMA MP370, MP375R do not exist) -->
- <printer translate="name" name="Canon MP370 series" driver="bjc-MP370-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP370-series" />
- <printer translate="name" name="Canon PIXMA MP370" driver="bjc-PIXMA-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP370" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
- <printer translate="name" name="Canon PIXUS MP370" driver="bjc-PIXUS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP370" />
- <printer translate="name" name="Canon SmartBase MP370" driver="bjc-SmartBase-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP370" />
- <printer translate="name" name="Canon MultiPASS MP370" driver="bjc-MULTIPASS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP370" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP370 entry to reflect proper brand name -->
- <printer translate="name" name="Canon PIXMA MP375R" driver="bjc-MULTIPASS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP375R" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP375R" driver="bjc-PIXUS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP375R" />
+ <printer translate="name" name="Canon MP370 series" driver="bjc-MP370-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP370-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP370" driver="bjc-PIXMA-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP370">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
+ <printer translate="name" name="Canon PIXUS MP370" driver="bjc-PIXUS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP370">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon SmartBase MP370" driver="bjc-SmartBase-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP370">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MultiPASS MP370" driver="bjc-MULTIPASS-MP370" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP370">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP370 entry to reflect proper brand name -->
+ <printer translate="name" name="Canon PIXMA MP375R" driver="bjc-MULTIPASS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP375R">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP375R" driver="bjc-PIXUS-MP375R" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP375R">EXPERIMENTAL</printer>
<!-- Canon MP390 family (PIXMA MP390 does not exist) -->
- <printer translate="name" name="Canon MP390 series" driver="bjc-MP390-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP390-series" />
- <printer translate="name" name="Canon PIXMA MP390" driver="bjc-PIXMA-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP390" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
- <printer translate="name" name="Canon PIXUS MP390" driver="bjc-PIXUS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP390" />
- <printer translate="name" name="Canon SmartBase MP390" driver="bjc-SmartBase-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP390" />
- <printer translate="name" name="Canon MultiPASS MP390" driver="bjc-MULTIPASS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP390" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP390 entry to reflect proper brand name -->
+ <printer translate="name" name="Canon MP390 series" driver="bjc-MP390-series" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP390-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP390" driver="bjc-PIXMA-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP390">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
+ <printer translate="name" name="Canon PIXUS MP390" driver="bjc-PIXUS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP390">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon SmartBase MP390" driver="bjc-SmartBase-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP390">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MultiPASS MP390" driver="bjc-MULTIPASS-MP390" manufacturer="Canon" model="5000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP390">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP390 entry to reflect proper brand name -->
<!-- Canon MP450 family -->
- <printer translate="name" name="Canon MP450 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;MDL:MP450;DES:Canon MP450;CLS:PRINTER;VER:1.08;STA:10;HRI:JP;SOJ:TXT01;" driver="bjc-MP450-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP450-series" />
- <printer translate="name" name="Canon PIXMA MP450" driver="bjc-MULTIPASS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP450" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP450" driver="bjc-PIXUS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP450" />
+ <printer translate="name" name="Canon MP450 series" deviceid="MFG:Canon;CMD:BJL,BJRaster3,BSCCe;MDL:MP450;DES:Canon MP450;CLS:PRINTER;VER:1.08;STA:10;HRI:JP;SOJ:TXT01;" driver="bjc-MP450-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP450-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP450" driver="bjc-MULTIPASS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP450">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP450" driver="bjc-PIXUS-MP450" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP450">EXPERIMENTAL</printer>
<!-- Canon MP460 family -->
- <printer translate="name" name="Canon MP460 series" driver="bjc-MP460-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP460-series" />
- <printer translate="name" name="Canon PIXMA MP460" driver="bjc-MULTIPASS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP460" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP460" driver="bjc-PIXUS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP460" />
+ <printer translate="name" name="Canon MP460 series" driver="bjc-MP460-series" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP460-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP460" driver="bjc-MULTIPASS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP460">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP460" driver="bjc-PIXUS-MP460" manufacturer="Canon" model="5000450" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP460">EXPERIMENTAL</printer>
<!-- Canon MP470 family -->
- <printer translate="name" name="Canon MP470 series" driver="bjc-MP470-series" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP470-series" />
- <printer translate="name" name="Canon PIXMA MP470" driver="bjc-MULTIPASS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP470" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP470" driver="bjc-PIXUS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP470" />
- <printer translate="name" name="Canon PIXMA MP476" driver="bjc-PIXMA-MP476" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP476" />
+ <printer translate="name" name="Canon MP470 series" driver="bjc-MP470-series" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP470-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP470" driver="bjc-MULTIPASS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP470">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP470" driver="bjc-PIXUS-MP470" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP470">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP476" driver="bjc-PIXMA-MP476" manufacturer="Canon" model="5000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP476">EXPERIMENTAL</printer>
<!-- Canon MP480 family -->
- <printer translate="name" name="Canon MP480 series" driver="bjc-MP480-series" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP480-series" />
- <printer translate="name" name="Canon PIXMA MP480" driver="bjc-MULTIPASS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP480" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP480" driver="bjc-PIXUS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP480" />
- <printer translate="name" name="Canon PIXMA MP486" driver="bjc-PIXMA-MP486" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP486" />
+ <printer translate="name" name="Canon MP480 series" driver="bjc-MP480-series" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP480-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP480" driver="bjc-MULTIPASS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP480">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP480" driver="bjc-PIXUS-MP480" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP480">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP486" driver="bjc-PIXMA-MP486" manufacturer="Canon" model="5000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP486">EXPERIMENTAL</printer>
<!-- Canon MP490 family (TODO: combine separate drivers for 493, 495. PIXMA MP493 does not exist) -->
- <printer translate="name" name="Canon MP490 series" driver="bjc-MP490-series" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP490-series" />
- <printer translate="name" name="Canon PIXMA MP490" driver="bjc-MULTIPASS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP490" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP490" driver="bjc-PIXUS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP490" />
- <printer translate="name" name="Canon PIXMA MP492" driver="bjc-PIXMA-MP492" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP492" />
- <printer translate="name" name="Canon PIXMA MP493" driver="bjc-MULTIPASS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP493" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP493" driver="bjc-PIXUS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP493" />
- <printer translate="name" name="Canon PIXMA MP495" driver="bjc-MULTIPASS-MP495" manufacturer="Canon" model="5000495" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP495" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MP496" driver="bjc-PIXMA-MP496" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP496" />
- <printer translate="name" name="Canon PIXMA MP497" driver="bjc-PIXMA-MP497" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP497" />
- <printer translate="name" name="Canon PIXMA MP498" driver="bjc-PIXMA-MP498" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP498" />
- <printer translate="name" name="Canon PIXMA MP499" driver="bjc-PIXMA-MP499" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP499" />
+ <printer translate="name" name="Canon MP490 series" driver="bjc-MP490-series" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP490-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP490" driver="bjc-MULTIPASS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP490">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP490" driver="bjc-PIXUS-MP490" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP490">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP492" driver="bjc-PIXMA-MP492" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP492">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP493" driver="bjc-MULTIPASS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP493">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP493" driver="bjc-PIXUS-MP493" manufacturer="Canon" model="5000493" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP493">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP495" driver="bjc-MULTIPASS-MP495" manufacturer="Canon" model="5000495" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP495">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP496" driver="bjc-PIXMA-MP496" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP496">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP497" driver="bjc-PIXMA-MP497" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP497">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP498" driver="bjc-PIXMA-MP498" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP498">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP499" driver="bjc-PIXMA-MP499" manufacturer="Canon" model="5000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP499">EXPERIMENTAL</printer>
<!-- Canon MP500 family -->
- <printer translate="name" name="Canon MP500 series" deviceid="MFG:Canon;MDL:MP500;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-MP500-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP500-series" />
- <printer translate="name" name="Canon PIXMA MP500" driver="bjc-MULTIPASS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP500" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP500" driver="bjc-PIXUS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP500" />
+ <printer translate="name" name="Canon MP500 series" deviceid="MFG:Canon;MDL:MP500;CMD:BJL,BJRaster3,BSCCe;" driver="bjc-MP500-series" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP500" driver="bjc-MULTIPASS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP500">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP500" driver="bjc-PIXUS-MP500" manufacturer="Canon" model="3004200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP500">EXPERIMENTAL</printer>
<!-- Canon MP510 family -->
- <printer translate="name" name="Canon MP510 series" driver="bjc-MP510-series" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP510-series" />
- <printer translate="name" name="Canon PIXMA MP510" driver="bjc-MULTIPASS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP510" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP510" driver="bjc-PIXUS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP510" />
+ <printer translate="name" name="Canon MP510 series" driver="bjc-MP510-series" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP510-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP510" driver="bjc-MULTIPASS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP510">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP510" driver="bjc-PIXUS-MP510" manufacturer="Canon" model="5000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP510">EXPERIMENTAL</printer>
<!-- Canon MP520 family -->
- <printer translate="name" name="Canon MP520 series" driver="bjc-MP520-series" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP520-series" />
- <printer translate="name" name="Canon PIXMA MP520" driver="bjc-MULTIPASS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP520" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP520" driver="bjc-PIXUS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP520" />
+ <printer translate="name" name="Canon MP520 series" driver="bjc-MP520-series" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP520-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP520" driver="bjc-MULTIPASS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP520">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP520" driver="bjc-PIXUS-MP520" manufacturer="Canon" model="5000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP520">EXPERIMENTAL</printer>
<!-- Canon MP530 family -->
- <printer translate="name" name="Canon MP530 series" driver="bjc-MP530-series" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP530-series" />
- <printer translate="name" name="Canon PIXMA MP530" driver="bjc-MULTIPASS-MP530" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP530" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP530 series" driver="bjc-MP530-series" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP530-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP530" driver="bjc-MULTIPASS-MP530" manufacturer="Canon" model="5000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP530">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP540 family -->
- <printer translate="name" name="Canon MP540 series" driver="bjc-MP540-series" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP540-series" />
- <printer translate="name" name="Canon PIXMA MP540" driver="bjc-MULTIPASS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP540" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP540" driver="bjc-PIXUS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP540" />
- <printer translate="name" name="Canon PIXMA MP545" driver="bjc-PIXMA-MP545" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP545" />
+ <printer translate="name" name="Canon MP540 series" driver="bjc-MP540-series" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP540-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP540" driver="bjc-MULTIPASS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP540">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP540" driver="bjc-PIXUS-MP540" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP540">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP545" driver="bjc-PIXMA-MP545" manufacturer="Canon" model="5000540" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP545">EXPERIMENTAL</printer>
<!-- Canon MP550 family -->
- <printer translate="name" name="Canon MP550 series" driver="bjc-MP550-series" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP550-series" />
- <printer translate="name" name="Canon PIXMA MP550" driver="bjc-MULTIPASS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP550" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP550" driver="bjc-PIXUS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP550" />
- <printer translate="name" name="Canon PIXMA MP558" driver="bjc-PIXMA-MP558" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP558" />
+ <printer translate="name" name="Canon MP550 series" driver="bjc-MP550-series" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP550-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP550" driver="bjc-MULTIPASS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP550">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP550" driver="bjc-PIXUS-MP550" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP550">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP558" driver="bjc-PIXMA-MP558" manufacturer="Canon" model="5000550" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP558">EXPERIMENTAL</printer>
<!-- Canon MP560 family -->
- <printer translate="name" name="Canon MP560 series" driver="bjc-MP560-series" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP560-series" />
- <printer translate="name" name="Canon PIXMA MP560" driver="bjc-MULTIPASS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP560" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP560" driver="bjc-PIXUS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP560" />
- <printer translate="name" name="Canon PIXMA MP568" driver="bjc-PIXMA-MP568" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP568" />
+ <printer translate="name" name="Canon MP560 series" driver="bjc-MP560-series" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP560-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP560" driver="bjc-MULTIPASS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP560">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP560" driver="bjc-PIXUS-MP560" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP560">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP568" driver="bjc-PIXMA-MP568" manufacturer="Canon" model="5000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP568">EXPERIMENTAL</printer>
<!-- Canon MP600 family -->
- <printer translate="name" name="Canon MP600 series" driver="bjc-MP600-series" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP600-series" />
- <printer translate="name" name="Canon PIXMA MP600" driver="bjc-MULTIPASS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP600" driver="bjc-PIXUS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP600" />
- <printer translate="name" name="Canon PIXMA MP600R" driver="bjc-MULTIPASS-MP600R" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600R" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP600 series" driver="bjc-MP600-series" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP600-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP600" driver="bjc-MULTIPASS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP600" driver="bjc-PIXUS-MP600" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP600">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP600R" driver="bjc-MULTIPASS-MP600R" manufacturer="Canon" model="5000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP600R">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP610 family -->
- <printer translate="name" name="Canon MP610 series" driver="bjc-MP610-series" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP610-series" />
- <printer translate="name" name="Canon PIXMA MP610" driver="bjc-MULTIPASS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP610" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP610" driver="bjc-PIXUS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP610" />
+ <printer translate="name" name="Canon MP610 series" driver="bjc-MP610-series" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP610-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP610" driver="bjc-MULTIPASS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP610">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP610" driver="bjc-PIXUS-MP610" manufacturer="Canon" model="5000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP610">EXPERIMENTAL</printer>
<!-- Canon MP620 family -->
- <printer translate="name" name="Canon MP620 series" driver="bjc-MP620-series" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP620-series" />
- <printer translate="name" name="Canon PIXMA MP620" driver="bjc-MULTIPASS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP620" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP620" driver="bjc-PIXUS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP620" />
- <printer translate="name" name="Canon PIXMA MP628" driver="bjc-PIXMA-MP628" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP628" />
+ <printer translate="name" name="Canon MP620 series" driver="bjc-MP620-series" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP620-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP620" driver="bjc-MULTIPASS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP620">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP620B" driver="bjc-PIXMA-MP620B" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP620B">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MP620" driver="bjc-PIXUS-MP620" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP620">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP628" driver="bjc-PIXMA-MP628" manufacturer="Canon" model="5000620" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP628">EXPERIMENTAL</printer>
<!-- Canon MP630 family -->
- <printer translate="name" name="Canon MP630 series" driver="bjc-MP630-series" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP630-series" />
- <printer translate="name" name="Canon PIXMA MP630" driver="bjc-MULTIPASS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP630" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP630" driver="bjc-PIXUS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP630" />
- <printer translate="name" name="Canon PIXMA MP638" driver="bjc-PIXMA-MP638" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP638" />
+ <printer translate="name" name="Canon MP630 series" driver="bjc-MP630-series" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP630-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP630" driver="bjc-MULTIPASS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP630">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP630" driver="bjc-PIXUS-MP630" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP630">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP638" driver="bjc-PIXMA-MP638" manufacturer="Canon" model="5000630" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP638">EXPERIMENTAL</printer>
<!-- Canon MP640 family -->
- <printer translate="name" name="Canon MP640 series" driver="bjc-MP640-series" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP640-series" />
- <printer translate="name" name="Canon PIXMA MP640" driver="bjc-MULTIPASS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP640" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP640" driver="bjc-PIXUS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP640" />
- <printer translate="name" name="Canon PIXMA MP648" driver="bjc-PIXMA-MP648" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP648" />
+ <printer translate="name" name="Canon MP640 series" driver="bjc-MP640-series" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP640-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP640" driver="bjc-MULTIPASS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP640">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MP640R" driver="bjc-PIXMA-MP640R" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP640R">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MP640" driver="bjc-PIXUS-MP640" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP640">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP648" driver="bjc-PIXMA-MP648" manufacturer="Canon" model="5000640" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP648">EXPERIMENTAL</printer>
<!-- Canon MP700 family -->
- <printer translate="name" name="Canon MP700 series" driver="bjc-MP700-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP700-series" />
- <printer translate="name" name="Canon PIXMA MP700" driver="bjc-PIXMA-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP700" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
- <printer translate="name" name="Canon PIXUS MP700" driver="bjc-PIXUS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP700" />
- <printer translate="name" name="Canon SmartBase MP700" driver="bjc-SmartBase-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP700" />
- <printer translate="name" name="Canon MultiPASS MP700" driver="bjc-MULTIPASS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP700" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP700 entry to reflect proper brand name -->
+ <printer translate="name" name="Canon MP700 series" driver="bjc-MP700-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP700" driver="bjc-PIXMA-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP700">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
+ <printer translate="name" name="Canon PIXUS MP700" driver="bjc-PIXUS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP700">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon SmartBase MP700" driver="bjc-SmartBase-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP700">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MultiPASS MP700" driver="bjc-MULTIPASS-MP700" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP700">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP700 entry to reflect proper brand name -->
<!-- Canon MP710 family (PIXMA MP710 does not exit) -->
- <printer translate="name" name="Canon MP710 series" driver="bjc-MP710-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP710-series" />
- <printer translate="name" name="Canon PIXMA MP710" driver="bjc-MULTIPASS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP710" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP710" driver="bjc-PIXUS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP710" />
+ <printer translate="name" name="Canon MP710 series" driver="bjc-MP710-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP710-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP710" driver="bjc-MULTIPASS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP710">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP710" driver="bjc-PIXUS-MP710" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP710">EXPERIMENTAL</printer>
<!-- Canon MP730 family -->
- <printer translate="name" name="Canon MP730 series" driver="bjc-MP730-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP730-series" />
- <printer translate="name" name="Canon PIXMA MP730" driver="bjc-PIXMA-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP730" /><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
- <printer translate="name" name="Canon PIXUS MP730" driver="bjc-PIXUS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP730" />
- <printer translate="name" name="Canon SmartBase MP730" driver="bjc-SmartBasw-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP730" />
- <printer translate="name" name="Canon MultiPASS MP730" driver="bjc-MULTIPASS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP730" /><!-- introduced the MultiPASS entry so changed previous PIXMA MP730 entry to reflect proper brand name -->
+ <printer translate="name" name="Canon MP730 series" driver="bjc-MP730-series" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP730-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP730" driver="bjc-PIXMA-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP730">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names updated since MultiPASS entry added -->
+ <printer translate="name" name="Canon PIXUS MP730" driver="bjc-PIXUS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP730">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon SmartBase MP730" driver="bjc-SmartBasw-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MP730">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MultiPASS MP730" driver="bjc-MULTIPASS-MP730" manufacturer="Canon" model="5000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP730">EXPERIMENTAL</printer><!-- introduced the MultiPASS entry so changed previous PIXMA MP730 entry to reflect proper brand name -->
<!-- Canon MP740 family (PIXMA MP740 does not exit) -->
- <printer translate="name" name="Canon MP740 series" driver="bjc-MP740-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP740-series" />
- <printer translate="name" name="Canon PIXMA MP740" driver="bjc-MULTIPASS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP740" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP740" driver="bjc-PIXUS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP740" />
+ <printer translate="name" name="Canon MP740 series" driver="bjc-MP740-series" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP740-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP740" driver="bjc-MULTIPASS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP740">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP740" driver="bjc-PIXUS-MP740" manufacturer="Canon" model="5000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP740">EXPERIMENTAL</printer>
<!-- Canon MP750 family -->
- <printer translate="name" name="Canon MP750 series" driver="bjc-MP750-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP750-series" />
- <printer translate="name" name="Canon PIXMA MP750" driver="bjc-MULTIPASS-MP750" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP750" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP750 series" driver="bjc-MP750-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP750-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP750" driver="bjc-MULTIPASS-MP750" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP750">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP760 family -->
- <printer translate="name" name="Canon MP760 series" driver="bjc-MULTIPASS-MP760-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP760-series" />
- <printer translate="name" name="Canon PIXMA MP760" driver="bjc-MULTIPASS-MP760" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP760" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP760 series" driver="bjc-MULTIPASS-MP760-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP760-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP760" driver="bjc-MULTIPASS-MP760" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP760">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP770 family (PIXMA MP770 does not exist) -->
- <printer translate="name" name="Canon MP770 series" driver="bjc-MULTIPASS-MP770-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP770-series" />
- <printer translate="name" name="Canon PIXMA MP770" driver="bjc-MULTIPASS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP770" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP770" driver="bjc-PIXUS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP770" />
+ <printer translate="name" name="Canon MP770 series" driver="bjc-MULTIPASS-MP770-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP770-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP770" driver="bjc-MULTIPASS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP770">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP770" driver="bjc-PIXUS-MP770" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP770">EXPERIMENTAL</printer>
<!-- Canon MP780 family -->
- <printer translate="name" name="Canon MP780 series" driver="bjc-MP780-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP780-series" />
- <printer translate="name" name="Canon PIXMA MP780" driver="bjc-MULTIPASS-MP780" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP780" /><!-- driver and foomaticid legacy names used -->
- <!-- Canon MP790 family (PIXMA MP770 does not exist) -->
- <printer translate="name" name="Canon MP790 series" driver="bjc-MP790-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP790-series" />
- <printer translate="name" name="Canon PIXMA MP790" driver="bjc-MULTIPASS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP790" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP790" driver="bjc-PIXUS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP790" />
+ <printer translate="name" name="Canon MP780 series" driver="bjc-MP780-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP780-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP780" driver="bjc-MULTIPASS-MP780" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP780">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <!-- Canon MP790 family (PIXMA MP790 does not exist) -->
+ <printer translate="name" name="Canon MP790 series" driver="bjc-MP790-series" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP790-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP790" driver="bjc-MULTIPASS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP790">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP790" driver="bjc-PIXUS-MP790" manufacturer="Canon" model="5000750" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP790">EXPERIMENTAL</printer>
<!-- Canon MP800 family -->
- <printer translate="name" name="Canon MP800 series" driver="bjc-MP800-series" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP800-series" />
- <printer translate="name" name="Canon PIXMA MP800" driver="bjc-MULTIPASS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP800" driver="bjc-PIXUS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP800" />
- <printer translate="name" name="Canon PIXMA MP800R" driver="bjc-MULTIPASS-MP800R" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800R" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MP800 series" driver="bjc-MP800-series" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP800-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP800" driver="bjc-MULTIPASS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP800" driver="bjc-PIXUS-MP800" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP800">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP800R" driver="bjc-MULTIPASS-MP800R" manufacturer="Canon" model="5000800" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP800R">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MP810 family -->
- <printer translate="name" name="Canon MP810 series" driver="bjc-MP810-series" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP810-series" />
- <printer translate="name" name="Canon PIXMA MP810" driver="bjc-MULTIPASS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP810" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP810" driver="bjc-PIXUS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP810" />
+ <printer translate="name" name="Canon MP810 series" driver="bjc-MP810-series" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP810-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP810" driver="bjc-MULTIPASS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP810">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP810" driver="bjc-PIXUS-MP810" manufacturer="Canon" model="5000810" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP810">EXPERIMENTAL</printer>
<!-- Canon MP830 family -->
- <printer translate="name" name="Canon MP830 series" driver="bjc-MP830-series" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP830-series" />
- <printer translate="name" name="Canon PIXMA MP830" driver="bjc-MULTIPASS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP830" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP830" driver="bjc-PIXUS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP830" />
+ <printer translate="name" name="Canon MP830 series" driver="bjc-MP830-series" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP830-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP830" driver="bjc-MULTIPASS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP830">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP830" driver="bjc-PIXUS-MP830" manufacturer="Canon" model="5000830" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP830">EXPERIMENTAL</printer>
<!-- Canon MP900 family -->
- <printer translate="name" name="Canon MP900 series" driver="bjc-MP900-series" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP900-series" />
- <printer translate="name" name="Canon PIXMA MP900" driver="bjc-MULTIPASS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP900" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP900" driver="bjc-PIXUS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP900" />
+ <printer translate="name" name="Canon MP900 series" driver="bjc-MP900-series" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP900-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP900" driver="bjc-MULTIPASS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP900">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP900" driver="bjc-PIXUS-MP900" manufacturer="Canon" model="5000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP900">EXPERIMENTAL</printer>
<!-- Canon MP950 family -->
- <printer translate="name" name="Canon MP950 series" driver="bjc-MP950-series" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP950-series" />
- <printer translate="name" name="Canon PIXMA MP950" driver="bjc-MULTIPASS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP950" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP950" driver="bjc-PIXUS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP950" />
+ <printer translate="name" name="Canon MP950 series" driver="bjc-MP950-series" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP950-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP950" driver="bjc-MULTIPASS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP950">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP950" driver="bjc-PIXUS-MP950" manufacturer="Canon" model="5000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP950">EXPERIMENTAL</printer>
<!-- Canon MP960 family -->
- <printer translate="name" name="Canon MP960 series" driver="bjc-MP960-series" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP960-series" />
- <printer translate="name" name="Canon PIXMA MP960" driver="bjc-MULTIPASS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP960" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP960" driver="bjc-PIXUS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP960" />
+ <printer translate="name" name="Canon MP960 series" driver="bjc-MP960-series" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP960-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP960" driver="bjc-MULTIPASS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP960">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP960" driver="bjc-PIXUS-MP960" manufacturer="Canon" model="5000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP960">EXPERIMENTAL</printer>
<!-- Canon MP970 family -->
- <printer translate="name" name="Canon MP970 series" driver="bjc-MP970-series" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP970-series" />
- <printer translate="name" name="Canon PIXMA MP970" driver="bjc-MULTIPASS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP970" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP970" driver="bjc-PIXUS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP970" />
+ <printer translate="name" name="Canon MP970 series" driver="bjc-MP970-series" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP970-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP970" driver="bjc-MULTIPASS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP970">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP970" driver="bjc-PIXUS-MP970" manufacturer="Canon" model="5000970" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP970">EXPERIMENTAL</printer>
<!-- Canon MP980 family -->
- <printer translate="name" name="Canon MP980 series" driver="bjc-MP980-series" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP980-series" />
- <printer translate="name" name="Canon PIXMA MP980" driver="bjc-MULTIPASS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP980" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP980" driver="bjc-PIXUS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP980" />
- <printer translate="name" name="Canon PIXMA MP988" driver="bjc-PIXMA-MP988" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP988" />
+ <printer translate="name" name="Canon MP980 series" driver="bjc-MP980-series" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP980-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP980" driver="bjc-MULTIPASS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP980">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP980" driver="bjc-PIXUS-MP980" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP980">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP988" driver="bjc-PIXMA-MP988" manufacturer="Canon" model="5000980" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP988">EXPERIMENTAL</printer>
<!-- Canon MP990 family -->
- <printer translate="name" name="Canon MP990 series" driver="bjc-MP990-series" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP990-series" />
- <printer translate="name" name="Canon PIXMA MP990" driver="bjc-MULTIPASS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP990" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MP990" driver="bjc-PIXUS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP990" />
- <printer translate="name" name="Canon PIXMA MP996" driver="bjc-PIXMA-MP996" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP996" />
+ <printer translate="name" name="Canon MP990 series" driver="bjc-MP990-series" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-MP990-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP990" driver="bjc-MULTIPASS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MP990">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MP990" driver="bjc-PIXUS-MP990" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP990">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MP996" driver="bjc-PIXMA-MP996" manufacturer="Canon" model="5000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MP996">EXPERIMENTAL</printer>
<!-- Canon MG2100 family -->
- <printer translate="name" name="Canon MG2100 series" driver="bjc-MG2100-series" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2100-series" />
- <printer translate="name" name="Canon PIXMA MG2100" driver="bjc-PIXMA-MG2100" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2100" />
- <printer translate="name" name="Canon PIXMA MG2110" driver="bjc-PIXMA-MG2110" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2110" />
- <printer translate="name" name="Canon PIXMA MG2120" driver="bjc-PIXMA-MG2120" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2120" />
- <printer translate="name" name="Canon PIXUS MG2130" driver="bjc-PIXUS-MG2130" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG2130" />
- <printer translate="name" name="Canon PIXMA MG2140" driver="bjc-PIXMA-MG2140" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2140" />
- <printer translate="name" name="Canon PIXMA MG2150" driver="bjc-PIXMA-MG2150" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2150" />
- <printer translate="name" name="Canon PIXMA MG2160" driver="bjc-PIXMA-MG2160" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2160" />
- <printer translate="name" name="Canon PIXMA MG2170" driver="bjc-PIXMA-MG2170" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2170" />
- <printer translate="name" name="Canon PIXMA MG2180" driver="bjc-PIXMA-MG2180" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2180" />
+ <printer translate="name" name="Canon MG2100 series" driver="bjc-MG2100-series" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2100-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2100" driver="bjc-PIXMA-MG2100" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2110" driver="bjc-PIXMA-MG2110" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2110">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2120" driver="bjc-PIXMA-MG2120" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2120">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG2130" driver="bjc-PIXUS-MG2130" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG2130">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2140" driver="bjc-PIXMA-MG2140" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2140">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2150" driver="bjc-PIXMA-MG2150" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2150">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2160" driver="bjc-PIXMA-MG2160" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2160">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2170" driver="bjc-PIXMA-MG2170" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2170">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2180" driver="bjc-PIXMA-MG2180" manufacturer="Canon" model="8002100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2180">EXPERIMENTAL</printer>
<!-- Canon MG2200 family -->
- <printer translate="name" name="Canon MG2200 series" driver="bjc-MG2200-series" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2200-series" />
- <printer translate="name" name="Canon PIXMA MG2210" driver="bjc-PIXMA-MG2210" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2210" />
- <printer translate="name" name="Canon PIXMA MG2220" driver="bjc-PIXMA-MG2220" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2220" />
- <printer translate="name" name="Canon PIXMA MG2240" driver="bjc-PIXMA-MG2240" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2240" />
- <printer translate="name" name="Canon PIXMA MG2250" driver="bjc-PIXMA-MG2250" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2250" />
- <printer translate="name" name="Canon PIXMA MG2260" driver="bjc-PIXMA-MG2260" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2260" />
- <printer translate="name" name="Canon PIXMA MG2270" driver="bjc-PIXMA-MG2270" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2270" />
- <printer translate="name" name="Canon PIXMA MG2280" driver="bjc-PIXMA-MG2280" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2280" />
+ <printer translate="name" name="Canon MG2200 series" driver="bjc-MG2200-series" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2210" driver="bjc-PIXMA-MG2210" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2210">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2220" driver="bjc-PIXMA-MG2220" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2220">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2240" driver="bjc-PIXMA-MG2240" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2240">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2250" driver="bjc-PIXMA-MG2250" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2250">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2260" driver="bjc-PIXMA-MG2260" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2260">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2270" driver="bjc-PIXMA-MG2270" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2270">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG2280" driver="bjc-PIXMA-MG2280" manufacturer="Canon" model="8002200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2280">EXPERIMENTAL</printer>
<!-- Canon MG2400 family -->
- <printer translate="name" name="Canon MG2400 series" driver="bjc-MG2400-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2400-series" />
- <printer translate="name" name="Canon PIXMA MG2400" driver="bjc-PIXMA-MG2400" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2400" />
- <printer translate="name" name="Canon PIXMA MG2410" driver="bjc-PIXMA-MG2410" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2410" />
- <printer translate="name" name="Canon PIXMA MG2420" driver="bjc-PIXMA-MG2420" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2420" />
- <printer translate="name" name="Canon PIXMA MG2440" driver="bjc-PIXMA-MG2440" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2440" />
- <printer translate="name" name="Canon PIXMA MG2450" driver="bjc-PIXMA-MG2450" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2450" />
- <printer translate="name" name="Canon PIXMA MG2470" driver="bjc-PIXMA-MG2470" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2470" />
+ <printer translate="name" name="Canon MG2400 series" driver="bjc-MG2400-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2400-series">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2400" driver="bjc-PIXMA-MG2400" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2400">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2410" driver="bjc-PIXMA-MG2410" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2410">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2420" driver="bjc-PIXMA-MG2420" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2420">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2440" driver="bjc-PIXMA-MG2440" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2440">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2450" driver="bjc-PIXMA-MG2450" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2450">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2460" driver="bjc-PIXMA-MG2460" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2460">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2470" driver="bjc-PIXMA-MG2470" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2470">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2490" driver="bjc-PIXMA-MG2490" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2490">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
<!-- Canon MG2500 family -->
- <printer translate="name" name="Canon MG2500 series" driver="bjc-MG2500-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2500-series" />
- <printer translate="name" name="Canon PIXMA MG2510" driver="bjc-PIXMA-MG2510" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2510" />
- <printer translate="name" name="Canon PIXMA MG2520" driver="bjc-PIXMA-MG2520" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2520" />
- <printer translate="name" name="Canon PIXMA MG2540" driver="bjc-PIXMA-MG2540" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2540" />
- <printer translate="name" name="Canon PIXMA MG2550" driver="bjc-PIXMA-MG2550" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2550" />
- <printer translate="name" name="Canon PIXMA MG2560" driver="bjc-PIXMA-MG2560" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2560" />
- <printer translate="name" name="Canon PIXMA MG2570" driver="bjc-PIXMA-MG2570" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2570" />
- <printer translate="name" name="Canon PIXMA MG2580" driver="bjc-PIXMA-MG2580" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2580" />
+ <printer translate="name" name="Canon MG2500 series" driver="bjc-MG2500-series" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2500-series">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2510" driver="bjc-PIXMA-MG2510" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2510">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2520" driver="bjc-PIXMA-MG2520" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2520">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2540" driver="bjc-PIXMA-MG2540" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2540">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2550" driver="bjc-PIXMA-MG2550" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2550">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2560" driver="bjc-PIXMA-MG2560" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2560">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2570" driver="bjc-PIXMA-MG2570" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2570">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2580" driver="bjc-PIXMA-MG2580" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2580">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2590" driver="bjc-PIXMA-MG2590" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2590">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <!-- Canon MG2900 family -->
+ <printer translate="name" name="Canon MG2900 series" driver="bjc-MG2900-series" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG2900-series">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2910" driver="bjc-PIXMA-MG2910" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2910">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2920" driver="bjc-PIXMA-MG2920" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2920">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2922" driver="bjc-PIXMA-MG2922" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2922">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2924" driver="bjc-PIXMA-MG2924" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2924">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2940" driver="bjc-PIXMA-MG2940" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2940">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2950" driver="bjc-PIXMA-MG2950" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2950">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2960" driver="bjc-PIXMA-MG2960" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2960">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2970" driver="bjc-PIXMA-MG2970" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2970">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2980" driver="bjc-PIXMA-MG2980" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2980">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
+ <printer translate="name" name="Canon PIXMA MG2990" driver="bjc-PIXMA-MG2990" manufacturer="Canon" model="8002900" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2990">EXPERIMENTAL; Only supports plain, photo paper gloss gold, photo paper gloss, and envelope; unconfirmed whether other media will work</printer>
<!-- Canon MG3100 family -->
- <printer translate="name" name="Canon MG3100 series" driver="bjc-MG3100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3100-series" />
- <printer translate="name" name="Canon PIXMA MG3100" driver="bjc-PIXMA-MG3100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3100" />
- <printer translate="name" name="Canon PIXMA MG3110" driver="bjc-PIXMA-MG3110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3110" />
- <printer translate="name" name="Canon PIXMA MG3120" driver="bjc-PIXMA-MG3120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3120" />
- <printer translate="name" name="Canon PIXMA MG3122" driver="bjc-PIXMA-MG3122" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3122" />
- <printer translate="name" name="Canon PIXUS MG3130" driver="bjc-PIXUS-MG3130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3130" />
- <printer translate="name" name="Canon PIXMA MG3140" driver="bjc-PIXMA-MG3140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3140" />
- <printer translate="name" name="Canon PIXMA MG3150" driver="bjc-PIXMA-MG3150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3150" />
- <printer translate="name" name="Canon PIXMA MG3160" driver="bjc-PIXMA-MG3160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3160" />
- <printer translate="name" name="Canon PIXMA MG3170" driver="bjc-PIXMA-MG3170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3170" />
- <printer translate="name" name="Canon PIXMA MG3180" driver="bjc-PIXMA-MG3180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3180" />
+ <printer translate="name" name="Canon MG3100 series" driver="bjc-MG3100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3100-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3100" driver="bjc-PIXMA-MG3100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3110" driver="bjc-PIXMA-MG3110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3110">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3120" driver="bjc-PIXMA-MG3120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3120">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3122" driver="bjc-PIXMA-MG3122" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3122">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG3130" driver="bjc-PIXUS-MG3130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3130">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3140" driver="bjc-PIXMA-MG3140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3140">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3150" driver="bjc-PIXMA-MG3150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3150">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3160" driver="bjc-PIXMA-MG3160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3160">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3170" driver="bjc-PIXMA-MG3170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3170">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3180" driver="bjc-PIXMA-MG3180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3180">EXPERIMENTAL</printer>
<!-- Canon MG3200 family -->
- <printer translate="name" name="Canon MG3200 series" driver="bjc-MG3200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3200-series" />
- <printer translate="name" name="Canon PIXMA MG3210" driver="bjc-PIXMA-MG3210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3210" />
- <printer translate="name" name="Canon PIXMA MG3220" driver="bjc-PIXMA-MG3220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3220" />
- <printer translate="name" name="Canon PIXMA MG3222" driver="bjc-PIXMA-MG3222" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3222" />
- <printer translate="name" name="Canon PIXUS MG3230" driver="bjc-PIXUS-MG3230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3230" />
- <printer translate="name" name="Canon PIXMA MG3240" driver="bjc-PIXMA-MG3240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3240" />
- <printer translate="name" name="Canon PIXMA MG3250" driver="bjc-PIXMA-MG3250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3250" />
- <printer translate="name" name="Canon PIXMA MG3260" driver="bjc-PIXMA-MG3260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3260" />
- <printer translate="name" name="Canon PIXMA MG3270" driver="bjc-PIXMA-MG3270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3270" />
+ <printer translate="name" name="Canon MG3200 series" driver="bjc-MG3200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3210" driver="bjc-PIXMA-MG3210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3210">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3220" driver="bjc-PIXMA-MG3220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3220">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3222" driver="bjc-PIXMA-MG3222" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3222">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG3230" driver="bjc-PIXUS-MG3230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3230">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3240" driver="bjc-PIXMA-MG3240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3240">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3250" driver="bjc-PIXMA-MG3250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3250">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3260" driver="bjc-PIXMA-MG3260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3260">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3270" driver="bjc-PIXMA-MG3270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3270">EXPERIMENTAL</printer>
<!-- Canon MG3500 family -->
- <printer translate="name" name="Canon MG3500 series" driver="bjc-MG3500-series" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3500-series" />
- <printer translate="name" name="Canon PIXMA MG3510" driver="bjc-PIXMA-MG3510" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3510" />
- <printer translate="name" name="Canon PIXMA MG3520" driver="bjc-PIXMA-MG3520" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3520" />
- <printer translate="name" name="Canon PIXUS MG3530" driver="bjc-PIXUS-MG3530" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3530" />
- <printer translate="name" name="Canon PIXMA MG3540" driver="bjc-PIXMA-MG3540" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3540" />
- <printer translate="name" name="Canon PIXMA MG3550" driver="bjc-PIXMA-MG3550" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3550" />
- <printer translate="name" name="Canon PIXMA MG3560" driver="bjc-PIXMA-MG3560" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3560" />
- <printer translate="name" name="Canon PIXMA MG3570" driver="bjc-PIXMA-MG3570" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3570" />
- <printer translate="name" name="Canon PIXMA MG3580" driver="bjc-PIXMA-MG3580" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3580" />
+ <printer translate="name" name="Canon MG3500 series" driver="bjc-MG3500-series" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3510" driver="bjc-PIXMA-MG3510" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3510">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3520" driver="bjc-PIXMA-MG3520" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3520">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3522" driver="bjc-PIXMA-MG3522" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3522">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG3530" driver="bjc-PIXUS-MG3530" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3530">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3540" driver="bjc-PIXMA-MG3540" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3540">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3550" driver="bjc-PIXMA-MG3550" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3550">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3560" driver="bjc-PIXMA-MG3560" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3560">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3570" driver="bjc-PIXMA-MG3570" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3570">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG3580" driver="bjc-PIXMA-MG3580" manufacturer="Canon" model="8003500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3580">EXPERIMENTAL</printer>
<!-- Canon MG4100 family -->
- <printer translate="name" name="Canon MG4100 series" driver="bjc-MG4100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG4100-series" />
- <printer translate="name" name="Canon PIXMA MG4100" driver="bjc-PIXMA-MG4100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4100" />
- <printer translate="name" name="Canon PIXMA MG4110" driver="bjc-PIXMA-MG4110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4110" />
- <printer translate="name" name="Canon PIXMA MG4120" driver="bjc-PIXMA-MG4120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4120" />
- <printer translate="name" name="Canon PIXUS MG4130" driver="bjc-PIXUS-MG4130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG4130" />
- <printer translate="name" name="Canon PIXMA MG4140" driver="bjc-PIXMA-MG4140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4140" />
- <printer translate="name" name="Canon PIXMA MG4150" driver="bjc-PIXMA-MG4150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4150" />
- <printer translate="name" name="Canon PIXMA MG4160" driver="bjc-PIXMA-MG4160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4160" />
- <printer translate="name" name="Canon PIXMA MG4170" driver="bjc-PIXMA-MG4170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4170" />
- <printer translate="name" name="Canon PIXMA MG4180" driver="bjc-PIXMA-MG4180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4180" />
+ <printer translate="name" name="Canon MG4100 series" driver="bjc-MG4100-series" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG4100-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4100" driver="bjc-PIXMA-MG4100" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4110" driver="bjc-PIXMA-MG4110" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4110">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4120" driver="bjc-PIXMA-MG4120" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4120">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG4130" driver="bjc-PIXUS-MG4130" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG4130">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4140" driver="bjc-PIXMA-MG4140" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4140">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4150" driver="bjc-PIXMA-MG4150" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4150">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4160" driver="bjc-PIXMA-MG4160" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4160">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4170" driver="bjc-PIXMA-MG4170" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4170">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4180" driver="bjc-PIXMA-MG4180" manufacturer="Canon" model="8003100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4180">EXPERIMENTAL</printer>
<!-- Canon MG4200 family -->
- <printer translate="name" name="Canon MG4200 series" driver="bjc-MG4200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG4200-series" />
- <printer translate="name" name="Canon PIXMA MG4210" driver="bjc-PIXMA-MG4210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4210" />
- <printer translate="name" name="Canon PIXMA MG4220" driver="bjc-PIXMA-MG4220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4220" />
- <printer translate="name" name="Canon PIXUS MG4230" driver="bjc-PIXUS-MG4230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG4230" />
- <printer translate="name" name="Canon PIXMA MG4240" driver="bjc-PIXMA-MG4240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4240" />
- <printer translate="name" name="Canon PIXMA MG4250" driver="bjc-PIXMA-MG4250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4250" />
- <printer translate="name" name="Canon PIXMA MG4260" driver="bjc-PIXMA-MG4260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4260" />
- <printer translate="name" name="Canon PIXMA MG4270" driver="bjc-PIXMA-MG4270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4270" />
- <printer translate="name" name="Canon PIXMA MG4280" driver="bjc-PIXMA-MG4280" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4280" />
+ <printer translate="name" name="Canon MG4200 series" driver="bjc-MG4200-series" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG4200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4210" driver="bjc-PIXMA-MG4210" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4210">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4220" driver="bjc-PIXMA-MG4220" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4220">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG4230" driver="bjc-PIXUS-MG4230" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG4230">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4240" driver="bjc-PIXMA-MG4240" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4240">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4250" driver="bjc-PIXMA-MG4250" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4250">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4260" driver="bjc-PIXMA-MG4260" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4260">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4270" driver="bjc-PIXMA-MG4270" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4270">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG4280" driver="bjc-PIXMA-MG4280" manufacturer="Canon" model="8003200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG4280">EXPERIMENTAL</printer>
<!-- Canon MG5100 family -->
- <printer translate="name" name="Canon MG5100 series" driver="bjc-MG5100-series" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5100-series" />
- <printer translate="name" name="Canon PIXMA MG5100" driver="bjc-PIXMA-MG5100" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5100" />
- <printer translate="name" name="Canon PIXMA MG5120" driver="bjc-PIXMA-MG5120" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5120" />
- <printer translate="name" name="Canon PIXUS MG5130" driver="bjc-PIXUS-MG5130" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5130" />
- <printer translate="name" name="Canon PIXMA MG5140" driver="bjc-PIXMA-MG5140" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5140" />
- <printer translate="name" name="Canon PIXMA MG5150" driver="bjc-PIXMA-MG5150" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5150" />
- <printer translate="name" name="Canon PIXMA MG5170" driver="bjc-PIXMA-MG5170" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5170" />
- <printer translate="name" name="Canon PIXMA MG5180" driver="bjc-PIXMA-MG5180" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5180" />
+ <printer translate="name" name="Canon MG5100 series" driver="bjc-MG5100-series" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5100-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5100" driver="bjc-PIXMA-MG5100" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5120" driver="bjc-PIXMA-MG5120" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5120">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG5130" driver="bjc-PIXUS-MG5130" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5130">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5140" driver="bjc-PIXMA-MG5140" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5140">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5150" driver="bjc-PIXMA-MG5150" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5150">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5170" driver="bjc-PIXMA-MG5170" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5170">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5180" driver="bjc-PIXMA-MG5180" manufacturer="Canon" model="8005100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5180">EXPERIMENTAL</printer>
<!-- Canon MG5200 family -->
- <printer translate="name" name="Canon MG5200 series" driver="bjc-MG5200-series" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5200-series" />
- <printer translate="name" name="Canon PIXMA MG5200" driver="bjc-PIXMA-MG5200" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5200" />
- <printer translate="name" name="Canon PIXMA MG5210" driver="bjc-PIXMA-MG5210" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5210" />
- <printer translate="name" name="Canon PIXMA MG5220" driver="bjc-PIXMA-MG5220" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5220" />
- <printer translate="name" name="Canon PIXUS MG5230" driver="bjc-PIXUS-MG5230" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5230" />
- <printer translate="name" name="Canon PIXMA MG5240" driver="bjc-PIXMA-MG5240" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5240" />
- <printer translate="name" name="Canon PIXMA MG5250" driver="bjc-PIXMA-MG5250" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5250" />
- <printer translate="name" name="Canon PIXMA MG5270" driver="bjc-PIXMA-MG5270" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5270" />
- <printer translate="name" name="Canon PIXMA MG5280" driver="bjc-PIXMA-MG5280" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5280" />
+ <printer translate="name" name="Canon MG5200 series" driver="bjc-MG5200-series" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5200" driver="bjc-PIXMA-MG5200" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5200">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5210" driver="bjc-PIXMA-MG5210" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5210">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5220" driver="bjc-PIXMA-MG5220" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5220">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG5230" driver="bjc-PIXUS-MG5230" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5230">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5240" driver="bjc-PIXMA-MG5240" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5240">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5250" driver="bjc-PIXMA-MG5250" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5250">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5270" driver="bjc-PIXMA-MG5270" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5270">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5280" driver="bjc-PIXMA-MG5280" manufacturer="Canon" model="8005200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5280">EXPERIMENTAL</printer>
<!-- Canon MG5300 family -->
- <printer translate="name" name="Canon MG5300 series" driver="bjc-MG5300-series" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5300-series" />
- <printer translate="name" name="Canon PIXMA MG5300" driver="bjc-PIXMA-MG5300" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5300" />
- <printer translate="name" name="Canon PIXMA MG5310" driver="bjc-PIXMA-MG5310" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5310" />
- <printer translate="name" name="Canon PIXMA MG5320" driver="bjc-PIXMA-MG5320" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5320" />
- <printer translate="name" name="Canon PIXUS MG5330" driver="bjc-PIXUS-MG5330" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5330" />
- <printer translate="name" name="Canon PIXMA MG5340" driver="bjc-PIXMA-MG5340" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5340" />
- <printer translate="name" name="Canon PIXMA MG5350" driver="bjc-PIXMA-MG5350" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5350" />
- <printer translate="name" name="Canon PIXMA MG5370" driver="bjc-PIXMA-MG5370" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5370" />
- <printer translate="name" name="Canon PIXMA MG5380" driver="bjc-PIXMA-MG5380" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5380" />
+ <printer translate="name" name="Canon MG5300 series" driver="bjc-MG5300-series" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5300-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5300" driver="bjc-PIXMA-MG5300" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5300">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5310" driver="bjc-PIXMA-MG5310" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5310">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5320" driver="bjc-PIXMA-MG5320" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5320">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG5330" driver="bjc-PIXUS-MG5330" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5330">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5340" driver="bjc-PIXMA-MG5340" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5340">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5350" driver="bjc-PIXMA-MG5350" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5350">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5370" driver="bjc-PIXMA-MG5370" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5370">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5380" driver="bjc-PIXMA-MG5380" manufacturer="Canon" model="8005300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5380">EXPERIMENTAL</printer>
<!-- Canon MG5400 family -->
- <printer translate="name" name="Canon MG5400 series" driver="bjc-MG5400-series" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5400-series" />
- <printer translate="name" name="Canon PIXMA MG5410" driver="bjc-PIXMA-MG5410" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5410" />
- <printer translate="name" name="Canon PIXMA MG5420" driver="bjc-PIXMA-MG5420" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5420" />
- <printer translate="name" name="Canon PIXMA MG5422" driver="bjc-PIXMA-MG5422" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5422" />
- <printer translate="name" name="Canon PIXUS MG5430" driver="bjc-PIXUS-MG5430" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5430" />
- <printer translate="name" name="Canon PIXMA MG5440" driver="bjc-PIXMA-MG5440" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5440" />
- <printer translate="name" name="Canon PIXMA MG5450" driver="bjc-PIXMA-MG5450" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5450" />
- <printer translate="name" name="Canon PIXMA MG5460" driver="bjc-PIXMA-MG5460" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5460" />
- <printer translate="name" name="Canon PIXMA MG5470" driver="bjc-PIXMA-MG5470" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5470" />
- <printer translate="name" name="Canon PIXMA MG5480" driver="bjc-PIXMA-MG5480" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5480" />
+ <printer translate="name" name="Canon MG5400 series" deviceid="MFG:Canon;MDL:MG5400 series;CMD:URF;" driver="bjc-MG5400-series" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5400-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5410" driver="bjc-PIXMA-MG5410" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5410">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5420" driver="bjc-PIXMA-MG5420" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5420">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5422" driver="bjc-PIXMA-MG5422" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5422">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG5430" driver="bjc-PIXUS-MG5430" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5430">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5440" driver="bjc-PIXMA-MG5440" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5440">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5450" driver="bjc-PIXMA-MG5450" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5450">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5460" driver="bjc-PIXMA-MG5460" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5460">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5470" driver="bjc-PIXMA-MG5470" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5470">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5480" driver="bjc-PIXMA-MG5480" manufacturer="Canon" model="8005400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5480">EXPERIMENTAL</printer>
<!-- Canon MG5500 family -->
- <printer translate="name" name="Canon MG5500 series" driver="bjc-MG5500-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5500-series" />
- <printer translate="name" name="Canon PIXMA MG5510" driver="bjc-PIXMA-MG5510" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5510" />
- <printer translate="name" name="Canon PIXMA MG5520" driver="bjc-PIXMA-MG5520" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5520" />
- <printer translate="name" name="Canon PIXMA MG5522" driver="bjc-PIXMA-MG5522" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5522" />
- <printer translate="name" name="Canon PIXUS MG5530" driver="bjc-PIXUS-MG5530" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5530" />
- <printer translate="name" name="Canon PIXMA MG5540" driver="bjc-PIXMA-MG5540" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5540" />
- <printer translate="name" name="Canon PIXMA MG5550" driver="bjc-PIXMA-MG5550" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5550" />
- <printer translate="name" name="Canon PIXMA MG5560" driver="bjc-PIXMA-MG5560" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5560" />
- <printer translate="name" name="Canon PIXMA MG5570" driver="bjc-PIXMA-MG5570" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5570" />
- <printer translate="name" name="Canon PIXMA MG5580" driver="bjc-PIXMA-MG5580" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5580" />
+ <printer translate="name" name="Canon MG5500 series" driver="bjc-MG5500-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5510" driver="bjc-PIXMA-MG5510" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5510">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5520" driver="bjc-PIXMA-MG5520" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5520">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5522" driver="bjc-PIXMA-MG5522" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5522">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG5530" driver="bjc-PIXUS-MG5530" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5530">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5540" driver="bjc-PIXMA-MG5540" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5540">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5550" driver="bjc-PIXMA-MG5550" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5550">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5560" driver="bjc-PIXMA-MG5560" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5560">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5570" driver="bjc-PIXMA-MG5570" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5570">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5580" driver="bjc-PIXMA-MG5580" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5580">EXPERIMENTAL</printer>
+ <!-- Canon MG5600 family -->
+ <printer translate="name" name="Canon MG5600 series" driver="bjc-MG5600-series" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5600-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5610" driver="bjc-PIXMA-MG5610" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5610">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5620" driver="bjc-PIXMA-MG5620" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5620">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5622" driver="bjc-PIXMA-MG5622" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5622">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG5630" driver="bjc-PIXUS-MG5630" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5630">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5640" driver="bjc-PIXMA-MG5640" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5640">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5650" driver="bjc-PIXMA-MG5650" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5650">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5660" driver="bjc-PIXMA-MG5660" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5660">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5670" driver="bjc-PIXMA-MG5670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5670">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon Mommy Photo MG5670" driver="bjc-Mommy-Photo-MG5670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-Mommy-Photo-MG5670">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG5680" driver="bjc-PIXMA-MG5680" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5680">EXPERIMENTAL</printer>
<!-- Canon MG6100 family -->
- <printer translate="name" name="Canon MG6100 series" driver="bjc-MG6100-series" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6100-series" />
- <printer translate="name" name="Canon PIXMA MG6100" driver="bjc-PIXMA-MG6100" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6100" />
- <printer translate="name" name="Canon PIXMA MG6110" driver="bjc-PIXMA-MG6110" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6110" />
- <printer translate="name" name="Canon PIXMA MG6120" driver="bjc-PIXMA-MG6120" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6120" />
- <printer translate="name" name="Canon PIXUS MG6130" driver="bjc-PIXUS-MG6130" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6130" />
- <printer translate="name" name="Canon PIXMA MG6140" driver="bjc-PIXMA-MG6140" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6140" />
- <printer translate="name" name="Canon PIXMA MG6150" driver="bjc-PIXMA-MG6150" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6150" />
- <printer translate="name" name="Canon PIXMA MG6170" driver="bjc-PIXMA-MG6170" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6170" />
- <printer translate="name" name="Canon PIXMA MG6180" driver="bjc-PIXMA-MG6180" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6180" />
+ <printer translate="name" name="Canon MG6100 series" driver="bjc-MG6100-series" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6100-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6100" driver="bjc-PIXMA-MG6100" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6110" driver="bjc-PIXMA-MG6110" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6110">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6120" driver="bjc-PIXMA-MG6120" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6120">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG6130" driver="bjc-PIXUS-MG6130" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6130">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6140" driver="bjc-PIXMA-MG6140" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6140">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6150" driver="bjc-PIXMA-MG6150" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6150">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6170" driver="bjc-PIXMA-MG6170" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6170">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6180" driver="bjc-PIXMA-MG6180" manufacturer="Canon" model="8006100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6180">EXPERIMENTAL</printer>
<!-- Canon MG6200 family -->
- <printer translate="name" name="Canon MG6200 series" driver="bjc-MG6200-series" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6200-series" />
- <printer translate="name" name="Canon PIXMA MG6200" driver="bjc-PIXMA-MG6200" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6200" />
- <printer translate="name" name="Canon PIXMA MG6210" driver="bjc-PIXMA-MG6210" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6210" />
- <printer translate="name" name="Canon PIXMA MG6220" driver="bjc-PIXMA-MG6220" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6220" />
- <printer translate="name" name="Canon PIXUS MG6230" driver="bjc-PIXUS-MG6230" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6230" />
- <printer translate="name" name="Canon PIXMA MG6240" driver="bjc-PIXMA-MG6240" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6240" />
- <printer translate="name" name="Canon PIXMA MG6250" driver="bjc-PIXMA-MG6250" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6250" />
- <printer translate="name" name="Canon PIXMA MG6270" driver="bjc-PIXMA-MG6270" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6270" />
- <printer translate="name" name="Canon PIXMA MG6280" driver="bjc-PIXMA-MG6280" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6280" />
+ <printer translate="name" name="Canon MG6200 series" driver="bjc-MG6200-series" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6200" driver="bjc-PIXMA-MG6200" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6200">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6210" driver="bjc-PIXMA-MG6210" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6210">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6220" driver="bjc-PIXMA-MG6220" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6220">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG6230" driver="bjc-PIXUS-MG6230" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6230">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6240" driver="bjc-PIXMA-MG6240" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6240">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6250" driver="bjc-PIXMA-MG6250" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6250">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6270" driver="bjc-PIXMA-MG6270" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6270">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6280" driver="bjc-PIXMA-MG6280" manufacturer="Canon" model="8006200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6280">EXPERIMENTAL</printer>
<!-- Canon MG6300 family -->
- <printer translate="name" name="Canon MG6300 series" driver="bjc-MG6300-series" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6300-series" />
- <printer translate="name" name="Canon PIXMA MG6310" driver="bjc-PIXMA-MG6310" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6310" />
- <printer translate="name" name="Canon PIXMA MG6320" driver="bjc-PIXMA-MG6320" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6320" />
- <printer translate="name" name="Canon PIXUS MG6330" driver="bjc-PIXUS-MG6330" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6330" />
- <printer translate="name" name="Canon PIXMA MG6340" driver="bjc-PIXMA-MG6340" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6340" />
- <printer translate="name" name="Canon PIXMA MG6350" driver="bjc-PIXMA-MG6350" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6350" />
- <printer translate="name" name="Canon PIXMA MG6360" driver="bjc-PIXMA-MG6360" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6360" />
- <printer translate="name" name="Canon PIXMA MG6370" driver="bjc-PIXMA-MG6370" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6370" />
- <printer translate="name" name="Canon PIXMA MG6380" driver="bjc-PIXMA-MG6380" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6380" />
+ <printer translate="name" name="Canon MG6300 series" driver="bjc-MG6300-series" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6300-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6310" driver="bjc-PIXMA-MG6310" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6310">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6320" driver="bjc-PIXMA-MG6320" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6320">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG6330" driver="bjc-PIXUS-MG6330" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6330">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6340" driver="bjc-PIXMA-MG6340" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6340">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6350" driver="bjc-PIXMA-MG6350" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6350">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6360" driver="bjc-PIXMA-MG6360" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6360">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6370" driver="bjc-PIXMA-MG6370" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6370">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6380" driver="bjc-PIXMA-MG6380" manufacturer="Canon" model="8006300" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6380">EXPERIMENTAL</printer>
<!-- Canon MG6400 family -->
- <printer translate="name" name="Canon MG6400 series" driver="bjc-MG6400-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6400-series" />
- <printer translate="name" name="Canon PIXMA MG6400" driver="bjc-PIXMA-MG6400" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6400" />
- <printer translate="name" name="Canon PIXMA MG6410" driver="bjc-PIXMA-MG6410" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6410" />
- <printer translate="name" name="Canon PIXMA MG6420" driver="bjc-PIXMA-MG6420" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6420" />
- <printer translate="name" name="Canon PIXMA MG6440" driver="bjc-PIXMA-MG6440" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6440" />
- <printer translate="name" name="Canon PIXMA MG6450" driver="bjc-PIXMA-MG6450" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6450" />
- <printer translate="name" name="Canon PIXMA MG6470" driver="bjc-PIXMA-MG6470" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6470" />
+ <printer translate="name" name="Canon MG6400 series" driver="bjc-MG6400-series" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6400-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6400" driver="bjc-PIXMA-MG6400" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6400">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6410" driver="bjc-PIXMA-MG6410" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6410">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6420" driver="bjc-PIXMA-MG6420" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6420">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6440" driver="bjc-PIXMA-MG6440" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6440">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6450" driver="bjc-PIXMA-MG6450" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6450">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6470" driver="bjc-PIXMA-MG6470" manufacturer="Canon" model="8005500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6470">EXPERIMENTAL</printer>
<!-- Canon MG6500 family -->
- <printer translate="name" name="Canon MG6500 series" driver="bjc-MG6500-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6500-series" />
- <printer translate="name" name="Canon PIXUS MG6530" driver="bjc-PIXUS-MG6530" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6530" />
+ <printer translate="name" name="Canon MG6500 series" driver="bjc-MG6500-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG6530" driver="bjc-PIXUS-MG6530" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6530">EXPERIMENTAL</printer>
+ <!-- Canon MG6600 family -->
+ <printer translate="name" name="Canon MG6600 series" driver="bjc-MG6600-series" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6600-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6610" driver="bjc-PIXMA-MG6610" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6610">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6620" driver="bjc-PIXMA-MG6620" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6620">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6622" driver="bjc-PIXMA-MG6622" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6622">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6640" driver="bjc-PIXMA-MG6640" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6640">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6650" driver="bjc-PIXMA-MG6650" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6650">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6660" driver="bjc-PIXMA-MG6660" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6660">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6670" driver="bjc-PIXMA-MG6670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6670">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon Mommy Photo MG6670" driver="bjc-Mommy-Photo-MG6670" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-Mommy-Photo-MG6670">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG6680" driver="bjc-PIXMA-MG6680" manufacturer="Canon" model="8005600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6680">EXPERIMENTAL</printer>
+ <!-- Canon MG6700 family -->
+ <printer translate="name" name="Canon MG6700 series" driver="bjc-MG6700-series" manufacturer="Canon" model="8006700" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG6730" driver="bjc-PIXUS-MG6730" manufacturer="Canon" model="8006700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6730">EXPERIMENTAL</printer>
<!-- Canon MG7100 family -->
- <printer translate="name" name="Canon MG7100 series" driver="bjc-MG7100-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG7100-series" />
- <printer translate="name" name="Canon PIXMA MG7110" driver="bjc-PIXMA-MG7110" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7110" />
- <printer translate="name" name="Canon PIXMA MG7120" driver="bjc-PIXMA-MG7120" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7120" />
- <printer translate="name" name="Canon PIXUS MG7130" driver="bjc-PIXUS-MG7130" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG7130" />
- <printer translate="name" name="Canon PIXMA MG7140" driver="bjc-PIXMA-MG7140" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7140" />
- <printer translate="name" name="Canon PIXMA MG7150" driver="bjc-PIXMA-MG7150" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7150" />
- <printer translate="name" name="Canon PIXMA MG7170" driver="bjc-PIXMA-MG7170" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7170" />
- <printer translate="name" name="Canon PIXMA MG7180" driver="bjc-PIXMA-MG7180" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7180" />
+ <printer translate="name" name="Canon MG7100 series" driver="bjc-MG7100-series" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG7100-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7110" driver="bjc-PIXMA-MG7110" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7110">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7120" driver="bjc-PIXMA-MG7120" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7120">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG7130" driver="bjc-PIXUS-MG7130" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG7130">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7140" driver="bjc-PIXMA-MG7140" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7140">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7150" driver="bjc-PIXMA-MG7150" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7150">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7170" driver="bjc-PIXMA-MG7170" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7170">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7180" driver="bjc-PIXMA-MG7180" manufacturer="Canon" model="8006500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7180">EXPERIMENTAL</printer>
+ <!-- Canon MG7500 family -->
+ <printer translate="name" name="Canon MG7500 series" driver="bjc-MG7500-series" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG7500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7510" driver="bjc-PIXMA-MG7510" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7510">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7520" driver="bjc-PIXMA-MG7520" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7520">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG7530" driver="bjc-PIXUS-MG7530" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG7530">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG7530F" driver="bjc-PIXUS-MG7530F" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG7530F">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7540" driver="bjc-PIXMA-MG7540" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7540">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7550" driver="bjc-PIXMA-MG7550" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7550">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7560" driver="bjc-PIXMA-MG7560" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7560">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7570" driver="bjc-PIXMA-MG7570" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7570">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon Mommy Photo MG7570" driver="bjc-Mommy-Photo-MG7570" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-Mommy-Photo-MG7570">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG7580" driver="bjc-PIXMA-MG7580" manufacturer="Canon" model="8007500" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7580">EXPERIMENTAL</printer>
<!-- Canon MG8100 family -->
- <printer translate="name" name="Canon MG8100 series" driver="bjc-MG8100-series" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG8100-series" />
- <printer translate="name" name="Canon PIXMA MG8100" driver="bjc-PIXMA-MG8100" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8100" />
- <printer translate="name" name="Canon PIXMA MG8120" driver="bjc-PIXMA-MG8120" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8120" />
- <printer translate="name" name="Canon PIXUS MG8130" driver="bjc-PIXUS-MG8130" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG8130" />
- <printer translate="name" name="Canon PIXMA MG8140" driver="bjc-PIXMA-MG8140" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8140" />
- <printer translate="name" name="Canon PIXMA MG8150" driver="bjc-PIXMA-MG8150" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8150" />
- <printer translate="name" name="Canon PIXMA MG8170" driver="bjc-PIXMA-MG8170" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8170" />
- <printer translate="name" name="Canon PIXMA MG8180" driver="bjc-PIXMA-MG8180" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8180" />
+ <printer translate="name" name="Canon MG8100 series" driver="bjc-MG8100-series" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG8100-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8100" driver="bjc-PIXMA-MG8100" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8100">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8120" driver="bjc-PIXMA-MG8120" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8120">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8120B" driver="bjc-PIXMA-MG8120B" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8120B">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG8130" driver="bjc-PIXUS-MG8130" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG8130">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8140" driver="bjc-PIXMA-MG8140" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8140">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8150" driver="bjc-PIXMA-MG8150" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8150">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8170" driver="bjc-PIXMA-MG8170" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8170">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8180" driver="bjc-PIXMA-MG8180" manufacturer="Canon" model="8008100" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8180">EXPERIMENTAL</printer>
<!-- Canon MG8200 family -->
- <printer translate="name" name="Canon MG8200 series" driver="bjc-MG8200-series" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG8200-series" />
- <printer translate="name" name="Canon PIXMA MG8200" driver="bjc-PIXMA-MG8200" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8200" />
- <printer translate="name" name="Canon PIXMA MG8220" driver="bjc-PIXMA-MG8220" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8220" />
- <printer translate="name" name="Canon PIXUS MG8230" driver="bjc-PIXUS-MG8230" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG8230" />
- <printer translate="name" name="Canon PIXMA MG8240" driver="bjc-PIXMA-MG8240" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8240" />
- <printer translate="name" name="Canon PIXMA MG8250" driver="bjc-PIXMA-MG8250" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8250" />
- <printer translate="name" name="Canon PIXMA MG8270" driver="bjc-PIXMA-MG8270" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8270" />
- <printer translate="name" name="Canon PIXMA MG8280" driver="bjc-PIXMA-MG8280" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8280" />
+ <printer translate="name" name="Canon MG8200 series" driver="bjc-MG8200-series" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG8200-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8200" driver="bjc-PIXMA-MG8200" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8200">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8220" driver="bjc-PIXMA-MG8220" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8220">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MG8230" driver="bjc-PIXUS-MG8230" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG8230">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8240" driver="bjc-PIXMA-MG8240" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8240">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8250" driver="bjc-PIXMA-MG8250" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8250">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8270" driver="bjc-PIXMA-MG8270" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8270">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MG8280" driver="bjc-PIXMA-MG8280" manufacturer="Canon" model="8008200" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG8280">EXPERIMENTAL</printer>
<!-- Canon MX300 family -->
- <printer translate="name" name="Canon MX300 series" driver="bjc-MX300-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX300-series" />
- <printer translate="name" name="Canon PIXMA MX300" driver="bjc-MULTIPASS-MX300" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX300" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX308" driver="bjc-PIXMA-MX308" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX308" />
+ <printer translate="name" name="Canon MX300 series" driver="bjc-MX300-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX300-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX300" driver="bjc-MULTIPASS-MX300" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX300">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX308" driver="bjc-PIXMA-MX308" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX308">EXPERIMENTAL</printer>
<!-- Canon MX310 family-->
- <printer translate="name" name="Canon MX310 series" driver="bjc-MX310-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX310-series" />
- <printer translate="name" name="Canon PIXMA MX310" driver="bjc-MULTIPASS-MX310" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX310" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX318" driver="bjc-PIXMA-MX318" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX318" />
+ <printer translate="name" name="Canon MX310 series" driver="bjc-MX310-series" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX310-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX310" driver="bjc-MULTIPASS-MX310" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX310">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX318" driver="bjc-PIXMA-MX318" manufacturer="Canon" model="9000300" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX318">EXPERIMENTAL</printer>
<!-- Canon MX320 family-->
- <printer translate="name" name="Canon MX320 series" driver="bjc-MX320-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX320-series" />
- <printer translate="name" name="Canon PIXMA MX320" driver="bjc-MULTIPASS-MX320" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX320" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX328" driver="bjc-PIXMA-MX328" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX328" />
+ <printer translate="name" name="Canon MX320 series" driver="bjc-MX320-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX320-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX320" driver="bjc-MULTIPASS-MX320" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX320">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX328" driver="bjc-PIXMA-MX328" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX328">EXPERIMENTAL</printer>
<!-- Canon MX330 family-->
- <printer translate="name" name="Canon MX330 series" driver="bjc-MX330-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX330-series" />
- <printer translate="name" name="Canon PIXMA MX330" driver="bjc-MULTIPASS-MX330" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX330" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX338" driver="bjc-PIXMA-MX338" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX338" />
+ <printer translate="name" name="Canon MX330 series" driver="bjc-MX330-series" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX330-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX330" driver="bjc-MULTIPASS-MX330" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX330">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX338" driver="bjc-PIXMA-MX338" manufacturer="Canon" model="9000330" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX338">EXPERIMENTAL</printer>
<!-- Canon MX340 family -->
- <printer translate="name" name="Canon MX340 series" driver="bjc-MX340-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX340-series" />
- <printer translate="name" name="Canon PIXMA MX340" driver="bjc-MULTIPASS-MX340" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX340" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX347" driver="bjc-PIXMA-MX347" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX347" />
- <printer translate="name" name="Canon PIXMA MX348" driver="bjc-PIXMA-MX348" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX348" />
+ <printer translate="name" name="Canon MX340 series" driver="bjc-MX340-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX340-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX340" driver="bjc-MULTIPASS-MX340" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX340">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX347" driver="bjc-PIXMA-MX347" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX347">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX348" driver="bjc-PIXMA-MX348" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX348">EXPERIMENTAL</printer>
<!-- Canon MX350 family -->
- <printer translate="name" name="Canon MX350 series" driver="bjc-MX350-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX350-series" />
- <printer translate="name" name="Canon PIXMA MX350" driver="bjc-MULTIPASS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX350" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MX350" driver="bjc-PIXUS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX350" />
- <printer translate="name" name="Canon PIXMA MX357" driver="bjc-PIXMA-MX357" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX357" />
- <printer translate="name" name="Canon PIXMA MX358" driver="bjc-PIXMA-MX358" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX358" />
+ <printer translate="name" name="Canon MX350 series" driver="bjc-MX350-series" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX350-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX350" driver="bjc-MULTIPASS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX350">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MX350" driver="bjc-PIXUS-MX350" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX350">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX357" driver="bjc-PIXMA-MX357" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX357">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX358" driver="bjc-PIXMA-MX358" manufacturer="Canon" model="9000340" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX358">EXPERIMENTAL</printer>
<!-- Canon MX360 family -->
- <printer translate="name" name="Canon MX360 series" driver="bjc-MX360-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX360-series" />
- <printer translate="name" name="Canon PIXMA MX360" driver="bjc-MULTIPASS-MX360" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX360" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX366" driver="bjc-PIXMA-MX366" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX366" />
- <printer translate="name" name="Canon PIXMA MX368" driver="bjc-PIXMA-MX368" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX368" />
+ <printer translate="name" name="Canon MX360 series" driver="bjc-MX360-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX360-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX360" driver="bjc-MULTIPASS-MX360" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX360">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX366" driver="bjc-PIXMA-MX366" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX366">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX368" driver="bjc-PIXMA-MX368" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX368">EXPERIMENTAL</printer>
<!-- Canon MX370 family -->
- <printer translate="name" name="Canon MX370 series" driver="bjc-MX370-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX370-series" />
- <printer translate="name" name="Canon PIXMA MX370" driver="bjc-MULTIPASS-MX370" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX370" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX371" driver="bjc-PIXMA-MX371" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX371" />
- <printer translate="name" name="Canon PIXMA MX372" driver="bjc-PIXMA-MX372" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX372" />
- <printer translate="name" name="Canon PIXMA MX374" driver="bjc-PIXMA-MX374" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX374" />
- <printer translate="name" name="Canon PIXMA MX375" driver="bjc-PIXMA-MX375" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX375" />
- <printer translate="name" name="Canon PIXMA MX376" driver="bjc-PIXMA-MX376" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX376" />
- <printer translate="name" name="Canon PIXMA MX377" driver="bjc-PIXMA-MX377" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX377" />
- <printer translate="name" name="Canon PIXMA MX378" driver="bjc-PIXMA-MX378" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX378" />
+ <printer translate="name" name="Canon MX370 series" driver="bjc-MX370-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX370-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX370" driver="bjc-MULTIPASS-MX370" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX370">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX371" driver="bjc-PIXMA-MX371" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX371">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX372" driver="bjc-PIXMA-MX372" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX372">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX374" driver="bjc-PIXMA-MX374" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX374">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX375" driver="bjc-PIXMA-MX375" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX375">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX376" driver="bjc-PIXMA-MX376" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX376">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX377" driver="bjc-PIXMA-MX377" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX377">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX378" driver="bjc-PIXMA-MX378" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX378">EXPERIMENTAL</printer>
<!-- Canon MX390 family -->
- <printer translate="name" name="Canon MX390 series" driver="bjc-MX390-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX390-series" />
- <printer translate="name" name="Canon PIXMA MX391" driver="bjc-PIXMA-MX391" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX391" />
- <printer translate="name" name="Canon PIXMA MX392" driver="bjc-PIXMA-MX392" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX392" />
- <printer translate="name" name="Canon PIXMA MX394" driver="bjc-PIXMA-MX394" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX394" />
- <printer translate="name" name="Canon PIXMA MX395" driver="bjc-PIXMA-MX395" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX395" />
- <printer translate="name" name="Canon PIXMA MX396" driver="bjc-PIXMA-MX396" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX396" />
- <printer translate="name" name="Canon PIXMA MX397" driver="bjc-PIXMA-MX397" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX397" />
- <printer translate="name" name="Canon PIXMA MX398" driver="bjc-PIXMA-MX398" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX398" />
+ <printer translate="name" name="Canon MX390 series" driver="bjc-MX390-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX390-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX391" driver="bjc-PIXMA-MX391" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX391">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX392" driver="bjc-PIXMA-MX392" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX392">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX394" driver="bjc-PIXMA-MX394" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX394">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX395" driver="bjc-PIXMA-MX395" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX395">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX396" driver="bjc-PIXMA-MX396" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX396">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX397" driver="bjc-PIXMA-MX397" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX397">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX398" driver="bjc-PIXMA-MX398" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX398">EXPERIMENTAL</printer>
<!-- Canon MX410 family -->
- <printer translate="name" name="Canon MX410 series" driver="bjc-MX410-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX410-series" />
- <printer translate="name" name="Canon PIXMA MX410" driver="bjc-MULTIPASS-MX410" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX410" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX416" driver="bjc-PIXMA-MX416" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX416" />
- <printer translate="name" name="Canon PIXMA MX418" driver="bjc-PIXMA-MX418" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX418" />
+ <printer translate="name" name="Canon MX410 series" driver="bjc-MX410-series" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX410-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX410" driver="bjc-MULTIPASS-MX410" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX410">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX416" driver="bjc-PIXMA-MX416" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX416">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX418" driver="bjc-PIXMA-MX418" manufacturer="Canon" model="9000360" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX418">EXPERIMENTAL</printer>
<!-- Canon MX420 family -->
- <printer translate="name" name="Canon MX420 series" driver="bjc-MX420-series" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX420-series" />
- <printer translate="name" name="Canon PIXMA MX420" driver="bjc-MULTIPASS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX420" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MX420" driver="bjc-PIXUS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX420" />
- <printer translate="name" name="Canon PIXMA MX426" driver="bjc-PIXMA-MX426" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX426" />
- <printer translate="name" name="Canon PIXMA MX428" driver="bjc-PIXMA-MX428" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX428" />
+ <printer translate="name" name="Canon MX420 series" driver="bjc-MX420-series" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX420-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX420" driver="bjc-MULTIPASS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX420">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MX420" driver="bjc-PIXUS-MX420" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX420">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX426" driver="bjc-PIXMA-MX426" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX426">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX428" driver="bjc-PIXMA-MX428" manufacturer="Canon" model="9000420" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX428">EXPERIMENTAL</printer>
<!-- Canon MX430 family -->
- <printer translate="name" name="Canon MX430 series" driver="bjc-MX430-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX430-series" />
- <printer translate="name" name="Canon PIXMA MX430" driver="bjc-MULTIPASS-MX430" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX430" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX431" driver="bjc-PIXMA-MX431" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX431" />
- <printer translate="name" name="Canon PIXMA MX432" driver="bjc-PIXMA-MX432" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX432" />
- <printer translate="name" name="Canon PIXMA MX434" driver="bjc-PIXMA-MX434" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX434" />
- <printer translate="name" name="Canon PIXMA MX435" driver="bjc-PIXMA-MX435" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX435" />
- <printer translate="name" name="Canon PIXMA MX436" driver="bjc-PIXMA-MX436" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX436" />
- <printer translate="name" name="Canon PIXMA MX437" driver="bjc-PIXMA-MX437" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX437" />
- <printer translate="name" name="Canon PIXMA MX438" driver="bjc-PIXMA-MX438" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX438" />
- <printer translate="name" name="Canon PIXMA MX439" driver="bjc-PIXMA-MX439" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX439" />
+ <printer translate="name" name="Canon MX430 series" driver="bjc-MX430-series" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX430-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX430" driver="bjc-MULTIPASS-MX430" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX430">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX431" driver="bjc-PIXMA-MX431" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX431">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX432" driver="bjc-PIXMA-MX432" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX432">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX434" driver="bjc-PIXMA-MX434" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX434">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX435" driver="bjc-PIXMA-MX435" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX435">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX436" driver="bjc-PIXMA-MX436" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX436">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX437" driver="bjc-PIXMA-MX437" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX437">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX438" driver="bjc-PIXMA-MX438" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX438">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX439" driver="bjc-PIXMA-MX439" manufacturer="Canon" model="9000370" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX439">EXPERIMENTAL</printer>
<!-- Canon MX450 family -->
- <printer translate="name" name="Canon MX450 series" driver="bjc-MX450-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX450-series" />
- <printer translate="name" name="Canon PIXMA MX451" driver="bjc-PIXMA-MX451" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX451" />
- <printer translate="name" name="Canon PIXMA MX452" driver="bjc-PIXMA-MX452" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX452" />
- <printer translate="name" name="Canon PIXMA MX454" driver="bjc-PIXMA-MX454" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX454" />
- <printer translate="name" name="Canon PIXMA MX455" driver="bjc-PIXMA-MX455" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX455" />
- <printer translate="name" name="Canon PIXMA MX456" driver="bjc-PIXMA-MX456" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX456" />
- <printer translate="name" name="Canon PIXMA MX457" driver="bjc-PIXMA-MX457" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX457" />
- <printer translate="name" name="Canon PIXMA MX458" driver="bjc-PIXMA-MX458" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX458" />
- <printer translate="name" name="Canon PIXMA MX459" driver="bjc-PIXMA-MX459" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX459" />
+ <printer translate="name" name="Canon MX450 series" driver="bjc-MX450-series" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX450-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX451" driver="bjc-PIXMA-MX451" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX451">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX452" driver="bjc-PIXMA-MX452" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX452">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX454" driver="bjc-PIXMA-MX454" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX454">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX455" driver="bjc-PIXMA-MX455" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX455">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX456" driver="bjc-PIXMA-MX456" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX456">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX457" driver="bjc-PIXMA-MX457" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX457">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX458" driver="bjc-PIXMA-MX458" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX458">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX459" driver="bjc-PIXMA-MX459" manufacturer="Canon" model="9000390" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX459">EXPERIMENTAL</printer>
+ <!-- Canon MX470 family -->
+ <printer translate="name" name="Canon MX470 series" driver="bjc-MX470-series" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX470-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX471" driver="bjc-PIXMA-MX471" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX471">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX472" driver="bjc-PIXMA-MX472" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX472">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX474" driver="bjc-PIXMA-MX474" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX474">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX475" driver="bjc-PIXMA-MX475" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX475">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX476" driver="bjc-PIXMA-MX476" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX476">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX477" driver="bjc-PIXMA-MX477" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX477">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX478" driver="bjc-PIXMA-MX478" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX478">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX479" driver="bjc-PIXMA-MX479" manufacturer="Canon" model="9000470" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX479">EXPERIMENTAL</printer>
+ <!-- Canon MX490 family -->
+ <printer translate="name" name="Canon MX490 series" driver="bjc-MX490-series" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX490-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX490" driver="bjc-PIXMA-MX490" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX490">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX492" driver="bjc-PIXMA-MX492" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX492">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX494" driver="bjc-PIXMA-MX494" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX494">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX495" driver="bjc-PIXMA-MX495" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX495">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX496" driver="bjc-PIXMA-MX496" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX496">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX497" driver="bjc-PIXMA-MX497" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX497">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX498" driver="bjc-PIXMA-MX498" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX498">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX499" driver="bjc-PIXMA-MX499" manufacturer="Canon" model="9000490" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX499">EXPERIMENTAL</printer>
<!-- Canon MX510 family -->
- <printer translate="name" name="Canon MX510 series" driver="bjc-MX510-series" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX510-series" />
- <printer translate="name" name="Canon PIXMA MX510" driver="bjc-MULTIPASS-MX510" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX510" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX511" driver="bjc-PIXMA-MX511" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX511" />
- <printer translate="name" name="Canon PIXMA MX512" driver="bjc-PIXMA-MX512" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX512" />
- <printer translate="name" name="Canon PIXUS MX513" driver="bjc-PIXUS-MX513" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX513" />
- <printer translate="name" name="Canon PIXMA MX514" driver="bjc-PIXMA-MX514" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX514" />
- <printer translate="name" name="Canon PIXMA MX515" driver="bjc-PIXMA-MX515" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX515" />
- <printer translate="name" name="Canon PIXMA MX516" driver="bjc-PIXMA-MX516" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX516" />
- <printer translate="name" name="Canon PIXMA MX517" driver="bjc-PIXMA-MX517" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX517" />
- <printer translate="name" name="Canon PIXMA MX518" driver="bjc-PIXMA-MX518" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX518" />
+ <printer translate="name" name="Canon MX510 series" driver="bjc-MX510-series" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX510-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX510" driver="bjc-MULTIPASS-MX510" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX510">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX511" driver="bjc-PIXMA-MX511" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX511">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX512" driver="bjc-PIXMA-MX512" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX512">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MX513" driver="bjc-PIXUS-MX513" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX513">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX514" driver="bjc-PIXMA-MX514" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX514">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX515" driver="bjc-PIXMA-MX515" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX515">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX516" driver="bjc-PIXMA-MX516" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX516">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX517" driver="bjc-PIXMA-MX517" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX517">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX518" driver="bjc-PIXMA-MX518" manufacturer="Canon" model="9000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX518">EXPERIMENTAL</printer>
<!-- Canon MX520 family -->
- <printer translate="name" name="Canon MX520 series" driver="bjc-MX520-series" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX520-series" />
- <printer translate="name" name="Canon PIXMA MX521" driver="bjc-PIXMA-MX521" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX521" />
- <printer translate="name" name="Canon PIXMA MX522" driver="bjc-PIXMA-MX522" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX522" />
- <printer translate="name" name="Canon PIXUS MX523" driver="bjc-PIXUS-MX523" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX523" />
- <printer translate="name" name="Canon PIXMA MX524" driver="bjc-PIXMA-MX524" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX524" />
- <printer translate="name" name="Canon PIXMA MX525" driver="bjc-PIXMA-MX525" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX525" />
- <printer translate="name" name="Canon PIXMA MX526" driver="bjc-PIXMA-MX526" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX526" />
- <printer translate="name" name="Canon PIXMA MX527" driver="bjc-PIXMA-MX527" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX527" />
- <printer translate="name" name="Canon PIXMA MX528" driver="bjc-PIXMA-MX528" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX528" />
+ <printer translate="name" name="Canon MX520 series" driver="bjc-MX520-series" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX520-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX521" driver="bjc-PIXMA-MX521" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX521">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX522" driver="bjc-PIXMA-MX522" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX522">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MX523" driver="bjc-PIXUS-MX523" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX523">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX524" driver="bjc-PIXMA-MX524" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX524">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX525" driver="bjc-PIXMA-MX525" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX525">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX526" driver="bjc-PIXMA-MX526" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX526">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX527" driver="bjc-PIXMA-MX527" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX527">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX528" driver="bjc-PIXMA-MX528" manufacturer="Canon" model="9000520" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX528">EXPERIMENTAL</printer>
+ <!-- Canon MX530 family -->
+ <printer translate="name" name="Canon MX530 series" driver="bjc-MX530-series" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX530-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX531" driver="bjc-PIXMA-MX531" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX531">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX532" driver="bjc-PIXMA-MX532" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX532">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX534" driver="bjc-PIXMA-MX534" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX534">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX535" driver="bjc-PIXMA-MX535" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX535">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX536" driver="bjc-PIXMA-MX536" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX536">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX537" driver="bjc-PIXMA-MX537" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX537">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX538" driver="bjc-PIXMA-MX538" manufacturer="Canon" model="9000530" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX538">EXPERIMENTAL</printer>
<!-- Canon MX700 family -->
- <printer translate="name" name="Canon MX700 series" driver="bjc-MX700-series" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX700-series" />
- <printer translate="name" name="Canon PIXMA MX700" driver="bjc-MULTIPASS-MX700" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX700" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon MX700 series" driver="bjc-MX700-series" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX700-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX700" driver="bjc-MULTIPASS-MX700" manufacturer="Canon" model="9000700" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX700">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon MX710 family -->
- <printer translate="name" name="Canon MX710 series" driver="bjc-MX710-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX710-series" />
- <printer translate="name" name="Canon PIXMA MX710" driver="bjc-MULTIPASS-MX710" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX710" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX711" driver="bjc-PIXMA-MX711" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX711" />
- <printer translate="name" name="Canon PIXMA MX712" driver="bjc-PIXMA-MX712" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX712" />
- <printer translate="name" name="Canon PIXMA MX714" driver="bjc-PIXMA-MX714" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX714" />
- <printer translate="name" name="Canon PIXMA MX715" driver="bjc-PIXMA-MX715" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX715" />
+ <printer translate="name" name="Canon MX710 series" driver="bjc-MX710-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX710-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX710" driver="bjc-MULTIPASS-MX710" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX710">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX711" driver="bjc-PIXMA-MX711" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX711">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX712" driver="bjc-PIXMA-MX712" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX712">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX714" driver="bjc-PIXMA-MX714" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX714">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX715" driver="bjc-PIXMA-MX715" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX715">EXPERIMENTAL</printer>
<!-- Canon MX720 family -->
- <printer translate="name" name="Canon MX720 series" driver="bjc-MX720-series" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX720-series" />
- <printer translate="name" name="Canon PIXMA MX721" driver="bjc-PIXMA-MX721" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX721" />
- <printer translate="name" name="Canon PIXMA MX722" driver="bjc-PIXMA-MX722" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX722" />
- <printer translate="name" name="Canon PIXMA MX725" driver="bjc-PIXMA-MX725" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX725" />
- <printer translate="name" name="Canon PIXMA MX726" driver="bjc-PIXMA-MX726" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX726" />
- <printer translate="name" name="Canon PIXMA MX727" driver="bjc-PIXMA-MX727" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX727" />
- <printer translate="name" name="Canon PIXMA MX728" driver="bjc-PIXMA-MX728" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX728" />
+ <printer translate="name" name="Canon MX720 series" driver="bjc-MX720-series" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX720-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX721" driver="bjc-PIXMA-MX721" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX721">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX722" driver="bjc-PIXMA-MX722" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX722">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX725" driver="bjc-PIXMA-MX725" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX725">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX726" driver="bjc-PIXMA-MX726" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX726">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX727" driver="bjc-PIXMA-MX727" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX727">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX728" driver="bjc-PIXMA-MX728" manufacturer="Canon" model="9000720" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX728">EXPERIMENTAL</printer>
<!-- Canon MX850 family-->
- <printer translate="name" name="Canon MX850 series" driver="bjc-MX850-series" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX850-series" />
- <printer translate="name" name="Canon PIXMA MX850" driver="bjc-MULTIPASS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX850" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MX850" driver="bjc-PIXUS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX850" />
+ <printer translate="name" name="Canon MX850 series" driver="bjc-MX850-series" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX850-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX850" driver="bjc-MULTIPASS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX850">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MX850" driver="bjc-PIXUS-MX850" manufacturer="Canon" model="9000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX850">EXPERIMENTAL</printer>
<!-- Canon MX860 family -->
- <printer translate="name" name="Canon MX860 series" driver="bjc-MX860-series" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX860-series" />
- <printer translate="name" name="Canon PIXMA MX860" driver="bjc-MULTIPASS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX860" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MX860" driver="bjc-PIXUS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX860" />
- <printer translate="name" name="Canon PIXMA MX868" driver="bjc-PIXMA-MX868" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX868" />
+ <printer translate="name" name="Canon MX860 series" driver="bjc-MX860-series" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX860-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX860" driver="bjc-MULTIPASS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX860">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MX860" driver="bjc-PIXUS-MX860" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX860">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX868" driver="bjc-PIXMA-MX868" manufacturer="Canon" model="9000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX868">EXPERIMENTAL</printer>
<!-- Canon MX870 family -->
- <printer translate="name" name="Canon MX870 series" driver="bjc-MX870-series" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX870-series" />
- <printer translate="name" name="Canon PIXMA MX870" driver="bjc-MULTIPASS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX870" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MX870" driver="bjc-PIXUS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX870" />
- <printer translate="name" name="Canon PIXMA MX876" driver="bjc-PIXMA-MX876" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX876" />
+ <printer translate="name" name="Canon MX870 series" driver="bjc-MX870-series" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX870-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX870" driver="bjc-MULTIPASS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX870">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MX870" driver="bjc-PIXUS-MX870" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX870">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX876" driver="bjc-PIXMA-MX876" manufacturer="Canon" model="9000870" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX876">EXPERIMENTAL</printer>
<!-- Canon MX880 family -->
- <printer translate="name" name="Canon MX880 series" driver="bjc-MX880-series" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX880-series" />
- <printer translate="name" name="Canon PIXMA MX880" driver="bjc-MULTIPASS-MX880" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX880" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX882" driver="bjc-PIXMA-MX882" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX882" />
- <printer translate="name" name="Canon PIXUS MX883" driver="bjc-PIXUS-MX883" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX883" />
- <printer translate="name" name="Canon PIXMA MX884" driver="bjc-PIXMA-MX884" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX884" />
- <printer translate="name" name="Canon PIXMA MX885" driver="bjc-PIXMA-MX885" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX885" />
- <printer translate="name" name="Canon PIXMA MX886" driver="bjc-PIXMA-MX886" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX886" />
- <printer translate="name" name="Canon PIXMA MX888" driver="bjc-PIXMA-MX888" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX888" />
+ <printer translate="name" name="Canon MX880 series" driver="bjc-MX880-series" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX880-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX880" driver="bjc-MULTIPASS-MX880" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX880">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX882" driver="bjc-PIXMA-MX882" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX882">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MX883" driver="bjc-PIXUS-MX883" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX883">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX884" driver="bjc-PIXMA-MX884" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX884">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX885" driver="bjc-PIXMA-MX885" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX885">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX886" driver="bjc-PIXMA-MX886" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX886">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX888" driver="bjc-PIXMA-MX888" manufacturer="Canon" model="9000880" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX888">EXPERIMENTAL</printer>
<!-- Canon MX890 family -->
- <printer translate="name" name="Canon MX890 series" driver="bjc-MX890-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX890-series" />
- <printer translate="name" name="Canon PIXMA MX890" driver="bjc-MULTIPASS-MX890" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX890" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA MX892" driver="bjc-PIXMA-MX892" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX892" />
- <printer translate="name" name="Canon PIXUS MX893" driver="bjc-PIXUS-MX893" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX893" />
- <printer translate="name" name="Canon PIXMA MX894" driver="bjc-PIXMA-MX894" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX894" />
- <printer translate="name" name="Canon PIXMA MX895" driver="bjc-PIXMA-MX895" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX895" />
- <printer translate="name" name="Canon PIXMA MX897" driver="bjc-PIXMA-MX897" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX897" />
- <printer translate="name" name="Canon PIXMA MX898" driver="bjc-PIXMA-MX898" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX898" />
+ <printer translate="name" name="Canon MX890 series" driver="bjc-MX890-series" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX890-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX890" driver="bjc-MULTIPASS-MX890" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX890">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA MX892" driver="bjc-PIXMA-MX892" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX892">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MX893" driver="bjc-PIXUS-MX893" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX893">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX894" driver="bjc-PIXMA-MX894" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX894">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX895" driver="bjc-PIXMA-MX895" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX895">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX897" driver="bjc-PIXMA-MX897" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX897">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX898" driver="bjc-PIXMA-MX898" manufacturer="Canon" model="9000710" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX898">EXPERIMENTAL</printer>
<!-- Canon MX920 family -->
- <printer translate="name" name="Canon MX920 series" driver="bjc-MX920-series" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX920-series" />
- <printer translate="name" name="Canon PIXMA MX922" driver="bjc-PIXMA-MX922" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX922" />
- <printer translate="name" name="Canon PIXUS MX923" driver="bjc-PIXUS-MX923" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX923" />
- <printer translate="name" name="Canon PIXMA MX924" driver="bjc-PIXMA-MX924" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX924" />
- <printer translate="name" name="Canon PIXMA MX925" driver="bjc-PIXMA-MX925" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX925" />
- <printer translate="name" name="Canon PIXMA MX926" driver="bjc-PIXMA-MX926" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX926" />
- <printer translate="name" name="Canon PIXMA MX927" driver="bjc-PIXMA-MX927" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX927" />
- <printer translate="name" name="Canon PIXMA MX928" driver="bjc-PIXMA-MX928" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX928" />
+ <printer translate="name" name="Canon MX920 series" driver="bjc-MX920-series" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX920-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX922" driver="bjc-PIXMA-MX922" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX922">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXUS MX923" driver="bjc-PIXUS-MX923" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX923">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX924" driver="bjc-PIXMA-MX924" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX924">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX925" driver="bjc-PIXMA-MX925" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX925">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX926" driver="bjc-PIXMA-MX926" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX926">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX927" driver="bjc-PIXMA-MX927" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX927">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX928" driver="bjc-PIXMA-MX928" manufacturer="Canon" model="9000920" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-MX928">EXPERIMENTAL</printer>
<!-- Canon MX7600 family -->
- <printer translate="name" name="Canon MX7600 series" driver="bjc-MX7600-series" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX7600-series" />
- <printer translate="name" name="Canon PIXMA MX7600" driver="bjc-MULTIPASS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX7600" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXUS MX7600" driver="bjc-PIXUS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX7600" />
+ <printer translate="name" name="Canon MX7600 series" driver="bjc-MX7600-series" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MX7600-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA MX7600" driver="bjc-MULTIPASS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-MX7600">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXUS MX7600" driver="bjc-PIXUS-MX7600" manufacturer="Canon" model="9007600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MX7600">EXPERIMENTAL</printer>
+ <!-- Canon E400 family -->
+ <printer translate="name" name="Canon E400 series" driver="bjc-E400-series" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-E400-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E400" driver="bjc-PIXMA-E400" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E400">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E401" driver="bjc-PIXMA-E401" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E401">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E404" driver="bjc-PIXMA-E404" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E404">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E408" driver="bjc-PIXMA-E408" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E408">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E409" driver="bjc-PIXMA-E409" manufacturer="Canon" model="12000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E409">EXPERIMENTAL</printer>
+ <!-- Canon E460 family -->
+ <printer translate="name" name="Canon E460 series" driver="bjc-E460-series" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params" foomaticid="Canon-E460-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E460" driver="bjc-PIXMA-E460" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E460">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E461" driver="bjc-PIXMA-E461" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E461">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E464" driver="bjc-PIXMA-E464" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E464">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E468" driver="bjc-PIXMA-E468" manufacturer="Canon" model="12000460" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E468">EXPERIMENTAL</printer>
+ <!-- Canon E480 family -->
+ <printer translate="name" name="Canon E480 series" driver="bjc-E480-series" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-E480-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E480" driver="bjc-PIXMA-E480" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E480">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E481" driver="bjc-PIXMA-E481" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E481">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E484" driver="bjc-PIXMA-E484" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E484">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E488" driver="bjc-PIXMA-E488" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E488">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E489" driver="bjc-PIXMA-E489" manufacturer="Canon" model="12000480" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E489">EXPERIMENTAL</printer>
<!-- Canon E500 family -->
- <printer translate="name" name="Canon E500 series" driver="bjc-E500-series" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params" foomaticid="Canon-E500-series" />
- <printer translate="name" name="Canon PIXMA E500" driver="bjc-MULTIPASS-E500" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E500" /><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon E500 series" driver="bjc-E500-series" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params" foomaticid="Canon-E500-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E500" driver="bjc-MULTIPASS-E500" manufacturer="Canon" model="12000500" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E500">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
<!-- Canon E510 family -->
- <printer translate="name" name="Canon E510 series" driver="bjc-E510-series" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-E510-series" />
- <printer translate="name" name="Canon PIXMA E510" driver="bjc-PIXMA-E510" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E510" />
- <printer translate="name" name="Canon PIXMA E518" driver="bjc-PIXMA-E518" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E518" />
+ <printer translate="name" name="Canon E510 series" driver="bjc-E510-series" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-E510-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E510" driver="bjc-PIXMA-E510" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E510">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E514" driver="bjc-PIXMA-E514" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E514">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E518" driver="bjc-PIXMA-E518" manufacturer="Canon" model="12000510" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E518">EXPERIMENTAL</printer>
+ <!-- Canon E560 family -->
+ <printer translate="name" name="Canon E560 series" driver="bjc-E560-series" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-E560-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E560" driver="bjc-PIXMA-E560" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E560">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E568" driver="bjc-PIXMA-E568" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E568">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E569" driver="bjc-PIXMA-E569" manufacturer="Canon" model="12000560" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E569">EXPERIMENTAL</printer>
<!-- Canon E600 family -->
- <printer translate="name" name="Canon E600 series" driver="bjc-E600-series" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-E600-series" />
- <printer translate="name" name="Canon PIXMA E600" driver="bjc-MULTIPASS-E600" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E600" /><!-- driver and foomaticid legacy names used -->
- <printer translate="name" name="Canon PIXMA E608" driver="bjc-PIXMA-E608" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E608" />
+ <printer translate="name" name="Canon E600 series" driver="bjc-E600-series" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-E600-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E600" driver="bjc-MULTIPASS-E600" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-MULTIPASS-E600">EXPERIMENTAL</printer><!-- driver and foomaticid legacy names used -->
+ <printer translate="name" name="Canon PIXMA E608" driver="bjc-PIXMA-E608" manufacturer="Canon" model="12000600" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E608">EXPERIMENTAL</printer>
<!-- Canon E610 family -->
- <printer translate="name" name="Canon E610 series" driver="bjc-E610-series" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-E610-series" />
- <printer translate="name" name="Canon PIXMA E610" driver="bjc-PIXMA-E610" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E610" />
- <printer translate="name" name="Canon PIXMA E618" driver="bjc-PIXMA-E618" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E618" />
+ <printer translate="name" name="Canon E610 series" driver="bjc-E610-series" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-E610-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E610" driver="bjc-PIXMA-E610" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E610">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon PIXMA E618" driver="bjc-PIXMA-E618" manufacturer="Canon" model="12000610" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-E618">EXPERIMENTAL</printer>
+ <!-- Canon PIXMA P200 -->
+ <printer translate="name" name="Canon PIXMA P200" driver="bjc-PIXMA-P200" manufacturer="Canon" model="13000200" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXMA-P200">EXPERIMENTAL</printer>
+ <!-- Canon MAXIFY iB4000 family -->
+ <printer translate="name" name="Canon iB4000 series" driver="bjc-iB4000-series" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-iB4000-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4010" driver="bjc-MAXIFY-iB4010" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4010">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4020" driver="bjc-MAXIFY-iB4020" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4020">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4030" driver="bjc-MAXIFY-iB4030" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4030">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4040" driver="bjc-MAXIFY-iB4040" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4040">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4050" driver="bjc-MAXIFY-iB4050" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4050">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4060" driver="bjc-MAXIFY-iB4060" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4060">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4070" driver="bjc-MAXIFY-iB4070" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4070">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY iB4080" driver="bjc-MAXIFY-iB4080" manufacturer="Canon" model="14004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-iB4080">EXPERIMENTAL</printer>
+ <!-- Canon MAXIFY MB2000 family -->
+ <printer translate="name" name="Canon MB2000 series" driver="bjc-MB2000-series" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MB2000-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2010" driver="bjc-MAXIFY-MB2010" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2010">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2020" driver="bjc-MAXIFY-MB2020" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2020">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2030" driver="bjc-MAXIFY-MB2030" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2030">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2040" driver="bjc-MAXIFY-MB2040" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2040">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2050" driver="bjc-MAXIFY-MB2050" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2050">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2060" driver="bjc-MAXIFY-MB2060" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2060">EXPERIMENTAL</printer>
+ <!-- Canon MAXIFY MB2300 family -->
+ <printer translate="name" name="Canon MB2300 series" driver="bjc-MB2300-series" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MB2300-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2320" driver="bjc-MAXIFY-MB2320" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2320">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2330" driver="bjc-MAXIFY-MB2330" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2330">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2340" driver="bjc-MAXIFY-MB2340" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2340">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2350" driver="bjc-MAXIFY-MB2350" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2350">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2360" driver="bjc-MAXIFY-MB2360" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2360">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB2390" driver="bjc-MAXIFY-MB2390" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB2390">EXPERIMENTAL</printer>
+ <!-- Canon MAXIFY MB5000 family -->
+ <printer translate="name" name="Canon MB5000 series" driver="bjc-MB5000-series" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MB5000-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5020" driver="bjc-MAXIFY-MB5020" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5020">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5030" driver="bjc-MAXIFY-MB5030" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5030">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5040" driver="bjc-MAXIFY-MB5040" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5040">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5050" driver="bjc-MAXIFY-MB5050" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5050">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5060" driver="bjc-MAXIFY-MB5060" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5060">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5070" driver="bjc-MAXIFY-MB5070" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5070">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5080" driver="bjc-MAXIFY-MB5080" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5080">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5090" driver="bjc-MAXIFY-MB5090" manufacturer="Canon" model="15002000" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5090">EXPERIMENTAL</printer>
+ <!-- Canon MAXIFY MB5300 family -->
+ <printer translate="name" name="Canon MB5300 series" driver="bjc-MB5300-series" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MB5300-series">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5310" driver="bjc-MAXIFY-MB5310" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5310">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5320" driver="bjc-MAXIFY-MB5320" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5320">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5330" driver="bjc-MAXIFY-MB5330" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5330">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5340" driver="bjc-MAXIFY-MB5340" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5340">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5350" driver="bjc-MAXIFY-MB5350" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5350">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5360" driver="bjc-MAXIFY-MB5360" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5360">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5370" driver="bjc-MAXIFY-MB5370" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5370">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon MAXIFY MB5390" driver="bjc-MAXIFY-MB5390" manufacturer="Canon" model="15002300" parameters="PIXMA_iP4000_params" foomaticid="Canon-MAXIFY-MB5390">EXPERIMENTAL</printer>
<!-- -->
- <printer translate="name" name="Canon 50i" driver="bjc-50i" manufacturer="Canon" model="2000050" parameters="density_800_params" foomaticid="Canon-50i" />
- <printer translate="name" name="Canon 80i" driver="bjc-80i" manufacturer="Canon" model="2000080" parameters="density_800_params" foomaticid="Canon-80i" />
- <printer translate="name" name="Canon 450i" driver="bjc-450i" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-450i" />
- <printer translate="name" name="Canon 455i" driver="bjc-455i" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-455i" />
- <printer translate="name" name="Canon 470PD" driver="bjc-470PD" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-470PD" />
- <printer translate="name" name="Canon 475PD" driver="bjc-475PD" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-475PD" />
- <printer translate="name" name="Canon 550i" driver="bjc-550i" manufacturer="Canon" model="2000550" parameters="density_800_params" foomaticid="Canon-550i" />
- <printer translate="name" name="Canon 560i" driver="bjc-560i" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" foomaticid="Canon-560i" />
- <printer translate="name" name="Canon 850i" driver="bjc-850i" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-850i" />
- <printer translate="name" name="Canon 860i" driver="bjc-860i" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-860i" />
- <printer translate="name" name="Canon 865R" driver="bjc-865R" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-865R" />
- <printer translate="name" name="Canon 900PD" driver="bjc-900PD" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-900PD" />
- <printer translate="name" name="Canon 950i" driver="bjc-950i" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-950i" />
- <printer translate="name" name="Canon 960i" driver="bjc-960i" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-960i" />
- <printer translate="name" name="Canon 990i" driver="bjc-990i" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-990i" />
- <printer translate="name" name="Canon 6100i" driver="bjc-6100i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-6100i" />
- <printer translate="name" name="Canon 6500i" driver="bjc-6500i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-6500i" />
- <printer translate="name" name="Canon 9100i" driver="bjc-9100i" manufacturer="Canon" model="2009100" parameters="PIXMA_iP4000_params" foomaticid="Canon-9100i" />
- <printer translate="name" name="Canon 9900i" driver="bjc-9900i" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" foomaticid="Canon-9900i" />
+ <printer translate="name" name="Canon PIXUS 50i" driver="bjc-50i" manufacturer="Canon" model="2000050" parameters="density_800_params" foomaticid="Canon-50i" />
+ <printer translate="name" name="Canon PIXUS 80i" driver="bjc-80i" manufacturer="Canon" model="2000080" parameters="density_800_params" foomaticid="Canon-80i" />
+ <printer translate="name" name="Canon PIXUS 450i" driver="bjc-450i" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-450i" />
+ <printer translate="name" name="Canon PIXUS 455i" driver="bjc-455i" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-455i" />
+ <printer translate="name" name="Canon PIXUS 470PD" driver="bjc-470PD" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-470PD" />
+ <printer translate="name" name="Canon PIXUS 475PD" driver="bjc-475PD" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-475PD" />
+ <printer translate="name" name="Canon PIXUS 550i" driver="bjc-550i" manufacturer="Canon" model="2000550" parameters="density_800_params" foomaticid="Canon-550i" />
+ <printer translate="name" name="Canon PIXUS 560i" driver="bjc-560i" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" foomaticid="Canon-560i" />
+ <printer translate="name" name="Canon PIXUS 850i" driver="bjc-850i" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-850i" />
+ <printer translate="name" name="Canon PIXUS 860i" driver="bjc-860i" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-860i" />
+ <printer translate="name" name="Canon PIXUS 865R" driver="bjc-865R" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-865R" />
+ <printer translate="name" name="Canon PIXUS 900PD" driver="bjc-900PD" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-900PD" />
+ <printer translate="name" name="Canon PIXUS 950i" driver="bjc-950i" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-950i" />
+ <printer translate="name" name="Canon PIXUS 960i" driver="bjc-960i" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-960i" />
+ <printer translate="name" name="Canon PIXUS 990i" driver="bjc-990i" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-990i" />
+ <printer translate="name" name="Canon PIXUS 6100i" driver="bjc-6100i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-6100i" />
+ <printer translate="name" name="Canon PIXUS 6500i" driver="bjc-6500i" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-6500i" />
+ <printer translate="name" name="Canon PIXUS 9100i" driver="bjc-9100i" manufacturer="Canon" model="2009100" parameters="PIXMA_iP4000_params" foomaticid="Canon-9100i" />
+ <printer translate="name" name="Canon PIXUS 9900i" driver="bjc-9900i" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" foomaticid="Canon-9900i" />
<printer translate="name" name="Canon i70" driver="bjc-i70" manufacturer="Canon" model="2000050" parameters="density_800_params" foomaticid="Canon-i70" />
<printer translate="name" name="Canon i80" driver="bjc-i80" manufacturer="Canon" model="2000080" parameters="density_800_params" foomaticid="Canon-i80" />
- <printer translate="name" name="Canon i450" driver="bjc-i450" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-i450" />
- <printer translate="name" name="Canon i450X" driver="bjc-i450X" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-i450X" />
- <printer translate="name" name="Canon i455" driver="bjc-i455" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-i455" />
- <printer translate="name" name="Canon i455X" driver="bjc-i455X" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-i455X" />
- <printer translate="name" name="Canon i470D" driver="bjc-i470D" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-i470D" />
- <printer translate="name" name="Canon i475D" driver="bjc-i475D" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-i475D" />
- <printer translate="name" name="Canon i550" driver="bjc-i550" manufacturer="Canon" model="2000550" parameters="density_800_params" foomaticid="Canon-i550" />
- <printer translate="name" name="Canon i550X" driver="bjc-i550X" manufacturer="Canon" model="2000550" parameters="density_800_params" foomaticid="Canon-i550X" />
- <printer translate="name" name="Canon i560" driver="bjc-i560" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" foomaticid="Canon-i560" />
- <printer translate="name" name="Canon i560X" driver="bjc-i560X" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" foomaticid="Canon-i560X" />
- <printer translate="name" name="Canon i850old" driver="bjc-i850old" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params" foomaticid="Canon-i850old" />
- <printer translate="name" name="Canon i850" driver="bjc-i850" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-i850" />
- <printer translate="name" name="Canon i860old" driver="bjc-i860old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-i860old" />
- <printer translate="name" name="Canon i860" driver="bjc-i860" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-i860" />
- <printer translate="name" name="Canon i865old" driver="bjc-i865old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-i865old" />
- <printer translate="name" name="Canon i865" driver="bjc-i865" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-i865" />
- <printer translate="name" name="Canon i900D" driver="bjc-i900D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i900D" />
- <printer translate="name" name="Canon i905D" driver="bjc-i905D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i905D" />
- <printer translate="name" name="Canon i950" driver="bjc-i950" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-i950" />
- <printer translate="name" name="Canon i960" driver="bjc-i960" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-i960" />
- <printer translate="name" name="Canon i965" driver="bjc-i965" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-i965" />
- <printer translate="name" name="Canon i990" driver="bjc-i990" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-i990" />
+ <printer translate="name" name="Canon i450" driver="bjc-i450" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-i450">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i450X" driver="bjc-i450X" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-i450X">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i455" driver="bjc-i455" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-i455">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i455X" driver="bjc-i455X" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-i455X">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i470D" driver="bjc-i470D" manufacturer="Canon" model="2000450" parameters="density_800_params" foomaticid="Canon-i470D">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i475D" driver="bjc-i475D" manufacturer="Canon" model="2000455" parameters="density_800_params" foomaticid="Canon-i475D">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i550" driver="bjc-i550" manufacturer="Canon" model="2000550" parameters="density_800_params" foomaticid="Canon-i550">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i550X" driver="bjc-i550X" manufacturer="Canon" model="2000550" parameters="density_800_params" foomaticid="Canon-i550X">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i560" driver="bjc-i560" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" foomaticid="Canon-i560">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i560X" driver="bjc-i560X" manufacturer="Canon" model="2000560" parameters="gamma_6_density_800_params" foomaticid="Canon-i560X">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i850old" driver="bjc-i850old" manufacturer="Canon" model="3003000" parameters="PIXMA_iP4000_params" foomaticid="Canon-i850old">Original printers are named with &quot;old&quot; appended</printer>
+ <printer translate="name" name="Canon i850" driver="bjc-i850" manufacturer="Canon" model="2000850" parameters="PIXMA_iP4000_params" foomaticid="Canon-i850">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i860old" driver="bjc-i860old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-i860old">Original printers are named with &quot;old&quot; appended</printer>
+ <printer translate="name" name="Canon i860" driver="bjc-i860" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-i860">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i865old" driver="bjc-i865old" manufacturer="Canon" model="3004000" parameters="PIXMA_iP4000_params" foomaticid="Canon-i865old">Original printers are named with &quot;old&quot; appended</printer>
+ <printer translate="name" name="Canon i865" driver="bjc-i865" manufacturer="Canon" model="2000860" parameters="PIXMA_iP4000_params" foomaticid="Canon-i865">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i900D" driver="bjc-i900D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i900D">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i905D" driver="bjc-i905D" manufacturer="Canon" model="2000900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i905D">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i950" driver="bjc-i950" manufacturer="Canon" model="2000950" parameters="PIXMA_iP4000_params" foomaticid="Canon-i950">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i960" driver="bjc-i960" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-i960">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i965" driver="bjc-i965" manufacturer="Canon" model="2000960" parameters="PIXMA_iP4000_params" foomaticid="Canon-i965">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i990" driver="bjc-i990" manufacturer="Canon" model="2000990" parameters="PIXMA_iP4000_params" foomaticid="Canon-i990">EXPERIMENTAL</printer>
<printer translate="name" name="Canon i6100" driver="bjc-i6100" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-i6100" />
<printer translate="name" name="Canon i6500" driver="bjc-i6500" manufacturer="Canon" model="2006100" parameters="PIXMA_iP4000_params" foomaticid="Canon-i6500" />
<printer translate="name" name="Canon i9100" driver="bjc-i9100" manufacturer="Canon" model="2009100" parameters="PIXMA_iP4000_params" foomaticid="Canon-i9100" />
- <printer translate="name" name="Canon i9900" driver="bjc-i9900" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i9900" />
- <printer translate="name" name="Canon i9950" driver="bjc-i9950" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i9950" />
+ <printer translate="name" name="Canon i9900" driver="bjc-i9900" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i9900">EXPERIMENTAL</printer>
+ <printer translate="name" name="Canon i9950" driver="bjc-i9950" manufacturer="Canon" model="2009900" parameters="PIXMA_iP4000_params" foomaticid="Canon-i9950">EXPERIMENTAL</printer>
</family>
<family name="escp2">
<parameters name="standard_params">
@@ -1439,16 +1649,16 @@
<printer translate="name" name="Epson WorkForce 635" driver="escp2-wf636" manufacturer="Epson" model="118" parameters="standard_params" foomaticid="Epson-WorkForce_635" />
<printer translate="name" name="Epson WorkForce 645" driver="escp2-wf645" manufacturer="Epson" model="118" parameters="standard_params" foomaticid="Epson-WorkForce_645" />
<printer translate="name" name="Epson WorkForce 1100" driver="escp2-wf1100" manufacturer="Epson" model="99" parameters="standard_params" foomaticid="Epson-WorkForce_1100" />
- <printer translate="name" name="Epson WF-7010 Series" driver="escp2-wf7010" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7010" />
- <printer translate="name" name="Epson WF-7011 Series" driver="escp2-wf7011" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7011" />
- <printer translate="name" name="Epson WF-7015 Series" driver="escp2-wf7015" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7015" />
- <printer translate="name" name="Epson WF-7018 Series" driver="escp2-wf7018" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7018" />
- <printer translate="name" name="Epson WF-7510 Series" driver="escp2-wf7510" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7510" />
- <printer translate="name" name="Epson WF-7511 Series" driver="escp2-wf7511" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7511" />
- <printer translate="name" name="Epson WF-7515 Series" driver="escp2-wf7515" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7515" />
- <printer translate="name" name="Epson WF-7520 Series" driver="escp2-wf7520" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7520" />
- <printer translate="name" name="Epson WF-7521 Series" driver="escp2-wf7521" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7521" />
- <printer translate="name" name="Epson WF-7525 Series" driver="escp2-wf7525" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7525" />
+ <printer translate="name" name="Epson WF-7010 Series" driver="escp2-wf7010" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7010">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7011 Series" driver="escp2-wf7011" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7011">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7015 Series" driver="escp2-wf7015" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7015">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7018 Series" driver="escp2-wf7018" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7018">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7510 Series" driver="escp2-wf7510" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7510">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7511 Series" driver="escp2-wf7511" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7511">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7515 Series" driver="escp2-wf7515" manufacturer="Epson" model="119" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7515">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7520 Series" driver="escp2-wf7520" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7520">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7521 Series" driver="escp2-wf7521" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7521">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson WF-7525 Series" driver="escp2-wf7525" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-WorkForce_WF-7525">EXPERIMENTAL</printer>
<printer translate="name" name="Epson CL 700" driver="escp2-cl700" manufacturer="Epson" model="38" parameters="480_params" foomaticid="Epson-CL_700" />
<printer translate="name" name="Epson CL 750" driver="escp2-cl750" manufacturer="Epson" model="43" parameters="480_params" foomaticid="Epson-CL_750" />
<printer translate="name" name="Epson CL 760" driver="escp2-cl760" manufacturer="Epson" model="56" parameters="480_params" foomaticid="Epson-CL_760" />
@@ -1467,6 +1677,7 @@
<printer translate="name" name="Epson EP 801A" driver="escp2-ep801a" manufacturer="Epson" model="96" parameters="standard_params" foomaticid="Epson-EP_801A" />
<printer translate="name" name="Epson EP 901A" driver="escp2-ep901a" manufacturer="Epson" model="96" parameters="standard_params" foomaticid="Epson-EP_901A" />
<printer translate="name" name="Epson EP 901F" driver="escp2-ep901f" manufacturer="Epson" model="96" parameters="standard_params" foomaticid="Epson-EP_801F" />
+ <printer translate="name" name="Epson L210" driver="escp2-l210" manufacturer="Epson" model="80" parameters="cx3500_params" foomaticid="Epson-L210" />
<printer translate="name" name="Epson MC 2000" driver="escp2-mc2000" manufacturer="Epson" model="26" parameters="standard_params" foomaticid="Epson-MC_2000" />
<printer translate="name" name="Epson MC 5000" driver="escp2-mc5000" manufacturer="Epson" model="40" parameters="pro_5500_params" foomaticid="Epson-MC_5000" />
<printer translate="name" name="Epson MC 7000" driver="escp2-mc7000" manufacturer="Epson" model="29" parameters="pro_5500_params" foomaticid="Epson-MC_7000" />
@@ -1547,9 +1758,9 @@
<printer translate="name" name="Epson PX 504A" driver="escp2-px504a" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-PX_504A" />
<printer translate="name" name="Epson PX 601F" driver="escp2-px601f" manufacturer="Epson" model="92" parameters="standard_params" foomaticid="Epson-PX_601F" />
<printer translate="name" name="Epson PX 1001" driver="escp2-px1001" manufacturer="Epson" model="100" parameters="standard_params" foomaticid="Epson-PX_1001" />
- <printer translate="name" name="Epson PX 1200" driver="escp2-px1200" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1200" />
- <printer translate="name" name="Epson PX 1600F" driver="escp2-px1600f" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1600F" />
- <printer translate="name" name="Epson PX 1700F" driver="escp2-px1700f" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1700F" />
+ <printer translate="name" name="Epson PX 1200" driver="escp2-px1200" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1200">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson PX 1600F" driver="escp2-px1600f" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1600F">EXPERIMENTAL</printer>
+ <printer translate="name" name="Epson PX 1700F" driver="escp2-px1700f" manufacturer="Epson" model="120" parameters="standard_params" foomaticid="Epson-PX_1700F">EXPERIMENTAL</printer>
<printer translate="name" name="Epson PX G900" driver="escp2-pxg900" manufacturer="Epson" model="64" parameters="standard_params" foomaticid="Epson-PX_G900" />
<printer translate="name" name="Epson PX G920" driver="escp2-pxg920" manufacturer="Epson" model="64" parameters="standard_params" foomaticid="Epson-PX_G920" />
<printer translate="name" name="Epson PX G5000" driver="escp2-pxg5000" manufacturer="Epson" model="67" parameters="standard_params" foomaticid="Epson-PX_G5000" />
@@ -1574,7 +1785,7 @@
</parameters>
<printer translate="name" name="Apollo P-2100" driver="pcl-apollo-p2100" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" foomaticid="Apollo-P-2100" />
<printer translate="name" name="Apollo P-2150" driver="pcl-apollo-p2150" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" foomaticid="Apollo-P-2150" />
- <printer translate="name" name="Apollo P-2200" deviceid="MFG:EPSON;MDL:Stylus DX4800;DES:EPSON Stylus DX4800;CMD:ESCPL2,BDC,D4;" driver="pcl-apollo-p2200" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" foomaticid="Apollo-P-2200" />
+ <printer translate="name" name="Apollo P-2200" driver="pcl-apollo-p2200" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" foomaticid="Apollo-P-2200" />
<printer translate="name" name="Apollo P-2250" driver="pcl-apollo-p2250" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" foomaticid="Apollo-P-2250" />
<printer translate="name" name="Apollo P-2500" driver="pcl-apollo-p2500" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" foomaticid="Apollo-P-2500" />
<printer translate="name" name="Apollo P-2550" driver="pcl-apollo-p2550" manufacturer="Apollo" model="690" parameters="pcl_inkjet_params" foomaticid="Apollo-P-2550" />
@@ -1639,6 +1850,13 @@
<printer translate="name" name="Canon LBP-3360" driver="canon-lbp-3360" manufacturer="Canon" model="6" parameters="pcl_laser_params" foomaticid="Canon-LBP-3360" />
<printer translate="name" name="Canon imageRunner 330s" driver="canon-ir_330s" manufacturer="Canon" model="61" parameters="pcl_laser_params" foomaticid="Canon-imageRunner_330s" />
<printer translate="name" name="Citizen ProJet II" driver="citizen-projet_ii" manufacturer="Citizen" model="2" parameters="pcl_laser_params" foomaticid="Citizen-ProJet_II" />
+ <printer translate="name" name="Datamax-ONeil p1115" deviceid="MFG:DatamaxOneil_;MDL:p1115;" color="false" driver="datamax_oneil_p1115" manufacturer="DatamaxONeil" model="10010" parameters="pcl_laser_params" foomaticid="D-O-p1115" />
+ <printer translate="name" name="Datamax-ONeil p1115s" deviceid="MFG:DatamaxOneil_;MDL:p1115s;" color="false" driver="datamax_oneil_p1115s" manufacturer="DatamaxONeil" model="10011" parameters="pcl_laser_params" foomaticid="D-O-p1115s" />
+ <printer translate="name" name="Datamax-ONeil p1120n" deviceid="MFG:DatamaxOneil_;MDL:p1120n;" color="false" driver="datamax_oneil_p1120n" manufacturer="DatamaxONeil" model="10012" parameters="pcl_laser_params" foomaticid="D-O-p1120n" />
+ <printer translate="name" name="Datamax-ONeil p1125" deviceid="MFG:DatamaxOneil_;MDL:p1125;" color="false" driver="datamax_oneil_p1125" manufacturer="DatamaxONeil" model="10013" parameters="pcl_laser_params" foomaticid="D-O-p1125" />
+ <printer translate="name" name="Datamax-ONeil p1725" deviceid="MFG:DatamaxOneil_;MDL:p1725;" color="false" driver="datamax_oneil_p1725" manufacturer="DatamaxONeil" model="10014" parameters="pcl_laser_params" foomaticid="D-O-p1725" />
+ <printer translate="name" name="Datamax-ONeil w1110" deviceid="MFG:DatamaxOneil_;MDL:w1110;" color="false" driver="datamax_oneil_w1110" manufacturer="DatamaxONeil" model="10015" parameters="pcl_laser_params" foomaticid="D-O-w1110" />
+ <printer translate="name" name="Datamax-ONeil H8308p" deviceid="MFG:DatamaxOneil_;MDL:H8308p;" color="false" driver="datamax_oneil_H8308p" manufacturer="DatamaxONeil" model="10016" parameters="pcl_laser_params" foomaticid="D-O-H8308p" />
<printer translate="name" name="DEC 1800" driver="dec-1800" manufacturer="DEC" model="3" parameters="pcl_laser_params" foomaticid="DEC-1800" />
<printer translate="name" name="DEC LN17" driver="dec-ln17" manufacturer="DEC" model="6" parameters="pcl_laser_params" foomaticid="DEC-LN17" />
<printer translate="name" name="Epson ActionLaser 1100" driver="epson-actl_1100" manufacturer="Epson" model="3" parameters="pcl_laser_params" foomaticid="Epson-ActionLaser_1100" />
@@ -2575,9 +2793,9 @@
<printer translate="name" name="Canon SELPHY CP790" deviceid="MFG:Canon;CMD:Raster3;MDL:CP790;CLS:PRINTER;DES:Canon CP790;VER:1.00;" driver="canon-cp790" manufacturer="Canon" model="1008" foomaticid="Canon-SELPHY-CP790" />
<printer translate="name" name="Canon SELPHY CP800" deviceid="MFG:Canon;CMD:Raster3;MDL:CP800;CLS:PRINTER;DES:Canon CP800;VER:1.00;" driver="canon-cp800" manufacturer="Canon" model="1009" foomaticid="Canon-SELPHY-CP800" />
<printer translate="name" name="Canon SELPHY CP810" deviceid="MFG:Canon;CMD:Raster3;MDL:CP810;CLS:PRINTER;DES:Canon CP810;VER:3.05;" driver="canon-cp810" manufacturer="Canon" model="1009" foomaticid="Canon-SELPHY-CP810" />
-<!-- <printer translate="name" name="Canon SELPHY CP820" driver="canon-cp820" manufacturer="Canon" model="1011" foomaticid="Canon-SELPHY-CP820" /> -->
- <printer translate="name" name="Canon SELPHY CP900" driver="canon-cp900" manufacturer="Canon" model="1010" foomaticid="Canon-SELPHY-CP900" />
-<!-- <printer translate="name" name="Canon SELPHY CP910" deviceid="MFG:Canon;CMD:Raster3;MDL:CP910;CLS:PRINTER;DES:Canon CP910;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp910" manufacturer="Canon" model="1011" foomaticid="Canon-SELPHY-CP910" /> -->
+ <printer translate="name" name="Canon SELPHY CP820" driver="canon-cp820" manufacturer="Canon" model="1011" foomaticid="Canon-SELPHY-CP820" />
+ <printer translate="name" name="Canon SELPHY CP900" deviceid="MFG:Canon;CMD:Raster3;MDL:CP900;CLS:PRINTER;DES:Canon CP900;VER:5.77;" driver="canon-cp900" manufacturer="Canon" model="1010" foomaticid="Canon-SELPHY-CP900" />
+ <printer translate="name" name="Canon SELPHY CP910" deviceid="MFG:Canon;CMD:Raster3;MDL:CP910;CLS:PRINTER;DES:Canon CP910;VER:1.00;CID:CA_YCC_ICP;" driver="canon-cp910" manufacturer="Canon" model="1011" foomaticid="Canon-SELPHY-CP910" />
<printer translate="name" name="Canon SELPHY ES1" deviceid="MFG:Canon;CMD:Raster3;MDL:ES1;CLS:PRINTER;DES:Canon SELPHY ES1;VER:1.00;" driver="canon-es1" manufacturer="Canon" model="1003" foomaticid="Canon-SELPHY-ES1" />
<printer translate="name" name="Canon SELPHY ES2" deviceid="MFG:Canon;CMD:Raster3;MDL:ES2;CLS:PRINTER;DES:Canon SELPHY ES2;VER:1.00;" driver="canon-es2" manufacturer="Canon" model="1005" foomaticid="Canon-SELPHY-ES2" />
<printer translate="name" name="Canon SELPHY ES3" deviceid="MFG:Canon;CMD:Raster3;MDL:ES3;CLS:PRINTER;DES:Canon SELPHY ES3;VER:1.00;" driver="canon-es3" manufacturer="Canon" model="1006" foomaticid="Canon-SELPHY-ES3" />
@@ -2590,6 +2808,8 @@
<printer translate="name" name="Sony DPP-EX7" driver="sony-dppex7" manufacturer="Sony" model="2002" foomaticid="Sony-DPP-EX7" />
<printer translate="name" name="Sony UP-DR100" driver="sony-updr100" manufacturer="Sony" model="2003" foomaticid="Sony-UP-DR100" />
<printer translate="name" name="Sony UP-DR200" driver="sony-updr200" manufacturer="Sony" model="2004" foomaticid="Sony-UP-DR200" />
+ <printer translate="name" name="Sony UP-CR10L" driver="sony-upcr10l" manufacturer="Sony" model="2005" foomaticid="Sony-UP-CR10L" />
+ <printer translate="name" name="DNP SL10" driver="dnp-sl10" manufacturer="DNP" model="2005" foomaticid="DNP-SL10" />
<printer translate="name" name="Fujifilm Printpix-CX-400" driver="fujifilm-cx400" manufacturer="Fujifilm" model="3000" foomaticid="Fujifilm-Printpix-CX-400" />
<printer translate="name" name="Fujifilm Printpix-CX-550" driver="fujifilm-cx550" manufacturer="Fujifilm" model="3001" foomaticid="Fujifilm-Printpix-CX-550" />
<printer translate="name" name="Fujifilm FinePix-NX-500" driver="fujifilm-nx500" manufacturer="Fujifilm" model="3002" foomaticid="Fujifilm-FinePix-NX-500" />
@@ -2606,33 +2826,46 @@
<printer translate="name" name="Kodak 605" deviceid="MFG:Eastman Kodak Company;CMD:SUPCC;MCL:KODAK 605 Photo Printer;CLS:PRINTER;DES:Thermal Dye Photo Printer;" driver="kodak-605" manufacturer="Kodak" model="4003" foomaticid="Kodak-605" />
<printer translate="name" name="Kodak 1400" deviceid="MFG:Eastman Kodak Company;CMD:EK1;MDL: 1400 Printer;CLS:Printer;DES:Kodak 1400 Printer;`" driver="kodak-1400" manufacturer="Kodak" model="4004" foomaticid="Kodak-1400" />
<printer translate="name" name="Kodak 805" deviceid="MFG:Eastman Kodak Company;CMD:EK2;MDL: KODAK 805 Photo Printer;CLS:Printer;DES:Kodak 805 Photo Printer;" driver="kodak-805" manufacturer="Kodak" model="4005" foomaticid="Kodak-805" />
- <printer translate="name" name="Kodak 9810" driver="kodak-9810" manufacturer="Kodak" model="4006" foomaticid="Kodak-9810" />
- <printer translate="name" name="Kodak 8500" driver="kodak-8500" manufacturer="Kodak" model="4100" foomaticid="Kodak-8500" />
- <printer translate="name" name="Mitsubishi CP-3020D" driver="mitsubishi-3020d" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020D" />
- <printer translate="name" name="Mitsubishi CP-3020DU" driver="mitsubishi-3020du" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020DU" />
- <printer translate="name" name="Mitsubishi CP-3020DE" driver="mitsubishi-3020de" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020DE" />
- <printer translate="name" name="Mitsubishi CP-3020DA" driver="mitsubishi-3020da" manufacturer="Mitsubishi" model="4102" foomaticid="Mitsubishi-3020DA" />
- <printer translate="name" name="Mitsubishi CP-3020DAE" driver="mitsubishi-3020dae" manufacturer="Mitsubishi" model="4102" foomaticid="Mitsubishi-3020DAE" />
- <printer translate="name" name="Mitsubishi CP-9550D" driver="mitsubishi-9550d" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550D" />
+ <printer translate="name" name="Kodak 8500" driver="kodak-8500" manufacturer="Kodak" model="4100" foomaticid="Kodak-8500">EXPERIMENTAL</printer>
+ <printer translate="name" name="Kodak 9810" driver="kodak-9810" manufacturer="Kodak" model="4006" foomaticid="Kodak-9810">EXPERIMENTAL</printer>
+ <printer translate="name" name="Kodak 8810" driver="kodak-8810" manufacturer="Kodak" model="4007" foomaticid="Kodak-8810">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-3020D" driver="mitsubishi-3020d" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020D">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-3020DU" driver="mitsubishi-3020du" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020DU">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-3020DE" driver="mitsubishi-3020de" manufacturer="Mitsubishi" model="4101" foomaticid="Mitsubishi-3020DE">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-3020DA" driver="mitsubishi-3020da" manufacturer="Mitsubishi" model="4102" foomaticid="Mitsubishi-3020DA">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-3020DAE" driver="mitsubishi-3020dae" manufacturer="Mitsubishi" model="4102" foomaticid="Mitsubishi-3020DAE">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-9550D" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9550D ;CLS:PRINTER;DES:MITSUBISHI CP9550D" driver="mitsubishi-9550d" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550D" />
<printer translate="name" name="Mitsubishi CP-9550DW" driver="mitsubishi-9550dw" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550DW" />
+ <printer translate="name" name="Mitsubishi CP-9550DZ" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9550DZ;CLS:PRINTER;DES:MITSUBISHI CP9550DZ;" driver="mitsubishi-9550dz" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550DZ">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-9550DW-S" driver="mitsubishi-9550dw-s" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550DW-S">EXPERIMENTAL</printer>
<printer translate="name" name="Mitsubishi CP-9810D" driver="mitsubishi-9810d" manufacturer="Mitsubishi" model="4104" foomaticid="Mitsubishi-9810D" />
<printer translate="name" name="Mitsubishi CP-9810DW" driver="mitsubishi-9810dw" manufacturer="Mitsubishi" model="4104" foomaticid="Mitsubishi-9810DW" />
- <printer translate="name" name="Mitsubishi CP-D70DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP60D70D707D;CLS:PRINTER;DES:MITSUBISHI CP60D70D707D" driver="mitsubishi-d70dw" manufacturer="Mitsubishi" model="4105" foomaticid="Mitsubishi-D70DW" />
- <printer translate="name" name="Mitsubishi CP-D707DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP60D70D707D;CLS:PRINTER;DES:MITSUBISHI CP60D70D707D" driver="mitsubishi-d707dw" manufacturer="Mitsubishi" model="4105" foomaticid="Mitsubishi-D707DW" />
- <printer translate="name" name="Mitsubishi CP-K60DW" driver="mitsubishi-k60dw" manufacturer="Mitsubishi" model="4106" foomaticid="Mitsubishi-K60DW" />
+ <printer translate="name" name="Mitsubishi CP-D70DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP60D70D707D;CLS:PRINTER;DES:MITSUBISHI CP60D70D707D" driver="mitsubishi-d70dw" manufacturer="Mitsubishi" model="4105" foomaticid="Mitsubishi-D70DW">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-D707DW" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP60D70D707D;CLS:PRINTER;DES:MITSUBISHI CP60D70D707D" driver="mitsubishi-d707dw" manufacturer="Mitsubishi" model="4105" foomaticid="Mitsubishi-D707DW">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-K60DW-S" driver="mitsubishi-k60dw-s" manufacturer="Mitsubishi" model="4106" foomaticid="Mitsubishi-K60DW-S">EXPERIMENTAL</printer>
+ <printer translate="name" name="Mitsubishi CP-D80DW" driver="mitsubishi-d80dw" manufacturer="Mitsubishi" model="4107" foomaticid="Mitsubishi-D80DW">EXPERIMENTAL</printer>
+ <printer translate="name" name="Kodak 305" deviceid="MFG:KODAK;CMD:KODAK305;MDL:305 Photo Printer;CLS:PRINTER;DES:KODAK 305 Photo Printer" driver="kodak-305" manufacturer="Kodak" model="4108" foomaticid="Kodak-305">EXPERIMENTAL</printer>
<printer translate="name" name="Shinko CHC-S9045" driver="shinko-chcs9045" manufacturer="Shinko" model="5000" foomaticid="Shinko-CHC-S9045" />
<printer translate="name" name="Shinko CHC-S2145" deviceid="MFG:SHINKO;CMD:SUPCC;MDL:CHC-S2145;CLS:PRINTER;DES:SHINKO CHC-S2145;" driver="shinko-chcs2145" manufacturer="Shinko" model="5001" foomaticid="Shinko-CHC-S2145" />
- <printer translate="name" name="Sinfonia CHC-S2145" driver="sinfonia-chcs2145" manufacturer="Sinfonia" model="5001" foomaticid="Sinfonia-CHC-S2145" />
+ <printer translate="name" name="Sinfonia S2145/S2" driver="sinfonia-chcs2145" manufacturer="Sinfonia" model="5001" foomaticid="Sinfonia-CHC-S2145" />
+ <printer translate="name" name="Shinko CHC-S1245" driver="shinko-chcs1245" manufacturer="Shinko" model="5002" foomaticid="Shinko-CHC-S1245">EXPERIMENTAL</printer>
+ <printer translate="name" name="Sinfonia CHC-S1245/E1" driver="sinfonia-chcs1245" manufacturer="Sinfonia" model="5002" foomaticid="Sinfonia-CHC-S1245">EXPERIMENTAL</printer>
+ <printer translate="name" name="Shinko CHC-S6245" driver="shinko-chcs6245" manufacturer="Shinko" model="5003" foomaticid="Shinko-CHC-S6245">EXPERIMENTAL</printer>
+ <printer translate="name" name="Sinfonia CHC-S6245/CE1" driver="sinfonia-chcs6245" manufacturer="Sinfonia" model="5003" foomaticid="Sinfonia-CHC-S6245">EXPERIMENTAL</printer>
+ <printer translate="name" name="Shinko CHC-S6145" driver="shinko-chcs6145" manufacturer="Shinko" model="5004" foomaticid="Shinko-CHC-S6145">EXPERIMENTAL</printer>
+ <printer translate="name" name="Sinfonia CHC-S6145/CS2" driver="sinfonia-chcs6145" manufacturer="Sinfonia" model="5004" foomaticid="Sinfonia-CHC-S6145">EXPERIMENTAL</printer>
+ <printer translate="name" name="CIAAT Brava 21" driver="ciaat-brava-21" manufacturer="CIAAT" model="5005" foomaticid="CIAAT-Brava-21">EXPERIMENTAL</printer>
<printer translate="name" name="Dai Nippon Printing DS40" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS40;" driver="dnp-ds40" manufacturer="DNP" model="6000" foomaticid="DNP-DS40" />
<printer translate="name" name="Dai Nippon Printing DS80" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS80;" driver="dnp-ds80" manufacturer="DNP" model="6001" foomaticid="DNP-DS80" />
- <printer translate="name" name="Dai Nippon Printing DSRX1" driver="dnp-dsrx1" manufacturer="DNP" model="6002" foomaticid="DNP-DSRX1" />
+ <printer translate="name" name="Dai Nippon Printing DSRX1" driver="dnp-dsrx1" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS-RX1;" manufacturer="DNP" model="6002" foomaticid="DNP-DSRX1" />
+ <printer translate="name" name="Dai Nippon Printing DS620" driver="dnp-ds620" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DP-DS620;" manufacturer="DNP" model="6003" foomaticid="DNP-DS620" />
<printer translate="name" name="Citizen CX" driver="citizen-cx" deviceid="MANUFACTURER:CITIZEN SYSTEMS ;MODEL:CX;" manufacturer="Citizen" model="6000" foomaticid="Citizen-CX" />
<printer translate="name" name="Citizen CX-W" driver="citizen-cx-w" manufacturer="Citizen" model="6001" foomaticid="Citizen-CX-W" />
<printer translate="name" name="Citizen CY" driver="citizen-cy" manufacturer="Citizen" model="6002" foomaticid="Citizen-CY" />
- <printer translate="name" name="Citizen CW-01" driver="citizen-cw-01" manufacturer="Citizen" model="6000" foomaticid="Citizen-CW-01" />
- <printer translate="name" name="Citizen OP900" driver="citizen-op900" manufacturer="Citizen" model="6000" foomaticid="Citizen-OP900" />
- <printer translate="name" name="Citizen CW-02" driver="citizen-cw-02" manufacturer="Citizen" model="6000" foomaticid="Citizen-CW-02" />
- <printer translate="name" name="Citizen OP900II" driver="citizen-op900ii" manufacturer="Citizen" model="6000" foomaticid="Citizen-OP900II" />
+ <printer translate="name" name="Citizen CW-01" driver="citizen-cw-01" manufacturer="Citizen" model="6005" foomaticid="Citizen-CW-01">EXPERIMENTAL</printer>
+ <printer translate="name" name="Citizen OP900" driver="citizen-op900" manufacturer="Citizen" model="6005" foomaticid="Citizen-OP900">EXPERIMENTAL</printer>
+ <printer translate="name" name="Citizen CW-02" driver="citizen-cw-02" manufacturer="Citizen" model="6000" foomaticid="Citizen-CW-02">EXPERIMENTAL</printer>
+ <printer translate="name" name="Citizen OP900II" driver="citizen-op900ii" manufacturer="Citizen" model="6000" foomaticid="Citizen-OP900II">EXPERIMENTAL</printer>
<printer translate="name" name="Mitsubishi CP-3800DW" driver="mitsubishi-cp-3800dw" manufacturer="Mitsubishi" model="6001" foomaticid="Mitsubishi-CP-3800DW" />
</family>
<family name="raw">