diff options
author | Didier Raboud <odyx@debian.org> | 2015-10-19 10:40:17 +0200 |
---|---|---|
committer | Didier Raboud <odyx@debian.org> | 2015-10-19 10:40:17 +0200 |
commit | 82a5e2a21f1cc4ea142514a1a045a63158f10256 (patch) | |
tree | 43bb3f0d058d6f632c273f1073708f2017b6d1bb /src | |
parent | 92976f71a4aa7f84cd8aadf013d2b03873dead7c (diff) |
Imported Upstream version 5.2.11~pre2
Diffstat (limited to 'src')
64 files changed, 10357 insertions, 5199 deletions
diff --git a/src/Makefile.in b/src/Makefile.in index f1fe497..a40f25e 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -221,6 +221,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/cups/Makefile.am b/src/cups/Makefile.am index 7bd6cd9..d4789ad 100644 --- a/src/cups/Makefile.am +++ b/src/cups/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.150 2015/01/10 14:27:55 speachy Exp $ +## $Id: Makefile.am,v 1.151 2015/10/05 13:55:40 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 citizencw01_print.c mitsu9550_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 shinko_s1245_print.c shinko_s6245_print.c 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 c5b156b..2074e88 100644 --- a/src/cups/Makefile.in +++ b/src/cups/Makefile.in @@ -129,7 +129,7 @@ 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 \ citizencw01_print.c mitsu9550_print.c backend_common.c \ - backend_common.h + backend_common.h shinko_s1245_print.c shinko_s6245_print.c @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) \ @@ -140,7 +140,9 @@ am__backend_gutenprint_SOURCES_DIST = selphy_print.c kodak1400_print.c \ @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) +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-backend_common.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-shinko_s1245_print.$(OBJEXT) \ +@BUILD_LIBUSB_BACKENDS_TRUE@ backend_gutenprint-shinko_s6245_print.$(OBJEXT) backend_gutenprint_OBJECTS = $(am_backend_gutenprint_OBJECTS) am__DEPENDENCIES_1 = @BUILD_LIBUSB_BACKENDS_TRUE@backend_gutenprint_DEPENDENCIES = \ @@ -508,6 +510,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ @@ -719,7 +723,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 citizencw01_print.c mitsu9550_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 shinko_s1245_print.c shinko_s6245_print.c @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 @@ -1117,7 +1121,9 @@ distclean-compile: @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_s1245_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-shinko_s6245_print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend_gutenprint-sony_updr150_print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commandtocanon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commandtoepson.Po@am__quote@ @@ -1304,6 +1310,34 @@ backend_gutenprint-backend_common.obj: backend_common.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-backend_common.obj `if test -f 'backend_common.c'; then $(CYGPATH_W) 'backend_common.c'; else $(CYGPATH_W) '$(srcdir)/backend_common.c'; fi` +backend_gutenprint-shinko_s1245_print.o: shinko_s1245_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-shinko_s1245_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-shinko_s1245_print.Tpo -c -o backend_gutenprint-shinko_s1245_print.o `test -f 'shinko_s1245_print.c' || echo '$(srcdir)/'`shinko_s1245_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-shinko_s1245_print.Tpo $(DEPDIR)/backend_gutenprint-shinko_s1245_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shinko_s1245_print.c' object='backend_gutenprint-shinko_s1245_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-shinko_s1245_print.o `test -f 'shinko_s1245_print.c' || echo '$(srcdir)/'`shinko_s1245_print.c + +backend_gutenprint-shinko_s1245_print.obj: shinko_s1245_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-shinko_s1245_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-shinko_s1245_print.Tpo -c -o backend_gutenprint-shinko_s1245_print.obj `if test -f 'shinko_s1245_print.c'; then $(CYGPATH_W) 'shinko_s1245_print.c'; else $(CYGPATH_W) '$(srcdir)/shinko_s1245_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-shinko_s1245_print.Tpo $(DEPDIR)/backend_gutenprint-shinko_s1245_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shinko_s1245_print.c' object='backend_gutenprint-shinko_s1245_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-shinko_s1245_print.obj `if test -f 'shinko_s1245_print.c'; then $(CYGPATH_W) 'shinko_s1245_print.c'; else $(CYGPATH_W) '$(srcdir)/shinko_s1245_print.c'; fi` + +backend_gutenprint-shinko_s6245_print.o: shinko_s6245_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-shinko_s6245_print.o -MD -MP -MF $(DEPDIR)/backend_gutenprint-shinko_s6245_print.Tpo -c -o backend_gutenprint-shinko_s6245_print.o `test -f 'shinko_s6245_print.c' || echo '$(srcdir)/'`shinko_s6245_print.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-shinko_s6245_print.Tpo $(DEPDIR)/backend_gutenprint-shinko_s6245_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shinko_s6245_print.c' object='backend_gutenprint-shinko_s6245_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-shinko_s6245_print.o `test -f 'shinko_s6245_print.c' || echo '$(srcdir)/'`shinko_s6245_print.c + +backend_gutenprint-shinko_s6245_print.obj: shinko_s6245_print.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(backend_gutenprint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT backend_gutenprint-shinko_s6245_print.obj -MD -MP -MF $(DEPDIR)/backend_gutenprint-shinko_s6245_print.Tpo -c -o backend_gutenprint-shinko_s6245_print.obj `if test -f 'shinko_s6245_print.c'; then $(CYGPATH_W) 'shinko_s6245_print.c'; else $(CYGPATH_W) '$(srcdir)/shinko_s6245_print.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/backend_gutenprint-shinko_s6245_print.Tpo $(DEPDIR)/backend_gutenprint-shinko_s6245_print.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shinko_s6245_print.c' object='backend_gutenprint-shinko_s6245_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-shinko_s6245_print.obj `if test -f 'shinko_s6245_print.c'; then $(CYGPATH_W) 'shinko_s6245_print.c'; else $(CYGPATH_W) '$(srcdir)/shinko_s6245_print.c'; fi` + cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o: genppd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cups_genppd_@GUTENPRINT_RELEASE_VERSION@_CFLAGS) $(CFLAGS) -MT cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o -MD -MP -MF $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo -c -o cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.o `test -f 'genppd.c' || echo '$(srcdir)/'`genppd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Tpo $(DEPDIR)/cups_genppd_@GUTENPRINT_RELEASE_VERSION@-genppd.Po diff --git a/src/cups/backend_common.c b/src/cups/backend_common.c index 0a2aaba..02aa923 100644 --- a/src/cups/backend_common.c +++ b/src/cups/backend_common.c @@ -27,19 +27,41 @@ #include "backend_common.h" -#define BACKEND_VERSION "0.54G" +#define BACKEND_VERSION "0.62G" #ifndef URI_PREFIX #error "Must Define URI_PREFIX" #endif -/* Global variables */ +#define NUM_CLAIM_ATTEMPTS 10 + +/* Global Variables */ int dyesub_debug = 0; +int terminate = 0; +int fast_return = 0; int extra_vid = -1; int extra_pid = -1; int extra_type = -1; +int copies = 1; char *use_serno = NULL; +int current_page = 0; /* Support Functions */ +static int backend_claim_interface(struct libusb_device_handle *dev, int iface) +{ + int attempts = NUM_CLAIM_ATTEMPTS; + int ret; + do { + ret = libusb_claim_interface(dev, iface); + if (!ret) + break; + sleep(1); + } while (--attempts > 0); + + if (ret) + ERROR("Printer open failure (Could not claim printer interface after %d attempts) (%d)\n", NUM_CLAIM_ATTEMPTS, ret); + + return ret; +} #define ID_BUF_SIZE 2048 static char *get_device_id(struct libusb_device_handle *dev) @@ -56,7 +78,8 @@ static char *get_device_id(struct libusb_device_handle *dev) if (libusb_kernel_driver_active(dev, iface)) libusb_detach_kernel_driver(dev, iface); - libusb_claim_interface(dev, iface); + if (backend_claim_interface(dev, iface)) + return NULL; if (libusb_control_transfer(dev, LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_ENDPOINT_IN | @@ -97,7 +120,6 @@ done: } /* Used with the IEEE1284 deviceid string parsing */ - struct deviceid_dict { char *key; char *val; @@ -112,6 +134,9 @@ static int parse1284_data(const char *device_id, struct deviceid_dict* dict) char val[256]; int num = 0; + if (!device_id) + return 0; + //[whitespace]key[whitespace]:[whitespace]value[whitespace]; while (*device_id && num < MAX_DICT) { /* Skip leading spaces */ @@ -165,7 +190,6 @@ static char *dict_find(const char *key, int dlen, struct deviceid_dict* dict) } /* I/O functions */ - int read_data(struct libusb_device_handle *dev, uint8_t endp, uint8_t *buf, int buflen, int *readlen) { @@ -254,8 +278,6 @@ int send_data(struct libusb_device_handle *dev, uint8_t endp, } /* More stuff */ -int terminate = 0; - static void sigterm_handler(int signum) { UNUSED(signum); @@ -339,7 +361,7 @@ static char *url_decode(char *str) { static int print_scan_output(struct libusb_device *device, struct libusb_device_descriptor *desc, char *prefix, char *manuf2, - int found, int match, + int found, int scan_only, char *match_serno, struct dyesub_backend *backend) { @@ -411,7 +433,11 @@ static int print_scan_output(struct libusb_device *device, descr = malloc(256); if (!descr) { ERROR("Memory allocation failure (%d bytes)\n", 256); - return found; + if (manuf3) + free(manuf3); + if (product2) + free(product2); + return -1; } sprintf(descr, "%s %s", manuf3, product2); @@ -434,17 +460,16 @@ static int print_scan_output(struct libusb_device *device, serial = url_encode(buf); } else if (backend->query_serno) { /* Get from backend hook */ int iface = 0; + struct libusb_config_descriptor *config; if (libusb_kernel_driver_active(dev, iface)) libusb_detach_kernel_driver(dev, iface); - /* If we fail to claim the printer, it's already in use - so we should just skip over it... */ - buf[0] = 0; - if (!libusb_claim_interface(dev, iface)) { + /* Try to claim the printer, and handle transient failures */ + if (!backend_claim_interface(dev, iface)) { int i; - uint8_t endp_up, endp_down; + uint8_t endp_up = 0, endp_down = 0; libusb_get_active_config_descriptor(device, &config); for (i = 0 ; i < config->interface[0].altsetting[0].bNumEndpoints ; i++) { if ((config->interface[0].altsetting[0].endpoint[i].bmAttributes & 3) == LIBUSB_TRANSFER_TYPE_BULK) { @@ -455,6 +480,7 @@ static int print_scan_output(struct libusb_device *device, } } + buf[0] = 0; /* Ignore result since a failure isn't critical here */ backend->query_serno(dev, endp_up, endp_down, buf, STR_LEN_MAX); libusb_release_interface(dev, iface); @@ -471,8 +497,7 @@ static int print_scan_output(struct libusb_device *device, } if (dyesub_debug) - DEBUG("%sVID: %04X PID: %04X Manuf: '%s' Product: '%s' Serial: '%s'\n", - match ? "MATCH: " : "", + DEBUG("VID: %04X PID: %04X Manuf: '%s' Product: '%s' Serial: '%s'\n", desc->idVendor, desc->idProduct, manuf, product, serial); if (scan_only) { @@ -518,12 +543,29 @@ abort: return found; } +extern struct dyesub_backend updr150_backend; +extern struct dyesub_backend kodak6800_backend; +extern struct dyesub_backend kodak605_backend; +extern struct dyesub_backend kodak1400_backend; +extern struct dyesub_backend shinkos1245_backend; +extern struct dyesub_backend shinkos2145_backend; +extern struct dyesub_backend shinkos6145_backend; +extern struct dyesub_backend shinkos6245_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; + static struct dyesub_backend *backends[] = { &canonselphy_backend, &kodak6800_backend, &kodak605_backend, &kodak1400_backend, + &shinkos1245_backend, &shinkos2145_backend, +// &shinkos6145_backend, + &shinkos6245_backend, &updr150_backend, &mitsu70x_backend, &mitsu9550_backend, @@ -536,11 +578,10 @@ static int find_and_enumerate(struct libusb_context *ctx, struct libusb_device ***list, struct dyesub_backend *backend, char *match_serno, - int printer_type, int scan_only) { int num; - int i, j, k; + int i, j = 0, k; int found = -1; /* Enumerate and find suitable device */ @@ -548,45 +589,36 @@ static int find_and_enumerate(struct libusb_context *ctx, for (i = 0 ; i < num ; i++) { struct libusb_device_descriptor desc; - int match = 0; libusb_get_device_descriptor((*list)[i], &desc); for (k = 0 ; backends[k] ; k++) { if (backend && backend != backends[k]) continue; for (j = 0 ; backends[k]->devices[j].vid ; j++) { + if (extra_pid != -1 && + extra_vid != -1 && + extra_type != -1) { + if (backends[k]->devices[j].type == extra_type && + extra_vid == desc.idVendor && + extra_pid == desc.idProduct) { + found = i; + goto match; + } + } if (desc.idVendor == backends[k]->devices[j].vid && desc.idProduct == backends[k]->devices[j].pid) { - match = 1; - if (printer_type == P_ANY || - printer_type == backends[k]->devices[j].type) - found = i; + found = i; goto match; } } } - match: - if (!match) { - if (extra_pid != -1 && - extra_vid != -1 && - extra_type != -1) { - if (extra_vid == desc.idVendor && - extra_pid == desc.idProduct) { - match = 1; - if (printer_type == P_ANY || - printer_type == extra_type) - found = i; - } - } - } - - if (!match) - continue; + continue; + match: found = print_scan_output((*list)[i], &desc, URI_PREFIX, backends[k]->devices[j].manuf_str, - found, (found == i), + found, scan_only, match_serno, backends[k]); @@ -615,7 +647,7 @@ static struct dyesub_backend *find_backend(char *uri_prefix) return NULL; } -static void print_license_blurb(void) +void print_license_blurb(void) { const char *license = "\n\ Copyright 2007-2015 Solomon Peachy <pizza AT shaftnet DOT org>\n\ @@ -638,7 +670,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n\ fprintf(stderr, "%s", license); } -static void print_help(char *argv0, struct dyesub_backend *backend) +void print_help(char *argv0, struct dyesub_backend *backend) { struct libusb_context *ctx = NULL; struct libusb_device **list = NULL; @@ -655,21 +687,24 @@ static void print_help(char *argv0, struct dyesub_backend *backend) if (!backend) { int i; + DEBUG("Environment variables:\n"); + DEBUG(" DYESUB_DEBUG EXTRA_PID EXTRA_VID EXTRA_TYPE BACKEND SERIAL\n"); DEBUG("CUPS Usage:\n"); DEBUG("\tDEVICE_URI=someuri %s job user title num-copies options [ filename ]\n", URI_PREFIX); DEBUG("\n"); DEBUG("Standalone Usage:\n"); DEBUG("\t%s\n", URI_PREFIX); - DEBUG(" [ -D ] [ -G ]\n"); - DEBUG(" [ -S serialnum ] [ -B backendname ] \n"); + DEBUG(" [ -D ] [ -G ] [ -f ]\n"); + DEBUG(" [ -S serialnum ] \n"); DEBUG(" [ -V extra_vid ] [ -P extra_pid ] [ -T extra_type ] \n"); DEBUG(" [ backend_specific_args ] \n"); - DEBUG(" [ -d copies ] [ - | infile ] \n"); + DEBUG(" [ -d copies ] \n"); + DEBUG(" [ - | infile ] \n"); for (i = 0; ; i++) { backend = backends[i]; if (!backend) break; - DEBUG(" -B %s\t# %s version %s\n", + DEBUG(" BACKEND=%s\t# %s version %s\n", backend->uri_prefix, backend->name, backend->version); if (backend->cmdline_usage) backend->cmdline_usage(); @@ -685,12 +720,13 @@ static void print_help(char *argv0, struct dyesub_backend *backend) DEBUG("\t[ -d copies ] [ infile | - ]\n"); } + /* Probe for printers */ i = libusb_init(&ctx); if (i) { ERROR("Failed to initialize libusb (%d)\n", i); exit(CUPS_BACKEND_STOP); } - find_and_enumerate(ctx, &list, backend, NULL, P_ANY, 1); + find_and_enumerate(ctx, &list, backend, NULL, 1); libusb_free_device_list(list, 1); libusb_exit(ctx); } @@ -712,18 +748,14 @@ int main (int argc, char **argv) int i; int claimed; - int backend_cmd = 0; int ret = CUPS_BACKEND_OK; int iface = 0; int found = -1; - int copies = 1; int jobid = 0; - int pages = 0; char *uri; char *fname = NULL; - int printer_type = P_ANY; DEBUG("Multi-Call Dye-sublimation CUPS Backend version %s\n", BACKEND_VERSION); @@ -734,7 +766,7 @@ int main (int argc, char **argv) /* First pass at cmdline parsing */ if (getenv("DYESUB_DEBUG")) - dyesub_debug++; + dyesub_debug = atoi(getenv("DYESUB_DEBUG")); if (getenv("EXTRA_PID")) extra_pid = strtol(getenv("EXTRA_PID"), NULL, 16); if (getenv("EXTRA_VID")) @@ -743,114 +775,26 @@ int main (int argc, char **argv) extra_type = atoi(getenv("EXTRA_TYPE")); if (getenv("BACKEND")) backend = find_backend(getenv("BACKEND")); - use_serno = getenv("DEVICE"); - uri = getenv("DEVICE_URI"); /* For CUPS */ - - /* Try to ensure we have a sane backend for standalone mode. - CUPS mode uses 'uri' later on. */ - if (!backend) { - char *ptr = strrchr(argv[0], '/'); - if (ptr) - ptr++; - else - ptr = argv[0]; - backend = find_backend(ptr); - } - - /* Reset arg parsing */ - optind = 1; - opterr = 0; - while ((i = getopt(argc, argv, "B:d:DGhP:S:T:V:")) >= 0) { - switch(i) { - case 'B': - backend = find_backend(optarg); - if (!backend) { - fprintf(stderr, "ERROR: Unknown backend '%s'\n", optarg); - } - break; - case 'd': - copies = atoi(optarg); - break; - case 'D': - dyesub_debug++; - break; - case 'G': - print_license_blurb(); - exit(0); - case 'h': - print_help(argv[0], backend); - exit(0); - break; - case 'P': - extra_pid = strtol(optarg, NULL, 16); - break; - case 'S': - use_serno = optarg; - break; - case 'T': - extra_type = atoi(optarg); - break; - case 'V': - extra_pid = strtol(optarg, NULL, 16); - break; - case '?': - default: { - /* Check to see if it is claimed by the backend */ - if (backend && backend->cmdline_arg) { - int keep = optind; - backend_cmd += backend->cmdline_arg(NULL, argc, argv); - optind = keep; - } - break; - } - } - } + if (getenv("FAST_RETURN")) + fast_return++; + use_serno = getenv("SERIAL"); + uri = getenv("DEVICE_URI"); /* CUPS backend mode? */ -#ifndef LIBUSB_PRE_1_0_10 - if (dyesub_debug) { - const struct libusb_version *ver; - ver = libusb_get_version(); - DEBUG(" ** running with libusb %d.%d.%d%s (%d)\n", - ver->major, ver->minor, ver->micro, (ver->rc? ver->rc : ""), ver->nano ); - } -#endif - - /* Make sure a filename was specified */ - if (!backend_cmd && (optind == argc || !argv[optind])) { - print_help(argv[0], backend); - exit(0); - } - - /* Are we running as a CUPS backend? */ if (uri) { - int base = optind; // XXX aka 1. - fname = argv[base + 5]; + /* CUPS backend mode */ + int base = optind; /* ie 1 */ + if (argc < 6) { + ERROR("Insufficient arguments\n"); + exit(1); + } if (argv[base]) jobid = atoi(argv[base]); if (argv[base + 3]) copies = atoi(argv[base + 3]); - if (fname) { /* IOW, is it specified? */ - data_fd = open(fname, O_RDONLY); - if (data_fd < 0) { - perror("ERROR:Can't open input file"); - exit(1); - } - } else { + if (argc > 6) + fname = argv[base + 5]; + else fname = "-"; - } - - /* Ensure we're using BLOCKING I/O */ - i = fcntl(data_fd, F_GETFL, 0); - if (i < 0) { - perror("ERROR:Can't open input"); - exit(1); - } - i &= ~O_NONBLOCK; - i = fcntl(data_fd, F_SETFL, 0); - if (i < 0) { - perror("ERROR:Can't open input"); - exit(1); - } /* Figure out backend based on URI */ { @@ -884,46 +828,34 @@ int main (int argc, char **argv) if (ptr) *ptr = 0; } - } else { - srand(getpid()); - jobid = rand(); - /* Grab the filename */ - fname = argv[optind]; + /* Always enable fast return in CUPS mode */ + fast_return++; + } else { + /* Standalone mode */ - if (!fname && !backend_cmd) { - perror("ERROR:No input file"); - exit(1); - } - if (fname) { - /* Open Input File */ - if (strcmp("-", fname)) { - data_fd = open(fname, O_RDONLY); - if (data_fd < 0) { - perror("ERROR:Can't open input file"); - exit(1); - } - } + /* Try to guess backend from executable name */ + if (!backend) { + char *ptr = strrchr(argv[0], '/'); + if (ptr) + ptr++; + else + ptr = argv[0]; + backend = find_backend(ptr); } + + srand(getpid()); + jobid = rand(); } - /* Ignore SIGPIPE */ - signal(SIGPIPE, SIG_IGN); - signal(SIGTERM, sigterm_handler); - - /* Initialize backend */ - DEBUG("Initializing '%s' backend (version %s)\n", - backend->name, backend->version); - backend_ctx = backend->init(); - - /* Parse printjob if necessary */ - if (fname && backend->early_parse) { - printer_type = backend->early_parse(backend_ctx, data_fd); - if (printer_type < 0) { - ret = CUPS_BACKEND_CANCEL; - goto done; - } +#ifndef LIBUSB_PRE_1_0_10 + if (dyesub_debug) { + const struct libusb_version *ver; + ver = libusb_get_version(); + DEBUG(" ** running with libusb %d.%d.%d%s (%d)\n", + ver->major, ver->minor, ver->micro, (ver->rc? ver->rc : ""), ver->nano ); } +#endif /* Libusb setup */ ret = libusb_init(&ctx); @@ -933,16 +865,30 @@ int main (int argc, char **argv) goto done; } + /* If we don't have a valid backend, print help and terminate */ + if (!backend) { + print_help(argv[0], NULL); // probes all devices + exit(1); + } + + /* If we're in standalone mode, print help only if no args */ + if (!uri) { + if (argc < 2) { + print_help(argv[0], backend); // probes all devices + exit(1); + } + } + /* Enumerate devices */ - found = find_and_enumerate(ctx, &list, backend, use_serno, printer_type, 0); + found = find_and_enumerate(ctx, &list, backend, use_serno, 0); -#if 1 if (found == -1) { - ERROR("Printer open failure (No suitable printers found!)\n"); + ERROR("Printer open failure (No matching printers found!)\n"); ret = CUPS_BACKEND_HOLD; goto done; } + /* Open an appropriate device */ ret = libusb_open(list[found], &dev); if (ret) { ERROR("Printer open failure (Need to be root?) (%d)\n", ret); @@ -960,9 +906,8 @@ int main (int argc, char **argv) } } - ret = libusb_claim_interface(dev, iface); + ret = backend_claim_interface(dev, iface); if (ret) { - ERROR("Printer open failure (Could not claim printer interface) (%d)\n", ret); ret = CUPS_BACKEND_STOP; goto done_close; } @@ -982,35 +927,69 @@ int main (int argc, char **argv) endp_down = config->interface[0].altsetting[0].endpoint[i].bEndpointAddress; } } -#endif + + /* Initialize backend */ + DEBUG("Initializing '%s' backend (version %s)\n", + backend->name, backend->version); + backend_ctx = backend->init(); + /* Attach backend to device */ backend->attach(backend_ctx, dev, endp_up, endp_down, jobid); - if (backend_cmd && !uri) { - if (backend->cmdline_arg(backend_ctx, argc, argv)) - goto done_claimed; - if (!fname) + if (!uri) { + if (backend->cmdline_arg(backend_ctx, argc, argv) < 0) goto done_claimed; + + /* Grab the filename */ + fname = argv[optind]; // XXX do this a smarter way? } + if (!fname) { + if (uri) + fprintf(stderr, "ERROR: No input file specified\n"); + goto done_claimed; + } + + /* Open file if not STDIN */ + if (strcmp("-", fname)) { + data_fd = open(fname, O_RDONLY); + if (data_fd < 0) { + perror("ERROR:Can't open input file"); + exit(1); + } + } + + /* Ensure we're using BLOCKING I/O */ + i = fcntl(data_fd, F_GETFL, 0); + if (i < 0) { + perror("ERROR:Can't open input"); + exit(1); + } + i &= ~O_NONBLOCK; + i = fcntl(data_fd, F_SETFL, i); + if (i < 0) { + perror("ERROR:Can't open input"); + exit(1); + } + + /* Ignore SIGPIPE */ + signal(SIGPIPE, SIG_IGN); + signal(SIGTERM, sigterm_handler); + /* Time for the main processing loop */ INFO("Printing started (%d copies)\n", copies); newpage: - /* Do early parsing if needed for subsequent pages */ - if (pages && backend->early_parse && - backend->early_parse(backend_ctx, data_fd) < 0) - goto done_multiple; /* Read in data */ if ((ret = backend->read_parse(backend_ctx, data_fd))) { - if (pages) + if (current_page) goto done_multiple; else goto done_claimed; } - INFO("Printing page %d\n", ++pages); + INFO("Printing page %d\n", ++current_page); ret = backend->main_loop(backend_ctx, copies); if (ret) @@ -1025,7 +1004,7 @@ done_multiple: close(data_fd); /* Done printing */ - INFO("All printing done (%d pages * %d copies)\n", pages, copies); + INFO("All printing done (%d pages * %d copies)\n", current_page, copies); ret = CUPS_BACKEND_OK; done_claimed: @@ -1050,3 +1029,47 @@ done: return ret; } +int lookup_printer_type(struct dyesub_backend *backend, uint16_t idVendor, uint16_t idProduct) +{ + int i; + int type = -1; + + for (i = 0 ; backend->devices[i].vid ; i++) { + if (extra_pid != -1 && + extra_vid != -1 && + extra_type != -1) { + if (backend->devices[i].type == extra_type && + extra_vid == idVendor && + extra_pid == idProduct) { + return extra_type; + } + } + if (idVendor == backend->devices[i].vid && + idProduct == backend->devices[i].pid) { + return backend->devices[i].type; + } + } + + return type; +} + +uint16_t uint16_to_packed_bcd(uint16_t val) +{ + uint16_t bcd; + uint16_t i; + + /* Handle from 0-9999 */ + i = val % 10; + bcd = i; + val /= 10; + i = val % 10; + bcd |= (i << 4); + val /= 10; + i = val % 10; + bcd |= (i << 8); + val /= 10; + i = val % 10; + bcd |= (i << 12); + + return bcd; +} diff --git a/src/cups/backend_common.h b/src/cups/backend_common.h index 1a5c9f1..9b32071 100644 --- a/src/cups/backend_common.h +++ b/src/cups/backend_common.h @@ -91,7 +91,6 @@ enum { P_ES1, P_ES2_20, P_ES3_30, - P_ES40_CP790, P_ES40, P_CP790, P_CP_XXX, @@ -102,12 +101,17 @@ enum { P_KODAK_605, P_SHINKO_S2145, P_SHINKO_S1245, + P_SHINKO_S6245, + P_SHINKO_S6145, P_SONY_UPDR150, P_SONY_UPCR10, P_MITSU_D70X, + P_MITSU_K60, P_MITSU_9550, + P_MITSU_9550S, P_DNP_DS40, P_DNP_DS80, + P_DNP_DS80D, P_CITIZEN_CW01, P_DNP_DSRX1, P_DNP_DS620, @@ -132,7 +136,6 @@ struct dyesub_backend { uint8_t endp_up, uint8_t endp_down, uint8_t jobid); void (*teardown)(void *ctx); int (*cmdline_arg)(void *ctx, int argc, char **argv); - int (*early_parse)(void *ctx, int data_fd); int (*read_parse)(void *ctx, int data_fd); int (*main_loop)(void *ctx, int copies); int (*query_serno)(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len); @@ -144,22 +147,27 @@ int send_data(struct libusb_device_handle *dev, uint8_t endp, uint8_t *buf, int len); int read_data(struct libusb_device_handle *dev, uint8_t endp, uint8_t *buf, int buflen, int *readlen); +int lookup_printer_type(struct dyesub_backend *backend, uint16_t idVendor, uint16_t idProduct); -/* Exported data */ +void print_license_blurb(void); +void print_help(char *argv0, struct dyesub_backend *backend); + +uint16_t uint16_to_packed_bcd(uint16_t val); + +/* Global data */ extern int terminate; extern int dyesub_debug; - -/* External data */ -extern struct dyesub_backend updr150_backend; -extern struct dyesub_backend kodak6800_backend; -extern struct dyesub_backend kodak605_backend; -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; +extern int fast_return; +extern int extra_vid; +extern int extra_pid; +extern int extra_type; +extern int copies; +extern char *use_serno; +extern int current_page; + +#if defined(BACKEND) +extern struct dyesub_backend BACKEND; +#endif /* CUPS compatibility */ #define CUPS_BACKEND_OK 0 /* Sucess */ @@ -171,4 +179,35 @@ extern struct dyesub_backend cw01_backend; #define CUPS_BACKEND_RETRY 6 /* Retry later */ #define CUPS_BACKEND_RETRY_CURRENT 7 /* Retry immediately */ +/* Argument processing */ +#define GETOPT_LIST_GLOBAL "d:DfGhP:S:T:V:" +#define GETOPT_PROCESS_GLOBAL \ + case 'd': \ + copies = atoi(optarg); \ + break; \ + case 'D': \ + dyesub_debug++; \ + break; \ + case 'f': \ + fast_return++; \ + break; \ + case 'G': \ + print_license_blurb(); \ + exit(0); \ + case 'h': \ + print_help(argv[0], &BACKEND); \ + exit(0); \ + case 'P': \ + extra_pid = strtol(optarg, NULL, 16); \ + break; \ + case 'S': \ + use_serno = optarg; \ + break; \ + case 'T': \ + extra_type = atoi(optarg); \ + break; \ + case 'V': \ + extra_pid = strtol(optarg, NULL, 16); \ + break; + #endif /* __BACKEND_COMMON_H */ diff --git a/src/cups/blacklist b/src/cups/blacklist index 420c485..b137624 100644 --- a/src/cups/blacklist +++ b/src/cups/blacklist @@ -132,6 +132,9 @@ # Sony UP-DR200 0x054c 0x035f blacklist +# Sony UP-CR10L +0x054c 0x0226 blacklist + # Mitsubishi CP-D70/CP-D707 0x06d3 0x3b30 blacklist diff --git a/src/cups/citizencw01_print.c b/src/cups/citizencw01_print.c index b99822c..37313b5 100644 --- a/src/cups/citizencw01_print.c +++ b/src/cups/citizencw01_print.c @@ -35,6 +35,8 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND cw01_backend + #include "backend_common.h" #define USB_VID_CITIZEN 0x1343 @@ -68,6 +70,7 @@ struct cw01_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; uint8_t *databuf; struct cw01_spool_hdr hdr; @@ -296,12 +299,20 @@ 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; + 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); + + ctx->type = lookup_printer_type(&cw01_backend, + desc.idVendor, desc.idProduct); } static void cw01_teardown(void *vctx) { @@ -434,7 +445,8 @@ top: free(resp); resp = NULL; - /* Set print quantity */ + /* Set print quantity */ // XXX check against remaining print count + cw01_build_cmd(&cmd, "CNTRL", "QTY", 8); snprintf(buf, sizeof(buf), "%07d\r", copies); ret = cw01_do_cmd(ctx, &cmd, (uint8_t*) buf, 8); @@ -498,7 +510,7 @@ top: ptr + SPOOL_PLANE_HDR_LEN, ctx->hdr.plane_len - SPOOL_PLANE_HDR_LEN))) return CUPS_BACKEND_FAILED; - ptr += ctx->hdr.plane_len; + /* ptr += ctx->hdr.plane_len; */ /* Start print */ cw01_build_cmd(&cmd, "CNTRL", "START", 0); @@ -506,18 +518,7 @@ top: 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; - } + INFO("Print complete\n"); if (resp) free(resp); @@ -822,38 +823,30 @@ static int cw01_cmdline_arg(void *vctx, int argc, char **argv) struct cw01_ctx *ctx = vctx; int i, j = 0; + if (!ctx) + return -1; + /* Reset arg parsing */ optind = 1; opterr = 0; - while ((i = getopt(argc, argv, "inN:s")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "inN:s")) >= 0) { switch(i) { + GETOPT_PROCESS_GLOBAL case 'i': - if (ctx) { - j = cw01_get_info(ctx); - break; - } - return 1; + j = cw01_get_info(ctx); + break; case 'n': - if (ctx) { - j = cw01_get_counters(ctx); - break; - } - return 1; + j = cw01_get_counters(ctx); + break; 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; + j = cw01_clear_counter(ctx, optarg[0]); + break; case 's': - if (ctx) { - j = cw01_get_status(ctx); - break; - } - return 1; + j = cw01_get_status(ctx); + break; default: break; /* Ignore completely */ } @@ -867,7 +860,7 @@ static int cw01_cmdline_arg(void *vctx, int argc, char **argv) /* Exported */ struct dyesub_backend cw01_backend = { .name = "Citizen CW-01", - .version = "0.10", + .version = "0.12", .uri_prefix = "citizencw01", .cmdline_usage = cw01_cmdline, .cmdline_arg = cw01_cmdline_arg, diff --git a/src/cups/dnpds40_print.c b/src/cups/dnpds40_print.c index 16e8ab1..47ff498 100644 --- a/src/cups/dnpds40_print.c +++ b/src/cups/dnpds40_print.c @@ -44,6 +44,8 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND dnpds40_backend + #include "backend_common.h" #define USB_VID_CITIZEN 0x1343 @@ -82,6 +84,7 @@ struct dnpds40_ctx { int cutter; int can_rewind; + int manual_copies; int supports_6x9; int supports_2x6; int supports_3x5x2; @@ -90,6 +93,8 @@ struct dnpds40_ctx { int supports_rewind; int supports_standby; int supports_6x4_5; + int supports_mqty_default; + int supports_iserial; uint8_t *qty_offset; uint8_t *buffctrl_offset; @@ -328,6 +333,9 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, device = libusb_get_device(dev); libusb_get_device_descriptor(device, &desc); + ctx->type = lookup_printer_type(&dnpds40_backend, + desc.idVendor, desc.idProduct); + { /* Get Firmware Version */ struct dnpds40_cmd cmd; @@ -343,7 +351,7 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, ctx->version = strdup((char*) resp); /* Parse version */ - ptr = strtok((char*)resp, " ."); + /* ptr = */ strtok((char*)resp, " ."); ptr = strtok(NULL, "."); ctx->ver_major = atoi(ptr); ptr = strtok(NULL, "."); @@ -397,9 +405,8 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, #endif /* Per-printer options */ - switch (desc.idProduct) { - case USB_PID_DNP_DS40: - ctx->type = P_DNP_DS40; + switch (ctx->type) { + case P_DNP_DS40: ctx->supports_6x9 = 1; if (FW_VER_CHECK(1,30)) ctx->supports_matte = 1; @@ -410,31 +417,31 @@ static void dnpds40_attach(void *vctx, struct libusb_device_handle *dev, if (FW_VER_CHECK(1,51)) ctx->supports_fullcut = 1; break; - case USB_PID_DNP_DS80: - ctx->type = P_DNP_DS80; + case P_DNP_DS80: if (FW_VER_CHECK(1,30)) ctx->supports_matte = 1; break; - case USB_PID_DNP_DSRX1: - ctx->type = P_DNP_DSRX1; + case P_DNP_DSRX1: ctx->supports_matte = 1; + ctx->supports_mqty_default = 1; // 1.10 does. Maybe older too? if (FW_VER_CHECK(1,10)) ctx->supports_2x6 = 1; break; - case USB_PID_DNP_DS620: - ctx->type = P_DNP_DS620; + case 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_mqty_default = 1; + ctx->supports_rewind = 1; ctx->supports_standby = 1; + ctx->supports_iserial = 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"); + ERROR("Unknown vid/pid %04x/%04x (%d)\n", desc.idVendor, desc.idProduct, ctx->type); return; } } @@ -491,6 +498,7 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { matte = 0; dpi = 0; cutter = 0; + ctx->manual_copies = 0; ctx->multicut = 0; ctx->buffctrl_offset = ctx->qty_offset = ctx->multicut_offset = 0; @@ -603,7 +611,7 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { if (y_ppm != 1920) { ERROR("Incorrect horizontal resolution (%d), aborting!\n", y_ppm); return CUPS_BACKEND_CANCEL; - } + } } } @@ -616,8 +624,8 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { } if (!ctx->datalen) - return CUPS_BACKEND_CANCEL; - + return CUPS_BACKEND_CANCEL; + /* Figure out the number of buffers we need. Most only need one. */ if (ctx->multicut) { ctx->buf_needed = 1; @@ -668,12 +676,14 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { } 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; } + /* Only 3.5x5 on 7x5 media can be rewound */ + if (ctx->multicut == 1) + ctx->can_rewind = 1; break; case 300: //"6x4 (PC)" if (ctx->multicut != 2) { @@ -682,21 +692,27 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { } break; case 310: //"6x8 (A5)" - ctx->can_rewind = 1; if (ctx->multicut != 2 && ctx->multicut != 4 && - ctx->multicut != 27) { + ctx->multicut != 12 && + ctx->multicut != 27 && ctx->multicut != 30) { ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut); return CUPS_BACKEND_CANCEL; } + /* Only 6x4 on 6x8 media can be rewound */ + if (ctx->multicut == 2) + ctx->can_rewind = 1; break; case 400: //"6x9 (A5W)" - ctx->can_rewind = 1; if (ctx->multicut != 2 && ctx->multicut != 4 && - ctx->multicut != 5 && ctx->multicut != 27 && + ctx->multicut != 5 && ctx->multicut != 12 && + 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; } + /* Only 6x4 or 6x4.5 on 6x9 media can be rewound */ + if (ctx->multicut == 2 || ctx->multicut == 30) + ctx->can_rewind = 1; break; case 500: //"8x10" if (ctx->multicut < 6 || ctx->multicut == 7 || @@ -749,6 +765,11 @@ static int dnpds40_read_parse(void *vctx, int data_fd) { ERROR("Printer only supports 2-inch cuts on 4x6 or 8x6 jobs!"); return CUPS_BACKEND_CANCEL; } + + /* Work around firmware bug on DS40 where if we run out + of media, we can't resume the job without losing the + cutter setting. XXX add version test? */ + ctx->manual_copies = 1; } if (ctx->matte && !ctx->supports_matte) { @@ -768,65 +789,15 @@ static int dnpds40_main_loop(void *vctx, int copies) { uint8_t *ptr; char buf[9]; int status; + int buf_needed; if (!ctx) 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; - - 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) { + // XXX this breaks if ctx->manual_copies is set, but the job + // has a CNTRL QTY != 1 + if (!ctx->manual_copies && copies > 1) { snprintf(buf, sizeof(buf), "%07d\r", copies); if (ctx->qty_offset) { memcpy(ctx->qty_offset, buf, 8); @@ -843,7 +814,7 @@ static int dnpds40_main_loop(void *vctx, int copies) { if (ctx->supports_matte) { snprintf(buf, sizeof(buf), "%08d", 1); if (ctx->buffctrl_offset) { - memcpy(ctx->qty_offset, buf, 8); + memcpy(ctx->buffctrl_offset, buf, 8); } else { dnpds40_build_cmd(&cmd, "CNTRL", "BUFFCNTRL", 8); if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)buf, 8))) @@ -866,9 +837,11 @@ static int dnpds40_main_loop(void *vctx, int copies) { } #endif + buf_needed = ctx->buf_needed; + #ifdef MATTE_GLOSSY_2BUF if (ctx->matte != ctx->last_matte) - ctx->buf_needed = 2; /* Switching needs both buffers */ + buf_needed = 2; /* Switching needs both buffers */ #endif ctx->last_matte = ctx->matte; @@ -888,25 +861,23 @@ static int dnpds40_main_loop(void *vctx, int copies) { top: - if (resp) free(resp); - /* Query status */ dnpds40_build_cmd(&cmd, "STATUS", "", 0); + if (resp) free(resp); resp = dnpds40_resp_cmd(ctx, &cmd, &len); if (!resp) return CUPS_BACKEND_FAILED; dnpds40_cleanup_string((char*)resp, len); status = atoi((char*)resp); - free(resp); /* Figure out what's going on */ switch(status) { case 0: /* Idle; we can continue! */ - break; case 1: /* Printing */ { int bufs; + if (resp) free(resp); /* Query buffer state */ dnpds40_build_cmd(&cmd, "INFO", "FREE_PBUFFER", 0); resp = dnpds40_resp_cmd(ctx, &cmd, &len); @@ -917,8 +888,8 @@ top: 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); + if (bufs < buf_needed) { + INFO("Insufficient printer buffers (%d vs %d), retrying...\n", bufs, buf_needed); sleep(1); goto top; } @@ -952,7 +923,56 @@ top: ERROR("Fatal Printer Error: %d => %s, halting queue!\n", status, dnpds40_statuses(status)); return CUPS_BACKEND_HOLD; } - + + /* 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) { + /* Tell the printer we want to rewind, if possible. */ + snprintf(buf, sizeof(buf), "%08d", ctx->multicut + 400); + memcpy(ctx->multicut_offset, buf, 8); + + /* 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; + + dnpds40_cleanup_string((char*)resp, len); + i = atoi((char*)resp+4); + } + + /* 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"); + } + } + /* Send the stream over as individual data chunks */ ptr = ctx->databuf; @@ -962,7 +982,6 @@ top: memcpy(buf, ptr + 24, 8); i = atoi(buf) + 32; - if ((ret = send_data(ctx->dev, ctx->endp_down, ptr, i))) return CUPS_BACKEND_FAILED; @@ -973,27 +992,26 @@ top: /* Clean up */ if (terminate) copies = 1; - + INFO("Print complete (%d copies remaining)\n", copies - 1); if (copies && --copies) { +#ifdef MATTE_GLOSSY_2BUF + /* No need to wait on buffers due to matte switching */ + buf_needed = ctx->buf_needed; +#endif goto top; } return CUPS_BACKEND_OK; } -static int dnpds40_get_info(struct dnpds40_ctx *ctx) +static int dnpds40_get_sensors(struct dnpds40_ctx *ctx) { struct dnpds40_cmd cmd; uint8_t *resp; int len = 0; - - /* Serial number already queried */ - INFO("Serial Number: '%s'\n", ctx->serno); - - /* Firmware version already queried */ - INFO("Firmware Version: '%s'\n", ctx->version); + char *tok; /* Get Sensor Info */ dnpds40_build_cmd(&cmd, "INFO", "SENSOR", 0); @@ -1003,33 +1021,72 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) return CUPS_BACKEND_FAILED; dnpds40_cleanup_string((char*)resp, len); - 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); + tok = strtok((char*)resp, "; -"); + do { + char *val = strtok(NULL, "; -"); + + if (!strcmp("HDT", tok)) { + INFO("Head Temperature : %s\n", val); + } else if (!strcmp("MDT", tok)) { + INFO("Media Temperature : %s\n", val); + } else if (!strcmp("PMK", tok)) { + INFO("Paper Mark : %s\n", val); + } else if (!strcmp("RML", tok)) { + INFO("Ribbon Mark Left : %s\n", val); + } else if (!strcmp("RMC", tok)) { + INFO("Ribbon Mark Right : %s\n", val); + } else if (!strcmp("RMR", tok)) { + INFO("Ribbon Mark Center : %s\n", val); + } else if (!strcmp("PSZ", tok)) { + INFO("Paper Size : %s\n", val); + } else if (!strcmp("PNT", tok)) { + INFO("Paper Notch : %s\n", val); + } else if (!strcmp("PJM", tok)) { + INFO("Paper Jam : %s\n", val); + } else if (!strcmp("PED", tok)) { + INFO("Paper End : %s\n", val); + } else if (!strcmp("PET", tok)) { + INFO("Paper Empty : %s\n", val); + } else if (!strcmp("HDV", tok)) { + INFO("Head Voltage : %s\n", val); + } else if (!strcmp("HMD", tok)) { + INFO("Humidity : %s\n", val); + } else if (!strcmp("RP1", tok)) { + INFO("Roll Paper End 1 : %s\n", val); + } else if (!strcmp("RP2", tok)) { + INFO("Roll Paper End 2 : %s\n", val); + } else if (!strcmp("GSR", tok)) { + INFO("Color Sensor Red : %s\n", val); + } else if (!strcmp("GSG", tok)) { + INFO("Color Sensor Green : %s\n", val); + } else if (!strcmp("GSB", tok)) { + INFO("Color Sensor Blue : %s\n", val); + } else { + INFO("Unknown Sensor: '%s' '%s'\n", + tok, val); + } + } while ((tok = strtok(NULL, "; -")) != NULL); - /* Get Horizonal resolution */ - dnpds40_build_cmd(&cmd, "INFO", "RESOLUTION_H", 0); + free(resp); - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; + return CUPS_BACKEND_OK; +} - dnpds40_cleanup_string((char*)resp, len); +static int dnpds40_get_info(struct dnpds40_ctx *ctx) +{ + struct dnpds40_cmd cmd; + uint8_t *resp; + int len = 0; - INFO("Horizontal Resolution: '%s' dpi\n", (char*)resp + 3); + /* Serial number already queried */ + INFO("Serial Number: '%s'\n", ctx->serno); - free(resp); + /* Firmware version already queried */ + INFO("Firmware Version: '%s'\n", ctx->version); - /* Get Vertical resolution */ - dnpds40_build_cmd(&cmd, "INFO", "RESOLUTION_V", 0); + /* Get Media Color offset */ + dnpds40_build_cmd(&cmd, "INFO", "MCOLOR", 0); resp = dnpds40_resp_cmd(ctx, &cmd, &len); if (!resp) @@ -1037,12 +1094,13 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) dnpds40_cleanup_string((char*)resp, len); - INFO("Vertical Resolution: '%s' dpi\n", (char*)resp + 3); + INFO("Media Color Offset: '%02x%02x%02x%02x'\n", *(resp+2), *(resp+3), + *(resp+4), *(resp+5)); free(resp); - /* Get Media Color offset */ - dnpds40_build_cmd(&cmd, "INFO", "MCOLOR", 0); + /* Get Media Class */ + dnpds40_build_cmd(&cmd, "INFO", "MEDIA_CLASS", 0); resp = dnpds40_resp_cmd(ctx, &cmd, &len); if (!resp) @@ -1050,8 +1108,7 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) dnpds40_cleanup_string((char*)resp, len); - INFO("Media Color Offset: '%02x%02x%02x%02x'\n", *(resp+2), *(resp+3), - *(resp+4), *(resp+5)); + INFO("Media Class: '%s'\n", (char*)resp); free(resp); @@ -1085,87 +1142,74 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) free(resp); - if (ctx->type == P_DNP_DS620) { - /* Loop through control data versions and checksums */ - - /* 300 DPI */ - dnpds40_build_cmd(&cmd, "TBL_RD", "CWD300_Version", 0); - - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; - - dnpds40_cleanup_string((char*)resp, len); - - INFO("300 DPI Color Data Version: '%s' ", (char*)resp); - - free(resp); + /* Get Ribbon ID code (?) */ + dnpds40_build_cmd(&cmd, "MNT_RD", "RIBBON_ID_CODE", 0); - dnpds40_build_cmd(&cmd, "TBL_RD", "CWD300_Checksum", 0); + resp = dnpds40_resp_cmd(ctx, &cmd, &len); + if (!resp) + return CUPS_BACKEND_FAILED; - 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("Ribbon ID(?): '%s'\n", (char*)resp+4); - INFO("Checksum: '%s'\n", (char*)resp); + free(resp); - free(resp); + /* Figure out control data and checksums */ - /* 600 DPI */ - dnpds40_build_cmd(&cmd, "TBL_RD", "CWD600_Version", 0); + /* 300 DPI */ + dnpds40_build_cmd(&cmd, "TBL_RD", "CWD300_Version", 0); - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; + 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("600 DPI Color Data Version: '%s' ", (char*)resp); + INFO("300 DPI Color Data Version: '%s' ", (char*)resp); - free(resp); + free(resp); - dnpds40_build_cmd(&cmd, "TBL_RD", "CWD600_Checksum", 0); + dnpds40_build_cmd(&cmd, "TBL_RD", "CWD300_Checksum", 0); - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; + 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("Checksum: '%s'\n", (char*)resp); + DEBUG2("Checksum: '%s'\n", (char*)resp); - free(resp); + free(resp); - /* "Low Speed" */ - dnpds40_build_cmd(&cmd, "TBL_RD", "CWD610_Version", 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; + 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("Low Speed Color Data Version: '%s' ", (char*)resp); + INFO("600 DPI Color Data Version: '%s' ", (char*)resp); - free(resp); + free(resp); - dnpds40_build_cmd(&cmd, "TBL_RD", "CWD610_Checksum", 0); + dnpds40_build_cmd(&cmd, "TBL_RD", "CWD600_Checksum", 0); - resp = dnpds40_resp_cmd(ctx, &cmd, &len); - if (!resp) - return CUPS_BACKEND_FAILED; + 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("Checksum: '%s'\n", (char*)resp); + DEBUG2("Checksum: '%s'\n", (char*)resp); - free(resp); + free(resp); - } else { - /* Get Color Control Data Version */ - dnpds40_build_cmd(&cmd, "TBL_RD", "Version", 0); + if (ctx->type == P_DNP_DS620) { + /* "Low Speed" */ + dnpds40_build_cmd(&cmd, "TBL_RD", "CWD610_Version", 0); resp = dnpds40_resp_cmd(ctx, &cmd, &len); if (!resp) @@ -1173,12 +1217,11 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) dnpds40_cleanup_string((char*)resp, len); - INFO("Color Data Version: '%s'\n", (char*)resp); + INFO("Low Speed Color Data Version: '%s' ", (char*)resp); free(resp); - /* Get Color Control Data Checksum */ - dnpds40_build_cmd(&cmd, "MNT_RD", "CTRLD_CHKSUM", 0); + dnpds40_build_cmd(&cmd, "TBL_RD", "CWD610_Checksum", 0); resp = dnpds40_resp_cmd(ctx, &cmd, &len); if (!resp) @@ -1186,7 +1229,7 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) dnpds40_cleanup_string((char*)resp, len); - INFO("Color Data Checksum: '%s'\n", (char*)resp); + DEBUG2("Checksum: '%s'\n", (char*)resp); free(resp); } @@ -1217,7 +1260,9 @@ static int dnpds40_get_info(struct dnpds40_ctx *ctx) INFO("Media End kept across power cycles: '%s'\n", (char*)resp); free(resp); + } + if (ctx->supports_iserial) { /* Get USB serial descriptor status */ dnpds40_build_cmd(&cmd, "MNT_RD", "USB_ISERI_SET", 0); @@ -1284,7 +1329,7 @@ static int dnpds40_get_status(struct dnpds40_ctx *ctx) /* Report media */ INFO("Media Type: '%s'\n", dnpds40_media_types(ctx->media)); - if (ctx->supports_rewind) { + if (ctx->supports_mqty_default) { /* Get Media remaining */ dnpds40_build_cmd(&cmd, "INFO", "MQTY_DEFAULT", 0); @@ -1460,6 +1505,38 @@ static int dnpds620_standby_mode(struct dnpds40_ctx *ctx, int delay) return 0; } +static int dnpds620_media_keep_mode(struct dnpds40_ctx *ctx, int delay) +{ + struct dnpds40_cmd cmd; + char msg[9]; + int ret; + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_WT", "END_KEEP_MODE", 4); + snprintf(msg, sizeof(msg), "%02d\r", delay); + + if ((ret = dnpds40_do_cmd(ctx, &cmd, (uint8_t*)msg, 4))) + return ret; + + return 0; +} + +static int dnpds620_iserial_mode(struct dnpds40_ctx *ctx, int enable) +{ + struct dnpds40_cmd cmd; + char msg[9]; + int ret; + + /* Generate command */ + dnpds40_build_cmd(&cmd, "MNT_WT", "USB_ISERI_SET", 4); + snprintf(msg, sizeof(msg), "%02d\r", enable); + + 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; @@ -1480,12 +1557,14 @@ static int dnpds40_set_counter_p(struct dnpds40_ctx *ctx, char *arg) static void dnpds40_cmdline(void) { DEBUG("\t\t[ -i ] # Query printer info\n"); + DEBUG("\t\t[ -I ] # Query sensor 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"); DEBUG("\t\t[ -p num ] # Set counter P\n"); - DEBUG("\t\t[ -S num ] # Set standby time (1-99 minutes, 0 disables)\n"); - + DEBUG("\t\t[ -k num ] # Set standby time (1-99 minutes, 0 disables)\n"); + DEBUG("\t\t[ -K num ] # Keep Media Status Across Power Cycles (1 on, 0 off)\n"); + DEBUG("\t\t[ -x num ] # Set USB iSerialNumber Reporting (1 on, 0 off)\n"); } static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv) @@ -1493,64 +1572,86 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv) struct dnpds40_ctx *ctx = vctx; int i, j = 0; + if (!ctx) + return -1; + /* Reset arg parsing */ optind = 1; opterr = 0; - while ((i = getopt(argc, argv, "inN:p:sS:")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "iInN:p:sK:k:")) >= 0) { switch(i) { + GETOPT_PROCESS_GLOBAL case 'i': - if (ctx) { - j = dnpds40_get_info(ctx); - break; - } - return 1; + j = dnpds40_get_info(ctx); + break; + case 'I': + j = dnpds40_get_sensors(ctx); + break; case 'n': - if (ctx) { - j = dnpds40_get_counters(ctx); - break; - } - return 1; + j = dnpds40_get_counters(ctx); + break; case 'N': if (optarg[0] != 'A' && optarg[0] != 'B' && optarg[0] != 'M') 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; + if (!ctx->supports_matte) { + ERROR("Printer FW does not support matte functions, please update!\n"); + return CUPS_BACKEND_FAILED; } - return 1; + j = dnpds40_clear_counter(ctx, optarg[0]); + break; case 'p': - if (ctx) { - j = dnpds40_set_counter_p(ctx, optarg); + j = dnpds40_set_counter_p(ctx, optarg); + break; + case 's': + j = dnpds40_get_status(ctx); + break; + case 'k': { + int time = atoi(optarg); + if (!ctx->supports_standby) { + ERROR("Printer does not support standby\n"); + j = -1; break; } - return 1; - case 's': - if (ctx) { - j = dnpds40_get_status(ctx); + if (time < 0 || time > 99) { + ERROR("Value out of range (0-99)"); + j = -1; 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); + j = dnpds620_standby_mode(ctx, time); + break; + } + case 'K': { + int keep = atoi(optarg); + if (!ctx->supports_standby) { + ERROR("Printer does not support media keep mode\n"); + j = -1; + break; + } + if (keep < 0 || keep > 1) { + ERROR("Value out of range (0-1)"); + j = -1; + break; } + j = dnpds620_media_keep_mode(ctx, keep); + break; + } + case 'x': { + int enable = atoi(optarg); + if (!ctx->supports_iserial) { + ERROR("Printer does not support USB iSerialNumber reporting\n"); + j = -1; + break; + } + if (enable < 0 || enable > 1) { + ERROR("Value out of range (0-1)"); + j = -1; + break; + } + j = dnpds620_iserial_mode(ctx, enable); + break; + } default: break; /* Ignore completely */ } @@ -1564,7 +1665,7 @@ static int dnpds40_cmdline_arg(void *vctx, int argc, char **argv) /* Exported */ struct dyesub_backend dnpds40_backend = { .name = "DNP DS40/DS80/DSRX1/DS620", - .version = "0.51", + .version = "0.61", .uri_prefix = "dnpds40", .cmdline_usage = dnpds40_cmdline, .cmdline_arg = dnpds40_cmdline_arg, diff --git a/src/cups/genppd.c b/src/cups/genppd.c index e868444..8633611 100644 --- a/src/cups/genppd.c +++ b/src/cups/genppd.c @@ -1,5 +1,5 @@ /* - * "$Id: genppd.c,v 1.197 2015/06/25 01:48:02 speachy Exp $" + * "$Id: genppd.c,v 1.204 2015/09/13 14:37:16 speachy Exp $" * * PPD file generation program for the CUPS drivers. * @@ -579,8 +579,6 @@ main(int argc, /* I - Number of command-line arguments */ models[n] = argv[optind+n]; } models[numargs] = (char*)NULL; - - n=0; } /* @@ -1144,12 +1142,13 @@ print_ppd_header(gpFile fp, ppd_type_t ppd_type, int model, const char *driver, } static void -print_ppd_header_3(gpFile fp, ppd_type_t ppd_type, int model, const char *driver, - const char *family, const char *long_name, - const char *manufacturer, const char *device_id, - const char *ppd_location, - const char *language, const stp_string_list_t *po, - char **all_langs) +print_ppd_header_3(gpFile fp, ppd_type_t ppd_type, int model, + const char *driver, + const char *family, const char *long_name, + const char *manufacturer, const char *device_id, + const char *ppd_location, + const char *language, const stp_string_list_t *po, + char **all_langs) { int i; gpputs(fp, "*FileSystem: False\n"); @@ -1157,7 +1156,7 @@ print_ppd_header_3(gpFile fp, ppd_type_t ppd_type, int model, const char *driver gpputs(fp, "*TTRasterizer: Type42\n"); gpputs(fp, "*cupsVersion: 1.2\n"); - gpputs(fp, "*cupsManualCopies: True\n"); + gpprintf(fp, "*cupsFilter: \"application/vnd.cups-raster 100 rastertogutenprint.%s\"\n", GUTENPRINT_RELEASE_VERSION); if (strcasecmp(manufacturer, "EPSON") == 0) gpputs(fp, "*cupsFilter: \"application/vnd.cups-command 33 commandtoepson\"\n"); @@ -1946,6 +1945,7 @@ write_ppd( const char *manufacturer; /* Manufacturer of printer */ const char *device_id; /* IEEE1284 device ID */ const stp_vars_t *printvars; /* Printer option names */ + int nativecopies = 0; /* Printer natively generates copies */ stp_parameter_t desc; stp_parameter_list_t param_list; const stp_param_string_t *opt; @@ -2004,9 +2004,21 @@ write_ppd( } stp_parameter_description_destroy(&desc); - print_ppd_header_3(fp, ppd_type, model, driver, family, long_name, - manufacturer, device_id, ppd_location, language, po, - all_langs); + stp_describe_parameter(v, "NativeCopies", &desc); + if (desc.p_type == STP_PARAMETER_TYPE_BOOLEAN) + nativecopies = stp_get_boolean_parameter(v, "NativeCopies"); + + stp_parameter_description_destroy(&desc); + + if (nativecopies) + gpputs(fp, "*cupsManualCopies: False\n"); + else + gpputs(fp, "*cupsManualCopies: True\n"); + + print_ppd_header_3(fp, ppd_type, model, + driver, family, long_name, + manufacturer, device_id, ppd_location, language, po, + all_langs); /* Macintosh color management */ @@ -2426,6 +2438,33 @@ write_ppd( } stp_parameter_description_destroy(&desc); + /* Constraints */ + stp_describe_parameter(v, "PPDUIConstraints", &desc); + if (desc.is_active && desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) + { + num_opts = stp_string_list_count(desc.bounds.str); + if (num_opts > 0) + { + gpputs(fp, "*% ===== Constraints ===== \n"); + for (i = 0; i < num_opts; i++) + { + char *opt1, *opt2; + opt = stp_string_list_param(desc.bounds.str, i); + opt1 = stp_strdup(opt->text); + opt2 = strrchr(opt1, '*'); + if (opt2) + { + opt2[-1] = 0; + gpprintf(fp, "*%s: %s %s\n", opt->name, opt1, opt2); + gpprintf(fp, "*%s: %s %s\n", opt->name, opt2, opt1); + } + stp_free(opt1); + } + gpputs(fp, "\n"); + } + } + stp_parameter_description_destroy(&desc); + if (!language) { /* @@ -2554,7 +2593,7 @@ write_ppd( } } stp_parameter_description_destroy(&desc); - + /* * Quality settings */ @@ -2708,5 +2747,5 @@ write_ppd( /* - * End of "$Id: genppd.c,v 1.197 2015/06/25 01:48:02 speachy Exp $". + * End of "$Id: genppd.c,v 1.204 2015/09/13 14:37:16 speachy Exp $". */ diff --git a/src/cups/kodak1400_print.c b/src/cups/kodak1400_print.c index 1921bb4..c8e257c 100644 --- a/src/cups/kodak1400_print.c +++ b/src/cups/kodak1400_print.c @@ -35,6 +35,8 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND kodak1400_backend + #include "backend_common.h" /* Program states */ @@ -77,6 +79,7 @@ struct kodak1400_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; struct kodak1400_hdr hdr; uint8_t *plane_r; @@ -258,17 +261,18 @@ int kodak1400_cmdline_arg(void *vctx, int argc, char **argv) struct kodak1400_ctx *ctx = vctx; int i, j = 0; + if (!ctx) + return -1; + /* Reset arg parsing */ optind = 1; opterr = 0; - while ((i = getopt(argc, argv, "C:")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "C:")) >= 0) { switch(i) { + GETOPT_PROCESS_GLOBAL case 'C': - if (ctx) { - j = kodak1400_set_tonecurve(ctx, optarg); - break; - } - return 1; + j = kodak1400_set_tonecurve(ctx, optarg); + break; default: break; /* Ignore completely */ } @@ -295,14 +299,21 @@ static void kodak1400_attach(void *vctx, struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct kodak1400_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); + + ctx->type = lookup_printer_type(&kodak1400_backend, + desc.idVendor, desc.idProduct); +} static void kodak1400_teardown(void *vctx) { struct kodak1400_ctx *ctx = vctx; @@ -603,7 +614,7 @@ top: struct dyesub_backend kodak1400_backend = { .name = "Kodak 1400/805", - .version = "0.33", + .version = "0.34", .uri_prefix = "kodak1400", .cmdline_usage = kodak1400_cmdline, .cmdline_arg = kodak1400_cmdline_arg, @@ -739,7 +750,8 @@ struct dyesub_backend kodak1400_backend = { Other readback codes seen: - e4 72 00 00 10 00 50 59 -- ??? + e4 72 00 00 40 00 50 59 -- ?? paper jam? + e4 72 00 00 10 00 50 59 -- media red blink, error red blink, [media mismatch]] e4 72 00 00 10 01 50 59 -- ??? e4 72 00 00 00 04 50 59 -- media red blink, error red [media too small for image ?] e4 72 00 00 02 00 50 59 -- media off, error red. [out of paper] diff --git a/src/cups/kodak605_print.c b/src/cups/kodak605_print.c index 544eb72..ad2e6bf 100644 --- a/src/cups/kodak605_print.c +++ b/src/cups/kodak605_print.c @@ -35,38 +35,116 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND kodak605_backend + #include "backend_common.h" #define USB_VID_KODAK 0x040A #define USB_PID_KODAK_605 0x402E +/* Command Header */ +struct kodak605_cmd { + uint16_t cmd; /* LE */ + uint16_t len; /* LE, not counting this header */ +} __attribute__((packed)); + +struct kodak605_sts_hdr { + uint8_t result; /* RESULT_* */ + uint8_t unk_1[5]; /* 00 00 00 00 00 */ + uint8_t sts_1; /* 01/02 */ + uint8_t sts_2; /* 00/61->6b ?? temperature? */ + uint16_t length; /* LE, not counting this header */ +} __attribute__((packed)); + +#define RESULT_SUCCESS 0x01 +#define RESULT_FAIL 0x02 + /* 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 */ + uint8_t type; /* MEDIA_TYPE_* */ + uint8_t unk[4]; /* 00 00 00 00 */ } __attribute__((packed)); +#define MEDIA_TYPE_UNKNOWN 0x00 +#define MEDIA_TYPE_PAPER 0x01 + struct kodak605_media_list { - uint8_t unk[12]; /* 01 00 00 00 00 00 02 00 67 00 02 0b */ + struct kodak605_sts_hdr hdr; + uint8_t unk; /* always seen 02 */ + uint8_t type; /* KODAK_MEDIA_* */ uint8_t count; struct kodak605_medium entries[]; } __attribute__((packed)); +#define KODAK_MEDIA_6R 0x0b +#define KODAK_MEDIA_NONE 0x00 + +#define MAX_MEDIA_LEN 128 + +/* Status response */ +struct kodak605_status { + struct kodak605_sts_hdr hdr; +/*@10*/ uint32_t ctr_life; /* Lifetime Prints */ + uint32_t ctr_maint; /* Prints since last maintainence */ + uint32_t ctr_media; /* Prints on current media */ + uint32_t ctr_cut; /* Cutter Actuations */ + uint32_t ctr_head; /* Prints on current head */ +/*@30*/ uint8_t donor; /* Donor Percentage remaining */ +/*@31*/ uint8_t null_1[7]; /* 00 00 00 00 00 00 00 */ +/*@38*/ uint8_t b1_id; /* 00/01/02 */ + uint16_t b1_remain; + uint16_t b1_complete; + uint16_t b1_total; +/*@45*/ uint8_t b1_sts; /* See BANK_STATUS_* */ + uint8_t b2_id; /* 00/01/02 */ + uint16_t b2_remain; + uint16_t b2_complete; + uint16_t b2_total; +/*@53*/ uint8_t b2_sts; /* see BANK_STATUS_* */ +/*@54*/ uint8_t id; /* current job id ( 00/01/02 seen ) */ +/*@55*/ uint16_t remain; /* in current job */ +/*@57*/ uint16_t complete; /* in current job */ +/*@59*/ uint16_t total; /* in current job */ +/*@61*/ uint8_t null_2[9]; /* 00 00 00 00 00 00 00 00 00 */ +/*@70*/ uint8_t unk_12[6]; /* 01 00 00 00 00 00 */ +} __attribute__((packed)); + /* File header */ struct kodak605_hdr { uint8_t hdr[4]; /* 01 40 0a 00 */ - uint8_t unk1; /* 01 or 02 */ - uint8_t copies; /* 01 or more */ - uint8_t unk2; /* always 00 */ - uint16_t columns; /* BE always 0x0734 */ - uint16_t rows; /* BE */ + uint8_t jobid; + uint16_t copies; /* LE, 0x0001 or more */ + uint16_t columns; /* LE, always 0x0734 */ + uint16_t rows; /* LE */ uint8_t media; /* 0x03 for 6x8, 0x01 for 6x4 */ uint8_t laminate; /* 0x02 to laminate, 0x01 for not */ - uint8_t unk3; /* 0x00, 0x01 [may be print mode] */ + uint8_t mode; /* Print mode -- 0x00, 0x01 seen */ } __attribute__((packed)); +#define BANK_STATUS_FREE 0x00 +#define BANK_STATUS_XFER 0x01 +#define BANK_STATUS_FULL 0x02 +#define BANK_STATUS_PRINTING 0x12 + +static char *bank_statuses(uint8_t v) +{ + switch (v) { + case BANK_STATUS_FREE: + return "Free"; + case BANK_STATUS_XFER: + return "Xfer"; + case BANK_STATUS_FULL: + return "Full"; + case BANK_STATUS_PRINTING: + return "Printing"; + default: + return "Unknown"; + } +} + #define CMDBUF_LEN 4 /* Private data stucture */ @@ -74,23 +152,50 @@ struct kodak605_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; + uint8_t jobid; struct kodak605_hdr hdr; + + struct kodak605_media_list *media; + uint8_t *databuf; int datalen; }; -/* Program states */ -enum { - S_IDLE = 0, - S_READY, - S_STARTED, - S_SENT_HDR, - S_SENT_DATA, - S_FINISHED, -}; +static int kodak605_get_media(struct kodak605_ctx *ctx, struct kodak605_media_list *media) +{ + uint8_t cmdbuf[4]; + + int ret, num = 0; + + /* Send Media Query */ + cmdbuf[0] = 0x02; + cmdbuf[1] = 0x00; + cmdbuf[2] = 0x00; + cmdbuf[3] = 0x00; + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmdbuf, sizeof(cmdbuf)))) + return ret; -#define READBACK_LEN 120 + /* Read in the printer status */ + 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 CUPS_BACKEND_FAILED; + } + + if (media->hdr.result != RESULT_SUCCESS) { + ERROR("Unexpected response from media query (%x)!\n", media->hdr.result); + return CUPS_BACKEND_FAILED; + } + + return 0; +} static void *kodak605_init(void) { @@ -101,6 +206,10 @@ static void *kodak605_init(void) } memset(ctx, 0, sizeof(struct kodak605_ctx)); + ctx->media = malloc(MAX_MEDIA_LEN); + + ctx->type = P_ANY; + return ctx; } @@ -111,15 +220,23 @@ static void kodak605_attach(void *vctx, struct libusb_device_handle *dev, struct libusb_device *device; struct libusb_device_descriptor desc; - UNUSED(jobid); - - ctx->dev = dev; + ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; device = libusb_get_device(dev); libusb_get_device_descriptor(device, &desc); + ctx->type = lookup_printer_type(&kodak605_backend, + desc.idVendor, desc.idProduct); + + /* Make sure jobid is sane */ + ctx->jobid = (jobid & 0x7f) + 1; + + /* Query media info */ + if (kodak605_get_media(ctx, ctx->media)) { + ERROR("Can't query media\n"); + } } static void kodak605_teardown(void *vctx) { @@ -190,236 +307,176 @@ static int kodak605_read_parse(void *vctx, int data_fd) { return CUPS_BACKEND_OK; } -static int kodak605_main_loop(void *vctx, int copies) { - struct kodak605_ctx *ctx = vctx; - - uint8_t rdbuf[READBACK_LEN]; - uint8_t rdbuf2[READBACK_LEN]; - uint8_t cmdbuf[CMDBUF_LEN]; - - int last_state = -1, state = S_IDLE; - int num, ret; - int pending = 0; - - if (!ctx) - return CUPS_BACKEND_FAILED; - - /* Printer handles generating copies.. */ - if (ctx->hdr.copies < copies) - ctx->hdr.copies = copies; - copies = 1; - -top: - if (state != last_state) { - if (dyesub_debug) - DEBUG("last_state %d new %d\n", last_state, state); - } +static int kodak605_get_status(struct kodak605_ctx *ctx, struct kodak605_status *sts) +{ + uint8_t cmdbuf[4]; - if (pending) - goto skip_query; + int ret, num = 0; /* Send Status Query */ cmdbuf[0] = 0x01; cmdbuf[1] = 0x00; cmdbuf[2] = 0x00; cmdbuf[3] = 0x00; - if ((ret = send_data(ctx->dev, ctx->endp_down, - cmdbuf, CMDBUF_LEN))) - return CUPS_BACKEND_FAILED; + cmdbuf, sizeof(cmdbuf)))) + return ret; -skip_query: /* Read in the printer status */ ret = read_data(ctx->dev, ctx->endp_up, - rdbuf, READBACK_LEN, &num); + (uint8_t*) sts, sizeof(*sts), &num); if (ret < 0) return ret; - if (num < 10) { - ERROR("Short read! (%d/%d)\n", num, 10); + if (num < (int)sizeof(*sts)) { + ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(*sts)); 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); + if (sts->hdr.result != RESULT_SUCCESS) { + ERROR("Unexpected response from status query (%x)!\n", sts->hdr.result); return CUPS_BACKEND_FAILED; } - if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { - memcpy(rdbuf2, rdbuf, READBACK_LEN); - } else if (state == last_state) { - sleep(1); - } - last_state = state; + return 0; +} + +static int kodak605_main_loop(void *vctx, int copies) { + struct kodak605_ctx *ctx = vctx; - fflush(stderr); + struct kodak605_status sts; - pending = 0; + int num, ret; - switch (state) { - case S_IDLE: - INFO("Waiting for printer idle\n"); -#if 0 - if (rdbuf[0] != 0x01 || - rdbuf[1] != 0x02 || - rdbuf[2] != 0x01) { - break; - } -#endif - // XXX detect media type based on readback! + if (!ctx) + return CUPS_BACKEND_FAILED; - INFO("Printing started; Sending init sequence\n"); - state = S_STARTED; + /* Printer handles generating copies.. */ + if (le16_to_cpu(ctx->hdr.copies) < copies) + ctx->hdr.copies = cpu_to_le16(copies); - break; - case S_STARTED: -#if 0 - if (rdbuf[0] != 0x01 || - rdbuf[2] != 0x00) + /* Validate against supported media list */ + for (num = 0 ; num < ctx->media->count; num++) { + if (ctx->media->entries[num].rows == ctx->hdr.rows && + ctx->media->entries[num].cols == ctx->hdr.columns) break; + } + if (num == ctx->media->count) { + ERROR("Print size unsupported by media!\n"); + return CUPS_BACKEND_HOLD; + } - /* Aappears to depend on media */ - if (rdbuf[1] != 0x0b && - rdbuf[1] != 0x03) - break; -#endif + /* Use specified jobid */ + ctx->hdr.jobid = ctx->jobid; - INFO("Sending image header\n"); - if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t*)&ctx->hdr, sizeof(ctx->hdr)))) - return CUPS_BACKEND_FAILED; - pending = 1; - state = S_SENT_HDR; - break; - case S_SENT_HDR: - INFO("Waiting for printer to accept data\n"); - if (rdbuf[0] != 0x01 || - rdbuf[6] == 0x00 || - num != 10) { - break; - } - INFO("Sending image data\n"); - if ((ret = send_data(ctx->dev, ctx->endp_down, - ctx->databuf, ctx->datalen))) + INFO("Waiting for printer idle\n"); + + while(1) { + if ((ret = kodak605_get_status(ctx, &sts))) return CUPS_BACKEND_FAILED; - INFO("Image data sent\n"); - sleep(1); /* An experiment */ - state = S_SENT_DATA; - break; - case S_SENT_DATA: - INFO("Waiting for printer to acknowledge completion\n"); -#if 0 - if (rdbuf[0] != 0x01 || - rdbuf[1] != 0x02 || - rdbuf[2] != 0x01) { + // XXX check for errors + + /* Wait for a free buffer */ + if (sts.b1_sts == BANK_STATUS_FREE || + sts.b2_sts == BANK_STATUS_FREE) { break; } -#endif - state = S_FINISHED; - break; - default: - break; - }; - if (state != S_FINISHED) - goto top; + sleep(1); + } - /* Clean up */ - if (terminate) - copies = 1; + { + INFO("Sending image header\n"); + if ((ret = send_data(ctx->dev, ctx->endp_down, + (uint8_t*)&ctx->hdr, sizeof(ctx->hdr)))) + return CUPS_BACKEND_FAILED; - INFO("Print complete (%d copies remaining)\n", copies - 1); + struct kodak605_sts_hdr resp; + if ((ret = read_data(ctx->dev, ctx->endp_up, + (uint8_t*) &resp, sizeof(resp), &num))) + return CUPS_BACKEND_FAILED; - if (copies && --copies) { - state = S_IDLE; - goto top; + if (resp.result != RESULT_SUCCESS) { + ERROR("Unexpected response from print command (%x)!\n", resp.result); + return CUPS_BACKEND_FAILED; + } + // XXX what about resp.sts1 or resp.sts2? } + sleep(1); - return CUPS_BACKEND_OK; -} + INFO("Sending image data\n"); + if ((ret = send_data(ctx->dev, ctx->endp_down, + ctx->databuf, ctx->datalen))) + return CUPS_BACKEND_FAILED; -static int kodak605_get_status(struct kodak605_ctx *ctx) -{ - uint8_t cmdbuf[4]; - uint8_t rdbuf[76]; + INFO("Image data sent\n"); - int ret, i, num = 0; + INFO("Waiting for printer to acknowledge completion\n"); + do { + sleep(1); + if ((ret = kodak605_get_status(ctx, &sts))) + return CUPS_BACKEND_FAILED; - /* Send Status Query */ - cmdbuf[0] = 0x01; - cmdbuf[1] = 0x00; - cmdbuf[2] = 0x00; - cmdbuf[3] = 0x00; - if ((ret = send_data(ctx->dev, ctx->endp_down, - cmdbuf, sizeof(cmdbuf)))) - return ret; + // XXX check for errors ? - /* Read in the printer status */ - ret = read_data(ctx->dev, ctx->endp_up, - rdbuf, READBACK_LEN, &num); - if (ret < 0) - return ret; + /* Wait for completion */ + if (sts.b1_id == ctx->jobid && sts.b1_complete == sts.b1_total) + break; + if (sts.b2_id == ctx->jobid && sts.b2_complete == sts.b2_total) + break; - if (num < (int)sizeof(rdbuf)) { - ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(rdbuf)); - return 4; - } + if (fast_return) { + INFO("Fast return mode enabled.\n"); + break; + } + } while(1); - DEBUG("status: "); - for (i = 0 ; i < num ; i++) { - DEBUG2("%02x ", rdbuf[i]); - } + INFO("Print complete\n"); - return 0; + return CUPS_BACKEND_OK; +} + +static void kodak605_dump_status(struct kodak605_status *sts) +{ + INFO("Bank 1: %s Job %03u @ %03u/%03u\n", + bank_statuses(sts->b1_sts), sts->b1_id, + le16_to_cpu(sts->b1_complete), le16_to_cpu(sts->b1_complete)); + INFO("Bank 2: %s Job %03u @ %03u/%03u\n", + bank_statuses(sts->b2_sts), sts->b2_id, + le16_to_cpu(sts->b2_complete), le16_to_cpu(sts->b2_complete)); + + INFO("Lifetime prints : %d\n", be32_to_cpu(sts->ctr_life)); + INFO("Cutter actuations : %d\n", be32_to_cpu(sts->ctr_cut)); + INFO("Head prints : %d\n", be32_to_cpu(sts->ctr_head)); + INFO("Media prints : %d\n", be32_to_cpu(sts->ctr_media)); + INFO("Donor : %d%%\n", sts->donor); } static void kodak605_dump_mediainfo(struct kodak605_media_list *media) { int i; + if (media->type == KODAK_MEDIA_NONE) { + DEBUG("No Media Loaded\n"); + return; + } + + if (media->type == KODAK_MEDIA_6R) { + DEBUG("Media type: 6R (Kodak 197-4096 or equivalent)\n"); + } else { + DEBUG("Media type %02x (unknown, please report!)\n", media->type); + } + DEBUG("Legal print sizes:\n"); for (i = 0 ; i < media->count ; i++) { - DEBUG("\t%d: %dx%d\n", 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, num = 0; - - /* Send Media Query */ - cmdbuf[0] = 0x02; - cmdbuf[1] = 0x00; - cmdbuf[2] = 0x00; - cmdbuf[3] = 0x00; - if ((ret = send_data(ctx->dev, ctx->endp_down, - cmdbuf, sizeof(cmdbuf)))) - return ret; - - /* Read in the printer status */ - ret = read_data(ctx->dev, ctx->endp_up, - rdbuf, READBACK_LEN, &num); - if (ret < 0) - return ret; - - if (num < (int)sizeof(rdbuf)) { - ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(rdbuf)); - return 4; - } - - kodak605_dump_mediainfo((struct kodak605_media_list *)rdbuf); - - return 0; -} - #define UPDATE_SIZE 1536 static int kodak605_set_tonecurve(struct kodak605_ctx *ctx, char *fname) { @@ -507,29 +564,29 @@ static int kodak605_cmdline_arg(void *vctx, int argc, char **argv) struct kodak605_ctx *ctx = vctx; int i, j = 0; + if (!ctx) + return -1; + /* Reset arg parsing */ optind = 1; opterr = 0; - while ((i = getopt(argc, argv, "C:ms")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "C:ms")) >= 0) { switch(i) { + GETOPT_PROCESS_GLOBAL case 'C': - if (ctx) { - j = kodak605_set_tonecurve(ctx, optarg); - break; - } - return 1; + j = kodak605_set_tonecurve(ctx, optarg); + break; case 'm': - if (ctx) { - j = kodak605_get_media(ctx); - break; - } - return 1; - case 's': - if (ctx) { - j = kodak605_get_status(ctx); - break; - } - return 1; + kodak605_dump_mediainfo(ctx->media); + break; + case 's': { + struct kodak605_status sts; + + j = kodak605_get_status(ctx, &sts); + if (!j) + kodak605_dump_status(&sts); + break; + } default: break; /* Ignore completely */ } @@ -543,7 +600,7 @@ static int kodak605_cmdline_arg(void *vctx, int argc, char **argv) /* Exported */ struct dyesub_backend kodak605_backend = { .name = "Kodak 605", - .version = "0.21", + .version = "0.24", .uri_prefix = "kodak605", .cmdline_usage = kodak605_cmdline, .cmdline_arg = kodak605_cmdline_arg, @@ -563,76 +620,23 @@ struct dyesub_backend kodak605_backend = { Spool file consists of 14-byte header followed by plane-interleaved BGR data. Native printer resolution is 1844 pixels per row, and 1240 or 2434 rows. + All fields are LITTLE ENDIAN unless otherwise specified + Header: 01 40 0a 00 Fixed header - XX Unknown, always 01 in file, but 02 seen in sniffs sometimes - CC Number of copies (1-255) - 00 Always 0x00 - WW WW Number of columns, little endian. (Fixed at 1844) - HH HH Number of rows, little endian. (1240 or 2434) + XX Job ID + CC CC Number of copies (1-???) + WW WW Number of columns (Fixed at 1844) + HH HH Number of rows (1240 or 2434) DD 0x01 (4x6) 0x03 (8x6) LL Laminate, 0x01 (off) or 0x02 (on) - 00 + 00 Print Mode (???) ************************************************************************ - Kodak 605 Printer Comms: - - [[file header]] 01 40 0a 00 01 CC 00 WW WW HH HH MT LL 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 01 00 00 00 00 00 - --> 01 00 00 00 -<- [76 bytes -- status ] + Note: Kodak 605 is actually a Shinko CHC-S1545-5A - 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 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 - 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 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 40 0a 00 01 01 00 34 07 d8 04 01 02 00 [[ unmodified header ]] -<- 01 00 00 00 00 00 XX 00 00 00 [[ Seen 0x01 and 0x02 ] --> image data! --> image data! - --> 01 00 00 00 -<- [76 bytes -- status ?? ] - - 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 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 - - Write tone curve data: - --> 04 c0 0a 00 03 01 00 00 00 00 LL LL 00 00 [[ LL LL == 0x0600 in LE ]] -<- 01 00 00 00 00 00 XX 00 00 00 [[ Seen 0x01 and 0x02 ] - --> [[ 1536 bytes of LE tone curve data ]] + ************************************************************************ */ diff --git a/src/cups/kodak6800_print.c b/src/cups/kodak6800_print.c index 51093b8..1e77850 100644 --- a/src/cups/kodak6800_print.c +++ b/src/cups/kodak6800_print.c @@ -39,6 +39,8 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND kodak6800_backend + #include "backend_common.h" #define USB_VID_KODAK 0x040A @@ -47,50 +49,155 @@ /* File header */ struct kodak6800_hdr { - 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; + uint8_t hdr[7]; /* Always 03 1b 43 48 43 0a 00 */ + uint8_t jobid; /* Non-zero */ + uint16_t copies; /* BE, in BCD format (1-9999) */ uint16_t columns; /* BE */ uint16_t rows; /* BE */ - uint8_t size; /* 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 or 0x01 (for 4x6 on 6x8 media) */ + uint8_t mode; /* 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 status; /* STATUS_* */ + uint8_t status1; /* STATUS1_* */ + uint32_t status2; /* STATUS2_* */ 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 */ + uint32_t lifetime; /* Lifetime Prints (BE) */ + uint32_t maint; /* Maint Prints (BE) */ + uint32_t media; /* Media Prints (6850), Unknown (6800) (BE) */ + uint32_t cutter; /* Cutter Actuations (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]; + uint8_t errtype; /* seen 0x00 or 0xd0 */ + uint8_t donor; /* Percentage, 0-100 */ + uint16_t main_boot; /* Always 003 */ + uint16_t main_fw; /* seen 652, 656, 670, 671 (6850) and 232 (6800) */ + uint16_t dsp_boot; /* Always 001 */ + uint16_t dsp_fw; /* Seen 540, 541, 560 (6850) and 131 (6800) */ + uint8_t b1_jobid; + uint8_t b2_jobid; + uint16_t b1_remain; /* Remaining prints in job */ + uint16_t b1_complete; /* Completed prints in job */ + uint16_t b1_total; /* Total prints in job */ + uint16_t b2_remain; /* Remaining prints in job */ + uint16_t b2_complete; /* Completed prints in job */ + uint16_t b2_total; /* Total prints in job */ + uint8_t curve_status; /* Always seems to be 0x00 */ } __attribute__((packed)); +enum { + CMD_CODE_OK = 1, + CMD_CODE_BAD = 2, +}; + +enum { + STATUS_PRINTING = 1, + STATUS_IDLE = 2, +}; + +enum { + STATE_STATUS1_STANDBY = 1, + STATE_STATUS1_ERROR = 2, + STATE_STATUS1_WAIT = 3, +}; + +#define STATE_STANDBY_STATUS2 0x0 + +enum { + WAIT_STATUS2_INIT = 0, + WAIT_STATUS2_RIBBON = 1, + WAIT_STATUS2_THERMAL = 2, + WAIT_STATUS2_OPERATING = 3, + WAIT_STATUS2_BUSY = 4, +}; + +#define ERROR_STATUS2_CTRL_CIRCUIT (1<<31) +#define ERROR_STATUS2_MECHANISM_CTRL (1<<30) +#define ERROR_STATUS2_SENSOR (1<<13) +#define ERROR_STATUS2_COVER_OPEN (1<<12) +#define ERROR_STATUS2_TEMP_SENSOR (1<<9) +#define ERROR_STATUS2_PAPER_JAM (1<<8) +#define ERROR_STATUS2_PAPER_EMPTY (1<<6) +#define ERROR_STATUS2_RIBBON_ERR (1<<4) + +enum { + CTRL_CIR_ERROR_EEPROM1 = 0x01, + CTRL_CIR_ERROR_EEPROM2 = 0x02, + CTRL_CIR_ERROR_DSP = 0x04, + CTRL_CIR_ERROR_CRC_MAIN = 0x06, + CTRL_CIR_ERROR_DL_MAIN = 0x07, + CTRL_CIR_ERROR_CRC_DSP = 0x08, + CTRL_CIR_ERROR_DL_DSP = 0x09, + CTRL_CIR_ERROR_ASIC = 0x0a, + CTRL_CIR_ERROR_DRAM = 0x0b, + CTRL_CIR_ERROR_DSPCOMM = 0x29, +}; + +enum { + MECH_ERROR_HEAD_UP = 0x01, + MECH_ERROR_HEAD_DOWN = 0x02, + MECH_ERROR_MAIN_PINCH_UP = 0x03, + MECH_ERROR_MAIN_PINCH_DOWN = 0x04, + MECH_ERROR_SUB_PINCH_UP = 0x05, + MECH_ERROR_SUB_PINCH_DOWN = 0x06, + MECH_ERROR_FEEDIN_PINCH_UP = 0x07, + MECH_ERROR_FEEDIN_PINCH_DOWN = 0x08, + MECH_ERROR_FEEDOUT_PINCH_UP = 0x09, + MECH_ERROR_FEEDOUT_PINCH_DOWN = 0x0a, + MECH_ERROR_CUTTER_LR = 0x0b, + MECH_ERROR_CUTTER_RL = 0x0c, +}; + +enum { + SENSOR_ERROR_CUTTER = 0x05, + SENSOR_ERROR_HEAD_DOWN = 0x09, + SENSOR_ERROR_HEAD_UP = 0x0a, + SENSOR_ERROR_MAIN_PINCH_DOWN = 0x0b, + SENSOR_ERROR_MAIN_PINCH_UP = 0x0c, + SENSOR_ERROR_FEED_PINCH_DOWN = 0x0d, + SENSOR_ERROR_FEED_PINCH_UP = 0x0e, + SENSOR_ERROR_EXIT_PINCH_DOWN = 0x0f, + SENSOR_ERROR_EXIT_PINCH_UP = 0x10, + SENSOR_ERROR_LEFT_CUTTER = 0x11, + SENSOR_ERROR_RIGHT_CUTTER = 0x12, + SENSOR_ERROR_CENTER_CUTTER = 0x13, + SENSOR_ERROR_UPPER_CUTTER = 0x14, + SENSOR_ERROR_PAPER_FEED_COVER = 0x15, +}; + +enum { + TEMP_SENSOR_ERROR_HEAD_HIGH = 0x01, + TEMP_SENSOR_ERROR_HEAD_LOW = 0x02, + TEMP_SENSOR_ERROR_ENV_HIGH = 0x03, + TEMP_SENSOR_ERROR_ENV_LOW = 0x04, +}; + +enum { + COVER_OPEN_ERROR_UPPER = 0x01, + COVER_OPEN_ERROR_LOWER = 0x02, +}; + +enum { + PAPER_EMPTY_ERROR = 0x00, +}; + +enum { + RIBBON_ERROR = 0x00, +}; + +enum { + CURVE_TABLE_STATUS_INITIAL = 0x00, + CURVE_TABLE_STATUS_USERSET = 0x01, + CURVE_TABLE_STATUS_CURRENT = 0x02, +}; + struct kodak6800_printsize { uint8_t hdr; /* Always 0x06 */ uint16_t width; /* BE */ uint16_t height; /* BE */ - uint8_t hdr2; /* Always 0x01 */ + uint8_t type; /* MEDIA_TYPE_* [ ie paper ] */ 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]; @@ -106,7 +213,9 @@ struct kodak68x0_media_readback { struct kodak6800_printsize sizes[]; } __attribute__((packed)); -#define KODAK68x0_MEDIA_6R 0x0b +#define KODAK68x0_MEDIA_6R 0x0b +#define KODAK68x0_MEDIA_UNK 0x03 +#define KODAK68x0_MEDIA_NONE 0x00 #define CMDBUF_LEN 17 @@ -117,39 +226,60 @@ struct kodak6800_ctx { uint8_t endp_down; int type; - int media; + + uint8_t jobid; + + struct kodak68x0_media_readback *media; struct kodak6800_hdr hdr; uint8_t *databuf; int datalen; }; -#define READBACK_LEN 68 -char *kodak68x0_error_codes(uint8_t code1, uint8_t code2) +/* Baseline commands */ +static int kodak6800_do_cmd(struct kodak6800_ctx *ctx, + void *cmd, int cmd_len, + void *resp, int resp_len, + int *actual_len) { - if (code1 == 0x80 && code2 == 0xd0) - return "Control Error"; + int ret; + + /* Write command */ + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmd, cmd_len))) + return (ret < 0) ? ret : -99; + + /* Read response */ + ret = read_data(ctx->dev, ctx->endp_up, + resp, resp_len, actual_len); + if (ret < 0) + return ret; - return "Unknown Type (please report!)"; + return 0; } static void kodak68x0_dump_mediainfo(struct kodak68x0_media_readback *media) { int i; + if (media->media == KODAK68x0_MEDIA_NONE) { + INFO("No Media Loaded\n"); + return; + } + if (media->media == KODAK68x0_MEDIA_6R) { - DEBUG("Media type: 6R (Kodak 197-4096 or equivalent)\n"); + INFO("Media type: 6R (Kodak 197-4096 or equivalent)\n"); } else { - DEBUG("Media type %02x (unknown, please report!)\n", media->media); + INFO("Media type %02x (unknown, please report!)\n", media->media); } - DEBUG("Legal print sizes:\n"); + INFO("Legal print sizes:\n"); for (i = 0 ; i < media->count ; i++) { - DEBUG("\t%d: %dx%d (%02x) %s\n", i, + INFO("\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"); + INFO("\n"); } static int kodak6800_get_mediainfo(struct kodak6800_ctx *ctx, struct kodak68x0_media_readback *media) @@ -167,62 +297,270 @@ static int kodak6800_get_mediainfo(struct kodak6800_ctx *ctx, struct kodak68x0_m 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) + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, req, sizeof(req), + media, MAX_MEDIA_LEN, + &num))) 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 || + if (media->hdr != CMD_CODE_OK || media->null[0] != 0x00) { ERROR("Unexpected response from media query!\n"); return CUPS_BACKEND_STOP; } - ctx->media = media->media; + return 0; +} + +static int kodak68x0_canceljob(struct kodak6800_ctx *ctx, + int id) +{ + uint8_t req[16]; + int ret, num; + struct kodak68x0_status_readback sts; + + memset(req, 0, sizeof(req)); + + req[0] = 0x03; + req[1] = 0x1b; + req[2] = 0x43; + req[3] = 0x48; + req[4] = 0x43; + req[5] = 0x13; + req[6] = id; + + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, req, sizeof(req), + &sts, sizeof(sts), + &num))) + return ret; + + /* Validate proper response */ + if (sts.hdr != CMD_CODE_OK) { + ERROR("Unexpected response from job cancel!\n"); + return -99; + } return 0; } +/* Structure dumps */ +static char *kodak68x0_status_str(struct kodak68x0_status_readback *resp) +{ + switch(resp->status1) { + case STATE_STATUS1_STANDBY: + return "Standby (Ready)"; + case STATE_STATUS1_WAIT: + switch (be32_to_cpu(resp->status2)) { + case WAIT_STATUS2_INIT: + return "Wait (Initializing)"; + case WAIT_STATUS2_RIBBON: + return "Wait (Ribbon Winding)"; + case WAIT_STATUS2_THERMAL: + return "Wait (Thermal Protection)"; + case WAIT_STATUS2_OPERATING: + return "Wait (Operating)"; + case WAIT_STATUS2_BUSY: + return "Wait (Busy)"; + default: + return "Wait (Unknown)"; + } + case STATE_STATUS1_ERROR: + switch (be32_to_cpu(resp->status2)) { + case ERROR_STATUS2_CTRL_CIRCUIT: + switch (resp->errcode) { + case CTRL_CIR_ERROR_EEPROM1: + return "Error (EEPROM1)"; + case CTRL_CIR_ERROR_EEPROM2: + return "Error (EEPROM2)"; + case CTRL_CIR_ERROR_DSP: + return "Error (DSP)"; + case CTRL_CIR_ERROR_CRC_MAIN: + return "Error (Main CRC)"; + case CTRL_CIR_ERROR_DL_MAIN: + return "Error (Main Download)"; + case CTRL_CIR_ERROR_CRC_DSP: + return "Error (DSP CRC)"; + case CTRL_CIR_ERROR_DL_DSP: + return "Error (DSP Download)"; + case CTRL_CIR_ERROR_ASIC: + return "Error (ASIC)"; + case CTRL_CIR_ERROR_DRAM: + return "Error (DRAM)"; + case CTRL_CIR_ERROR_DSPCOMM: + return "Error (DSP Communincation)"; + default: + return "Error (Unknown Circuit)"; + } + case ERROR_STATUS2_MECHANISM_CTRL: + switch (resp->errcode) { + case MECH_ERROR_HEAD_UP: + return "Error (Head Up Mechanism)"; + case MECH_ERROR_HEAD_DOWN: + return "Error (Head Down Mechanism)"; + case MECH_ERROR_MAIN_PINCH_UP: + return "Error (Main Pinch Up Mechanism)"; + case MECH_ERROR_MAIN_PINCH_DOWN: + return "Error (Main Pinch Down Mechanism)"; + case MECH_ERROR_SUB_PINCH_UP: + return "Error (Sub Pinch Up Mechanism)"; + case MECH_ERROR_SUB_PINCH_DOWN: + return "Error (Sub Pinch Down Mechanism)"; + case MECH_ERROR_FEEDIN_PINCH_UP: + return "Error (Feed-in Pinch Up Mechanism)"; + case MECH_ERROR_FEEDIN_PINCH_DOWN: + return "Error (Feed-in Pinch Down Mechanism)"; + case MECH_ERROR_FEEDOUT_PINCH_UP: + return "Error (Feed-out Pinch Up Mechanism)"; + case MECH_ERROR_FEEDOUT_PINCH_DOWN: + return "Error (Feed-out Pinch Down Mechanism)"; + case MECH_ERROR_CUTTER_LR: + return "Error (Left->Right Cutter)"; + case MECH_ERROR_CUTTER_RL: + return "Error (Right->Left Cutter)"; + default: + return "Error (Unknown Mechanism)"; + } + case ERROR_STATUS2_SENSOR: + switch (resp->errcode) { + case SENSOR_ERROR_CUTTER: + return "Error (Cutter Sensor)"; + case SENSOR_ERROR_HEAD_DOWN: + return "Error (Head Down Sensor)"; + case SENSOR_ERROR_HEAD_UP: + return "Error (Head Up Sensor)"; + case SENSOR_ERROR_MAIN_PINCH_DOWN: + return "Error (Main Pinch Down Sensor)"; + case SENSOR_ERROR_MAIN_PINCH_UP: + return "Error (Main Pinch Up Sensor)"; + case SENSOR_ERROR_FEED_PINCH_DOWN: + return "Error (Feed Pinch Down Sensor)"; + case SENSOR_ERROR_FEED_PINCH_UP: + return "Error (Feed Pinch Up Sensor)"; + case SENSOR_ERROR_EXIT_PINCH_DOWN: + return "Error (Exit Pinch Up Sensor)"; + case SENSOR_ERROR_EXIT_PINCH_UP: + return "Error (Exit Pinch Up Sensor)"; + case SENSOR_ERROR_LEFT_CUTTER: + return "Error (Left Cutter Sensor)"; + case SENSOR_ERROR_RIGHT_CUTTER: + return "Error (Right Cutter Sensor)"; + case SENSOR_ERROR_CENTER_CUTTER: + return "Error (Center Cutter Sensor)"; + case SENSOR_ERROR_UPPER_CUTTER: + return "Error (Upper Cutter Sensor)"; + case SENSOR_ERROR_PAPER_FEED_COVER: + return "Error (Paper Feed Cover)"; + default: + return "Error (Unknown Sensor)"; + } + case ERROR_STATUS2_COVER_OPEN: + switch (resp->errcode) { + case COVER_OPEN_ERROR_UPPER: + return "Error (Upper Cover Open)"; + case COVER_OPEN_ERROR_LOWER: + return "Error (Lower Cover Open)"; + default: + return "Error (Unknown Cover Open)"; + } + case ERROR_STATUS2_TEMP_SENSOR: + switch (resp->errcode) { + case TEMP_SENSOR_ERROR_HEAD_HIGH: + return "Error (Head Temperature High)"; + case TEMP_SENSOR_ERROR_HEAD_LOW: + return "Error (Head Temperature Low)"; + case TEMP_SENSOR_ERROR_ENV_HIGH: + return "Error (Environmental Temperature High)"; + case TEMP_SENSOR_ERROR_ENV_LOW: + return "Error (Environmental Temperature Low)"; + default: + return "Error (Unknown Temperature)"; + } + case ERROR_STATUS2_PAPER_JAM: + return "Error (Paper Jam)"; + case ERROR_STATUS2_PAPER_EMPTY: + return "Error (Paper Empty)"; + case ERROR_STATUS2_RIBBON_ERR: + return "Error (Ribbon)"; + default: + return "Error (Unknown)"; + } + default: + return "Unknown!"; + } +} + 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); + char *detail; + + switch (status->status) { + case STATUS_PRINTING: + detail = "Printing"; + break; + case STATUS_IDLE: + detail = "Idle"; + break; + default: + detail = "Unknown"; + break; + } + INFO("Printer Status : %s\n", detail); + + INFO("Printer State : %s # %02x %08x %02x\n", + kodak68x0_status_str(status), + status->status1, be32_to_cpu(status->status2), status->errcode); + + INFO("Bank 1 ID: %d\n", status->b1_jobid); + INFO("\tPrints: %d/%d complete\n", + be16_to_cpu(status->b1_complete), be16_to_cpu(status->b1_total)); + INFO("Bank 2 ID: %d\n", status->b2_jobid); + INFO("\tPrints: %d/%d complete\n", + be16_to_cpu(status->b2_complete), be16_to_cpu(status->b2_total)); + + switch (status->curve_status) { + case CURVE_TABLE_STATUS_INITIAL: + detail = "Initial/Default"; + break; + case CURVE_TABLE_STATUS_USERSET: + detail = "User Stored"; + break; + case CURVE_TABLE_STATUS_CURRENT: + detail = "Current"; + break; + default: + detail = "Unknown"; + break; } - DEBUG("Total prints : %d\n", be32_to_cpu(status->ctr0)); - DEBUG("Media prints : %d\n", be32_to_cpu(status->ctr2)); + INFO("Tone Curve Status: %s\n", detail); + + INFO("Counters:\n"); + INFO("\tLifetime : %d\n", be32_to_cpu(status->lifetime)); + INFO("\tThermal Head : %d\n", be32_to_cpu(status->maint)); + INFO("\tCutter : %d\n", be32_to_cpu(status->cutter)); + if (ctx->type == P_KODAK_6850) { int max; - if (ctx->media == KODAK68x0_MEDIA_6R) { + + INFO("\tMedia : %d\n", be32_to_cpu(status->media)); + + if (ctx->media->media == KODAK68x0_MEDIA_6R) { max = 375; } else { max = 0; } if (max) { - DEBUG("Remaining prints : %d\n", max - be32_to_cpu(status->ctr2)); + INFO("\t Remaining : %d\n", max - be32_to_cpu(status->media)); } else { - DEBUG("Remaining prints : Unknown media type\n"); + INFO("\t Remaining : Unknown\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"); + INFO("Main FW version: %d\n", be16_to_cpu(status->main_fw)); + INFO("DSP FW version : %d\n", be16_to_cpu(status->dsp_fw)); + INFO("Donor : %d%%\n", status->donor); + INFO("\n"); } static int kodak6800_get_status(struct kodak6800_ctx *ctx, @@ -241,25 +579,16 @@ static int kodak6800_get_status(struct kodak6800_ctx *ctx, req[4] = 0x43; req[5] = 0x03; - /* Send request */ - if ((ret = send_data(ctx->dev, ctx->endp_down, - req, sizeof(req)))) + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, req, sizeof(req), + status, sizeof(*status), + &num))) 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) { + /* Validate proper response */ + if (status->hdr != CMD_CODE_OK) { ERROR("Unexpected response from status query!\n"); - return CUPS_BACKEND_FAILED; + return -99; } return 0; @@ -269,10 +598,6 @@ static int kodak6800_get_status(struct kodak6800_ctx *ctx, #define UPDATE_SIZE 1536 static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname) { - libusb_device_handle *dev = ctx->dev; - uint8_t endp_down = ctx->endp_down; - uint8_t endp_up = ctx->endp_up; - uint8_t cmdbuf[16]; uint8_t respbuf[64]; int ret, num = 0; @@ -304,18 +629,15 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname) cmdbuf[14] = 0x00; cmdbuf[15] = 0x00; - if ((ret = send_data(dev, endp_down, - cmdbuf, 16))) - goto done; - - ret = read_data(dev, endp_up, - respbuf, sizeof(respbuf), &num); - if (ret < 0) - goto done; - - if (num != 51) { - ERROR("Short read! (%d/%d)\n", num, 51); - ret = 4; + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, cmdbuf, sizeof(cmdbuf), + respbuf, sizeof(respbuf), + &num))) + + /* Validate proper response */ + if (respbuf[0] != CMD_CODE_OK) { + ERROR("Unexpected response from tonecurve query!\n"); + ret = -99; goto done; } @@ -332,13 +654,10 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname) cmdbuf[9] = 0x45; cmdbuf[10] = 0x20; for (i = 0 ; i < 24 ; i++) { - if ((ret = send_data(dev, endp_down, - cmdbuf, 11))) - goto done; - - ret = read_data(dev, endp_up, - respbuf, sizeof(respbuf), &num); - if (ret < 0) + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, cmdbuf, sizeof(cmdbuf), + respbuf, sizeof(respbuf), + &num))) goto done; if (num != 64) { @@ -371,15 +690,11 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname) /* We're done */ free(data); - return 0; + return ret; } static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname) { - libusb_device_handle *dev = ctx->dev; - uint8_t endp_down = ctx->endp_down; - uint8_t endp_up = ctx->endp_up; - uint8_t cmdbuf[64]; uint8_t respbuf[64]; int ret, num = 0; @@ -392,7 +707,7 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname) ERROR("Memory Allocation Failure\n"); return -1; } - + INFO("Set Tone Curve from '%s'\n", fname); /* Read in file */ @@ -430,21 +745,24 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname) cmdbuf[14] = 0x00; cmdbuf[15] = 0x00; - if ((ret = send_data(dev, endp_down, - cmdbuf, 16))) - goto done; - - ret = read_data(dev, endp_up, - respbuf, sizeof(respbuf), &num); - if (ret < 0) - goto done; - + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, cmdbuf, sizeof(cmdbuf), + respbuf, sizeof(respbuf), + &num))) + + /* Validate proper response */ if (num != 51) { ERROR("Short read! (%d/%d)\n", num, 51); ret = 4; goto done; } + if (respbuf[0] != CMD_CODE_OK) { + ERROR("Unexpected response from tonecurve set!\n"); + ret = -99; + goto done; + } + ptr = (uint8_t*) data; remain = UPDATE_SIZE; while (remain > 0) { @@ -456,24 +774,23 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname) remain -= count; ptr += count; - /* Send next block over */ - if ((ret = send_data(dev, endp_down, - cmdbuf, count+1))) - goto done; + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, cmdbuf, count + 1, + respbuf, sizeof(respbuf), + &num))) - - ret = read_data(dev, endp_up, - respbuf, sizeof(respbuf), &num); - if (ret < 0) - goto done; - if (num != 51) { ERROR("Short read! (%d/%d)\n", num, 51); ret = 4; goto done; } + if (respbuf[0] != CMD_CODE_OK) { + ERROR("Unexpected response from tonecurve set!\n"); + ret = -99; + goto done; + } }; - + done: /* We're done */ free(data); @@ -482,6 +799,12 @@ done: static int kodak6800_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) { + struct kodak6800_ctx ctx = { + .dev = dev, + .endp_up = endp_up, + .endp_down = endp_down, + }; + int ret; int num; @@ -496,23 +819,19 @@ static int kodak6800_query_serno(struct libusb_device_handle *dev, uint8_t endp_ req[2] = 0x43; req[3] = 0x48; req[4] = 0x43; - req[5] = 0x03; + req[5] = 0x12; - /* Send request */ - if ((ret = send_data(dev, endp_down, - req, sizeof(req)))) + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(&ctx, req, sizeof(req), + resp, sizeof(resp), + &num))) 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; + return -2; } + strncpy(buf, (char*)resp+24, buf_len); buf[buf_len-1] = 0; @@ -521,45 +840,35 @@ static int kodak6800_query_serno(struct libusb_device_handle *dev, uint8_t endp_ static int kodak6850_send_init(struct kodak6800_ctx *ctx) { - uint8_t cmdbuf[64]; + uint8_t cmdbuf[16]; uint8_t rdbuf[64]; int ret = 0, num = 0; - memset(cmdbuf, 0, CMDBUF_LEN); + memset(cmdbuf, 0, sizeof(cmdbuf)); 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; - } - + + /* Issue command and get response */ + if ((ret = kodak6800_do_cmd(ctx, cmdbuf, sizeof(cmdbuf), + rdbuf, sizeof(rdbuf), + &num))) + return -1; + if (num != 51) { - ERROR("Unexpected readback from printer (%d/%d from 0x%02x))\n", - num, READBACK_LEN, ctx->endp_up); + ERROR("Short read! (%d/%d)\n", num, 51); return CUPS_BACKEND_FAILED; } - - if (rdbuf[0] != 0x01 || + + if (rdbuf[0] != CMD_CODE_OK || 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) { @@ -575,6 +884,7 @@ static void kodak6800_cmdline(void) DEBUG("\t\t[ -C filename ] # Set tone curve\n"); DEBUG("\t\t[ -m ] # Query media\n"); DEBUG("\t\t[ -s ] # Query status\n"); + DEBUG("\t\t[ -X jobid ] # Cancel Job\n"); } static int kodak6800_cmdline_arg(void *vctx, int argc, char **argv) @@ -582,49 +892,31 @@ static int kodak6800_cmdline_arg(void *vctx, int argc, char **argv) struct kodak6800_ctx *ctx = vctx; int i, j = 0; - /* Reset arg parsing */ - optind = 1; - opterr = 0; - while ((i = getopt(argc, argv, "C:c:ms")) >= 0) { + if (!ctx) + return -1; + + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "C:c:msX:")) >= 0) { switch(i) { + GETOPT_PROCESS_GLOBAL case 'c': - if (ctx) { - j = kodak6800_get_tonecurve(ctx, optarg); - break; - } - return 1; + j = kodak6800_get_tonecurve(ctx, optarg); + break; case 'C': - if (ctx) { - j = kodak6800_set_tonecurve(ctx, optarg); - break; - } - return 1; + j = kodak6800_set_tonecurve(ctx, optarg); + break; 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; - + kodak68x0_dump_mediainfo(ctx->media); + break; + case 's': { + struct kodak68x0_status_readback status; + j = kodak6800_get_status(ctx, &status); + if (!j) + kodak68x0_dump_status(ctx, &status); + break; + } + case 'X': + j = kodak68x0_canceljob(ctx, atoi(optarg)); + break; default: break; /* Ignore completely */ } @@ -635,7 +927,6 @@ static int kodak6800_cmdline_arg(void *vctx, int argc, char **argv) return 0; } - static void *kodak6800_init(void) { struct kodak6800_ctx *ctx = malloc(sizeof(struct kodak6800_ctx)); @@ -645,8 +936,9 @@ static void *kodak6800_init(void) } memset(ctx, 0, sizeof(struct kodak6800_ctx)); + ctx->media = malloc(MAX_MEDIA_LEN); + ctx->type = P_ANY; - ctx->media = -1; return ctx; } @@ -658,20 +950,23 @@ static void kodak6800_attach(void *vctx, struct libusb_device_handle *dev, struct libusb_device *device; struct libusb_device_descriptor desc; - UNUSED(jobid); - - ctx->dev = dev; + ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; device = libusb_get_device(dev); libusb_get_device_descriptor(device, &desc); - /* Map out device type */ - if (desc.idProduct == USB_PID_KODAK_6850) - ctx->type = P_KODAK_6850; - else - ctx->type = P_KODAK_6800; + ctx->type = lookup_printer_type(&kodak6800_backend, + desc.idVendor, desc.idProduct); + + /* Ensure jobid is sane */ + ctx->jobid = (jobid & 0x7f) + 1; + + /* Query media info */ + if (kodak6800_get_mediainfo(ctx, ctx->media)) { + ERROR("Can't query media\n"); + } } static void kodak6800_teardown(void *vctx) { @@ -746,144 +1041,123 @@ static int kodak6800_main_loop(void *vctx, int copies) { struct kodak6800_ctx *ctx = vctx; struct kodak68x0_status_readback status; - uint8_t cmdbuf[CMDBUF_LEN]; - - uint8_t mediabuf[MAX_MEDIA_LEN]; - struct kodak68x0_media_readback *media = (struct kodak68x0_media_readback*)mediabuf; - int num, ret; if (!ctx) return CUPS_BACKEND_FAILED; + /* Fix max print count. */ + if (copies > 9999) // XXX test against remaining media + copies = 9999; + /* Printer handles generating copies.. */ - if (ctx->hdr.copies < copies) - ctx->hdr.copies = copies; - copies = 1; - - /* Query loaded media */ - INFO("Querying loaded media\n"); - ret = kodak6800_get_mediainfo(ctx, media); - if (ret < 0) - return CUPS_BACKEND_FAILED; - - /* Appears to depend on media */ - if (media->media != KODAK68x0_MEDIA_6R && - media->media != 0x03) { - ERROR("Unrecognized media type %02x\n", media->media); + ctx->hdr.copies = cpu_to_be16(uint16_to_packed_bcd(copies)); + + /* Validate media */ + if (ctx->media->media != KODAK68x0_MEDIA_6R && + ctx->media->media != KODAK68x0_MEDIA_UNK) { + ERROR("Unrecognized media type %02x\n", ctx->media->media); return CUPS_BACKEND_STOP; } /* 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) + for (num = 0 ; num < ctx->media->count; num++) { + if (ctx->media->sizes[num].height == ctx->hdr.rows && + ctx->media->sizes[num].width == ctx->hdr.columns && + ctx->media->sizes[num].code2 == 0x00) break; } - if (num == media->count) { + if (num == ctx->media->count) { ERROR("Print size unsupported by media!\n"); return CUPS_BACKEND_HOLD; } -top: INFO("Waiting for printer idle\n"); while(1) { if (kodak6800_get_status(ctx, &status)) return CUPS_BACKEND_FAILED; - 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); + if (status.status1 == STATE_STATUS1_ERROR) { + INFO("Printer State: %s # %02x %08x %02x\n", + kodak68x0_status_str(&status), + status.status1, be32_to_cpu(status.status2), status.errcode); return CUPS_BACKEND_FAILED; } - 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; - } - - 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 { + if (status.status == STATUS_IDLE) break; - } + + /* See if we have an open bank */ + if (!status.b1_remain || + !status.b2_remain) + break; + + sleep(1); } if (ctx->type == P_KODAK_6850) { - INFO("Sending 6850 init sequence\n"); +// INFO("Sending 6850 init sequence\n"); ret = kodak6850_send_init(ctx); if (ret) return ret; - 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... */ + + ctx->hdr.jobid = ctx->jobid; + +#if 0 + /* If we want to disable 4x6 rewind on 8x6 media.. */ if (ctx->hdr.size == 0x00 && - be16_to_cpu(media->sizes[0].width) == 0x0982) { - cmdbuf[14] = 0x06; - cmdbuf[16] = 0x01; + be16_to_cpu(ctx->media->sizes[0].width) == 0x0982) { + ctx->hdr.size = 0x06; + ctx->hdr.mode = 0x01; } - - INFO("Sending image header\n"); - if ((ret = send_data(ctx->dev, ctx->endp_down, - cmdbuf, CMDBUF_LEN))) +#endif + + INFO("Initiating Print Job\n"); + if ((ret = kodak6800_do_cmd(ctx, (uint8_t*) &ctx->hdr, sizeof(ctx->hdr), + &status, sizeof(status), + &num))) return ret; - sleep(1); + + if (status.hdr != CMD_CODE_OK) { + ERROR("Unexpected response from print command!\n"); + return CUPS_BACKEND_FAILED; + } + +// sleep(1); // Appears to be necessary for reliability INFO("Sending image data\n"); - if ((ret = send_data(ctx->dev, ctx->endp_down, + 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) { + do { + sleep(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); + if (status.status1 == STATE_STATUS1_ERROR) { + INFO("Printer State: %s # %02x %08x %02x\n", + kodak68x0_status_str(&status), + status.status1, be32_to_cpu(status.status2), status.errcode); return CUPS_BACKEND_FAILED; - } else { + } + + /* If all prints are complete, we're done! */ + if (status.b1_jobid == ctx->hdr.jobid && status.b1_complete == status.b1_total) + break; + if (status.b2_jobid == ctx->hdr.jobid && status.b2_complete == status.b2_total) + break; + + if (fast_return) { + INFO("Fast return mode enabled.\n"); break; } - sleep(1); - } - - /* Clean up */ - if (terminate) - copies = 1; - INFO("Print complete (%d copies remaining)\n", copies - 1); + } while (1); - if (copies && --copies) { - goto top; - } + INFO("Print complete\n"); return CUPS_BACKEND_OK; } @@ -891,7 +1165,7 @@ top: /* Exported */ struct dyesub_backend kodak6800_backend = { .name = "Kodak 6800/6850", - .version = "0.43", + .version = "0.51", .uri_prefix = "kodak6800", .cmdline_usage = kodak6800_cmdline, .cmdline_arg = kodak6800_cmdline_arg, @@ -901,7 +1175,7 @@ struct dyesub_backend kodak6800_backend = { .read_parse = kodak6800_read_parse, .main_loop = kodak6800_main_loop, .query_serno = kodak6800_query_serno, - .devices = { + .devices = { { USB_VID_KODAK, USB_PID_KODAK_6800, P_KODAK_6800, "Kodak"}, { USB_VID_KODAK, USB_PID_KODAK_6850, P_KODAK_6850, "Kodak"}, { 0, 0, 0, ""} @@ -915,148 +1189,25 @@ struct dyesub_backend kodak6800_backend = { 6850 Adds support for 5x7, with 1548 pixels per row and 2140 columns. - Header: + All fields are BIG ENDIAN unless otherwise specified. - 03 1b 43 48 43 0a 00 01 00 Fixed header - 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. - SS 0x00 (4x6) 0x06 (8x6) 0x07 (5x7 on 6850) - LL Laminate, 0x00 (off) or 0x01 (on) - UU 0x01 for multi-cut, 0x00 otherwise. + Header: - Note: For 4x6 prints on 6x8 media, print size (SS) is set to 0x06 and the - final octet is set to 0x01. + 03 1b 43 48 43 0a 00 01 Fixed header + NN NN Number of copies in BCD form (0001->9999) + WW WW Number of columns (Fixed at 1844 on 6800) + HH HH Number of rows. + SS Print size -- 0x00 (4x6) 0x06 (8x6) 0x07 (5x7 on 6850) + LL Laminate mode -- 0x00 (off) or 0x01 (on) + UU Print mode -- 0x00 (normal) or (0x01) 4x6 on 8x6 ************************************************************************ - Kodak 6800 Printer Comms: - - [[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] - - 01 02 01 00 00 00 00 00 00 00 a2 7b 00 00 a2 7b - 00 00 02 f4 00 00 e6 b1 00 00 00 1a 00 03 00 e8 - 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 [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 == 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, see above ] - 01 - -<- [51 octets] - - 01 02 01 00 00 00 00 00 00 00 a2 7b 00 00 a2 7b - 00 00 02 f4 00 00 e6 b1 00 00 00 1a 00 03 00 e8 - 00 01 00 83 01 00 00 01 00 00 00 01 00 00 00 00 [ note the "01" after "83", and the extra two "01"s ] - 00 00 00 - --> [4K of plane data] --> ... --> [4K of plane data] --> [remainder of plane data + 17 bytes of 0xff] - --> 03 1b 43 48 43 03 00 00 00 00 00 00 00 00 00 00 [status query] -<- [51 octets] - - 01 02 01 00 00 00 00 00 00 00 a2 7c 00 00 a2 7c [ note a2 7c vs a2 7b ] - 00 00 01 7a 00 00 e6 b3 00 00 00 1a 00 03 00 e8 [ note 01 7a vs 02 f4, e6 b3 vs e6 b1 ] - 00 01 00 83 01 00 00 00 00 01 00 01 00 00 00 00 [ note the moved '01' in the middle ] - 00 00 00 - --> 03 1b 43 48 43 03 00 00 00 00 00 00 00 00 00 00 [ status query ] -<- [51 octets, repeats] - - Possible Serial number query: - --> 03 1b 43 48 43 12 00 00 00 00 00 00 00 00 00 00 -<- [32 octets] - - 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 [[ Pascal string? ]] - 20 20 20 20 20 20 20 20 36 30 34 33 4d 32 38 31 [[ ..." 6043M281" ]] - --> 03 1b 43 48 43 0c 54 4f 4e 45 65 00 00 00 00 00 -<- [51 octets] - - [[ typical status response ]] - [[ Followed by reset. ]] - - Read tone curve data: - --> 03 1b 43 48 43 0c 54 4f 4e 45 72 01 00 00 00 00 -<- [51 octets] - - [[ typical status response ]] - --> 03 1b 43 48 43 0c 54 4f 4e 45 20 -<- [64 octets] - - 81 01 07 07 27 07 72 07 c8 07 f8 07 22 07 48 08 - 68 08 88 08 b3 08 db 08 f7 08 09 09 2e 09 49 09 - 65 09 80 09 aa 09 ca 09 e2 09 fa 09 12 0a 32 0a - 42 0a 66 0a 81 0a 9a 0a c3 0a d9 0a ee 0a 04 0b - --> 03 1b 43 48 43 0c 54 4f 4e 45 20 -<- [64 octets] - - [[ repeats for total of 24 packets. total of 1.5KiB. ]] - - Write tone curve data: - --> 03 1b 43 48 43 0c 54 4f 4e 45 77 01 00 00 00 00 -<- [51 octets] - - [[ typical status response ]] - --> 03 00 00 46 06 53 06 c0 06 07 07 37 07 5d 07 87 - 07 a1 07 c8 07 08 08 08 08 08 08 48 08 68 08 88 - 08 a9 08 b9 08 d9 08 f9 08 12 09 2e 09 49 09 70 - 09 89 08 99 09 ba 09 ca 08 da 09 0a 0a 24 0a 38 -<- [51 octets] - - [[ typical status response ]] - --> 03 0a 53 0a 66 0a 81 0a ... - .... --> 03 cf 38 0a 39 3d 39 79 39 96 39 b6 39 fb 39 01 - 34 0a 34 08 3a 0c 1a 10 3a -<- [51 octets] - - [[ typical status response ]] - - [[ total of 24 packets * 64, and then one final packet of 25: 1562 total. ]] - [[ It apepars the extra 25 bytes are to compensate for the leading '03' on - each of the 25 URBs. ]] - - *********************************************************************** + Note: 6800 is Shinko CHC-S1145-5A, 6850 is Shinko CHC-S1145-5B - Kodak 6850 Printer Comms: + Both are very similar to Shinko S1245! - [[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] - - 01 02 01 00 00 00 00 00 00 00 21 75 00 00 08 52 - 00 00 01 29 00 00 3b 0a 00 00 00 0e 00 03 02 90 - 00 01 02 1d 03 00 00 00 00 01 00 01 00 00 00 00 - 00 00 00 + ************************************************************************ -> 03 1b 43 48 43 4c 00 00 00 00 00 00 00 00 00 00 [???] <- [51 octets] @@ -1071,149 +1222,4 @@ struct dyesub_backend kodak6800_backend = { 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 [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 == 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, see above ] - 01 - -<- [51 octets] - - 01 02 01 00 00 00 00 00 00 00 21 75 00 00 08 52 - 00 00 01 29 00 00 3b 0a 00 00 00 0e 00 03 02 90 - 00 01 02 1d 04 00 00 01 00 00 00 01 00 00 00 00 [ note the "04" after "1d", and the moved '01' ] - 00 00 00 - --> [4K of plane data] --> ... --> [4K of plane data] --> [remainder of plane data] - --> 03 1b 43 48 43 03 00 00 00 00 00 00 00 00 00 00 [status query] -<- [51 octets] - - 01 02 01 00 00 00 00 00 00 00 21 76 00 00 08 53 [ note 21 76, 08 53, 01 2a incremented by 1 ] - 00 00 01 2a 00 00 3b 0c 00 00 00 0e 00 03 02 90 [ note 3b 0c incremeted by 2 ] - 00 01 02 1d 04 00 00 01 00 00 00 01 00 00 00 00 - 00 00 00 - - Possible Serial number query: - --> 03 1b 43 48 43 12 00 00 00 00 00 00 00 00 00 00 - 00 -<- [32 octets] - - 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 [[ Pascal string? ]] - 20 20 20 20 20 20 20 20 36 30 39 37 4b 53 34 39 [[ ..." 6097KS49" ]] - - Read tone curve data: - --> 03 1b 43 48 43 0c 54 4f 4e 45 72 01 00 00 00 00 -<- [51 octets] - - [[ typical status response ]] - --> 03 1b 43 48 43 0c 54 4f 4e 45 20 -<- [64 octets] - - 81 01 07 07 27 07 72 07 c8 07 f8 07 22 07 48 08 - 68 08 88 08 b3 08 db 08 f7 08 09 09 2e 09 49 09 - 65 09 80 09 aa 09 ca 09 e2 09 fa 09 12 0a 32 0a - 42 0a 66 0a 81 0a 9a 0a c3 0a d9 0a ee 0a 04 0b - --> 03 1b 43 48 43 0c 54 4f 4e 45 20 -<- [64 octets] - - [[ repeats for total of 24 packets. total of 1.5KiB. ]] - --> 03 1b 43 48 43 0c 54 4f 4e 45 65 00 00 00 00 00 -<- [51 octets] - - [[ typical status response ]] - - Maybe this resets the calibration table: - --> 03 1b 43 48 43 05 00 00 00 00 00 00 00 00 00 00 [???] -<- [34 octets] - - 01 00 04 00 00 00 01 00 01 00 02 00 00 00 01 00 - 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 00 00 - - Write tone curve data: - --> 03 1b 43 48 43 0c 54 4f 4e 45 77 01 00 00 00 00 -<- [51 octets] - - [[ typical status response ]] - --> 03 00 00 46 06 53 06 c0 06 07 07 37 07 5d 07 87 - 07 a1 07 c8 07 08 08 08 08 08 08 48 08 68 08 88 - 08 a9 08 b9 08 d9 08 f9 08 12 09 2e 09 49 09 70 - 09 89 08 99 09 ba 09 ca 08 da 09 0a 0a 24 0a 38 -<- [51 octets] - - [[ typical status response ]] - --> 03 0a 53 0a 66 0a 81 0a ... - .... --> 03 cf 38 0a 39 3d 39 79 39 96 39 b6 39 fb 39 01 - 34 0a 34 08 3a 0c 1a 10 3a -<- [51 octets] - - [[ typical status response ]] - - [[ total of 24 packets * 64, and then one final packet of 25: 1562 total. ]] - [[ It apepars the extra 25 bytes are to compensate for the leading '03' on - each of the 25 URBs. ]] - - 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 - -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 - -??? 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 - -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 2b9e56d..dcff841 100644 --- a/src/cups/mitsu70x_print.c +++ b/src/cups/mitsu70x_print.c @@ -35,6 +35,8 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND mitsu70x_backend + #include "backend_common.h" #define USB_VID_MITSU 0x06D3 @@ -49,14 +51,13 @@ struct mitsu70x_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; uint8_t *databuf; int datalen; uint16_t rows; uint16_t cols; - - int k60; }; /* Program states */ @@ -155,12 +156,8 @@ static void mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, 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; - + ctx->type = lookup_printer_type(&mitsu70x_backend, + desc.idVendor, desc.idProduct); } @@ -357,7 +354,7 @@ static int mitsu70x_get_status(struct mitsu70x_ctx *ctx, struct mitsu70x_status_ static int mitsu70x_main_loop(void *vctx, int copies) { struct mitsu70x_ctx *ctx = vctx; - struct mitsu70x_state rdbuf, rdbuf2; + struct mitsu70x_state rdbuf = { .hdr = 0 }, rdbuf2 = { .hdr = 0 }; int last_state = -1, state = S_IDLE; int ret; @@ -424,7 +421,7 @@ top: INFO("Sending header sequence\n"); /* K60 may require fixups */ - if (ctx->k60) { + if (ctx->type == P_MITSU_K60) { struct mitsu70x_hdr *hdr = (struct mitsu70x_hdr*) (ctx->databuf + sizeof(struct mitsu70x_hdr)); /* K60 only has a lower deck */ hdr->deck = 1; @@ -539,7 +536,7 @@ static int mitsu70x_query_status(struct mitsu70x_ctx *ctx) static int mitsu70x_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) { int ret, i; - struct mitsu70x_status_resp resp; + struct mitsu70x_status_resp resp = { .hdr = { 0 } }; struct mitsu70x_ctx ctx = { .dev = dev, @@ -571,17 +568,18 @@ static int mitsu70x_cmdline_arg(void *vctx, int argc, char **argv) struct mitsu70x_ctx *ctx = vctx; int i, j = 0; + if (!ctx) + return -1; + /* Reset arg parsing */ optind = 1; opterr = 0; - while ((i = getopt(argc, argv, "s")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "s")) >= 0) { switch(i) { + GETOPT_PROCESS_GLOBAL case 's': - if (ctx) { - j = mitsu70x_query_status(ctx); - break; - } - return 1; + j = mitsu70x_query_status(ctx); + break; default: break; /* Ignore completely */ } @@ -596,7 +594,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.31", + .version = "0.32", .uri_prefix = "mitsu70x", .cmdline_usage = mitsu70x_cmdline, .cmdline_arg = mitsu70x_cmdline_arg, @@ -608,9 +606,9 @@ struct dyesub_backend mitsu70x_backend = { .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_K60, P_MITSU_K60, ""}, // { USB_VID_MITSU, USB_PID_MITSU_D80, P_MITSU_D70X, ""}, - { USB_VID_KODAK, USB_PID_KODAK305, P_MITSU_D70X, ""}, + { USB_VID_KODAK, USB_PID_KODAK305, P_MITSU_K60, ""}, { 0, 0, 0, ""} } }; diff --git a/src/cups/mitsu9550_print.c b/src/cups/mitsu9550_print.c index 7b83e6c..952baa3 100644 --- a/src/cups/mitsu9550_print.c +++ b/src/cups/mitsu9550_print.c @@ -35,6 +35,8 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND mitsu9550_backend + #include "backend_common.h" #define USB_VID_MITSU 0x06D3 @@ -46,14 +48,13 @@ struct mitsu9550_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; uint8_t *databuf; int datalen; int is_s_variant; - int fast_return; - uint16_t rows; uint16_t cols; }; @@ -149,10 +150,6 @@ static void *mitsu9550_init(void) } 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; } @@ -172,8 +169,8 @@ static void mitsu9550_attach(void *vctx, struct libusb_device_handle *dev, device = libusb_get_device(dev); libusb_get_device_descriptor(device, &desc); - if (desc.idProduct == USB_PID_MITSU_9550DS) - ctx->is_s_variant = 1; + ctx->type = lookup_printer_type(&mitsu9550_backend, + desc.idVendor, desc.idProduct); } @@ -288,28 +285,28 @@ static int mitsu9550_get_status(struct mitsu9550_ctx *ctx, uint8_t *resp, int st static int validate_media(int type, int cols, int rows) { switch(type) { case 0x01: /* 3.5x5 */ - if (cols != 1812 || rows != 1240) + if (cols != 1812 && rows != 1240) return 1; break; case 0x02: /* 4x6 */ case 0x03: /* PC ??? */ if (cols != 2152) return 1; - if (rows != 1416 || rows != 1184 || + if (rows != 1416 && rows != 1184 && rows != 1240) return 1; break; case 0x04: /* 5x7 */ if (cols != 1812) return 1; - if (rows != 1240 || rows != 2452) + 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) + if (rows != 1416 && rows != 2972 && + rows != 2956 && rows != 3146) return 1; break; case 0x06: /* V */ @@ -332,15 +329,15 @@ static int mitsu9550_main_loop(void *vctx, int copies) { if (!ctx) return CUPS_BACKEND_FAILED; - - /* This printer handles copies internally */ + + /* Update printjob header to reflect number of requested copies */ 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) { + if (ctx->type == P_MITSU_9550S) { int num; /* Send "unknown 1" command */ @@ -405,7 +402,7 @@ top: /* Now it's time for the actual print job! */ - if (ctx->is_s_variant) { + if (ctx->type == P_MITSU_9550S) { cmd.cmd[0] = 0x1b; cmd.cmd[1] = 0x44; cmd.cmd[2] = 0; @@ -463,7 +460,7 @@ top: (uint8_t*) ptr, sizeof(struct mitsu9550_hdr3)))) return CUPS_BACKEND_FAILED; ptr += sizeof(struct mitsu9550_hdr3); - if (!ctx->is_s_variant) { + if (ctx->type != P_MITSU_9550S) { // XXX need to investigate what hdr4 is about if ((ret = send_data(ctx->dev, ctx->endp_down, (uint8_t*) ptr, sizeof(struct mitsu9550_hdr4)))) @@ -471,7 +468,7 @@ top: } ptr += sizeof(struct mitsu9550_hdr4); - if (ctx->is_s_variant) { + if (ctx->type == P_MITSU_9550S) { /* Send "start data" command */ cmd.cmd[0] = 0x1b; cmd.cmd[1] = 0x5a; @@ -546,7 +543,7 @@ top: } } - if (ctx->is_s_variant) { + if (ctx->type == P_MITSU_9550S) { /* Send "end data" command */ cmd.cmd[0] = 0x1b; cmd.cmd[1] = 0x50; @@ -592,12 +589,12 @@ top: if (!sts->sts1) /* If printer transitions to idle */ break; - if (ctx->fast_return && !be16_to_cpu(sts->copies)) { /* No remaining prints */ + if (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 */ + if (fast_return && !sts->sts5) { /* Ready for another job */ INFO("Fast return mode enabled.\n"); break; } @@ -605,18 +602,7 @@ top: 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; - } + INFO("Print complete\n"); return CUPS_BACKEND_OK; } @@ -744,7 +730,6 @@ 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) @@ -752,30 +737,21 @@ static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv) struct mitsu9550_ctx *ctx = vctx; int i, j = 0; + if (!ctx) + return -1; + /* Reset arg parsing */ optind = 1; opterr = 0; - while ((i = getopt(argc, argv, "mfs")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "ms")) >= 0) { switch(i) { - case 'm': - if (ctx) { - j = mitsu9550_query_media(ctx); - break; - } - return 1; + GETOPT_PROCESS_GLOBAL + case 'm': + j = mitsu9550_query_media(ctx); + break; case 's': - if (ctx) { - j = mitsu9550_query_status(ctx); - break; - } - return 1; - - case 'f': - if (ctx) { - ctx->fast_return = 1; - break; - } - return 1; + j = mitsu9550_query_status(ctx); + break; default: break; /* Ignore completely */ } @@ -789,7 +765,7 @@ static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv) /* Exported */ struct dyesub_backend mitsu9550_backend = { .name = "Mitsubishi CP-9550DW-S", - .version = "0.12", + .version = "0.15", .uri_prefix = "mitsu9550", .cmdline_usage = mitsu9550_cmdline, .cmdline_arg = mitsu9550_cmdline_arg, @@ -801,7 +777,7 @@ struct dyesub_backend mitsu9550_backend = { .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, ""}, + { USB_VID_MITSU, USB_PID_MITSU_9550DS, P_MITSU_9550S, ""}, { 0, 0, 0, ""} } }; diff --git a/src/cups/selphy_print.c b/src/cups/selphy_print.c index 2c9bab0..8da09e0 100644 --- a/src/cups/selphy_print.c +++ b/src/cups/selphy_print.c @@ -35,8 +35,12 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND canonselphy_backend + #include "backend_common.h" +#define P_ES40_CP790 (P_END + 1) // used for detection only + /* Exported */ #define USB_VID_CANON 0x04a9 #define USB_PID_CANON_CP10 0x304A @@ -291,13 +295,6 @@ static struct printer_data selphy_printers[] = { .paper_code_offset = -1, .error_detect = es3_error_detect, }, - /* PLACEHOLDER FOR DETECTION PURPOSES ONLY */ - { .type = P_ES40_CP790, - .model = "SELPHY ES40/CP790", - .init_length = 16, - .foot_length = 12, - .pgcode_offset = 2, - }, { .type = P_ES40, .model = "SELPHY ES40", .init_length = 16, @@ -504,6 +501,7 @@ struct canonselphy_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; struct printer_data *printer; @@ -546,6 +544,8 @@ static void *canonselphy_init(void) return ctx; } +extern struct dyesub_backend canonselphy_backend; + static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { @@ -562,26 +562,11 @@ static void canonselphy_attach(void *vctx, struct libusb_device_handle *dev, device = libusb_get_device(dev); libusb_get_device_descriptor(device, &desc); - /* Special cases for some models */ - if (ctx->printer->type == P_ES40_CP790) { - int i; - int printer_type; - - - if (desc.idProduct == USB_PID_CANON_CP790) - printer_type = P_CP790; - else if (desc.idProduct == USB_PID_CANON_ES40) - printer_type = P_ES40; + ctx->type = lookup_printer_type(&canonselphy_backend, + desc.idVendor, desc.idProduct); - for (i = 0; selphy_printers[i].type != -1; i++) { - if (selphy_printers[i].type == printer_type) { - ctx->printer = &selphy_printers[i]; - break; - } - } - } else if (desc.idProduct == USB_PID_CANON_CP900) { + if (desc.idProduct == USB_PID_CANON_CP900) ctx->cp900 = 1; - } } static void canonselphy_teardown(void *vctx) { @@ -627,6 +612,15 @@ static int canonselphy_early_parse(void *vctx, int data_fd) } printer_type = parse_printjob(ctx->buffer, &ctx->bw_mode, &ctx->plane_len); + /* Special cases for some models */ + if (printer_type == P_ES40_CP790) { + if (ctx->type == P_CP790) + printer_type = P_CP790; + else + printer_type = P_ES40; + } + + /* Look up the printer entry */ for (i = 0; selphy_printers[i].type != -1; i++) { if (selphy_printers[i].type == printer_type) { ctx->printer = &selphy_printers[i]; @@ -638,14 +632,19 @@ static int canonselphy_early_parse(void *vctx, int data_fd) return -1; } + INFO("%sFile intended for a '%s' printer\n", ctx->bw_mode? "B/W " : "", ctx->printer->model); + + if (ctx->printer->type != ctx->type) { + ERROR("Printer/Job mismatch (%d/%d)\n", ctx->type, ctx->printer->type); + return -1; + } + ctx->plane_len += 12; /* Add in plane header length! */ if (ctx->printer->pgcode_offset != -1) ctx->paper_code = ctx->printer->paper_codes[ctx->buffer[ctx->printer->pgcode_offset]]; else ctx->paper_code = -1; - INFO("%sFile intended for a '%s' printer\n", ctx->bw_mode? "B/W " : "", ctx->printer->model); - return printer_type; } @@ -657,6 +656,11 @@ static int canonselphy_read_parse(void *vctx, int data_fd) if (!ctx) return CUPS_BACKEND_FAILED; + /* Perform early parsing */ + i = canonselphy_early_parse(ctx, data_fd); + if (i < 0) + return CUPS_BACKEND_FAILED; + if (ctx->header) { free(ctx->header); ctx->header = NULL; @@ -794,7 +798,7 @@ top: /* Make sure paper/ribbon is correct */ if (ctx->paper_code != -1) { - if (ctx->printer->type == P_CP_XXX) { + if (ctx->type == P_CP_XXX) { uint8_t pc = rdbuf[ctx->printer->paper_code_offset]; if (((pc >> 4) & 0xf) != (ctx->paper_code & 0x0f)) { @@ -825,7 +829,7 @@ top: return CUPS_BACKEND_HOLD; /* Hold this job, don't stop queue */ } } - } else if (ctx->printer->type == P_CP790) { + } else if (ctx->type == P_CP790) { uint8_t ribbon = rdbuf[4] >> 4; uint8_t paper = rdbuf[5]; @@ -949,14 +953,36 @@ top: return CUPS_BACKEND_OK; } +static int canonselphy_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct canonselphy_ctx *ctx = vctx; + int i, j = 0; + + if (!ctx) + return -1; + + /* Reset arg parsing */ + optind = 1; + opterr = 0; + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL)) >= 0) { + switch(i) { + GETOPT_PROCESS_GLOBAL + } + + if (j) return j; + } + + return 0; +} + struct dyesub_backend canonselphy_backend = { .name = "Canon SELPHY CP/ES", - .version = "0.87", + .version = "0.89", .uri_prefix = "canonselphy", + .cmdline_arg = canonselphy_cmdline_arg, .init = canonselphy_init, .attach = canonselphy_attach, .teardown = canonselphy_teardown, - .early_parse = canonselphy_early_parse, .read_parse = canonselphy_read_parse, .main_loop = canonselphy_main_loop, .devices = { @@ -980,7 +1006,7 @@ struct dyesub_backend canonselphy_backend = { { USB_VID_CANON, USB_PID_CANON_CP760, P_CP_XXX, ""}, { USB_VID_CANON, USB_PID_CANON_CP770, P_CP_XXX, ""}, { USB_VID_CANON, USB_PID_CANON_CP780, P_CP_XXX, ""}, - { USB_VID_CANON, USB_PID_CANON_CP790, P_ES40_CP790, ""}, + { USB_VID_CANON, USB_PID_CANON_CP790, P_CP790, ""}, { USB_VID_CANON, USB_PID_CANON_CP800, P_CP_XXX, ""}, { USB_VID_CANON, USB_PID_CANON_CP810, P_CP_XXX, ""}, { USB_VID_CANON, USB_PID_CANON_CP900, P_CP_XXX, ""}, @@ -989,7 +1015,7 @@ struct dyesub_backend canonselphy_backend = { { USB_VID_CANON, USB_PID_CANON_ES20, P_ES2_20, ""}, { USB_VID_CANON, USB_PID_CANON_ES3, P_ES3_30, ""}, { USB_VID_CANON, USB_PID_CANON_ES30, P_ES3_30, ""}, - { USB_VID_CANON, USB_PID_CANON_ES40, P_ES40_CP790, ""}, + { USB_VID_CANON, USB_PID_CANON_ES40, P_ES40, ""}, { 0, 0, 0, ""} } }; diff --git a/src/cups/shinko_s1245_print.c b/src/cups/shinko_s1245_print.c new file mode 100644 index 0000000..72b5ec9 --- /dev/null +++ b/src/cups/shinko_s1245_print.c @@ -0,0 +1,1621 @@ +/* + * Shinko/Sinfonia CHC-S1245 CUPS backend -- libusb-1.0 version + * + * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org> + * + * Low-level documentation was provided by Sinfonia, Inc. Thank you! + * + * 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> + +#define BACKEND shinkos1245_backend + +#include "backend_common.h" + +/* Structure of printjob header. All fields are LITTLE ENDIAN */ +struct s1245_printjob_hdr { + uint32_t len1; /* Fixed at 0x10 */ + uint32_t model; /* Equal to the printer model (eg '1245' or '2145' decimal) */ + uint32_t unk2; /* Null */ + uint32_t unk3; /* Fixed at 0x01 */ + + uint32_t len2; /* Fixed at 0x64 */ + uint32_t unk5; /* Null */ + uint32_t media; /* Fixed at 0x10 */ + uint32_t unk6; /* Null */ + + uint32_t method; /* Print Method */ + uint32_t mode; /* Print Mode */ + uint32_t unk7; /* Null */ + int32_t mattedepth; /* 0x7fffffff for glossy, 0x00 +- 25 for matte */ + + uint32_t dust; /* Dust control */ + uint32_t columns; + uint32_t rows; + uint32_t copies; + + uint32_t unk10; /* Null */ + uint32_t unk11; /* Null */ + uint32_t unk12; /* Null */ + uint32_t unk13; /* 0xceffffff */ + + uint32_t unk14; /* Null */ + uint32_t unk15; /* 0xceffffff */ + uint32_t dpi; /* Fixed at '300' (decimal) */ + uint32_t unk16; /* 0xceffffff */ + + uint32_t unk17; /* Null */ + uint32_t unk18; /* 0xceffffff */ + uint32_t unk19; /* Null */ + uint32_t unk20; /* Null */ + + uint32_t unk21; /* Null */ +} __attribute__((packed)); + +/* Printer data structures */ +struct shinkos1245_cmd_hdr { + uint8_t prefix; /* 0x03 */ + uint8_t hdr[4]; /* 0x1b 0x43 0x48 0x43 */ +} __attribute__((packed)); + +/* Get Printer ID */ +struct shinkos1245_cmd_getid { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0x12 */ + uint8_t pad[11]; +} __attribute__((packed)); + +struct shinkos1245_resp_getid { + uint8_t id; /* 0x00 */ + uint8_t data[23]; /* padded with 0x20 (space) */ + uint8_t reserved[8]; // XXX actual serial number? +} __attribute__((packed)); + +/* Set Printer ID -- Returns Status */ +struct shinkos1245_cmd_setid { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[2]; /* 0x0a 0x22 */ + uint8_t id; /* 0x00 */ + uint8_t data[23]; /* pad with 0x20 (space) */ +} __attribute__((packed)); + +/* Print -- Returns Status */ +struct shinkos1245_cmd_print { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[2]; /* 0x0a 0x00 */ + uint8_t id; /* 1-255 */ + uint16_t count; /* # Copies in BCD, 1-9999 */ + uint16_t columns; /* Fixed at 2446 */ + uint16_t rows; + uint8_t media; /* Fixed at 0x10 */ + uint8_t mode; /* dust removal and lamination mode */ + uint8_t combo; /* aka "print method" in the spool file */ +} __attribute__((packed)); + +/* Get Status */ +struct shinkos1245_cmd_getstatus { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0x03 */ + uint8_t pad[10]; +} __attribute__((packed)); + +struct shinkos1245_resp_status { + uint8_t code; + uint8_t print_status; + struct { + uint8_t status1; + uint32_t status2; /* BE */ + uint8_t error; + } state; + struct { + uint32_t lifetime; /* BE */ + uint32_t maint; /* BE */ + uint32_t media; /* BE */ + uint32_t cutter; /* BE */ + uint8_t reserved; + uint8_t ver_boot; + uint8_t ver_ctrl; + uint8_t control_flag; // 0x00 == epson, 0x01 == cypress + } counters; + struct { + uint16_t main_boot; + uint16_t main_control; + uint16_t dsp_boot; + uint16_t dsp_control; + } versions; + struct { + uint8_t bank1_id; + uint8_t bank2_id; + uint16_t bank1_remain; /* BE */ + uint16_t bank1_complete; /* BE */ + uint16_t bank1_spec; /* BE */ + uint16_t bank2_remain; /* BE */ + uint16_t bank2_complete; /* BE */ + uint16_t bank2_spec; /* BE */ + } counters2; + uint8_t curve_status; +} __attribute__((packed)); + +enum { + CMD_CODE_OK = 1, + CMD_CODE_BAD = 2, +}; + +enum { + STATUS_PRINTING = 1, + STATUS_IDLE = 2, +}; + +enum { + STATE_STATUS1_STANDBY = 1, + STATE_STATUS1_ERROR = 2, + STATE_STATUS1_WAIT = 3, +}; + +#define STATE_STANDBY_STATUS2 0x0 + +enum { + WAIT_STATUS2_INIT = 0, + WAIT_STATUS2_RIBBON = 1, + WAIT_STATUS2_THERMAL = 2, + WAIT_STATUS2_OPERATING = 3, + WAIT_STATUS2_BUSY = 4, +}; + +#define ERROR_STATUS2_CTRL_CIRCUIT (1<<31) +#define ERROR_STATUS2_MECHANISM_CTRL (1<<30) +#define ERROR_STATUS2_SENSOR (1<<13) +#define ERROR_STATUS2_COVER_OPEN (1<<12) +#define ERROR_STATUS2_TEMP_SENSOR (1<<9) +#define ERROR_STATUS2_PAPER_JAM (1<<8) +#define ERROR_STATUS2_PAPER_EMPTY (1<<6) +#define ERROR_STATUS2_RIBBON_ERR (1<<4) + +enum { + CTRL_CIR_ERROR_EEPROM1 = 0x01, + CTRL_CIR_ERROR_EEPROM2 = 0x02, + CTRL_CIR_ERROR_DSP = 0x04, + CTRL_CIR_ERROR_CRC_MAIN = 0x06, + CTRL_CIR_ERROR_DL_MAIN = 0x07, + CTRL_CIR_ERROR_CRC_DSP = 0x08, + CTRL_CIR_ERROR_DL_DSP = 0x09, + CTRL_CIR_ERROR_ASIC = 0x0a, + CTRL_CIR_ERROR_DRAM = 0x0b, + CTRL_CIR_ERROR_DSPCOMM = 0x29, +}; + +enum { + MECH_ERROR_HEAD_UP = 0x01, + MECH_ERROR_HEAD_DOWN = 0x02, + MECH_ERROR_MAIN_PINCH_UP = 0x03, + MECH_ERROR_MAIN_PINCH_DOWN = 0x04, + MECH_ERROR_SUB_PINCH_UP = 0x05, + MECH_ERROR_SUB_PINCH_DOWN = 0x06, + MECH_ERROR_FEEDIN_PINCH_UP = 0x07, + MECH_ERROR_FEEDIN_PINCH_DOWN = 0x08, + MECH_ERROR_FEEDOUT_PINCH_UP = 0x09, + MECH_ERROR_FEEDOUT_PINCH_DOWN = 0x0a, + MECH_ERROR_CUTTER_LR = 0x0b, + MECH_ERROR_CUTTER_RL = 0x0c, +}; + +enum { + SENSOR_ERROR_CUTTER = 0x05, + SENSOR_ERROR_HEAD_DOWN = 0x09, + SENSOR_ERROR_HEAD_UP = 0x0a, + SENSOR_ERROR_MAIN_PINCH_DOWN = 0x0b, + SENSOR_ERROR_MAIN_PINCH_UP = 0x0c, + SENSOR_ERROR_FEED_PINCH_DOWN = 0x0d, + SENSOR_ERROR_FEED_PINCH_UP = 0x0e, + SENSOR_ERROR_EXIT_PINCH_DOWN = 0x0f, + SENSOR_ERROR_EXIT_PINCH_UP = 0x10, + SENSOR_ERROR_LEFT_CUTTER = 0x11, + SENSOR_ERROR_RIGHT_CUTTER = 0x12, + SENSOR_ERROR_CENTER_CUTTER = 0x13, + SENSOR_ERROR_UPPER_CUTTER = 0x14, + SENSOR_ERROR_PAPER_FEED_COVER = 0x15, +}; + +enum { + TEMP_SENSOR_ERROR_HEAD_HIGH = 0x01, + TEMP_SENSOR_ERROR_HEAD_LOW = 0x02, + TEMP_SENSOR_ERROR_ENV_HIGH = 0x03, + TEMP_SENSOR_ERROR_ENV_LOW = 0x04, +}; + +enum { + COVER_OPEN_ERROR_UPPER = 0x01, + COVER_OPEN_ERROR_LOWER = 0x02, +}; + +enum { + PAPER_EMPTY_ERROR = 0x00, +}; + +enum { + RIBBON_ERROR = 0x00, +}; + +enum { + CURVE_TABLE_STATUS_INITIAL = 0x00, + CURVE_TABLE_STATUS_USERSET = 0x01, + CURVE_TABLE_STATUS_CURRENT = 0x02, +}; + +// XXX Paper jam has 0x01 -> 0xff as error codes + +/* Query media info */ +struct shinkos1245_cmd_getmedia { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0x1a/0x2a/0x3a for A/B/C */ + uint8_t pad[10]; +} __attribute__((packed)); + +struct shinkos1245_mediadesc { + uint8_t code; /* Fixed at 0x10 */ + uint16_t columns; /* BE */ + uint16_t rows; /* BE */ + uint8_t type; /* MEDIA_TYPE_* */ + uint8_t print_type; /* aka "print method" in the spool file */ + uint8_t reserved[3]; +} __attribute__((packed)); + +#define NUM_MEDIAS 5 /* Maximum per message */ + +struct shinkos1245_resp_media { + uint8_t code; + uint8_t reserved[5]; + uint8_t count; /* 1-5? */ + struct shinkos1245_mediadesc data[NUM_MEDIAS]; +} __attribute__((packed)); + +enum { + MEDIA_TYPE_UNKNOWN = 0x00, + MEDIA_TYPE_PAPER = 0x01, +}; + +enum { + PRINT_TYPE_STANDARD = 0x00, + PRINT_TYPE_8x5_2up = 0x01, + PRINT_TYPE_8x4_2up = 0x02, + PRINT_TYPE_8x6_8x4 = 0x03, + PRINT_TYPE_8x5 = 0x04, + PRINT_TYPE_8x4 = 0x05, + PRINT_TYPE_8x6 = 0x06, + PRINT_TYPE_8x6_2up = 0x07, + PRINT_TYPE_8x4_3up = 0x08, + PRINT_TYPE_8x8 = 0x09, +}; + +/* Cancel Job -- returns Status */ +struct shinkos1245_cmd_canceljob { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0x13 */ + uint8_t id; /* 1-255 */ + uint8_t pad[9]; +} __attribute__((packed)); + +/* Reset printer -- returns Status */ +struct shinkos1245_cmd_reset { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0xc0 */ + uint8_t pad[10]; +} __attribute__((packed)); + +/* Tone curve manipulation -- returns Status */ +struct shinkos1245_cmd_tone { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0xc0 */ + uint8_t tone[4]; /* 0x54 0x4f 0x4e 0x45 */ + uint8_t cmd2[1]; /* 0x72/0x77/0x65/0x20 for read/write/end/data */ + union { + struct { + uint8_t tone_table; + uint8_t param_table; + uint8_t pad[3]; + } read_write; + struct { + uint8_t pad[5]; + } end_data; + }; +} __attribute__((packed)); + +enum { + TONE_TABLE_STANDARD = 0, + TONE_TABLE_USER = 1, + TONE_TABLE_CURRENT = 2, +}; +enum { + PARAM_TABLE_STANDARD = 1, + PARAM_TABLE_FINE = 2, +}; + +#define TONE_CURVE_SIZE 1536 +#define TONE_CURVE_DATA_BLOCK_SIZE 64 + +/* Query Model information */ +struct shinkos1245_cmd_getmodel { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0x02 */ + uint8_t pad[10]; +} __attribute__((packed)); + +struct shinkos1245_resp_getmodel { + uint8_t vendor_id[4]; + uint8_t product_id[4]; + uint8_t strings[40]; +} __attribute__((packed)); + + +/* Query and Set Matte info, returns a Matte response */ +struct shinkos1245_cmd_getmatte { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0x20 */ + uint8_t mode; /* Fixed at 0x00 */ + uint8_t pad[9]; +} __attribute__((packed)); + +struct shinkos1245_cmd_setmatte { + struct shinkos1245_cmd_hdr hdr; + uint8_t cmd[1]; /* 0x21 */ + uint8_t mode; /* Fixed at 0x00 */ + int8_t level; /* -25->+25 */ + uint8_t pad[8]; +} __attribute__((packed)); + +struct shinkos1245_resp_matte { + uint8_t code; + uint8_t mode; + int8_t level; + uint8_t reserved[3]; +} __attribute__((packed)); + +#define MATTE_MODE_MATTE 0x00 + +/* Private data stucture */ +struct shinkos1245_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + + uint8_t jobid; + + struct s1245_printjob_hdr hdr; + + struct shinkos1245_mediadesc medias[15]; + int num_medias; + + uint8_t *databuf; + int datalen; + int tonecurve; +}; + +enum { + S_IDLE = 0, + S_PRINTER_READY_CMD, + S_PRINTER_SENT_DATA, + S_FINISHED, +}; + + +/* Basic printer I/O stuffs */ +static void shinkos1245_fill_hdr(struct shinkos1245_cmd_hdr *hdr) +{ + hdr->prefix = 0x03; + hdr->hdr[0] = 0x1b; + hdr->hdr[1] = 0x43; + hdr->hdr[2] = 0x48; + hdr->hdr[3] = 0x43; +} + +static int shinkos1245_do_cmd(struct shinkos1245_ctx *ctx, + void *cmd, int cmd_len, + void *resp, int resp_len, + int *actual_len) +{ + int ret; + + /* Write command */ + if ((ret = send_data(ctx->dev, ctx->endp_down, + cmd, cmd_len))) + return (ret < 0) ? ret : -99; + + /* Read response */ + ret = read_data(ctx->dev, ctx->endp_up, + resp, resp_len, actual_len); + if (ret < 0) + return ret; + if (*actual_len < resp_len) { + ERROR("Short read! (%d/%d))\n", *actual_len, resp_len); + return -99; + } + + return ret; +} + +static int shinkos1245_get_status(struct shinkos1245_ctx *ctx, + struct shinkos1245_resp_status *resp) +{ + struct shinkos1245_cmd_getstatus cmd; + int ret, num; + + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x03; + memset(cmd.pad, 0, sizeof(cmd.pad)); + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + resp, sizeof(*resp), &num); + if (ret < 0) { + ERROR("Failed to execute GET_STATUS command\n"); + return ret; + } + if (resp->code != CMD_CODE_OK) { + ERROR("Bad return code on GET_STATUS (%02x)\n", + resp->code); + return -99; + } + + return 0; +} + +static int shinkos1245_get_media(struct shinkos1245_ctx *ctx) +{ + struct shinkos1245_cmd_getmedia cmd; + struct shinkos1245_resp_media resp; + int i, j; + int ret = 0, num; + + shinkos1245_fill_hdr(&cmd.hdr); + memset(cmd.pad, 0, sizeof(cmd.pad)); + for (i = 1 ; i <= 3 ; i++) { + cmd.cmd[0] = 0x0a || (i << 4); + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &resp, sizeof(resp), &num); + if (ret < 0) { + ERROR("Failed to execute GET_MEDIA command\n"); + return ret; + } + if (resp.code != CMD_CODE_OK) { + ERROR("Bad return code on GET_MEDIA (%02x)\n", + resp.code); + return -99; + } + + if (resp.count > NUM_MEDIAS) + resp.count = NUM_MEDIAS; + + /* Store media info */ + for (j = 0; j < resp.count ; j++) { + ctx->medias[ctx->num_medias].code = resp.data[j].code; + ctx->medias[ctx->num_medias].columns = be16_to_cpu(resp.data[j].columns); + ctx->medias[ctx->num_medias].rows = be16_to_cpu(resp.data[j].rows); + ctx->medias[ctx->num_medias].type = resp.data[j].type; + ctx->medias[ctx->num_medias].print_type = resp.data[j].print_type; + ctx->num_medias++; + } + + if (resp.count < 5) + break; + } + return ret; +} + +static int shinkos1245_get_printerid(struct shinkos1245_ctx *ctx, + struct shinkos1245_resp_getid *resp) +{ + struct shinkos1245_cmd_getid cmd; + int ret, num; + + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x12; + memset(cmd.pad, 0, sizeof(cmd.pad)); + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + resp, sizeof(*resp), &num); + if (ret < 0) { + ERROR("Failed to execute GET_PRINTERID command\n"); + return ret; + } + + return 0; +} + +static int shinkos1245_set_printerid(struct shinkos1245_ctx *ctx, + char *id) +{ + struct shinkos1245_cmd_setid cmd; + struct shinkos1245_resp_status sts; + + int ret, num; + int i; + + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x0a; + cmd.cmd[1] = 0x22; + + for (i = 0 ; i < (int)sizeof(cmd.data) ; i++) { + if (*id) + cmd.data[i] = (uint8_t) *id; + else + cmd.data[i] = ' '; + } + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &sts, sizeof(sts), &num); + if (ret < 0) { + ERROR("Failed to execute SET_PRINTERID command\n"); + return ret; + } + if (sts.code != CMD_CODE_OK) { + ERROR("Bad return code on SET_PRINTERID command\n"); + return -99; + } + return 0; +} + +static int shinkos1245_canceljob(struct shinkos1245_ctx *ctx, + int id) +{ + struct shinkos1245_cmd_canceljob cmd; + struct shinkos1245_resp_status sts; + + int ret, num; + + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x13; + cmd.id = id; + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &sts, sizeof(sts), &num); + if (ret < 0) { + ERROR("Failed to execute CANCELJOB command\n"); + return ret; + } + if (sts.code != CMD_CODE_OK) { + ERROR("Bad return code on CANCELJOB command\n"); + return -99; + } + return 0; +} + +static int shinkos1245_set_matte(struct shinkos1245_ctx *ctx, + int intensity) +{ + struct shinkos1245_cmd_setmatte cmd; + struct shinkos1245_resp_matte sts; + + int ret, num; + + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x21; + cmd.mode = MATTE_MODE_MATTE; + cmd.level = intensity; + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &sts, sizeof(sts), &num); + if (ret < 0) { + ERROR("Failed to execute SET_MATTE command\n"); + return ret; + } + if (sts.code == CMD_CODE_OK) + return 0; + if (sts.code == CMD_CODE_BAD) + return 1; + + ERROR("Bad return code (%02x) on SET_MATTE command\n", sts.code); + return -99; +} + +static int shinkos1245_get_matte(struct shinkos1245_ctx *ctx, + int *intensity) +{ + struct shinkos1245_cmd_getmatte cmd; + struct shinkos1245_resp_matte sts; + + int ret, num; + + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x20; + cmd.mode = MATTE_MODE_MATTE; + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &sts, sizeof(sts), &num); + if (ret < 0) { + ERROR("Failed to execute GET_MATTE command\n"); + return ret; + } + if (sts.code != CMD_CODE_OK) { + ERROR("Bad return code (%02x) on GET_MATTE command\n", sts.code); + return -99; + } + *intensity = sts.level; + + return 0; +} + + +/* Structure dumps */ +static char *shinkos1245_status_str(struct shinkos1245_resp_status *resp) +{ + switch(resp->state.status1) { + case STATE_STATUS1_STANDBY: + return "Standby (Ready)"; + case STATE_STATUS1_WAIT: + switch (resp->state.status2) { + case WAIT_STATUS2_INIT: + return "Wait (Initializing)"; + case WAIT_STATUS2_RIBBON: + return "Wait (Ribbon Winding)"; + case WAIT_STATUS2_THERMAL: + return "Wait (Thermal Protection)"; + case WAIT_STATUS2_OPERATING: + return "Wait (Operating)"; + case WAIT_STATUS2_BUSY: + return "Wait (Busy)"; + default: + return "Wait (Unknown)"; + } + case STATE_STATUS1_ERROR: + switch (resp->state.status2) { + case ERROR_STATUS2_CTRL_CIRCUIT: + switch (resp->state.error) { + case CTRL_CIR_ERROR_EEPROM1: + return "Error (EEPROM1)"; + case CTRL_CIR_ERROR_EEPROM2: + return "Error (EEPROM2)"; + case CTRL_CIR_ERROR_DSP: + return "Error (DSP)"; + case CTRL_CIR_ERROR_CRC_MAIN: + return "Error (Main CRC)"; + case CTRL_CIR_ERROR_DL_MAIN: + return "Error (Main Download)"; + case CTRL_CIR_ERROR_CRC_DSP: + return "Error (DSP CRC)"; + case CTRL_CIR_ERROR_DL_DSP: + return "Error (DSP Download)"; + case CTRL_CIR_ERROR_ASIC: + return "Error (ASIC)"; + case CTRL_CIR_ERROR_DRAM: + return "Error (DRAM)"; + case CTRL_CIR_ERROR_DSPCOMM: + return "Error (DSP Communincation)"; + default: + return "Error (Unknown Circuit)"; + } + case ERROR_STATUS2_MECHANISM_CTRL: + switch (resp->state.error) { + case MECH_ERROR_HEAD_UP: + return "Error (Head Up Mechanism)"; + case MECH_ERROR_HEAD_DOWN: + return "Error (Head Down Mechanism)"; + case MECH_ERROR_MAIN_PINCH_UP: + return "Error (Main Pinch Up Mechanism)"; + case MECH_ERROR_MAIN_PINCH_DOWN: + return "Error (Main Pinch Down Mechanism)"; + case MECH_ERROR_SUB_PINCH_UP: + return "Error (Sub Pinch Up Mechanism)"; + case MECH_ERROR_SUB_PINCH_DOWN: + return "Error (Sub Pinch Down Mechanism)"; + case MECH_ERROR_FEEDIN_PINCH_UP: + return "Error (Feed-in Pinch Up Mechanism)"; + case MECH_ERROR_FEEDIN_PINCH_DOWN: + return "Error (Feed-in Pinch Down Mechanism)"; + case MECH_ERROR_FEEDOUT_PINCH_UP: + return "Error (Feed-out Pinch Up Mechanism)"; + case MECH_ERROR_FEEDOUT_PINCH_DOWN: + return "Error (Feed-out Pinch Down Mechanism)"; + case MECH_ERROR_CUTTER_LR: + return "Error (Left->Right Cutter)"; + case MECH_ERROR_CUTTER_RL: + return "Error (Right->Left Cutter)"; + default: + return "Error (Unknown Mechanism)"; + } + case ERROR_STATUS2_SENSOR: + switch (resp->state.error) { + case SENSOR_ERROR_CUTTER: + return "Error (Cutter Sensor)"; + case SENSOR_ERROR_HEAD_DOWN: + return "Error (Head Down Sensor)"; + case SENSOR_ERROR_HEAD_UP: + return "Error (Head Up Sensor)"; + case SENSOR_ERROR_MAIN_PINCH_DOWN: + return "Error (Main Pinch Down Sensor)"; + case SENSOR_ERROR_MAIN_PINCH_UP: + return "Error (Main Pinch Up Sensor)"; + case SENSOR_ERROR_FEED_PINCH_DOWN: + return "Error (Feed Pinch Down Sensor)"; + case SENSOR_ERROR_FEED_PINCH_UP: + return "Error (Feed Pinch Up Sensor)"; + case SENSOR_ERROR_EXIT_PINCH_DOWN: + return "Error (Exit Pinch Up Sensor)"; + case SENSOR_ERROR_EXIT_PINCH_UP: + return "Error (Exit Pinch Up Sensor)"; + case SENSOR_ERROR_LEFT_CUTTER: + return "Error (Left Cutter Sensor)"; + case SENSOR_ERROR_RIGHT_CUTTER: + return "Error (Right Cutter Sensor)"; + case SENSOR_ERROR_CENTER_CUTTER: + return "Error (Center Cutter Sensor)"; + case SENSOR_ERROR_UPPER_CUTTER: + return "Error (Upper Cutter Sensor)"; + case SENSOR_ERROR_PAPER_FEED_COVER: + return "Error (Paper Feed Cover)"; + default: + return "Error (Unknown Sensor)"; + } + case ERROR_STATUS2_COVER_OPEN: + switch (resp->state.error) { + case COVER_OPEN_ERROR_UPPER: + return "Error (Upper Cover Open)"; + case COVER_OPEN_ERROR_LOWER: + return "Error (Lower Cover Open)"; + default: + return "Error (Unknown Cover Open)"; + } + case ERROR_STATUS2_TEMP_SENSOR: + switch (resp->state.error) { + case TEMP_SENSOR_ERROR_HEAD_HIGH: + return "Error (Head Temperature High)"; + case TEMP_SENSOR_ERROR_HEAD_LOW: + return "Error (Head Temperature Low)"; + case TEMP_SENSOR_ERROR_ENV_HIGH: + return "Error (Environmental Temperature High)"; + case TEMP_SENSOR_ERROR_ENV_LOW: + return "Error (Environmental Temperature Low)"; + default: + return "Error (Unknown Temperature)"; + } + case ERROR_STATUS2_PAPER_JAM: + return "Error (Paper Jam)"; + case ERROR_STATUS2_PAPER_EMPTY: + return "Error (Paper Empty)"; + case ERROR_STATUS2_RIBBON_ERR: + return "Error (Ribbon)"; + default: + return "Error (Unknown)"; + } + default: + return "Unknown!"; + } +} + +static char* shinkos1245_tonecurves(int type, int table) +{ + switch (type) { + case TONE_TABLE_STANDARD: + switch (table) { + case PARAM_TABLE_STANDARD: + return "Standard/Standard"; + case PARAM_TABLE_FINE: + return "Standard/Fine"; + default: + return "Standard/Unknown"; + } + case TONE_TABLE_USER: + switch (table) { + case PARAM_TABLE_STANDARD: + return "User/Standard"; + case PARAM_TABLE_FINE: + return "User/Fine"; + default: + return "User/Unknown"; + } + case TONE_TABLE_CURRENT: + switch (table) { + case PARAM_TABLE_STANDARD: + return "Current/Standard"; + case PARAM_TABLE_FINE: + return "Current/Fine"; + default: + return "Current/Unknown"; + } + default: + return "Unknown"; + } +} + +static void shinkos1245_dump_status(struct shinkos1245_resp_status *sts) +{ + char *detail; + switch (sts->print_status) { + case STATUS_PRINTING: + detail = "Printing"; + break; + case STATUS_IDLE: + detail = "Idle"; + break; + default: + detail = "Unknown"; + break; + } + INFO("Printer Status: %s\n", detail); + + /* Byteswap */ + sts->state.status2 = be32_to_cpu(sts->state.status2); + + INFO("Printer State: %s # %02x %08x %02x\n", + shinkos1245_status_str(sts), + sts->state.status1, sts->state.status2, sts->state.error); + INFO("Counters:\n"); + INFO("\tLifetime : %d\n", be32_to_cpu(sts->counters.lifetime)); + INFO("\tThermal Head : %d\n", be32_to_cpu(sts->counters.maint)); + INFO("\tMedia : %d\n", be32_to_cpu(sts->counters.media)); + INFO("\tCutter : %d\n", be32_to_cpu(sts->counters.cutter)); + + INFO("Versions:\n"); + INFO("\tUSB Boot : %d\n", sts->counters.ver_boot); + INFO("\tUSB Control : %d\n", sts->counters.ver_ctrl); + INFO("\tMain Boot : %d\n", be16_to_cpu(sts->versions.main_boot)); + INFO("\tMain Control: %d\n", be16_to_cpu(sts->versions.main_control)); + INFO("\tDSP Boot : %d\n", be16_to_cpu(sts->versions.dsp_boot)); + INFO("\tDSP Control : %d\n", be16_to_cpu(sts->versions.dsp_control)); + +// INFO("USB TypeFlag: %02x\n", sts->counters.control_flag); + + INFO("Bank 1 ID: %d\n", sts->counters2.bank1_id); + INFO("\tPrints: %d/%d complete\n", + be16_to_cpu(sts->counters2.bank1_complete), + be16_to_cpu(sts->counters2.bank1_spec)); + INFO("Bank 2 ID: %d\n", sts->counters2.bank2_id); + INFO("\tPrints: %d/%d complete\n", + be16_to_cpu(sts->counters2.bank2_complete), + be16_to_cpu(sts->counters2.bank2_spec)); + + switch (sts->curve_status) { + case CURVE_TABLE_STATUS_INITIAL: + detail = "Initial/Default"; + break; + case CURVE_TABLE_STATUS_USERSET: + detail = "User Stored"; + break; + case CURVE_TABLE_STATUS_CURRENT: + detail = "Current"; + break; + default: + detail = "Unknown"; + break; + } + INFO("Tone Curve Status: %s\n", detail); +} + +static void shinkos1245_dump_media(struct shinkos1245_mediadesc *medias, + int count) +{ + int i; + + INFO("Supported print sizes: %d\n", count); + + for (i = 0 ; i < count ; i++) { + INFO("\t %02x: %04d*%04d (%02x/%02d)\n", + medias[i].print_type, + medias[i].columns, + medias[i].rows, + medias[i].code, medias[i].type); + } +} + +static int get_tonecurve(struct shinkos1245_ctx *ctx, int type, int table, char *fname) +{ + int ret = 0, num, remaining; + uint8_t *data, *ptr; + + struct shinkos1245_cmd_tone cmd; + struct shinkos1245_resp_status resp; + + INFO("Dump %s Tone Curve to '%s'\n", shinkos1245_tonecurves(type, table), fname); + + /* Issue a tone_read_start */ + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x0c; + cmd.tone[0] = 0x54; + cmd.tone[1] = 0x4f; + cmd.tone[2] = 0x4e; + cmd.tone[3] = 0x45; + cmd.cmd2[0] = 0x72; + cmd.read_write.tone_table = type; + cmd.read_write.param_table = table; + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &resp, sizeof(resp), &num); + + if (ret < 0) { + ERROR("Failed to execute TONE_READ command\n"); + return ret; + } + if (resp.code != CMD_CODE_OK) { + ERROR("Bad return code on TONE_READ (%02x)\n", + resp.code); + return -99; + } + + /* Get the data out */ + remaining = TONE_CURVE_SIZE; + data = malloc(remaining); + if (!data) { + ERROR("Memory Allocation Failure!\n"); + return -11; + } + ptr = data; + + while(remaining) { + /* Issue a tone_data message */ + cmd.cmd2[0] = 0x20; + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &resp, sizeof(resp), &num); + + if (ret < 0) { + ERROR("Failed to execute TONE_DATA command\n"); + goto done; + } + if (resp.code != CMD_CODE_OK) { + ERROR("Bad return code on TONE_DATA (%02x)\n", + resp.code); + ret = -99; + goto done; + } + + /* And read back 64-bytes of data */ + ret = read_data(ctx->dev, ctx->endp_up, + ptr, TONE_CURVE_DATA_BLOCK_SIZE, &num); + if (num != TONE_CURVE_DATA_BLOCK_SIZE) { + ret = -99; + goto done; + } + if (ret < 0) + goto done; + ptr += num; + } + + /* Issue a tone_end */ + cmd.cmd2[0] = 0x65; + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &resp, sizeof(resp), &num); + + if (ret < 0) { + ERROR("Failed to execute TONE_END command\n"); + goto done; + } + if (resp.code != CMD_CODE_OK) { + ERROR("Bad return code on TONE_END (%02x)\n", + resp.code); + ret = -99; + goto done; + } + + /* Open file and write it out */ + { + int tc_fd = open(fname, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR); + if (tc_fd < 0) { + ret = tc_fd; + goto done; + } + + ret = write(tc_fd, data, TONE_CURVE_SIZE); + if (ret < 0) + goto done; + close(tc_fd); + } + +done: + free(data); + + return ret; +} + +static int set_tonecurve(struct shinkos1245_ctx *ctx, int type, int table, char *fname) +{ + int ret = 0, num, remaining; + uint8_t *data, *ptr; + + struct shinkos1245_cmd_tone cmd; + struct shinkos1245_resp_status resp; + + INFO("Read %d/%d Tone Curve from '%s'\n", type, table, fname); // XXX + + /* Allocate space */ + remaining = TONE_CURVE_SIZE; + data = malloc(remaining); + if (!data) { + ERROR("Memory Allocation Failure!\n"); + return -11; + } + ptr = data; + + /* Open file and read it in */ + { + int tc_fd = open(fname, O_RDONLY); + if (tc_fd < 0) { + ret = tc_fd; + goto done; + } + + ret = read(tc_fd, data, TONE_CURVE_SIZE); + if (ret < 0) { + close(tc_fd); + goto done; + } + + close(tc_fd); + } + + /* Issue a tone_write_start */ + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x0c; + cmd.tone[0] = 0x54; + cmd.tone[1] = 0x4f; + cmd.tone[2] = 0x4e; + cmd.tone[3] = 0x45; + cmd.cmd2[0] = 0x77; + cmd.read_write.tone_table = type; + cmd.read_write.param_table = table; + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &resp, sizeof(resp), &num); + + if (ret < 0) { + ERROR("Failed to execute TONE_WRITE command\n"); + goto done; + } + if (resp.code != CMD_CODE_OK) { + ERROR("Bad return code on TONE_WRITE (%02x)\n", + resp.code); + ret = -99; + goto done; + } + + while(remaining) { + /* Issue a tone_data message */ + cmd.cmd2[0] = 0x20; + + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &resp, sizeof(resp), &num); + + if (ret < 0) { + ERROR("Failed to execute TONE_DATA command\n"); + goto done; + } + if (resp.code != CMD_CODE_OK) { + ERROR("Bad return code on TONE_DATA (%02x)\n", + resp.code); + ret = -99; + goto done; + } + + /* Write 64-bytes of data */ + ret = send_data(ctx->dev, ctx->endp_up, + ptr, TONE_CURVE_DATA_BLOCK_SIZE); + if (ret < 0) + goto done; + ptr += num; + } + + /* Issue a tone_end */ + cmd.cmd2[0] = 0x65; + ret = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &resp, sizeof(resp), &num); + + if (ret < 0) { + ERROR("Failed to execute TONE_END command\n"); + goto done; + } + if (resp.code != CMD_CODE_OK) { + ERROR("Bad return code on TONE_END (%02x)\n", + resp.code); + ret = -99; + goto done; + } + +done: + free(data); + + return ret; +} + + +/* Driver API */ + +static void shinkos1245_cmdline(void) +{ + DEBUG("\t\t[ -m ] # Query media\n"); + DEBUG("\t\t[ -s ] # Query status\n"); + DEBUG("\t\t[ -u ] # Query user string\n"); + DEBUG("\t\t[ -U sometext ] # Set user string\n"); + DEBUG("\t\t[ -X jobid ] # Abort a printjob\n"); + DEBUG("\t\t[ -F ] # Tone curve refers to FINE mode\n"); + DEBUG("\t\t[ -c filename ] # Get user/NV tone curve\n"); + DEBUG("\t\t[ -C filename ] # Set user/NV tone curve\n"); + DEBUG("\t\t[ -l filename ] # Get current tone curve\n"); + DEBUG("\t\t[ -L filename ] # Set current tone curve\n"); +} + +int shinkos1245_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct shinkos1245_ctx *ctx = vctx; + int i, j = 0; + + if (!ctx) + return -1; + + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "c:C:l:L:FmsuU:X:")) >= 0) { + switch(i) { + GETOPT_PROCESS_GLOBAL + case 'F': + ctx->tonecurve = PARAM_TABLE_FINE; + break; + case 'c': + j = get_tonecurve(ctx, TONE_TABLE_USER, ctx->tonecurve, optarg); + break; + case 'C': + j = set_tonecurve(ctx, TONE_TABLE_USER, ctx->tonecurve, optarg); + break; + case 'l': + j = get_tonecurve(ctx, TONE_TABLE_CURRENT, ctx->tonecurve, optarg); + break; + case 'L': + j = set_tonecurve(ctx, TONE_TABLE_CURRENT, ctx->tonecurve, optarg); + break; + case 'm': + j = shinkos1245_get_media(ctx); + if (!j) + shinkos1245_dump_media(ctx->medias, ctx->num_medias); + break; + case 's': { + struct shinkos1245_resp_status sts; + j = shinkos1245_get_status(ctx, &sts); + if (!j) + shinkos1245_dump_status(&sts); + break; + } + case 'u': { + struct shinkos1245_resp_getid resp; + j = shinkos1245_get_printerid(ctx, &resp); + if (!j) { + char buffer[sizeof(resp.data)+1]; + memcpy(buffer, resp.data, sizeof(resp.data)); + buffer[sizeof(resp.data)] = 0; + INFO("Printer ID: %02x '%s'\n", resp.id, buffer); + } + break; + } + case 'U': + j = shinkos1245_set_printerid(ctx, optarg); + break; + case 'X': + j = shinkos1245_canceljob(ctx, atoi(optarg)); + break; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + +static void *shinkos1245_init(void) +{ + struct shinkos1245_ctx *ctx = malloc(sizeof(struct shinkos1245_ctx)); + if (!ctx) { + ERROR("Memory Allocation Failure!\n"); + return NULL; + } + memset(ctx, 0, sizeof(struct shinkos1245_ctx)); + + ctx->tonecurve = PARAM_TABLE_STANDARD; + + return ctx; +} + +static void shinkos1245_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct shinkos1245_ctx *ctx = vctx; + struct libusb_device *device; + struct libusb_device_descriptor desc; + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; + + device = libusb_get_device(dev); + libusb_get_device_descriptor(device, &desc); + + ctx->type = lookup_printer_type(&shinkos1245_backend, + desc.idVendor, desc.idProduct); + + /* Ensure jobid is sane */ + ctx->jobid = (jobid & 0x7f) + 1; +} + + +static void shinkos1245_teardown(void *vctx) { + struct shinkos1245_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + + free(ctx); +} + +static int shinkos1245_read_parse(void *vctx, int data_fd) { + struct shinkos1245_ctx *ctx = vctx; + int ret; + uint8_t tmpbuf[4]; + + if (!ctx) + return CUPS_BACKEND_FAILED; + + /* Read in then validate header */ + ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); + if (ret < 0) + return ret; + if (ret < 0 || ret != sizeof(ctx->hdr)) + return CUPS_BACKEND_CANCEL; + + if (le32_to_cpu(ctx->hdr.len1) != 0x10 || + le32_to_cpu(ctx->hdr.len2) != 0x64 || + le32_to_cpu(ctx->hdr.dpi) != 300) { + ERROR("Unrecognized header data format!\n"); + return CUPS_BACKEND_CANCEL; + } + + ctx->hdr.model = le32_to_cpu(ctx->hdr.model); + + if(ctx->hdr.model != 1245) { + ERROR("Unrecognized printer (%d)!\n", ctx->hdr.model); + return CUPS_BACKEND_CANCEL; + } + + /* Finish byteswapping */ + ctx->hdr.media = le32_to_cpu(ctx->hdr.media); + ctx->hdr.method = le32_to_cpu(ctx->hdr.method); + ctx->hdr.mode = le32_to_cpu(ctx->hdr.mode); + ctx->hdr.mattedepth = le32_to_cpu(ctx->hdr.mattedepth); + ctx->hdr.dust = le32_to_cpu(ctx->hdr.dust); + ctx->hdr.columns = le32_to_cpu(ctx->hdr.columns); + ctx->hdr.rows = le32_to_cpu(ctx->hdr.rows); + ctx->hdr.copies = le32_to_cpu(ctx->hdr.copies); + + /* Allocate space */ + if (ctx->databuf) { + free(ctx->databuf); + ctx->databuf = NULL; + } + + ctx->datalen = ctx->hdr.rows * ctx->hdr.columns * 3; + ctx->databuf = malloc(ctx->datalen); + if (!ctx->databuf) { + ERROR("Memory allocation failure!\n"); + return CUPS_BACKEND_FAILED; + } + + { + int remain = ctx->datalen; + uint8_t *ptr = ctx->databuf; + do { + ret = read(data_fd, ptr, remain); + if (ret < 0) { + ERROR("Read failed (%d/%d/%d)\n", + ret, remain, ctx->datalen); + perror("ERROR: Read failed"); + return ret; + } + ptr += ret; + remain -= ret; + } while (remain); + } + + /* Make sure footer is sane too */ + ret = read(data_fd, tmpbuf, 4); + if (ret != 4) { + ERROR("Read failed (%d/%d/%d)\n", + ret, 4, 4); + perror("ERROR: Read failed"); + return ret; + } + if (tmpbuf[0] != 0x04 || + tmpbuf[1] != 0x03 || + tmpbuf[2] != 0x02 || + tmpbuf[3] != 0x01) { + ERROR("Unrecognized footer data format!\n"); + return CUPS_BACKEND_FAILED; + } + + return CUPS_BACKEND_OK; +} + +static int shinkos1245_main_loop(void *vctx, int copies) { + struct shinkos1245_ctx *ctx = vctx; + int i, num, last_state = -1, state = S_IDLE; + struct shinkos1245_resp_status status1, status2; + + // XXX query printer info + + /* Query Media information if necessary */ + if (!ctx->num_medias) + shinkos1245_get_media(ctx); + if (!ctx->num_medias) { + ERROR("Media Query Error\n"); + return CUPS_BACKEND_FAILED; + } + /* Make sure print size is supported */ + for (i = 0 ; i < ctx->num_medias ; i++) { + if (ctx->hdr.media == ctx->medias[i].code && + ctx->hdr.method == ctx->medias[i].print_type && + ctx->hdr.rows == ctx->medias[i].rows && + ctx->hdr.columns == ctx->medias[i].columns) + break; + } + if (i == ctx->num_medias) { + ERROR("Unsupported print type\n"); + return CUPS_BACKEND_HOLD; + } + + /* Fix max print count. */ + if (copies > 9999) // XXX test against remaining media + copies = 9999; + +top: + if (state != last_state) { + if (dyesub_debug) + DEBUG("last_state %d new %d\n", last_state, state); + } + + /* Send status query */ + i = shinkos1245_get_status(ctx, &status1); + if (i < 0) + return CUPS_BACKEND_FAILED; + + if (memcmp(&status1, &status2, sizeof(status1))) { + memcpy(&status2, &status1, sizeof(status1)); + // status changed, check for errors and whatnot + } else if (state == last_state) { + sleep(1); + goto top; + } + + /* Make sure we're not in an error state */ + if (status1.state.status1 == STATE_STATUS1_ERROR) + goto printer_error; + + last_state = state; + + fflush(stderr); + + switch (state) { + case S_IDLE: + INFO("Waiting for printer idle\n"); + + if (status1.state.status1 == STATE_STATUS1_STANDBY) { + state = S_PRINTER_READY_CMD; + break; + } + + if (status1.print_status == STATUS_IDLE) { + state = S_PRINTER_READY_CMD; + break; + } + + // XXX what about STATUS_WAIT ? + // XXX see if printer has an empty bank? + + /* If the printer is "busy" check to see if there's any + open memory banks so we can queue the next print */ + if (!status1.counters2.bank1_remain || + !status1.counters2.bank2_remain) { + state = S_PRINTER_READY_CMD; + break; + } + break; + case S_PRINTER_READY_CMD: { + struct shinkos1245_cmd_print cmd; + + /* Set matte intensity */ + if (ctx->hdr.mattedepth != 0x7fffffff) { + int current = -1; + i = shinkos1245_get_matte(ctx, ¤t); + if (i < 0) + goto printer_error; + if (current != ctx->hdr.mattedepth) { + i = shinkos1245_set_matte(ctx, ctx->hdr.mattedepth); + if (i < 0) + goto printer_error; + if (i > 0) { + INFO("Can't set matte intensity when printing in progres...\n"); + state = S_IDLE; + sleep(1); + break; + } + } + } + + INFO("Initiating print job (internal id %d)\n", ctx->jobid); + + shinkos1245_fill_hdr(&cmd.hdr); + cmd.cmd[0] = 0x0a; + cmd.cmd[1] = 0x00; + + cmd.id = ctx->jobid; + cmd.count = cpu_to_be16(uint16_to_packed_bcd(copies)); + cmd.columns = cpu_to_be16(ctx->hdr.columns); + cmd.rows = cpu_to_be16(ctx->hdr.rows); + cmd.media = ctx->hdr.media; + cmd.mode = (ctx->hdr.mode & 0x3f) || ((ctx->hdr.dust & 0x3) << 6); + cmd.combo = ctx->hdr.method; + + /* Issue print commmand */ + i = shinkos1245_do_cmd(ctx, &cmd, sizeof(cmd), + &status1, sizeof(status1), + &num); + if (i < 0) + goto printer_error; + + /* Check for buffer full state, and wait if we're full */ + if (status1.code != CMD_CODE_OK) { + if (status1.print_status == STATUS_PRINTING) { + sleep(1); + break; + } else { + goto printer_error; + } + } + + /* Check for error states */ + if (status1.state.status1 == STATE_STATUS1_ERROR) + goto printer_error; + + /* Send over data */ + INFO("Sending image data to printer\n"); + if ((i = 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); + state = S_PRINTER_SENT_DATA; + break; + } + case S_PRINTER_SENT_DATA: + if (fast_return) { + INFO("Fast return mode enabled.\n"); + state = S_FINISHED; + } + /* Check for completion */ + if (status1.print_status == STATUS_IDLE) + state = S_FINISHED; + + break; + default: + break; + } + + if (state != S_FINISHED) + goto top; + + INFO("Print complete\n"); + + if (copies && --copies) { + state = S_IDLE; + goto top; + } + + return CUPS_BACKEND_OK; + +printer_error: + /* Byteswap */ + status1.state.status2 = be32_to_cpu(status1.state.status2); + + ERROR("Printer Error: %s # %02x %08x %02x\n", + shinkos1245_status_str(&status1), + status1.state.status1, status1.state.status2, status1.state.error); + + return CUPS_BACKEND_FAILED; +} + +static int shinkos1245_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) +{ + struct shinkos1245_resp_getid resp; + int i; + + struct shinkos1245_ctx ctx = { + .dev = dev, + .endp_up = endp_up, + .endp_down = endp_down, + }; + + i = shinkos1245_get_printerid(&ctx, &resp); + if (i < 0) + return CUPS_BACKEND_FAILED; + + for (i = 0 ; i < (int) sizeof(resp.data) && i < buf_len; i++) { + buf[i] = resp.data[i]; + } + + /* Ensure null-termination */ + if (i < buf_len) + buf[i] = 0; + else + buf[buf_len-1] = 0; + + return CUPS_BACKEND_OK; +} + +/* Exported */ +#define USB_VID_SHINKO 0x10CE +#define USB_PID_SHINKO_S1245 0x0007 + +struct dyesub_backend shinkos1245_backend = { + .name = "Shinko/Sinfonia CHC-S1245", + .version = "0.07WIP", + .uri_prefix = "shinkos1245", + .cmdline_usage = shinkos1245_cmdline, + .cmdline_arg = shinkos1245_cmdline_arg, + .init = shinkos1245_init, + .attach = shinkos1245_attach, + .teardown = shinkos1245_teardown, + .read_parse = shinkos1245_read_parse, + .main_loop = shinkos1245_main_loop, + .query_serno = shinkos1245_query_serno, + .devices = { + { USB_VID_SHINKO, USB_PID_SHINKO_S1245, P_SHINKO_S1245, ""}, + { 0, 0, 0, ""} + } +}; + +/* CHC-S1245 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 00 00 00 00 01 00 00 00 MM == Model (ie 1245d) + 64 00 00 00 00 00 00 00 TT 00 00 00 00 00 00 00 TT == Media Size (0x10 fixed) + MM 00 00 00 PP 00 00 00 00 00 00 00 ZZ ZZ ZZ ZZ MM = Print Method (aka cut control), PP = Default/Glossy/Matte (0x01/0x03/0x05), ZZ == matte intensity (0x7fffffff for glossy, else 0x00000000 +- 25 for matte) + VV 00 00 00 WW WW 00 00 HH HH 00 00 XX 00 00 00 VV == dust; 0x00 default, 0x01 off, 0x02 on, 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. + 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 ]] + + +*/ diff --git a/src/cups/shinko_s2145_print.c b/src/cups/shinko_s2145_print.c index 5196528..c6fd88f 100644 --- a/src/cups/shinko_s2145_print.c +++ b/src/cups/shinko_s2145_print.c @@ -39,8 +39,9 @@ #include <fcntl.h> #include <signal.h> -#include "backend_common.h" +#define BACKEND shinkos2145_backend +#include "backend_common.h" enum { S_IDLE = 0, @@ -53,7 +54,7 @@ enum { struct s2145_printjob_hdr { uint32_t len1; /* Fixed at 0x10 */ uint32_t model; /* Equal to the printer model (eg '2145' or '1245' decimal) */ - uint32_t med_type; /* 6145 only, media type */ + uint32_t unk2; uint32_t unk3; /* Fixed at 0x01 */ uint32_t len2; /* Fixed at 0x64 */ @@ -61,9 +62,9 @@ struct s2145_printjob_hdr { uint32_t media; uint32_t unk6; - 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 method; + uint32_t mode; + uint32_t unk7; uint32_t unk8; uint32_t unk9; @@ -94,13 +95,12 @@ struct shinkos2145_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; + uint8_t jobid; - uint8_t fast_return; struct s2145_printjob_hdr hdr; - uint32_t model; - uint8_t *databuf; int datalen; }; @@ -684,11 +684,11 @@ struct s2145_status_resp { static char *bank_statuses(uint8_t v) { switch (v) { - case 0: + case BANK_STATUS_FREE: return "Free"; - case 1: + case BANK_STATUS_XFER: return "Xfer"; - case 2: + case BANK_STATUS_FULL: return "Full"; default: return "Unknown"; @@ -723,7 +723,7 @@ struct s2145_mediainfo_item { uint16_t columns; uint16_t rows; uint8_t media_type; - uint8_t print_type; + uint8_t print_type; /* The same as the "print method" */ uint8_t reserved[3]; } __attribute__((packed)); @@ -900,7 +900,7 @@ static int get_fwinfo(struct shinkos2145_ctx *ctx) (uint8_t*)&cmd, sizeof(cmd), sizeof(*resp), &num)) < 0) { - ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); + ERROR("Failed to execute %s command (%d)\n", cmd_names(cmd.hdr.cmd), ret); continue; } @@ -1136,7 +1136,7 @@ static int get_tonecurve(struct shinkos2145_ctx *ctx, int type, char *fname) int ret, num = 0; uint8_t *data; - uint16_t curves[768]; + uint16_t curves[UPDATE_SIZE] = { 0 } ; int i,j; @@ -1161,6 +1161,7 @@ static int get_tonecurve(struct shinkos2145_ctx *ctx, int type, char *fname) if (!data) { ERROR("Memory allocation failure! (%d bytes)\n", resp->total_size * 2); + return -1; } i = 0; @@ -1189,11 +1190,11 @@ static int get_tonecurve(struct shinkos2145_ctx *ctx, int type, char *fname) goto done; } - for (i = 0 ; i < 768; i++) { + for (i = 0 ; i < UPDATE_SIZE; i++) { /* Byteswap appropriately */ curves[i] = cpu_to_be16(le16_to_cpu(curves[i])); - write(tc_fd, &curves[i], sizeof(uint16_t)); } + write(tc_fd, curves, UPDATE_SIZE * sizeof(uint16_t)); close(tc_fd); } @@ -1210,11 +1211,12 @@ static int set_tonecurve(struct shinkos2145_ctx *ctx, int target, char *fname) INFO("Set %s Tone Curve from '%s'\n", update_targets(target), fname); - uint16_t *data = malloc(UPDATE_SIZE); + uint16_t *data = malloc(UPDATE_SIZE * sizeof(uint16_t)); if (!data) { ERROR("Memory allocation failure! (%d bytes)\n", UPDATE_SIZE); + return -1; } /* Read in file */ @@ -1223,26 +1225,26 @@ static int set_tonecurve(struct shinkos2145_ctx *ctx, int target, char *fname) ret = -1; goto done; } - if (read(tc_fd, data, UPDATE_SIZE) != UPDATE_SIZE) { + if (read(tc_fd, data, UPDATE_SIZE * sizeof(uint16_t)) != (UPDATE_SIZE * sizeof(uint16_t))) { ret = -2; goto done; } close(tc_fd); /* Byteswap data to local CPU.. */ - for (ret = 0; ret < UPDATE_SIZE ; ret+=2) { + for (ret = 0; ret < UPDATE_SIZE ; ret++) { data[ret] = be16_to_cpu(data[ret]); } /* Set up command */ cmd.target = target; cmd.reserved = 0; - cmd.size = cpu_to_le32(UPDATE_SIZE); + cmd.size = cpu_to_le32(UPDATE_SIZE * sizeof(uint16_t)); cmd.hdr.cmd = cpu_to_le16(S2145_CMD_UPDATE); cmd.hdr.len = cpu_to_le16(sizeof(struct s2145_update_cmd)-sizeof(cmd.hdr)); /* Byteswap data to format printer is expecting.. */ - for (ret = 0; ret < UPDATE_SIZE ; ret+=2) { + for (ret = 0; ret < UPDATE_SIZE ; ret++) { data[ret] = cpu_to_le16(data[ret]); } @@ -1256,7 +1258,7 @@ static int set_tonecurve(struct shinkos2145_ctx *ctx, int target, char *fname) /* Sent transfer */ if ((ret = send_data(ctx->dev, ctx->endp_down, - (uint8_t *) data, UPDATE_SIZE))) { + (uint8_t *) data, UPDATE_SIZE * sizeof(uint16_t)))) { goto done; } @@ -1274,10 +1276,10 @@ static void shinkos2145_cmdline(void) DEBUG("\t\t[ -e ] # Query error log\n"); DEBUG("\t\t[ -f ] # Use fast return mode\n"); DEBUG("\t\t[ -F ] # Flash Printer LED\n"); + DEBUG("\t\t[ -i ] # Query printer info\n"); DEBUG("\t\t[ -l filename ] # Get current tone curve\n"); DEBUG("\t\t[ -L filename ] # Set current tone curve\n"); DEBUG("\t\t[ -m ] # Query media\n"); - DEBUG("\t\t[ -i ] # Query printer info\n"); DEBUG("\t\t[ -r ] # Reset user/NV tone curve\n"); DEBUG("\t\t[ -R ] # Reset printer to factory defaults\n"); DEBUG("\t\t[ -s ] # Query status\n"); @@ -1291,112 +1293,65 @@ int shinkos2145_cmdline_arg(void *vctx, int argc, char **argv) struct shinkos2145_ctx *ctx = vctx; int i, j = 0; + if (!ctx) + return -1; + /* Reset arg parsing */ optind = 1; opterr = 0; - while ((i = getopt(argc, argv, "b:c:C:efFil:L:mr:R:suU:X:")) >= 0) { + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "b:c:C:eFil:L:mr:R:suU:X:")) >= 0) { switch(i) { + GETOPT_PROCESS_GLOBAL case 'b': - if (ctx) { - if (optarg[0] == '1') - j = button_set(ctx, BUTTON_ENABLED); - else if (optarg[0] == '0') - j = button_set(ctx, BUTTON_DISABLED); - else - return -1; - break; - } - return 1; + if (optarg[0] == '1') + j = button_set(ctx, BUTTON_ENABLED); + else if (optarg[0] == '0') + j = button_set(ctx, BUTTON_DISABLED); + else + return -1; + break; case 'c': - if (ctx) { - j = get_tonecurve(ctx, TONECURVE_USER, optarg); - break; - } - return 1; + j = get_tonecurve(ctx, TONECURVE_USER, optarg); + break; case 'C': - if (ctx) { - j = set_tonecurve(ctx, TONECURVE_USER, optarg); - break; - } - return 1; + j = set_tonecurve(ctx, TONECURVE_USER, optarg); + break; case 'e': - if (ctx) { - j = get_errorlog(ctx); - break; - } - return 1; - case 'f': - if (ctx) { - ctx->fast_return = 1; - break; - } - return 1; + j = get_errorlog(ctx); + break; case 'F': - if (ctx) { - j = flash_led(ctx); - break; - } - return 1; + j = flash_led(ctx); + break; case 'i': - if (ctx) { - j = get_fwinfo(ctx); - break; - } - return 1; + j = get_fwinfo(ctx); + break; case 'l': - if (ctx) { - j = get_tonecurve(ctx, TONECURVE_CURRENT, optarg); - break; - } - return 1; + j = get_tonecurve(ctx, TONECURVE_CURRENT, optarg); + break; case 'L': - if (ctx) { - j = set_tonecurve(ctx, TONECURVE_CURRENT, optarg); - break; - } - return 1; + j = set_tonecurve(ctx, TONECURVE_CURRENT, optarg); + break; case 'm': - if (ctx) { - j = get_mediainfo(ctx); - break; - } - return 1; + j = get_mediainfo(ctx); + break; case 'r': - if (ctx) { - j = reset_curve(ctx, RESET_USER_CURVE); - break; - } - return 1; + j = reset_curve(ctx, RESET_USER_CURVE); + break; case 'R': - if (ctx) { - j = reset_curve(ctx, RESET_PRINTER); - break; - } - return 1; + j = reset_curve(ctx, RESET_PRINTER); + break; case 's': - if (ctx) { - j = get_status(ctx); - break; - } - return 1; + j = get_status(ctx); + break; case 'u': - if (ctx) { - j = get_user_string(ctx); - break; - } - return 1; + j = get_user_string(ctx); + break; case 'U': - if (ctx) { - j = set_user_string(ctx, optarg); - break; - } - return 1; + j = set_user_string(ctx, optarg); + break; case 'X': - if (ctx) { - j = cancel_job(ctx, optarg); - break; - } - return 1; + j = cancel_job(ctx, optarg); + break; default: break; /* Ignore completely */ } @@ -1418,10 +1373,6 @@ static void *shinkos2145_init(void) } memset(ctx, 0, sizeof(struct shinkos2145_ctx)); - /* Use Fast return by default in CUPS mode */ - if (getenv("DEVICE_URI") || getenv("FAST_RETURN")) - ctx->fast_return = 1; - return ctx; } @@ -1429,16 +1380,23 @@ static void shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, uint8_t jobid) { struct shinkos2145_ctx *ctx = vctx; + struct libusb_device *device; + struct libusb_device_descriptor desc; ctx->dev = dev; ctx->endp_up = endp_up; ctx->endp_down = endp_down; + device = libusb_get_device(dev); + libusb_get_device_descriptor(device, &desc); + + ctx->type = lookup_printer_type(&shinkos2145_backend, + desc.idVendor, desc.idProduct); + /* Ensure jobid is sane */ ctx->jobid = (jobid & 0x7f) + 1; } - static void shinkos2145_teardown(void *vctx) { struct shinkos2145_ctx *ctx = vctx; @@ -1451,18 +1409,19 @@ static void shinkos2145_teardown(void *vctx) { free(ctx); } -static int shinkos2145_early_parse(void *vctx, int data_fd) { +static int shinkos2145_read_parse(void *vctx, int data_fd) { struct shinkos2145_ctx *ctx = vctx; - int printer_type, ret; + int ret; + uint8_t tmpbuf[4]; if (!ctx) - return -1; + return CUPS_BACKEND_FAILED; /* 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; /* deliberate */ + return CUPS_BACKEND_CANCEL; ERROR("Read failed (%d/%d/%d)\n", ret, 0, (int)sizeof(ctx->hdr)); perror("ERROR: Read failed"); @@ -1473,42 +1432,20 @@ static int shinkos2145_early_parse(void *vctx, int data_fd) { le32_to_cpu(ctx->hdr.len2) != 0x64 || le32_to_cpu(ctx->hdr.dpi) != 300) { ERROR("Unrecognized header data format!\n"); - return -1; + return CUPS_BACKEND_CANCEL; } - ctx->model = le32_to_cpu(ctx->hdr.model); - - switch(ctx->model) { - case 2145: - printer_type = P_SHINKO_S2145; - break; - case 6145: - case 6245: - default: + if (le32_to_cpu(ctx->hdr.model) != 2145) { ERROR("Unrecognized printer (%d)!\n", le32_to_cpu(ctx->hdr.model)); - return -1; + return CUPS_BACKEND_CANCEL; } - 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) { @@ -1585,7 +1522,8 @@ static int shinkos2145_main_loop(void *vctx, int copies) { 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))) + le16_to_cpu(media->items[i].rows) == cpu_to_le16(le32_to_cpu(ctx->hdr.rows)) && + media->items[i].print_type == le32_to_cpu(ctx->hdr.method)) break; } if (i == media->count) { @@ -1593,7 +1531,9 @@ static int shinkos2145_main_loop(void *vctx, int copies) { return CUPS_BACKEND_HOLD; } - top: + // XXX check copies against remaining media! + +top: if (state != last_state) { if (dyesub_debug) DEBUG("last_state %d new %d\n", last_state, state); @@ -1645,19 +1585,13 @@ static int shinkos2145_main_loop(void *vctx, int copies) { print->hdr.cmd = cpu_to_le16(S2145_CMD_PRINTJOB); print->hdr.len = cpu_to_le16(sizeof (*print) - sizeof(*cmd)); - 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; - } + 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 ((ret = s2145_do_cmd(ctx, cmdbuf, sizeof(*print), @@ -1671,6 +1605,9 @@ static int shinkos2145_main_loop(void *vctx, int copies) { if (sts->hdr.error == ERROR_BUFFER_FULL) { INFO("Printer Buffers full, retrying\n"); break; + } else if ((sts->hdr.status & 0xf0) == 0x30 || sts->hdr.status == 0x21) { + INFO("Printer busy (%s), retrying\n", status_str(sts->hdr.status)); + break; } else if (sts->hdr.status != ERROR_NONE) goto printer_error; } @@ -1685,7 +1622,7 @@ static int shinkos2145_main_loop(void *vctx, int copies) { state = S_PRINTER_SENT_DATA; break; case S_PRINTER_SENT_DATA: - if (ctx->fast_return) { + if (fast_return) { INFO("Fast return mode enabled.\n"); state = S_FINISHED; } else if (sts->hdr.status == STATUS_READY || @@ -1700,19 +1637,7 @@ static int shinkos2145_main_loop(void *vctx, int copies) { if (state != S_FINISHED) goto top; - /* 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) { - state = S_IDLE; - goto top; - } + INFO("Print complete\n"); return CUPS_BACKEND_OK; @@ -1764,29 +1689,21 @@ static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t end /* 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", - .version = "0.40", + .version = "0.46", .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, ""} } }; @@ -1810,67 +1727,4 @@ 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/shinko_s6245_print.c b/src/cups/shinko_s6245_print.c new file mode 100644 index 0000000..e4b57e9 --- /dev/null +++ b/src/cups/shinko_s6245_print.c @@ -0,0 +1,1863 @@ +/* + * Shinko/Sinfonia CHC-S6245 CUPS backend -- libusb-1.0 version + * + * (c) 2013-2015 Solomon Peachy <pizza@shaftnet.org> + * + * Low-level documentation was provided by Sinfonia, Inc. Thank you! + * + * 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 <time.h> + +#define BACKEND shinkos6245_backend + +#include "backend_common.h" + + +enum { + S_IDLE = 0, + S_PRINTER_READY_CMD, + S_PRINTER_SENT_DATA, + S_FINISHED, +}; + +/* Structure of printjob header. All fields are LITTLE ENDIAN */ +struct s6245_printjob_hdr { + uint32_t len1; /* Fixed at 0x10 */ + uint32_t model; /* Equal to the printer model (eg '6245' or '1245' decimal) */ + uint32_t unk2; + uint32_t unk3; /* Fixed at 0x01 */ + + uint32_t len2; /* Fixed at 0x64 */ + uint32_t unk5; + uint32_t media; // 8x4->8x12 + uint32_t unk6; + + uint32_t unk7; + uint32_t unk7a; + uint32_t oc_mode; /* 6145/6245 only, Matte/Glossy/None */ + uint32_t unk8; + + uint32_t unk9; + uint32_t columns; + uint32_t rows; + uint32_t copies; + + uint32_t unk10; + uint32_t unk11; + uint32_t unk12; + uint32_t unk13; + + uint32_t unk14; + uint32_t unk15; + uint32_t dpi; /* Fixed at '300' (decimal) */ + uint32_t unk16; + + uint32_t unk17; + uint32_t unk18; + uint32_t unk19; + uint32_t unk20; + + uint32_t unk21; +} __attribute__((packed)); + +/* Private data stucture */ +struct shinkos6245_ctx { + struct libusb_device_handle *dev; + uint8_t endp_up; + uint8_t endp_down; + int type; + + uint8_t jobid; + + struct s6245_printjob_hdr hdr; + + uint8_t *databuf; + int datalen; +}; + +/* Structs for printer */ +struct s6245_cmd_hdr { + uint16_t cmd; + uint16_t len; /* Not including this header */ +} __attribute__((packed)); + +#define S6245_CMD_GETSTATUS 0x0001 +#define S6245_CMD_MEDIAINFO 0x0002 +#define S6245_CMD_ERRORLOG 0x0004 +#define S6245_CMD_GETPARAM 0x0005 +#define S6245_CMD_GETSERIAL 0x0006 +#define S6245_CMD_PRINTSTAT 0x0007 +#define S6245_CMD_EXTCOUNTER 0x0008 + +#define S6245_CMD_PRINTJOB 0x4001 +#define S6245_CMD_CANCELJOB 0x4002 +#define S6245_CMD_FLASHLED 0x4003 +#define S6245_CMD_RESET 0x4004 +#define S6245_CMD_READTONE 0x4005 +#define S6245_CMD_SETPARAM 0x4007 + +#define S6245_CMD_GETEEPROM 0x400E +#define S6245_CMD_SETEEPROM 0x400F +#define S6245_CMD_SETTIME 0x4011 + +#define S6245_CMD_FWINFO 0xC003 +#define S6245_CMD_UPDATE 0xC004 + +static char *cmd_names(uint16_t v) { + switch (le16_to_cpu(v)) { + case S6245_CMD_GETSTATUS: + return "Get Status"; + case S6245_CMD_MEDIAINFO: + return "Get Media Info"; + case S6245_CMD_ERRORLOG: + return "Get Error Log"; + case S6245_CMD_GETPARAM: + return "Get Parameter"; + case S6245_CMD_GETSERIAL: + return "Get Serial Number"; + case S6245_CMD_PRINTSTAT: + return "Get Print ID Status"; + case S6245_CMD_EXTCOUNTER: + return "Get Extended Counters"; + case S6245_CMD_PRINTJOB: + return "Print"; + case S6245_CMD_CANCELJOB: + return "Cancel Print"; + case S6245_CMD_FLASHLED: + return "Flash LEDs"; + case S6245_CMD_RESET: + return "Reset"; + case S6245_CMD_READTONE: + return "Read Tone Curve"; + case S6245_CMD_SETPARAM: + return "Set Parameter"; + case S6245_CMD_GETEEPROM: + return "Get EEPROM Backup Parameter"; + case S6245_CMD_SETEEPROM: + return "Set EEPROM Backup Parameter"; + case S6245_CMD_SETTIME: + return "Time Setting"; + case S6245_CMD_FWINFO: + return "Get Firmware Info"; + case S6245_CMD_UPDATE: + return "Update"; + default: + return "Unknown Command"; + } +}; + +struct s6245_print_cmd { + struct s6245_cmd_hdr hdr; + uint8_t id; + uint16_t count; + uint16_t columns; + uint16_t rows; + uint8_t reserved[8]; // columns and rows repeated, then nulls + uint8_t mode; + uint8_t method; + uint8_t reserved2; +} __attribute__((packed)); + +#define PRINT_MODE_NO_OC 0x01 +#define PRINT_MODE_GLOSSY 0x02 +#define PRINT_MODE_MATTE 0x03 + +#if 0 +static char *print_modes(uint8_t v) { + switch (v) { + case PRINT_MODE_NO_OC: + return "No Overcoat"; + case PRINT_MODE_GLOSSY: + return "Glossy"; + case PRINT_MODE_MATTE: + return "Matte"; + default: + return "Unknown"; + } +} +#endif + +#define PRINT_METHOD_STD 0x00 +#define PRINT_METHOD_COMBO_2 0x02 +#define PRINT_METHOD_COMBO_3 0x03 + +#define PRINT_METHOD_DISABLE_ERR 0x10 + +static char *print_methods (uint8_t v) { + switch (v & 0xf) { + case PRINT_METHOD_STD: + return "Standard"; + case PRINT_METHOD_COMBO_2: + return "2up"; + case PRINT_METHOD_COMBO_3: + return "3up"; + default: + return "Unknown"; + } +} + +struct s6245_cancel_cmd { + struct s6245_cmd_hdr hdr; + uint8_t id; +} __attribute__((packed)); + +struct s6245_reset_cmd { + struct s6245_cmd_hdr hdr; + uint8_t target; + uint8_t curveid; +} __attribute__((packed)); + +#define RESET_PRINTER 0x03 +#define RESET_TONE_CURVE 0x04 + +#define TONE_CURVE_ID 0x01 + +struct s6245_readtone_cmd { + struct s6245_cmd_hdr hdr; + uint8_t target; + uint8_t curveid; +} __attribute__((packed)); + +#define READ_TONE_CURVE_USER 0x01 +#define READ_TONE_CURVE_CURR 0x02 + +struct s6245_setparam_cmd { + struct s6245_cmd_hdr hdr; + uint8_t target; + uint32_t param; +} __attribute__((packed)); + +#define PARAM_DRIVER_MODE 0x3e +#define PARAM_PAPER_MODE 0x3f +#define PARAM_SLEEP_TIME 0x54 + +#define PARAM_DRIVER_WIZOFF 0x00000000 +#define PARAM_DRIVER_WIZON 0x00000001 + +#define PARAM_PAPER_NOCUT 0x00000000 +#define PARAM_PAPER_CUTLOAD 0x00000001 + +#define PARAM_SLEEP_5MIN 0x00000000 +#define PARAM_SLEEP_15MIN 0x00000001 +#define PARAM_SLEEP_30MIN 0x00000002 +#define PARAM_SLEEP_60MIN 0x00000003 +#define PARAM_SLEEP_120MIN 0x00000004 +#define PARAM_SLEEP_240MIN 0x00000005 + +struct s6245_seteeprom_cmd { + struct s6245_cmd_hdr hdr; + uint8_t data[256]; /* Maxlen */ +} __attribute__((packed)); + +struct s6245_settime_cmd { + struct s6245_cmd_hdr hdr; + uint8_t enable; /* 0 or 1 */ + uint8_t second; + uint8_t minute; + uint8_t hour; + uint8_t day; + uint8_t month; + uint8_t year; +} __attribute__((packed)); + +struct s6245_errorlog_cmd { + struct s6245_cmd_hdr hdr; + uint16_t index; /* 0 is latest */ +} __attribute__((packed)); + +struct s6245_getparam_cmd { + struct s6245_cmd_hdr hdr; + uint8_t target; +} __attribute__((packed)); + +struct s6245_getprintidstatus_cmd { + struct s6245_cmd_hdr hdr; + uint8_t id; +} __attribute__((packed)); + +struct s6245_fwinfo_cmd { + struct s6245_cmd_hdr hdr; + uint8_t target; +} __attribute__((packed)); + +#define FWINFO_TARGET_MAIN_BOOT 0x01 +#define FWINFO_TARGET_MAIN_APP 0x02 +#define FWINFO_TARGET_PRINT_TABLES 0x03 +#define FWINFO_TARGET_DSP 0x04 + +static char *fwinfo_targets (uint8_t v) { + switch (v) { + case FWINFO_TARGET_MAIN_BOOT: + return "Main Boot "; + case FWINFO_TARGET_MAIN_APP: + return "Main App "; + case FWINFO_TARGET_DSP: + return "DSP "; + case FWINFO_TARGET_PRINT_TABLES: + return "Print Tables"; + default: + return "Unknown "; + } +} + +struct s6245_update_cmd { + struct s6245_cmd_hdr hdr; + uint8_t target; + uint8_t curve_id; + uint8_t reset; // ?? + uint8_t reserved[3]; + uint32_t size; +} __attribute__((packed)); + +#define UPDATE_TARGET_USER 0x03 +#define UPDATE_TARGET_CURRENT 0x04 + +static char *update_targets (uint8_t v) { + switch (v) { + case UPDATE_TARGET_USER: + return "User"; + case UPDATE_TARGET_CURRENT: + return "Current"; + default: + return "Unknown"; + } +} + +#define UPDATE_SIZE 0x600 +/* Update is three channels, Y, M, C; + each is 256 entries of 11-bit data padded to 16-bits. + Printer expects LE data. We use BE data on disk. +*/ + +struct s6245_status_hdr { + uint8_t result; + uint8_t error; + uint8_t printer_major; + uint8_t printer_minor; + uint8_t reserved[2]; + uint8_t mode; + uint8_t status; + uint16_t payload_len; +} __attribute__((packed)); + +#define RESULT_SUCCESS 0x01 +#define RESULT_FAIL 0x02 + +#define ERROR_NONE 0x00 +#define ERROR_INVALID_PARAM 0x01 +#define ERROR_MAIN_APP_INACTIVE 0x02 +#define ERROR_COMMS_TIMEOUT 0x03 +#define ERROR_MAINT_NEEDED 0x04 +#define ERROR_BAD_COMMAND 0x05 +#define ERROR_PRINTER 0x11 +#define ERROR_BUFFER_FULL 0x21 + +static char *error_codes(uint8_t major, uint8_t minor) +{ + switch(major) { + case 0x01: /* "Controller Error" */ + switch(minor) { + case 0x01: + return "Controller: EEPROM Write Timeout"; + case 0x09: + return "Controller: DSP FW Boot"; + case 0x0A: + return "Controller: Invalid Print Parameter Table"; + case 0x0B: + return "Controller: DSP FW Mismatch"; + case 0x0C: + return "Controller: Print Parameter Table Mismatch"; + case 0x0D: + return "Controller: FPGA Configuration Failed"; + case 0x0F: + return "Controller: Main FW Checksum"; + case 0x10: + return "Controller: Flash Write Failed"; + case 0x11: + return "Controller: DSP Checksum"; + case 0x12: + return "Controller: DSP FW Write Failed"; + case 0x13: + return "Controller: Print Parameter Table Checksum"; + case 0x14: + return "Controller: Print Parameter Table Write Failed"; + case 0x15: + return "Controller: User Tone Curve Write Failed"; + case 0x16: + return "Controller: MSP Communication"; + case 0x17: + return "Controller: THV Autotuning"; + case 0x18: + return "Controller: THV Value Out of Range"; + case 0x19: + return "Controller: Thermal Head"; + case 0x1B: + return "Controller: DSP Communication"; + case 0x1C: + return "Controller: DSP DMA Failed"; + default: + return "Controller: Unknown"; + } + case 0x02: /* "Mechanical Error" */ + switch (minor) { + case 0x01: + return "Mechanical: Pinch Head Home"; + case 0x02: + return "Mechanical: Pinch Head (position 1)"; + case 0x03: + return "Mechanical: Pinch Head (position 2)"; + case 0x04: + return "Mechanical: Pinch Head (position 3)"; + case 0x0B: + return "Mechanical: Cutter (Right)"; + case 0x0C: + return "Mechanical: Cutter (Left)"; + default: + return "Mechanical: Unknown"; + } + case 0x03: /* "Sensor Error" */ + switch (minor) { + case 0x01: + return "Sensor: Head Up"; + case 0x02: + return "Sensor: Head Down"; + case 0x0B: + return "Sensor: Cutter Left"; + case 0x0C: + return "Sensor: Cutter Right"; + case 0x0D: + return "Sensor: Cutter Left+Right"; + case 0x15: + return "Sensor: Head Up Unstable"; + case 0x16: + return "Sensor: Head Down Unstable"; + case 0x17: + return "Sensor: Cutter Left Unstable"; + case 0x18: + return "Sensor: Cutter Right Unstable"; + case 0x19: + return "Sensor: Cover Open Unstable"; + case 0x1E: + return "Sensor: Ribbon Mark (Cyan)"; + case 0x1F: + return "Sensor: Ribbon Mark (OC)"; + default: + return "Sensor: Unknown"; + } + case 0x04: /* "Temperature Sensor Error" */ + switch (minor) { + case 0x01: + return "Temp Sensor: Thermal Head Low"; + case 0x02: + return "Temp Sensor: Thermal Head High"; + case 0x05: + return "Temp Sensor: Environment Low"; + case 0x06: + return "Temp Sensor: Environment High"; + case 0x07: + return "Temp Sensor: Preheat"; + case 0x08: + return "Temp Sensor: Thermal Protect"; + default: + return "Temp Sensor: Unknown"; + } + case 0x5: /* "Paper Jam" */ + switch (minor) { + case 0x01: + return "Paper Jam: Loading Paper Top On"; + case 0x02: + return "Paper Jam: Loading Print Position On"; + case 0x03: + return "Paper Jam: Loading Print Position Off"; + case 0x04: + return "Paper Jam: Loading Paper Top Off"; + case 0x05: + return "Paper Jam: Loading Cut Print Position Off"; + case 0x0C: + return "Paper Jam: Initializing Print Position Off"; + case 0x0D: + return "Paper Jam: Initializing Print Position On"; + case 0x15: + return "Paper Jam: Printing Print Position Off"; + case 0x16: + return "Paper Jam: Printing Paper Top On"; + case 0x17: + return "Paper Jam: Printing Paper Top Off"; + case 0x1F: + return "Paper Jam: Precut Print Position Off"; + case 0x20: + return "Paper Jam: Precut Print Position On"; + + case 0x29: + return "Paper Jam: Printing Paper Top On"; + case 0x2A: + return "Paper Jam: Printing Pre-Yellow Print Position Off"; + case 0x2B: + return "Paper Jam: Printing Yellow Print Position Off"; + case 0x2C: + return "Paper Jam: Printing Yellow Print Position On"; + case 0x2D: + return "Paper Jam: Printing Pre-Magenta Print Position Off"; + case 0x2E: + return "Paper Jam: Printing Magenta Print Position On"; + case 0x2F: + return "Paper Jam: Printing Magenta Print Position Off"; + case 0x30: + return "Paper Jam: Printing Pre-Cyan Print Position Off"; + case 0x31: + return "Paper Jam: Printing Cyan Print Position On"; + case 0x32: + return "Paper Jam: Printing Cyan Print Position Off"; + case 0x33: + return "Paper Jam: Printing Pre-OC Print Position Off"; + case 0x34: + return "Paper Jam: Printing OC Print Position On"; + case 0x35: + return "Paper Jam: Printing OC Print Position Off"; + case 0x36: + return "Paper Jam: Cut Print Position Off"; + case 0x37: + return "Paper Jam: Home Position Off"; + case 0x38: + return "Paper Jam: Paper Top Off"; + case 0x39: + return "Paper Jam: Print Position On"; + + case 0x51: + return "Paper Jam: Paper Empty On, Top On, Position On"; + case 0x52: + return "Paper Jam: Paper Empty On, Top On, Position Off"; + case 0x53: + return "Paper Jam: Paper Empty On, Top Off, Print Position On"; + case 0x54: + return "Paper Jam: Paper Empty On, Top Of, Position Off"; + case 0x55: + return "Paper Jam: Paper Empty Off, Top On, Position On"; + case 0x56: + return "Paper Jam: Paper Empty Off, Top On, Position Off"; + case 0x57: + return "Paper Jam: Paper Empty Off, Top Off, Position On"; + case 0x60: + return "Paper Jam: Cutter Right"; + case 0x61: + return "Paper Jam: Cutter Left"; + + default: + return "Paper Jam: Unknown"; + } + case 0x06: /* User Error */ + switch (minor) { + case 0x01: + return "Drawer Unit Open"; + case 0x02: + return "Incorrect Ribbon"; + case 0x03: + return "No/Empty Ribbon"; + case 0x04: + return "Mismatched Ribbon"; + case 0x08: + return "No Paper"; + case 0x0C: + return "Paper End"; + default: + return "Unknown"; + } + default: + return "Unknown"; + } +} + +static char *error_str(uint8_t v) { + switch (v) { + case ERROR_NONE: + return "None"; + case ERROR_INVALID_PARAM: + return "Invalid Command Parameter"; + case ERROR_MAIN_APP_INACTIVE: + return "Main App Inactive"; + case ERROR_COMMS_TIMEOUT: + return "Main Communication Timeout"; + case ERROR_MAINT_NEEDED: + return "Maintainence Needed"; + case ERROR_BAD_COMMAND: + return "Inappropriate Command"; + case ERROR_PRINTER: + return "Printer Error"; + case ERROR_BUFFER_FULL: + return "Buffer Full"; + default: + return "Unknown"; + } +} + +#define STATUS_READY 0x00 +#define STATUS_INIT_CPU 0x31 +#define STATUS_INIT_RIBBON 0x32 +#define STATUS_INIT_PAPER 0x33 +#define STATUS_THERMAL_PROTECT 0x34 +#define STATUS_USING_PANEL 0x35 +#define STATUS_SELF_DIAG 0x36 +#define STATUS_DOWNLOADING 0x37 + +#define STATUS_FEEDING_PAPER 0x61 +#define STATUS_PRE_HEAT 0x62 +#define STATUS_PRINT_Y 0x63 +#define STATUS_BACK_FEED_Y 0x64 +#define STATUS_PRINT_M 0x65 +#define STATUS_BACK_FEED_M 0x66 +#define STATUS_PRINT_C 0x67 +#define STATUS_BACK_FEED_C 0x68 +#define STATUS_PRINT_OP 0x69 +#define STATUS_PAPER_CUT 0x6A +#define STATUS_PAPER_EJECT 0x6B +#define STATUS_BACK_FEED_E 0x6C + +static char *status_str(uint8_t v) { + switch (v) { + case STATUS_READY: + return "Ready"; + case STATUS_INIT_CPU: + return "Initializing CPU"; + case STATUS_INIT_RIBBON: + return "Initializing Ribbon"; + case STATUS_INIT_PAPER: + return "Loading Paper"; + case STATUS_THERMAL_PROTECT: + return "Thermal Protection"; + case STATUS_USING_PANEL: + return "Using Operation Panel"; + case STATUS_SELF_DIAG: + return "Processing Self Diagnosis"; + case STATUS_DOWNLOADING: + return "Processing Download"; + case STATUS_FEEDING_PAPER: + return "Feeding Paper"; + case STATUS_PRE_HEAT: + return "Pre-Heating"; + case STATUS_PRINT_Y: + return "Printing Yellow"; + case STATUS_BACK_FEED_Y: + return "Back-Feeding - Yellow Complete"; + case STATUS_PRINT_M: + return "Printing Magenta"; + case STATUS_BACK_FEED_M: + return "Back-Feeding - Magenta Complete"; + case STATUS_PRINT_C: + return "Printing Cyan"; + case STATUS_BACK_FEED_C: + return "Back-Feeding - Cyan Complete"; + case STATUS_PRINT_OP: + return "Laminating"; + case STATUS_PAPER_CUT: + return "Cutting Paper"; + case STATUS_PAPER_EJECT: + return "Ejecting Paper"; + case STATUS_BACK_FEED_E: + return "Back-Feeding - Ejected"; + case ERROR_PRINTER: + return "Printer Error"; + default: + return "Unknown"; + } +} + +struct s6245_status_resp { + struct s6245_status_hdr hdr; + uint32_t count_lifetime; + uint32_t count_maint; + uint32_t count_paper; + uint32_t count_cutter; + uint32_t count_head; + uint32_t count_ribbon_left; + uint32_t reserved; + + uint8_t bank1_printid; + uint16_t bank1_remaining; + uint16_t bank1_finished; + uint16_t bank1_specified; + uint8_t bank1_status; + + uint8_t bank2_printid; + uint16_t bank2_remaining; + uint16_t bank2_finished; + uint16_t bank2_specified; + uint8_t bank2_status; + + uint8_t reserved2[16]; + uint8_t tonecurve_status; + uint8_t reserved3[6]; +} __attribute__((packed)); + +#define BANK_STATUS_FREE 0x00 +#define BANK_STATUS_XFER 0x01 +#define BANK_STATUS_FULL 0x02 +#define BANK_STATUS_PRINTING 0x12 + +static char *bank_statuses(uint8_t v) +{ + switch (v) { + case BANK_STATUS_FREE: + return "Free"; + case BANK_STATUS_XFER: + return "Xfer"; + case BANK_STATUS_FULL: + return "Full"; + case BANK_STATUS_PRINTING: + return "Printing"; + default: + return "Unknown"; + } +} + +#define TONECURVE_INIT 0x00 +#define TONECURVE_USER 0x01 +#define TONECURVE_CURRENT 0x02 + +static char *tonecurve_statuses (uint8_t v) +{ + switch(v) { + case 0: + return "Initial"; + case 1: + return "UserSet"; + case 2: + return "Current"; + default: + return "Unknown"; + } +} + +struct s6245_geteeprom_resp { + struct s6245_status_hdr hdr; + uint8_t data[256]; +} __attribute__((packed)); + +struct s6245_readtone_resp { + struct s6245_status_hdr hdr; + uint16_t total_size; +} __attribute__((packed)); + +struct s6245_mediainfo_item { + uint8_t media_code; + uint16_t columns; + uint16_t rows; + uint8_t reserved; + uint8_t print_method; /* PRINT_METHOD_* */ + uint8_t reserved2[3]; +} __attribute__((packed)); + +#define MEDIA_8x10 0x10 +#define MEDIA_8x12 0x11 +#define MEDIA_8x4 0x20 +#define MEDIA_8x5 0x21 +#define MEDIA_8x6 0x22 +#define MEDIA_8x8 0x23 +#define MEDIA_8x4_2 0x30 +#define MEDIA_8x5_2 0x31 +#define MEDIA_8x6_2 0x32 +#define MEDIA_8x4_3 0x40 + +static char *print_medias (uint8_t v) { + switch (v) { + case MEDIA_8x10: + return "8x10"; + case MEDIA_8x12: + return "8x12"; + case MEDIA_8x4: + return "8x4"; + case MEDIA_8x5: + return "8x5"; + case MEDIA_8x6: + return "8x6"; + case MEDIA_8x8: + return "8x8"; + case MEDIA_8x4_2: + return "8x4*2"; + case MEDIA_8x5_2: + return "8x5*2"; + case MEDIA_8x6_2: + return "8x6*2"; + case MEDIA_8x4_3: + return "8x4*3"; + default: + return "Unknown"; + } +} + +struct s6245_mediainfo_resp { + struct s6245_status_hdr hdr; + uint8_t count; + struct s6245_mediainfo_item items[10]; /* Not all necessarily used */ +} __attribute__((packed)); + +struct s6245_errorlog_resp { + struct s6245_status_hdr hdr; + uint16_t error_count; + uint8_t error_major; + uint8_t error_minor; + uint16_t reserved; + uint32_t print_counter; + uint16_t ribbon_remain; + uint8_t ribbon_takeup_diameter; + uint8_t ribbon_supply_diameter; + uint16_t main_fw_ver; + uint16_t dsp_fw_ver; + uint16_t print_param_ver; + uint16_t boot_fw_ver; + uint8_t time_sec; + uint8_t time_min; + uint8_t time_hour; + uint8_t time_day; + uint8_t time_month; + uint8_t time_year; + uint16_t reserved2; + uint8_t printer_thermistor; + uint8_t head_thermistor; + uint8_t printer_humidity; + uint8_t reserved3[13]; + uint8_t status; + uint8_t reserved4[3]; + uint16_t image_cols; + uint16_t image_rows; + uint8_t reserved5[8]; +} __attribute__((packed)); + +struct s6245_getparam_resp { + struct s6245_status_hdr hdr; + uint32_t param; +} __attribute__((packed)); + +struct s6245_getserial_resp { + struct s6245_status_hdr hdr; + uint8_t data[8]; +} __attribute__((packed)); + +struct s6245_getprintidstatus_resp { + struct s6245_status_hdr hdr; + uint8_t id; + uint16_t remaining; + uint16_t finished; + uint16_t specified; + uint16_t status; +} __attribute__((packed)); + +#define STATUS_WAITING 0x0000 +#define STATUS_PRINTING 0x0100 +#define STATUS_COMPLETED 0x0200 +#define STATUS_ERROR 0xFFFF + +struct s6245_getextcounter_resp { + struct s6245_status_hdr hdr; + uint32_t lifetime_distance; /* Inches */ + uint32_t maint_distance; + uint32_t head_distance; + uint8_t reserved[32]; +} __attribute__((packed)); + +struct s6245_fwinfo_resp { + struct s6245_status_hdr hdr; + uint8_t name[8]; + uint8_t type[16]; + uint8_t date[10]; + uint8_t major; + uint8_t minor; + uint16_t checksum; +} __attribute__((packed)); + + + +#define READBACK_LEN 512 /* Needs to be larger than largest response hdr */ +#define CMDBUF_LEN sizeof(struct s6245_print_cmd) + +uint8_t rdbuf[READBACK_LEN]; + +static int s6245_do_cmd(struct shinkos6245_ctx *ctx, + uint8_t *cmd, int cmdlen, + int minlen, int *num) +{ + int ret; + struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + + libusb_device_handle *dev = ctx->dev; + uint8_t endp_up = ctx->endp_up; + uint8_t endp_down = ctx->endp_down; + + if ((ret = send_data(dev, endp_down, + cmd, cmdlen))) + return (ret < 0) ? ret : -99; + + ret = read_data(dev, endp_up, + rdbuf, READBACK_LEN, num); + + if (ret < 0) + return ret; + if (*num < minlen) { + ERROR("Short read! (%d/%d))\n", *num, minlen); + return -99; + } + + if (resp->result != RESULT_SUCCESS) { + INFO("Printer Status: %02x (%s)\n", resp->status, + status_str(resp->status)); + INFO(" Result: 0x%02x Error: 0x%02x (0x%02x/0x%02x = %s)\n", + resp->result, resp->error, resp->printer_major, + resp->printer_minor, error_codes(resp->printer_major, resp->printer_minor)); + return -99; + } + + return ret; +} + +static int get_status(struct shinkos6245_ctx *ctx) +{ + struct s6245_cmd_hdr cmd; + struct s6245_status_resp *resp = (struct s6245_status_resp *) rdbuf; + struct s6245_getextcounter_resp *resp2 = (struct s6245_getextcounter_resp *) rdbuf; + int ret, num = 0; + + cmd.cmd = cpu_to_le16(S6245_CMD_GETSTATUS); + cmd.len = cpu_to_le16(0); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return ret; + } + + INFO("Printer Status: 0x%02x (%s)\n", resp->hdr.status, + status_str(resp->hdr.status)); + if (resp->hdr.status == ERROR_PRINTER) { + if(resp->hdr.error == ERROR_NONE) + resp->hdr.error = resp->hdr.status; + INFO(" Error 0x%02x (%s) 0x%02x/0x%02x (%s)\n", + resp->hdr.error, + error_str(resp->hdr.error), + resp->hdr.printer_major, + resp->hdr.printer_minor, error_codes(resp->hdr.printer_major, resp->hdr.printer_minor)); + } + if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_status_resp) - sizeof(struct s6245_status_hdr))) + return 0; + + INFO(" Print Counts:\n"); + INFO("\tSince Paper Changed:\t%08u\n", le32_to_cpu(resp->count_paper)); + INFO("\tLifetime:\t\t%08u\n", le32_to_cpu(resp->count_lifetime)); + INFO("\tMaintainence:\t\t%08u\n", le32_to_cpu(resp->count_maint)); + INFO("\tPrint Head:\t\t%08u\n", le32_to_cpu(resp->count_head)); + INFO(" Cutter Actuations:\t%08u\n", le32_to_cpu(resp->count_cutter)); + INFO(" Ribbon Remaining:\t%08u\n", le32_to_cpu(resp->count_ribbon_left)); + INFO("Bank 1: 0x%02x (%s) Job %03u @ %03u/%03u (%03u remaining)\n", + resp->bank1_status, bank_statuses(resp->bank1_status), + resp->bank1_printid, + le16_to_cpu(resp->bank1_finished), + le16_to_cpu(resp->bank1_specified), + le16_to_cpu(resp->bank1_remaining)); + + INFO("Bank 2: 0x%02x (%s) Job %03d @ %03d/%03d (%03d remaining)\n", + resp->bank2_status, bank_statuses(resp->bank1_status), + resp->bank2_printid, + le16_to_cpu(resp->bank2_finished), + le16_to_cpu(resp->bank2_specified), + le16_to_cpu(resp->bank2_remaining)); + + INFO("Tonecurve Status: 0x%02x (%s)\n", resp->tonecurve_status, tonecurve_statuses(resp->tonecurve_status)); + + /* Query Extended counters */ + cmd.cmd = cpu_to_le16(S6245_CMD_EXTCOUNTER); + cmd.len = cpu_to_le16(0); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp2), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return ret; + } + if (le16_to_cpu(resp2->hdr.payload_len) != (sizeof(struct s6245_getextcounter_resp) - sizeof(struct s6245_status_hdr))) + return 0; + + INFO("Lifetime Distance: %08d inches\n", le32_to_cpu(resp2->lifetime_distance)); + INFO("Maintainence Distance: %08d inches\n", le32_to_cpu(resp2->maint_distance)); + INFO("Head Distance: %08d inches\n", le32_to_cpu(resp2->head_distance)); + + return 0; +} + +static int get_fwinfo(struct shinkos6245_ctx *ctx) +{ + struct s6245_fwinfo_cmd cmd; + struct s6245_fwinfo_resp *resp = (struct s6245_fwinfo_resp *)rdbuf; + int num = 0; + int i; + + cmd.hdr.cmd = cpu_to_le16(S6245_CMD_FWINFO); + cmd.hdr.len = cpu_to_le16(1); + + INFO("FW Information:\n"); + + for (i = FWINFO_TARGET_MAIN_BOOT ; i <= FWINFO_TARGET_PRINT_TABLES ; i++) { + int ret; + cmd.target = i; + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command (%d)\n", cmd_names(cmd.hdr.cmd), ret); + continue; + } + + if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_fwinfo_resp) - sizeof(struct s6245_status_hdr))) + continue; + + INFO(" %s\t ver %02x.%02x\n", fwinfo_targets(i), + resp->major, resp->minor); +#if 0 + INFO(" name: '%s'\n", resp->name); + INFO(" type: '%s'\n", resp->type); + INFO(" date: '%s'\n", resp->date); + INFO(" version: %02x.%02x (CRC %04x)\n", resp->major, resp->minor, + le16_to_cpu(resp->checksum)); +#endif + } + return 0; +} + +static int get_errorlog(struct shinkos6245_ctx *ctx) +{ + struct s6245_errorlog_cmd cmd; + struct s6245_errorlog_resp *resp = (struct s6245_errorlog_resp *) rdbuf; + int num = 0; + int i = 0; + + cmd.hdr.cmd = cpu_to_le16(S6245_CMD_ERRORLOG); + cmd.hdr.len = cpu_to_le16(2); + + do { + int ret; + cmd.index = i; + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command (%d)\n", cmd_names(cmd.hdr.cmd), ret); + return ret; + } + + if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_errorlog_resp) - sizeof(struct s6245_status_hdr))) + return -2; + + INFO("Stored Error ID %d:\n", i); + INFO(" %04d-%02d-%02d %02d:%02d:%02d @ %08u prints : 0x%02x/0x%02x (%s)\n", + resp->time_year + 2000, resp->time_month, resp->time_day, + resp->time_hour, resp->time_min, resp->time_sec, + le32_to_cpu(resp->print_counter), + resp->error_major, resp->error_minor, + error_codes(resp->error_major, resp->error_minor)); + INFO(" Temp: %02d/%02d Hum: %02d\n", + resp->printer_thermistor, resp->head_thermistor, resp->printer_humidity); + } while (++i < le16_to_cpu(resp->error_count)); + + return 0; +} + +static int get_mediainfo(struct shinkos6245_ctx *ctx) +{ + struct s6245_cmd_hdr cmd; + struct s6245_mediainfo_resp *resp = (struct s6245_mediainfo_resp *) rdbuf; + int ret, num = 0; + int i; + + cmd.cmd = cpu_to_le16(S6245_CMD_MEDIAINFO); + cmd.len = cpu_to_le16(0); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return ret; + } + + if (le16_to_cpu(resp->hdr.payload_len) != (sizeof(struct s6245_mediainfo_resp) - sizeof(struct s6245_status_hdr))) + return -2; + + INFO("Supported Media Information: %d entries:\n", resp->count); + for (i = 0 ; i < resp->count ; i++) { + INFO(" %02d: C 0x%02x (%s), %04dx%04d, P 0x%02x (%s)\n", i, + resp->items[i].media_code, print_medias(resp->items[i].media_code), + le16_to_cpu(resp->items[i].columns), + le16_to_cpu(resp->items[i].rows), + resp->items[i].print_method, print_methods(resp->items[i].print_method)); + } + return 0; +} + +static int cancel_job(struct shinkos6245_ctx *ctx, char *str) +{ + struct s6245_cancel_cmd cmd; + struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + int ret, num = 0; + + if (!str) + return -1; + + cmd.id = atoi(str); + + cmd.hdr.cmd = cpu_to_le16(S6245_CMD_CANCELJOB); + cmd.hdr.len = cpu_to_le16(1); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); + return ret; + } + + return 0; +} + +static int flash_led(struct shinkos6245_ctx *ctx) +{ + struct s6245_cmd_hdr cmd; + struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + int ret, num = 0; + + cmd.cmd = cpu_to_le16(S6245_CMD_FLASHLED); + cmd.len = cpu_to_le16(0); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return ret; + } + + return 0; +} + + +static int set_param(struct shinkos6245_ctx *ctx, int target, uint32_t param) +{ + struct s6245_setparam_cmd cmd; + struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + int ret, num = 0; + + /* Set up command */ + cmd.target = target; + cmd.param = cpu_to_le32(param); + + cmd.hdr.cmd = cpu_to_le16(S6245_CMD_SETPARAM); + cmd.hdr.len = cpu_to_le16(sizeof(struct s6245_setparam_cmd)-sizeof(cmd.hdr)); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command (%d)\n", cmd_names(cmd.hdr.cmd), ret); + } + + return ret; +} + +static int reset_curve(struct shinkos6245_ctx *ctx, int target) +{ + struct s6245_reset_cmd cmd; + struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + int ret, num = 0; + + cmd.target = target; + + cmd.hdr.cmd = cpu_to_le16(S6245_CMD_RESET); + cmd.hdr.len = cpu_to_le16(1); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); + return ret; + } + + return 0; +} + +static int get_tonecurve(struct shinkos6245_ctx *ctx, int type, char *fname) +{ + struct s6245_readtone_cmd cmd; + struct s6245_readtone_resp *resp = (struct s6245_readtone_resp *) rdbuf; + int ret, num = 0; + + uint8_t *data; + uint16_t curves[UPDATE_SIZE] = { 0 }; + + int i,j; + + cmd.target = type; + cmd.curveid = TONE_CURVE_ID; + + cmd.hdr.cmd = cpu_to_le16(S6245_CMD_READTONE); + cmd.hdr.len = cpu_to_le16(1); + + INFO("Dump %s Tone Curve to '%s'\n", tonecurve_statuses(type), fname); + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); + return ret; + } + + resp->total_size = le16_to_cpu(resp->total_size); + + data = malloc(resp->total_size * 2); + if (!data) { + ERROR("Memory Allocation Failure!\n"); + return -1; + } + + i = 0; + while (i < resp->total_size) { + ret = read_data(ctx->dev, ctx->endp_up, + data + i, + resp->total_size * 2 - i, + &num); + if (ret < 0) + goto done; + i += num; + } + + i = j = 0; + while (i < resp->total_size) { + memcpy(curves + j, data + i+2, data[i+1]); + j += data[i+1] / 2; + i += data[i+1] + 2; + } + + /* Open file and write it out */ + { + int tc_fd = open(fname, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR); + if (tc_fd < 0) { + ret = -1; + goto done; + } + + for (i = 0 ; i < UPDATE_SIZE; i++) { + /* Byteswap appropriately */ + curves[i] = cpu_to_be16(le16_to_cpu(curves[i])); + } + write(tc_fd, curves, UPDATE_SIZE * sizeof(uint16_t)); + close(tc_fd); + } + +done: + free(data); + return ret; +} + +static int set_tonecurve(struct shinkos6245_ctx *ctx, int target, char *fname) +{ + struct s6245_update_cmd cmd; + struct s6245_status_hdr *resp = (struct s6245_status_hdr *) rdbuf; + int ret, num = 0; + + INFO("Set %s Tone Curve from '%s'\n", update_targets(target), fname); + + uint16_t *data = malloc(UPDATE_SIZE * sizeof(uint16_t)); + if (!data) { + ERROR("Memory Allocation Failure!\n"); + return -1; + } + + /* Read in file */ + int tc_fd = open(fname, O_RDONLY); + if (tc_fd < 0) { + ret = -1; + goto done; + } + if (read(tc_fd, data, UPDATE_SIZE * sizeof(uint16_t)) != (UPDATE_SIZE * sizeof(uint16_t))) { + ret = -2; + goto done; + } + close(tc_fd); + /* Byteswap data to local CPU.. */ + for (ret = 0; ret < UPDATE_SIZE ; ret++) { + data[ret] = be16_to_cpu(data[ret]); + } + + /* Set up command */ + cmd.target = target; + cmd.reserved[0] = cmd.reserved[1] = cmd.reserved[2] = 0; + cmd.reset = 0; + cmd.size = cpu_to_le32(UPDATE_SIZE * sizeof(uint16_t)); + + cmd.hdr.cmd = cpu_to_le16(S6245_CMD_UPDATE); + cmd.hdr.len = cpu_to_le16(sizeof(struct s6245_update_cmd)-sizeof(cmd.hdr)); + + /* Byteswap data to format printer is expecting.. */ + for (ret = 0; ret < UPDATE_SIZE ; ret++) { + data[ret] = cpu_to_le16(data[ret]); + } + + if ((ret = s6245_do_cmd(ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.hdr.cmd)); + goto done; + } + + /* Sent transfer */ + if ((ret = send_data(ctx->dev, ctx->endp_down, + (uint8_t *) data, UPDATE_SIZE * sizeof(uint16_t)))) { + goto done; + } + +done: + free(data); + + return ret; +} + +static void shinkos6245_cmdline(void) +{ + DEBUG("\t\t[ -c filename ] # Get user/NV tone curve\n"); + DEBUG("\t\t[ -C filename ] # Set user/NV tone curve\n"); + DEBUG("\t\t[ -e ] # Query error log\n"); + DEBUG("\t\t[ -F ] # Flash Printer LED\n"); + DEBUG("\t\t[ -i ] # Query printer info\n"); + DEBUG("\t\t[ -k num ] # Set sleep time (5-240 minutes)\n"); + DEBUG("\t\t[ -l filename ] # Get current tone curve\n"); + DEBUG("\t\t[ -L filename ] # Set current tone curve\n"); + DEBUG("\t\t[ -m ] # Query media\n"); + DEBUG("\t\t[ -r ] # Reset user/NV tone curve\n"); + DEBUG("\t\t[ -R ] # Reset printer to factory defaults\n"); + DEBUG("\t\t[ -s ] # Query status\n"); + DEBUG("\t\t[ -X jobid ] # Abort a printjob\n"); +} + +int shinkos6245_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct shinkos6245_ctx *ctx = vctx; + int i, j = 0; + + if (!ctx) + return -1; + + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "c:C:eFik:l:L:mr:R:sX:")) >= 0) { + switch(i) { + GETOPT_PROCESS_GLOBAL + case 'c': + j = get_tonecurve(ctx, TONECURVE_USER, optarg); + break; + case 'C': + j = set_tonecurve(ctx, TONECURVE_USER, optarg); + break; + case 'e': + j = get_errorlog(ctx); + break; + case 'F': + j = flash_led(ctx); + break; + case 'i': + j = get_fwinfo(ctx); + break; + case 'k': { + uint32_t i = atoi(optarg); + if (i < 5) + i = 0; + else if (i < 15) + i = 1; + else if (i < 30) + i = 2; + else if (i < 60) + i = 3; + else if (i < 120) + i = 4; + else if (i < 240) + i = 5; + else + i = 5; + + j = set_param(ctx, PARAM_SLEEP_TIME, i); + break; + } + case 'l': + j = get_tonecurve(ctx, TONECURVE_CURRENT, optarg); + break; + case 'L': + j = set_tonecurve(ctx, TONECURVE_CURRENT, optarg); + break; + case 'm': + j = get_mediainfo(ctx); + break; + case 'r': + j = reset_curve(ctx, RESET_TONE_CURVE); + break; + case 'R': + j = reset_curve(ctx, RESET_PRINTER); + break; + case 's': + j = get_status(ctx); + break; + case 'X': + j = cancel_job(ctx, optarg); + break; + default: + break; /* Ignore completely */ + } + + if (j) return j; + } + + return 0; +} + +static void *shinkos6245_init(void) +{ + struct shinkos6245_ctx *ctx = malloc(sizeof(struct shinkos6245_ctx)); + if (!ctx) { + ERROR("Memory Allocation Failure!\n"); + return NULL; + } + memset(ctx, 0, sizeof(struct shinkos6245_ctx)); + + return ctx; +} + +static void shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, + uint8_t endp_up, uint8_t endp_down, uint8_t jobid) +{ + struct shinkos6245_ctx *ctx = vctx; + struct libusb_device *device; + struct libusb_device_descriptor desc; + + ctx->dev = dev; + ctx->endp_up = endp_up; + ctx->endp_down = endp_down; + + device = libusb_get_device(dev); + libusb_get_device_descriptor(device, &desc); + + ctx->type = lookup_printer_type(&shinkos6245_backend, + desc.idVendor, desc.idProduct); + + /* Ensure jobid is sane */ + ctx->jobid = (jobid & 0x7f) + 1; +} + +static void shinkos6245_teardown(void *vctx) { + struct shinkos6245_ctx *ctx = vctx; + + if (!ctx) + return; + + if (ctx->databuf) + free(ctx->databuf); + + free(ctx); +} + +static int shinkos6245_read_parse(void *vctx, int data_fd) { + struct shinkos6245_ctx *ctx = vctx; + int ret; + uint8_t tmpbuf[4]; + + if (!ctx) + return CUPS_BACKEND_FAILED; + + /* 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 CUPS_BACKEND_CANCEL; + ERROR("Read failed (%d/%d/%d)\n", + ret, 0, (int)sizeof(ctx->hdr)); + perror("ERROR: Read failed"); + return ret; + } + + if (le32_to_cpu(ctx->hdr.len1) != 0x10 || + le32_to_cpu(ctx->hdr.len2) != 0x64 || + le32_to_cpu(ctx->hdr.dpi) != 300) { + ERROR("Unrecognized header data format!\n"); + return CUPS_BACKEND_CANCEL; + } + + if (le32_to_cpu(ctx->hdr.model) != 6245) { + ERROR("Unrecognized printer (%d)!\n", le32_to_cpu(ctx->hdr.model)); + + return CUPS_BACKEND_CANCEL; + } + + 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 CUPS_BACKEND_FAILED; + } + + { + int remain = ctx->datalen; + uint8_t *ptr = ctx->databuf; + do { + ret = read(data_fd, ptr, remain); + if (ret < 0) { + ERROR("Read failed (%d/%d/%d)\n", + ret, remain, ctx->datalen); + perror("ERROR: Read failed"); + return ret; + } + ptr += ret; + remain -= ret; + } while (remain); + } + + /* Make sure footer is sane too */ + ret = read(data_fd, tmpbuf, 4); + if (ret != 4) { + ERROR("Read failed (%d/%d/%d)\n", + ret, 4, 4); + perror("ERROR: Read failed"); + return ret; + } + if (tmpbuf[0] != 0x04 || + tmpbuf[1] != 0x03 || + tmpbuf[2] != 0x02 || + tmpbuf[3] != 0x01) { + ERROR("Unrecognized footer data format!\n"); + return CUPS_BACKEND_FAILED; + } + + return CUPS_BACKEND_OK; +} + +static int shinkos6245_main_loop(void *vctx, int copies) { + struct shinkos6245_ctx *ctx = vctx; + + int ret, num; + uint8_t cmdbuf[CMDBUF_LEN]; + uint8_t rdbuf2[READBACK_LEN]; + + int i, last_state = -1, state = S_IDLE; + uint8_t mcut; + + struct s6245_cmd_hdr *cmd = (struct s6245_cmd_hdr *) cmdbuf;; + struct s6245_print_cmd *print = (struct s6245_print_cmd *) cmdbuf; + struct s6245_status_resp *sts = (struct s6245_status_resp *) rdbuf; + struct s6245_mediainfo_resp *media = (struct s6245_mediainfo_resp *) rdbuf; + + /* Cap copies */ + // XXX 120 for 8x10 media, 100 for 8x12 media (S6245) + // 250 for 8x12, 300 for 8x10 (Kodak 8810) + if (copies > 120) + copies = 120; + + /* Set up mcut */ + switch (le32_to_cpu(ctx->hdr.media)) { + case MEDIA_8x4_2: + case MEDIA_8x5_2: + case MEDIA_8x6_2: + mcut = PRINT_METHOD_COMBO_2; + break; + case MEDIA_8x4_3: + mcut = PRINT_METHOD_COMBO_3; + break; + default: + mcut = PRINT_METHOD_STD; + } + // XXX what about mcut |= PRINT_METHOD_DISABLE_ERR; + + /* Send Media Query */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmd->cmd = cpu_to_le16(S6245_CMD_MEDIAINFO); + cmd->len = cpu_to_le16(0); + + if ((ret = s6245_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 s6245_mediainfo_resp) - sizeof(struct s6245_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; + } + + /* Send Set Time */ + { + struct s6245_settime_cmd *stime = (struct s6245_settime_cmd *)cmdbuf; + time_t now = time(NULL); + struct tm *cur = localtime(&now); + + memset(cmdbuf, 0, CMDBUF_LEN); + cmd->cmd = cpu_to_le16(S6245_CMD_SETTIME); + cmd->len = cpu_to_le16(0); + stime->enable = 1; + stime->second = cur->tm_sec; + stime->minute = cur->tm_min; + stime->hour = cur->tm_hour; + stime->day = cur->tm_mday; + stime->month = cur->tm_mon; + stime->year = cur->tm_year + 1900 - 2000; + + if ((ret = s6245_do_cmd(ctx, + cmdbuf, sizeof(*stime), + sizeof(struct s6245_status_hdr), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(stime->hdr.cmd)); + return CUPS_BACKEND_FAILED; + } + if (sts->hdr.result != RESULT_SUCCESS) + goto printer_error; + } + + // XXX check copies against remaining media! + +top: + if (state != last_state) { + if (dyesub_debug) + DEBUG("last_state %d new %d\n", last_state, state); + } + + /* Send Status Query */ + memset(cmdbuf, 0, CMDBUF_LEN); + cmd->cmd = cpu_to_le16(S6245_CMD_GETSTATUS); + cmd->len = cpu_to_le16(0); + + if ((ret = s6245_do_cmd(ctx, + cmdbuf, sizeof(*cmd), + sizeof(struct s6245_status_hdr), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd->cmd)); + return CUPS_BACKEND_FAILED; + } + + if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) { + memcpy(rdbuf2, rdbuf, READBACK_LEN); + + INFO("Printer Status: 0x%02x (%s)\n", + sts->hdr.status, status_str(sts->hdr.status)); + 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; + + fflush(stderr); + + switch (state) { + case S_IDLE: + INFO("Waiting for printer idle\n"); + /* If either bank is free, continue */ + if (sts->bank1_status == BANK_STATUS_FREE || + sts->bank2_status == BANK_STATUS_FREE) + state = S_PRINTER_READY_CMD; + + break; + case S_PRINTER_READY_CMD: + // XXX send "get eeprom backup command" + + INFO("Initiating print job (internal id %d)\n", ctx->jobid); + + memset(cmdbuf, 0, CMDBUF_LEN); + print->hdr.cmd = cpu_to_le16(S6245_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->mode = le32_to_cpu(ctx->hdr.oc_mode); + print->method = mcut; + + if ((ret = s6245_do_cmd(ctx, + cmdbuf, sizeof(*print), + sizeof(struct s6245_status_hdr), + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(print->hdr.cmd)); + return ret; + } + + if (sts->hdr.result != RESULT_SUCCESS) { + if (sts->hdr.error == ERROR_BUFFER_FULL) { + INFO("Printer Buffers full, retrying\n"); + break; + } else if ((sts->hdr.status & 0xf0) == 0x30 || sts->hdr.status == 0x21) { + INFO("Printer busy (%s), retrying\n", status_str(sts->hdr.status)); + break; + } else if (sts->hdr.status != ERROR_NONE) + goto printer_error; + } + + INFO("Sending image data to printer\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); + state = S_PRINTER_SENT_DATA; + break; + case S_PRINTER_SENT_DATA: + if (fast_return) { + INFO("Fast return mode enabled.\n"); + state = S_FINISHED; + } else if (sts->hdr.status == STATUS_READY) { + state = S_FINISHED; + } + break; + default: + break; + }; + + if (state != S_FINISHED) + goto top; + + INFO("Print complete\n"); + + return CUPS_BACKEND_OK; + +printer_error: + ERROR("Printer reported error: %#x (%s) status: %#x (%s) -> %#x.%#x (%s)\n", + sts->hdr.error, + error_str(sts->hdr.error), + sts->hdr.status, + status_str(sts->hdr.status), + sts->hdr.printer_major, sts->hdr.printer_minor, + error_codes(sts->hdr.printer_major, sts->hdr.printer_minor)); + return CUPS_BACKEND_FAILED; +} + +static int shinkos6245_query_serno(struct libusb_device_handle *dev, uint8_t endp_up, uint8_t endp_down, char *buf, int buf_len) +{ + struct s6245_cmd_hdr cmd; + struct s6245_getserial_resp *resp = (struct s6245_getserial_resp*) rdbuf; + int ret, num = 0; + + struct shinkos6245_ctx ctx = { + .dev = dev, + .endp_up = endp_up, + .endp_down = endp_down, + }; + + cmd.cmd = cpu_to_le16(S6245_CMD_GETSERIAL); + cmd.len = cpu_to_le16(0); + + if ((ret = s6245_do_cmd(&ctx, + (uint8_t*)&cmd, sizeof(cmd), + sizeof(*resp) - 1, + &num)) < 0) { + ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd)); + return ret; + } + + /* Null-terminate */ + resp->hdr.payload_len = le16_to_cpu(resp->hdr.payload_len); + if (resp->hdr.payload_len > 23) + resp->hdr.payload_len = 23; + resp->data[resp->hdr.payload_len] = 0; + strncpy(buf, (char*)resp->data, buf_len); + buf[buf_len-1] = 0; /* ensure it's null terminated */ + + return CUPS_BACKEND_OK; +} + +/* Exported */ +#define USB_VID_SHINKO 0x10CE +#define USB_PID_SHINKO_S6245 0x001D + +struct dyesub_backend shinkos6245_backend = { + .name = "Shinko/Sinfonia CHC-S6245", + .version = "0.04WIP", + .uri_prefix = "shinkos6245", + .cmdline_usage = shinkos6245_cmdline, + .cmdline_arg = shinkos6245_cmdline_arg, + .init = shinkos6245_init, + .attach = shinkos6245_attach, + .teardown = shinkos6245_teardown, + .read_parse = shinkos6245_read_parse, + .main_loop = shinkos6245_main_loop, + .query_serno = shinkos6245_query_serno, + .devices = { + { USB_VID_SHINKO, USB_PID_SHINKO_S6245, P_SHINKO_S6245, ""}, + { 0, 0, 0, ""} + } +}; + +/* 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 ]] + +*/ diff --git a/src/cups/sony_updr150_print.c b/src/cups/sony_updr150_print.c index 5df9742..0121443 100644 --- a/src/cups/sony_updr150_print.c +++ b/src/cups/sony_updr150_print.c @@ -35,25 +35,27 @@ #include <fcntl.h> #include <signal.h> +#define BACKEND updr150_backend + #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 +#define USB_PID_SONY_UPCR10 0x0226 /* Private data stucture */ struct updr150_ctx { struct libusb_device_handle *dev; uint8_t endp_up; uint8_t endp_down; + int type; uint8_t *databuf; int datalen; uint32_t copies_offset; - uint8_t type; }; static void* updr150_init(void) @@ -82,11 +84,9 @@ static void updr150_attach(void *vctx, struct libusb_device_handle *dev, 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->type = lookup_printer_type(&updr150_backend, + desc.idVendor, desc.idProduct); ctx->copies_offset = 0; } @@ -255,10 +255,30 @@ top: return CUPS_BACKEND_OK; } +static int updr150_cmdline_arg(void *vctx, int argc, char **argv) +{ + struct updr150_ctx *ctx = vctx; + int i, j = 0; + + if (!ctx) + return -1; + + while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL)) >= 0) { + switch(i) { + GETOPT_PROCESS_GLOBAL + } + + if (j) return j; + } + + return 0; +} + struct dyesub_backend updr150_backend = { .name = "Sony UP-DR150/UP-DR200/UP-CR10", - .version = "0.17", + .version = "0.18", .uri_prefix = "sonyupdr150", + .cmdline_arg = updr150_cmdline_arg, .init = updr150_init, .attach = updr150_attach, .teardown = updr150_teardown, diff --git a/src/cups/test-ppds b/src/cups/test-ppds index 7dd004b..542fd27 100644..100755 --- a/src/cups/test-ppds +++ b/src/cups/test-ppds @@ -10,7 +10,7 @@ make EXTRA_GENPPD_OPTS='-b -Z' ppd-clean ppd-global ppd-nls ppd-nonls # Also, a number of our media sizes aren't named correctly, but we'll # accept those issues rather than cluttering the namespace further and/or # changing tag names. -cupstestppdopts='-I profiles -W sizes' +cupstestppdopts='-I profiles -W sizes -I filters' ppd_count=`find ppd \( -name '*.ppd.gz' -o -name '*.ppd' \) -print | wc -l` diff --git a/src/cups/test-rastertogutenprint.in b/src/cups/test-rastertogutenprint.in index 373f127..0574704 100755 --- a/src/cups/test-rastertogutenprint.in +++ b/src/cups/test-rastertogutenprint.in @@ -23,12 +23,15 @@ fi single='' all_models='' verbose='' +valgrind=0 make_ppds=1 md5dir='' outdir='' cupsargs='' postscript='' npages=3 +enable_static='@ENABLE_STATIC@' +enable_shared='@ENABLE_SHARED@' usage() { echo "Usage: test-rastertogutenprint [-s] [-v|--valgrind]" @@ -40,7 +43,7 @@ set_args() { case "$1" in -s) single=1 ;; -h*|--h*) usage ;; - -v|--valgrind) valopts='--tool=memcheck' ; valgrind=`expr $valgrind + 1` ;; + -v|--valgrind) valopts='--tool=memcheck' ; valgrind=$((valgrind + 1)) ;; -c|--cachegrind) valopts='--tool=cachegrind'; valgrind=4 ;; -g|--gdb-attach) valopts='--gdb-attach=yes' ;; -V|--verbose) verbose=1 ;; @@ -59,6 +62,12 @@ set_args() { set_args `getopt hvcgsVnO:m:o:p: "$@"` +if [ "$valgrind" -gt 0 -a "$enable_shared" != "no" ] ; then + echo 'Valgrind is not compatible with --enable-shared in tree.' 1>&2 + echo 'Please use autogen.sh --disable-shared.' 1>&2 + exit 1 +fi + if [ -n "$outdir" -a ! -d "$outdir" ] ; then mkdir -p "$outdir" fi @@ -136,10 +145,10 @@ is_duplicate() { run_rastertogp() { case "$valgrind" in - 1) valgrind $valopts -q --num-callers=50 --leak-check=yes --error-limit=no ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - 2) valgrind $valopts --num-callers=50 --leak-resolution=high --leak-check=yes --error-limit=no ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - 3) valgrind $valopts --error-limit=no --num-callers=50 --show-reachable=yes --leak-resolution=high --leak-check=yes ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; - 4) valgrind $valopts ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; + 1) valgrind $valopts -q --log-fd=3 --num-callers=50 --leak-check=yes --error-limit=no ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; + 2) valgrind $valopts --log-fd=3 --num-callers=50 --leak-resolution=high --leak-check=yes --error-limit=no ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; + 3) valgrind $valopts --log-fd=3 --error-limit=no --num-callers=50 --show-reachable=yes --leak-resolution=high --leak-check=yes ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; + 4) valgrind $valopts --log-fd=3 ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; 5) cat ;; *) ./rastertogutenprint.$version 1 1 1 1 "$cupsargs" ;; esac @@ -241,17 +250,17 @@ if [ -d ppd/C ] ; then PPD=$f export PPD if [ -x "$cupsdir/cgpdftoraster" ] ; then - output="`($cupsdir/cgpdftoraster 1 1 1 1 $pages < $sdir/../../doc/gutenprint-users-manual.pdf 2>/dev/null | run_rastertogp | do_output) 2>&1`" + output="`($cupsdir/cgpdftoraster 1 1 1 1 $pages < $sdir/../../doc/gutenprint-users-manual.pdf 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" elif [ -f "$tfile" -a -x "$cupsdir/gstoraster" ] ; then - output="`($cupsdir/gstoraster 1 1 1 1 \"$cupsargs\" < $tfile 2>/dev/null | run_rastertogp | do_output) 2>&1`" + output="`($cupsdir/gstoraster 1 1 1 1 \"$cupsargs\" < $tfile 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" elif [ -f "$tfile" ] ; then - output="`($cupsdir/pstops 1 1 1 1 \"$cupsargs\" < $tfile 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1`" + output="`($cupsdir/pstops 1 1 1 1 \"$cupsargs\" < $tfile 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" elif [ -x "$cupsdir/pstoraster" ] ; then - output="`($cupsdir/pdftops 1 1 1 1 \"$pages$cupsargs\" < $sdir/../../doc/gutenprint-users-manual.pdf 2>/dev/null | $cupsdir/pstops 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1`" + output="`($cupsdir/pdftops 1 1 1 1 \"$pages$cupsargs\" < $sdir/../../doc/gutenprint-users-manual.pdf 2>/dev/null | $cupsdir/pstops 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | $cupsdir/pstoraster 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" elif [ -x "$cupsdir/gstoraster" ] ; then - output="`($cupsdir/pdftops 1 1 1 1 \"$pages$cupsargs\" < $sdir/../../doc/gutenprint-users-manual.pdf 2>/dev/null | $cupsdir/gstoraster 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | run_rastertogp | do_output) 2>&1`" + output="`($cupsdir/pdftops 1 1 1 1 \"$pages$cupsargs\" < $sdir/../../doc/gutenprint-users-manual.pdf 2>/dev/null | $cupsdir/gstoraster 1 1 1 1 \"$pages$cupsargs\" 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2 `" else - output="`($cupsdir/imagetoraster 1 1 1 1 \"$pages$cupsargs\" < calibrate.ppm 2>/dev/null | run_rastertogp | do_output) 2>&1`" + output="`($cupsdir/imagetoraster 1 1 1 1 \"$pages$cupsargs\" < calibrate.ppm 2>/dev/null | run_rastertogp | do_output) 2>&1 3>&2`" fi if [ $? -ne 0 ] ; then retval=1 diff --git a/src/escputil/Makefile.in b/src/escputil/Makefile.in index 1466da2..875fd84 100644 --- a/src/escputil/Makefile.in +++ b/src/escputil/Makefile.in @@ -214,6 +214,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/escputil/d4lib.c b/src/escputil/d4lib.c index 54f2a18..5c99409 100644 --- a/src/escputil/d4lib.c +++ b/src/escputil/d4lib.c @@ -227,7 +227,7 @@ static void printHexValues(const char *dir, const unsigned char *buf, int len) for (i = 0; i < len; i++) { printf("%s%c", (print_prefix ? "+++" : ""), - isprint(buf[i])||isblank(buf[i])?buf[i]:'*'); + isprint(buf[i])?buf[i]:'*'); print_prefix = 0; if (buf[i] == ';' && i < len - 1) { diff --git a/src/foomatic/Makefile.in b/src/foomatic/Makefile.in index 6f7b903..84b4e3b 100644 --- a/src/foomatic/Makefile.in +++ b/src/foomatic/Makefile.in @@ -233,6 +233,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/foomatic/foomatic-generator.in b/src/foomatic/foomatic-generator.in index 50b40ed..c4e87f0 100644 --- a/src/foomatic/foomatic-generator.in +++ b/src/foomatic/foomatic-generator.in @@ -608,7 +608,7 @@ for $drivertype (@drivertypes) { if ($tmpl eq 'gutenprint.xml'); open NEWF, "> $dbfilename" or die "Cannot create $dbfilename: $!"; - print STDERR "writing $dbfilename..."; +# print STDERR "writing $dbfilename..."; print NEWF $template; print STDERR "done.\n"; close NEWF; @@ -1334,6 +1334,7 @@ sub qualityorder { "dpi_photomonodraft2", "dpi_ohphigh", "dpi_ohp", + "dpi_ohpdraft", ); my ($a, $b) = @_; # Bring the suffixes to lower case diff --git a/src/foomatic/paper_sizes.c b/src/foomatic/paper_sizes.c index 26f4f02..7e8cf2e 100644 --- a/src/foomatic/paper_sizes.c +++ b/src/foomatic/paper_sizes.c @@ -1,5 +1,5 @@ /* - * "$Id: paper_sizes.c,v 1.9 2007/03/05 00:04:00 tillkamppeter Exp $" + * "$Id: paper_sizes.c,v 1.10 2015/09/07 21:57:37 speachy Exp $" * * Dump the per-printer options for the OpenPrinting database * @@ -35,7 +35,11 @@ main(int argc, char **argv) for (i = 0; i < stp_known_papersizes(); i++) { const stp_papersize_t *p = stp_get_papersize_by_index(i); - printf("%s %d %d\n", p->name, p->width, p->height); + if (p->paper_size_type == PAPERSIZE_TYPE_ENVELOPE || + p->paper_size_type == PAPERSIZE_TYPE_STANDARD) + { + printf("%s %d %d\n", p->name, p->width, p->height); + } } return 0; } diff --git a/src/foomatic/printer_margins.c b/src/foomatic/printer_margins.c index 66af0d8..69bf0dd 100644 --- a/src/foomatic/printer_margins.c +++ b/src/foomatic/printer_margins.c @@ -1,5 +1,5 @@ /* - * "$Id: printer_margins.c,v 1.21 2007/05/06 19:38:10 rlk Exp $" + * "$Id: printer_margins.c,v 1.22 2015/08/02 03:09:40 rlk Exp $" * * Dump the per-printer margins for the OpenPrinting database * @@ -111,12 +111,12 @@ main(int argc, char **argv) { driver, opt->name, opt->text); printf("$imageableareas{'%s'}{'%s'} = {", driver, opt->name); - printf(" 'left' => '%d',", left); - printf(" 'right' => '%d',", right); - printf(" 'top' => '%d',", top); - printf(" 'bottom' => '%d',", bottom); - printf(" 'width' => '%d',", width); - printf(" 'height' => '%d'", height); + printf("'left'=>'%d',", left); + printf("'right'=>'%d',", right); + printf("'top'=>'%d',", top); + printf("'bottom'=>'%d',", bottom); + printf("'width'=>'%d',", width); + printf("'height'=>'%d'", height); printf("};\n"); } stp_parameter_description_destroy(&desc); diff --git a/src/foomatic/printer_options.c b/src/foomatic/printer_options.c index 331d32e..9bf8e64 100644 --- a/src/foomatic/printer_options.c +++ b/src/foomatic/printer_options.c @@ -1,5 +1,5 @@ /* - * "$Id: printer_options.c,v 1.53 2012/05/26 15:57:35 rlk Exp $" + * "$Id: printer_options.c,v 1.55 2015/09/08 03:59:55 speachy Exp $" * * Dump the per-printer options for the OpenPrinting database * @@ -47,12 +47,15 @@ main(int argc, char **argv) const stp_printer_t *printer = stp_get_printer_by_index(i); const char *driver = stp_printer_get_driver(printer); const char *family = stp_printer_get_family(printer); - stp_vars_t *pv = stp_vars_create_copy(stp_printer_get_defaults(printer)); + stp_vars_t *pv; int tcount = 0; size_t count; int printer_is_color = 0; + if (strcmp(family, "ps") == 0 || strcmp(family, "raw") == 0) continue; + + pv = stp_vars_create_copy(stp_printer_get_defaults(printer)); /* Set Job Mode to "Job" as this enables the Duplex option */ stp_set_string_parameter(pv, "JobMode", "Job"); @@ -108,22 +111,22 @@ main(int argc, char **argv) * order listed. This ensures that the enable * option is adjacent to the value it controls. */ - printf("$longnames{'STP_Enable%s'} = '%s Enable';", + printf("$longnames{'STP_Enable%s'}='%s Enable';", desc.name, desc.text); - printf("$param_classes{'STP_Enable%s'} = %d;", + printf("$param_classes{'STP_Enable%s'}=%d;", desc.name, desc.p_class); - printf("$param_levels{'STP_Enable%s'} = %d;", + printf("$param_levels{'STP_Enable%s'}=%d;", desc.name, desc.p_level); - printf("$longnames{'STP_%s'} = '%s Value';", + printf("$longnames{'STP_%s'}='%s Value';", desc.name, desc.text); } } else - printf("$longnames{'STP_%s'} = '%s';", + printf("$longnames{'STP_%s'}='%s';", desc.name, desc.text); - printf("$param_classes{'STP_%s'} = %d;", + printf("$param_classes{'STP_%s'}=%d;", desc.name, desc.p_class); - printf("$param_levels{'STP_%s'} = %d;", + printf("$param_levels{'STP_%s'}=%d;", desc.name, desc.p_level); } if ((desc.p_type == STP_PARAMETER_TYPE_DOUBLE || @@ -131,11 +134,11 @@ main(int argc, char **argv) desc.p_type == STP_PARAMETER_TYPE_INT) && !desc.is_mandatory) { - printf("$defaults{'%s'}{'STP_Enable%s'} = 'Disabled';", + printf("$defaults{'%s'}{'STP_Enable%s'}='Disabled';", driver, desc.name); - printf("$stpdata{'%s'}{'STP_Enable%s'}{'Disabled'} = 'Disabled';", + printf("$stpdata{'%s'}{'STP_Enable%s'}{'Disabled'}='Disabled';", driver, desc.name); - printf("$stpdata{'%s'}{'STP_Enable%s'}{'Enabled'} = 'Enabled';", + printf("$stpdata{'%s'}{'STP_Enable%s'}{'Enabled'}='Enabled';", driver, desc.name); } if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST) @@ -143,37 +146,37 @@ main(int argc, char **argv) count = stp_string_list_count(desc.bounds.str); if (count > 0) { - printf("{ $stpdata{'%s'}{'STP_%s'} = {};", + printf("{ $stpdata{'%s'}{'STP_%s'}={};", driver, desc.name); - printf("my $tmp = $stpdata{'%s'}{'STP_%s'};", + printf("my $tmp=$stpdata{'%s'}{'STP_%s'};", driver, desc.name); if (strcmp(desc.name, "Resolution") == 0) { - printf("$stpdata{'%s'}{'x_resolution'} = {};", + printf("$stpdata{'%s'}{'x_resolution'}={};", driver); - printf("my $x_t = $stpdata{'%s'}{'x_resolution'};", + printf("my $x_t=$stpdata{'%s'}{'x_resolution'};", driver); - printf("$stpdata{'%s'}{'y_resolution'} = {};", + printf("$stpdata{'%s'}{'y_resolution'}={};", driver); - printf("my $y_t = $stpdata{'%s'}{'y_resolution'};", + printf("my $y_t=$stpdata{'%s'}{'y_resolution'};", driver); } if (desc.is_mandatory) { - printf("$defaults{'%s'}{'STP_%s'} = '%s';", + printf("$defaults{'%s'}{'STP_%s'}='%s';", driver, desc.name, desc.deflt.str); } else { - printf("$defaults{'%s'}{'STP_%s'} = '%s';", + printf("$defaults{'%s'}{'STP_%s'}='%s';", driver, desc.name, "None"); - printf("$$tmp{'%s'} = '%s';", "None", "None"); + printf("$$tmp{'%s'}='%s';", "None", "None"); } for (j = 0; j < count; j++) { const stp_param_string_t *param = stp_string_list_param(desc.bounds.str, j); - printf("$$tmp{'%s'} = '%s';", + printf("$$tmp{'%s'}='%s';", param->name, param->text); if (strcmp(desc.name, "Resolution") == 0) { @@ -183,8 +186,8 @@ main(int argc, char **argv) stp_describe_resolution(pv, &x, &y); if (x > 0 && y > 0) { - printf("$$x_t{'%s'} = '%d';",param->name, x); - printf("$$y_t{'%s'} = '%d';",param->name, y); + printf("$$x_t{'%s'}='%d';",param->name, x); + printf("$$y_t{'%s'}='%d';",param->name, y); } stp_clear_string_parameter(pv, "Resolution"); } @@ -196,20 +199,20 @@ main(int argc, char **argv) { if (desc.is_mandatory) { - printf("$defaults{'%s'}{'STP_%s'} = '%d';", + printf("$defaults{'%s'}{'STP_%s'}='%d';", driver, desc.name, desc.deflt.boolean); } else { - printf("$defaults{'%s'}{'STP_%s'} = '%s';", + printf("$defaults{'%s'}{'STP_%s'}='%s';", driver, desc.name, "None"); - printf("$stpdata{'%s'}{'STP_%s'}{'%s'} = '%s';", + printf("$stpdata{'%s'}{'STP_%s'}{'%s'}='%s';", driver, desc.name, "None", "None"); } - printf("$stpdata{'%s'}{'STP_%s'}{'False'} = 'False';", + printf("$stpdata{'%s'}{'STP_%s'}{'False'}='False';", driver, desc.name); - printf("$stpdata{'%s'}{'STP_%s'}{'True'} = 'True';\n", + printf("$stpdata{'%s'}{'STP_%s'}{'True'}='True';\n", driver, desc.name); } else if (desc.p_type == STP_PARAMETER_TYPE_DOUBLE) @@ -217,23 +220,21 @@ main(int argc, char **argv) if (desc.bounds.dbl.lower <= desc.deflt.dbl && desc.bounds.dbl.upper >= desc.deflt.dbl) { - printf("{ $stp_float_values{'%s'}{'STP_%s'} = {};", + printf("{ $stp_float_values{'%s'}{'STP_%s'}={};", driver, desc.name); - printf("my $tmp = $stp_float_values{'%s'}{'STP_%s'};", + printf("my $tmp=$stp_float_values{'%s'}{'STP_%s'};", driver, desc.name); - printf("$$tmp{'MINVAL'} = %.3f;", + printf("$$tmp{'MINVAL'}=%.3f;", desc.bounds.dbl.lower); - printf("$$tmp{'MAXVAL'} = %.3f;", + printf("$$tmp{'MAXVAL'}=%.3f;", desc.bounds.dbl.upper); - printf("$$tmp{'DEFVAL'} = %.3f;", + printf("$$tmp{'DEFVAL'}=%.3f;", desc.deflt.dbl); - /* printf("$$tmp{'LONG_NAME'} = '%s';", + /* printf("$$tmp{'LONG_NAME'}='%s';", gettext(desc.text)); */ - printf("$$tmp{'CATEGORY'} = '%s';", + printf("$$tmp{'CATEGORY'}='%s';", gettext(desc.category)); - printf("$$tmp{'HELP'} = q(%s);", - (desc.help ? gettext(desc.help) : "''")); - printf("$$tmp{'MANDATORY'} = q(%d);", + printf("$$tmp{'MANDATORY'}=q(%d);", desc.is_mandatory); printf("}\n"); } @@ -243,23 +244,21 @@ main(int argc, char **argv) if (desc.bounds.integer.lower <= desc.deflt.integer && desc.bounds.integer.upper >= desc.deflt.integer) { - printf("{ $stp_int_values{'%s'}{'STP_%s'} = {};", + printf("{ $stp_int_values{'%s'}{'STP_%s'}={};", driver, desc.name); - printf("my $tmp = $stp_int_values{'%s'}{'STP_%s'};", + printf("my $tmp=$stp_int_values{'%s'}{'STP_%s'};", driver, desc.name); - printf("$$tmp{'MINVAL'} = %d;", + printf("$$tmp{'MINVAL'}=%d;", desc.bounds.integer.lower); - printf("$$tmp{'MAXVAL'} = %d;", + printf("$$tmp{'MAXVAL'}=%d;", desc.bounds.integer.upper); - printf("$$tmp{'DEFVAL'} = %d;", + printf("$$tmp{'DEFVAL'}=%d;", desc.deflt.integer); - /* printf("$$tmp{'LONG_NAME'} = '%s';", + /* printf("$$tmp{'LONG_NAME'}='%s';", gettext(desc.text)); */ - printf("$$tmp{'CATEGORY'} = '%s';", + printf("$$tmp{'CATEGORY'}='%s';", gettext(desc.category)); - printf("$$tmp{'HELP'} = q(%s);", - (desc.help ? gettext(desc.help) : "''")); - printf("$$tmp{'MANDATORY'} = q(%d);", + printf("$$tmp{'MANDATORY'}=q(%d);", desc.is_mandatory); printf("}\n"); } @@ -269,23 +268,21 @@ main(int argc, char **argv) if (desc.bounds.dimension.lower <= desc.deflt.dimension && desc.bounds.dimension.upper >= desc.deflt.dimension) { - printf("{ $stp_dimension_values{'%s'}{'STP_%s'} = {};", + printf("{ $stp_dimension_values{'%s'}{'STP_%s'}={};", driver, desc.name); - printf("my $tmp = $stp_dimension_values{'%s'}{'STP_%s'};", + printf("my $tmp=$stp_dimension_values{'%s'}{'STP_%s'};", driver, desc.name); - printf("$$tmp{'MINVAL'} = %d;", + printf("$$tmp{'MINVAL'}=%d;", desc.bounds.dimension.lower); - printf("$$tmp{'MAXVAL'} = %d;", + printf("$$tmp{'MAXVAL'}=%d;", desc.bounds.dimension.upper); - printf("$$tmp{'DEFVAL'} = %d;", + printf("$$tmp{'DEFVAL'}=%d;", desc.deflt.dimension); - /* printf("$$tmp{'LONG_NAME'} = '%s';", + /* printf("$$tmp{'LONG_NAME'}='%s';", gettext(desc.text)); */ - printf("$$tmp{'CATEGORY'} = '%s';", + printf("$$tmp{'CATEGORY'}='%s';", gettext(desc.category)); - printf("$$tmp{'HELP'} = q(%s);", - (desc.help ? gettext(desc.help) : "''")); - printf("$$tmp{'MANDATORY'} = q(%d);", + printf("$$tmp{'MANDATORY'}=q(%d);", desc.is_mandatory); printf("}\n"); } @@ -299,19 +296,19 @@ main(int argc, char **argv) { if (printer_is_color) { - printf("$defaults{'%s'}{'%s'} = '%s';", + printf("$defaults{'%s'}{'%s'}='%s';", driver, "Color", "Color"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';", + printf("$stpdata{'%s'}{'%s'}{'%s'}='%s';", driver, "Color", "Color", "Color"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", + printf("$stpdata{'%s'}{'%s'}{'%s'}='%s';\n", driver, "Color", "RawCMYK", "Raw CMYK"); } else - printf("$defaults{'%s'}{'%s'} = '%s';", + printf("$defaults{'%s'}{'%s'}='%s';", driver, "Color", "Grayscale"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';", + printf("$stpdata{'%s'}{'%s'}{'%s'}='%s';", driver, "Color", "Grayscale", "Gray Scale"); - printf("$stpdata{'%s'}{'%s'}{'%s'} = '%s';\n", + printf("$stpdata{'%s'}{'%s'}{'%s'}='%s';\n", driver, "Color", "BlackAndWhite", "Black and White"); } stp_vars_destroy(pv); diff --git a/src/ghost/Makefile.in b/src/ghost/Makefile.in index 4d85f27..c72a029 100644 --- a/src/ghost/Makefile.in +++ b/src/ghost/Makefile.in @@ -206,6 +206,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/gimp2/Makefile.in b/src/gimp2/Makefile.in index 4edb36f..96021ee 100644 --- a/src/gimp2/Makefile.in +++ b/src/gimp2/Makefile.in @@ -219,6 +219,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/gutenprintui2/Makefile.in b/src/gutenprintui2/Makefile.in index ed1debc..8b43de1 100644 --- a/src/gutenprintui2/Makefile.in +++ b/src/gutenprintui2/Makefile.in @@ -274,6 +274,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/gutenprintui2/panel.c b/src/gutenprintui2/panel.c index ddfc2c3..93812e2 100644 --- a/src/gutenprintui2/panel.c +++ b/src/gutenprintui2/panel.c @@ -1,5 +1,5 @@ /* - * "$Id: panel.c,v 1.21 2014/01/12 02:06:13 rlk Exp $" + * "$Id: panel.c,v 1.23 2015/09/09 23:57:32 speachy Exp $" * * Main window code for Print plug-in for the GIMP. * @@ -4589,7 +4589,7 @@ compute_thumbnail(const stp_vars_t *v) stp_set_page_height(nv, thumbnail_h); stp_set_page_width(nv, thumbnail_w); stp_set_driver(nv, "raw-data-8"); - stp_set_float_parameter(nv, "Density", 1.0); + stp_set_string_parameter(nv, "PageSize", "Custom"); stp_set_float_parameter(nv, "InkLimit", 0); stp_set_string_parameter(nv, "InputImageType", "RGB"); stp_clear_file_parameter(nv, "LUTDumpFile"); diff --git a/src/main/Makefile.in b/src/main/Makefile.in index 7006fc9..a91f253 100644 --- a/src/main/Makefile.in +++ b/src/main/Makefile.in @@ -359,6 +359,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/main/canon-inks.h b/src/main/canon-inks.h index 741f80f..6d42d3e 100644 --- a/src/main/canon-inks.h +++ b/src/main/canon-inks.h @@ -100,6 +100,9 @@ static const stp_dotsize_t dotsizes_3l[] = { DECLARE_INK(2,3); +/*under development*/ +DECLARE_INK(4,3); + DECLARE_INK_EXTENDED(2,3,INK_FLAG_5pixel_in_1byte); static const stp_dotsize_t dotsizes_4l[] = { @@ -697,6 +700,18 @@ static const canon_inkset_t canon_9_C4M4Y4K4_inkset[] = { {0,0.0,NULL} }; +static const canon_inkset_t canon_9_C4M4Y4K2c4m4y4twobit_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}, + {'y',1.0,&canon_2b_4l_ink}, + {0,0.0,NULL}, + {0,0.0,NULL} +}; + static const canon_inkset_t canon_9_C4M4Y4K4c4m4_inkset[] = { {'C',1.0,&canon_4b_4l_ink}, {'M',1.0,&canon_4b_4l_ink}, @@ -1877,6 +1892,22 @@ static const canon_inkset_t canon_13_C6M6Y4K3k4_c_inkset[] = { {0,0.0,NULL}, }; +static const canon_inkset_t canon_13_C6M6Y4K3k4on_c_inkset[] = { + {'C',1.0,&canon_4b_6l_ink}, + {'M',1.0,&canon_4b_6l_ink}, + {'Y',1.0,&canon_2b_4l_ink}, + {'K',1.0,&canon_2b_3l_c_ink}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_4l_ink},/* swapped y and k */ + {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}, @@ -2908,7 +2939,7 @@ static const canon_inkset_t canon_22_C4M4Y4K2c4m4k4on_inkset[] = { /* fast */ -/* MP990, MG6100, MG800 */ +/* MP990, MG6100, MG6200, MG6900, MG7700, 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_K2C2M2Y2_inkset[] = { {'K',1.0,&canon_1b_2l_ink}, @@ -3051,6 +3082,41 @@ static const canon_inkset_t canon_30_K2C6M6Y4k4_inkset[] = { }; /* standard */ +/* MG6900, MG7700 */ +static const canon_inkset_t canon_30_K3C3M3Y2k3off2bit_inkset[] = { + {'K',1.0,&canon_2b_3l_ink}, + {'C',1.0,&canon_2b_3l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_2b_3l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_2b_2l_ink}, + {0,0.0,NULL}, + {'k',0.0,&canon_2b_3l_ink}, /* will not use it, but need to specify it */ + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, +}; + +/* standard */ /* MG6300, MG6500, MG7100, iP8700 */ static const canon_inkset_t canon_30_K3C3M3Y2k3off_c_inkset[] = { {'K',1.0,&canon_2b_3l_c_ink}, @@ -3085,6 +3151,41 @@ static const canon_inkset_t canon_30_K3C3M3Y2k3off_c_inkset[] = { {0,0.0,NULL}, }; +/* standard duplex */ +/* MG6900, MG7700 */ +static const canon_inkset_t canon_30_K3C3M3Y2k3on2bit_inkset[] = { + {'K',1.0,&canon_2b_3l_ink}, + {'C',1.0,&canon_2b_3l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_2b_3l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_2b_2l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_2b_3l_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}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, +}; + /* standard for Duplex */ /* MG6300, MG6500, MG7100, iP8700 */ static const canon_inkset_t canon_30_K3C3M3Y2k3_c_inkset[] = { @@ -3156,6 +3257,76 @@ static const canon_inkset_t canon_30_K3C3M3Y2k3photo_c_inkset[] = { }; /* high */ +/* MG6900, MG7700 */ +static const canon_inkset_t canon_30_K3C6M6Y4k4off4bit_inkset[] = { + {'K',1.0,&canon_4b_3l_ink}, + {'C',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_4b_4l_ink}, + {0,0.0,NULL}, + {'k',0.0,&canon_4b_4l_ink}, /* will not use it, but need to specify it */ + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, +}; + +/* high duplex */ +/* MG6900, MG7700 */ +static const canon_inkset_t canon_30_K3C6M6Y4k4on4bit_inkset[] = { + {'K',1.0,&canon_4b_3l_ink}, + {'C',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_4b_4l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_4b_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}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, +}; + +/* high */ /* MG6300, MG6500, MG7100, iP8700 */ static const canon_inkset_t canon_30_K3C6M6Y4k4off_c_inkset[] = { {'K',1.0,&canon_2b_3l_c_ink}, @@ -3226,6 +3397,41 @@ static const canon_inkset_t canon_30_C5M5Y4k4_inkset[] = { {0,0.0,NULL}, }; +/* MG6900, MG7700 */ +/* CD, inkjet Hagaki */ +static const canon_inkset_t canon_30_C5M5Y5k4_inkset[] = { + {0,0.0,NULL}, + {'C',1.0,&canon_4b_5l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_4b_5l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_4b_5l_ink}, + {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}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {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_30_M6K6m4k4_inkset[] = { {0,0.0,NULL}, {'C',1.0,&canon_4b_6l_ink}, @@ -3294,6 +3500,41 @@ static const canon_inkset_t canon_30_M6K6m4k4H6off_inkset[] = { {0,0.0,NULL}, }; +/* photo standard */ +/* MG6900, MG7700 */ +static const canon_inkset_t canon_30_M6K6m4k4H6off4bit_inkset[] = { + {0,0.0,NULL}, + {'C',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_4b_6l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_4b_4l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_4b_4l_ink}, + {0,0.0,NULL}, + {'H',0.0,&canon_4b_6l_ink},/* H is not supported, so only for modes where it is switched off */ + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {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_30_M8K8m4k4_inkset[] = { {0,0.0,NULL}, {'C',1.0,&canon_4b_8l_ink}, @@ -3362,5 +3603,40 @@ static const canon_inkset_t canon_30_M8K8m4k4H8off_inkset[] = { {0,0.0,NULL}, }; +/* photo high */ +/* MG6900, MG7700 */ +static const canon_inkset_t canon_30_M8K8m4k4H8off4bit_inkset[] = { + {0,0.0,NULL}, + {'C',1.0,&canon_4b_8l_ink}, + {0,0.0,NULL}, + {'M',1.0,&canon_4b_8l_ink}, + {0,0.0,NULL}, + {'Y',1.0,&canon_4b_4l_ink}, + {0,0.0,NULL}, + {'k',1.0,&canon_4b_4l_ink}, + {0,0.0,NULL}, + {'H',0.0,&canon_4b_8l_ink},/* H is not supported, so only for modes where it is switched off */ + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, + {0,0.0,NULL}, +}; + #endif diff --git a/src/main/canon-media-mode.h b/src/main/canon-media-mode.h index f569d66..da2f9e3 100644 --- a/src/main/canon-media-mode.h +++ b/src/main/canon-media-mode.h @@ -802,7 +802,9 @@ static const char* canon_BJC_S300_modeuses_plain[] = { "600x600dpi_high", "600x600dpi_std2", "600x600dpi",/*untested*/ + "600x00dpi_std4", /* legacy */ "300x300dpi", + "300x300dpi_std2", /* legacy */ NULL }; @@ -829,6 +831,8 @@ static const char* canon_BJC_S300_modeuses_Envelope[] = { "600x600dpi_high3", "600x600dpi_std3", "600x600dpi_draft3", + "600x600dpi_std4", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; @@ -1072,80 +1076,80 @@ DECLARE_MODEUSES(canon_BJC_S520); /* ----------------------------------- Canon BJC S600 ----------------------------------- */ static const char* canon_BJC_S600_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_high", "600x600dpi", + "600x600dpi_std2", /* legacy */ "600x600dpi_draft",/*untested*/ "300x300dpi", "300x300dpi_draft", + "300x300dpi_std2", /* legacy */ NULL }; static const char* canon_BJC_S600_modeuses_PPpro[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh2", "600x600dpi_photo2", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; static const char* canon_BJC_S600_modeuses_coated[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh3", "600x600dpi_photohigh", "600x600dpi_photo", "600x600dpi_photodraft", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std", /* legacy */ NULL }; static const char* canon_BJC_S600_modeuses_PPgloss[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh3", "600x600dpi_photohigh", "600x600dpi_photo", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; static const char* canon_BJC_S600_modeuses_inkjetHagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photo3", "600x600dpi_photodraft3", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; static const char* canon_BJC_S600_modeuses_Envelope[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_high3", "600x600dpi_std3", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; static const char* canon_BJC_S600_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_tshirt", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; static const char* canon_BJC_S600_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh5", "600x600dpi_photohigh4", "600x600dpi_photo4", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; @@ -1243,88 +1247,88 @@ DECLARE_MODEUSES(canon_BJC_S750); /* ----------------------------------- Canon BJC S800 ----------------------------------- */ static const char* canon_BJC_S800_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_high2", -/* "600x600dpi_high",*/ -/* "600x600dpi",*/ + "600x600dpi_high", + "600x600dpi", + "600x600dpi_std3", /* legacy */ "600x600dpi_draft", + "300x300dpi", /* legacy */ /* 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", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh4", -/* "600x600dpi_photohigh",*/ + "600x600dpi_photohigh", + "600x600dpi_std3", /* legacy */ + "300x300dpi", /* legacy */ NULL }; static const char* canon_BJC_S800_modeuses_PPplus[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh2", -/* "600x600dpi_photo",*/ /*untested*/ + "600x600dpi_photo", /*untested*/ + "600x600dpi_std3", /* legacy */ + "300x300dpi", /* legacy */ NULL }; static const char* canon_BJC_S800_modeuses_PPgloss[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh3",*/ -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo2",*/ + "1200x1200dpi", /* legacy */ + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_std3", /* legacy */ + "300x300dpi", /* legacy */ NULL }; static const char* canon_BJC_S800_modeuses_glossFilm[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh2", -/* "600x600dpi_photo",*/ /*untested*/ + "600x600dpi_photo", /*untested*/ + "600x600dpi_std3", /* legacy */ + "300x300dpi", /* legacy */ NULL }; static const char* canon_BJC_S800_modeuses_PPother[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", + "1200x1200dpi", /* legacy */ "600x600dpi_photohigh4", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo",*/ + "600x600dpi_photohigh", + "600x600dpi_photo", "600x600dpi_photodraft", + "600x600dpi_std3", /* legacy */ + "300x300dpi", /* legacy */ /* Mono */ "600x600dpi_photomonohigh2", -/* "600x600dpi_photomonohigh",*/ -/* "600x600dpi_photomono",*/ + "600x600dpi_photomonohigh", + "600x600dpi_photomono", "600x600dpi_photomonodraft", NULL }; static const char* canon_BJC_S800_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "1200x1200dpi", /* legacy */ + "600x600dpi_tshirt", + "600x600dpi_std3", /* legacy */ + "300x300dpi", /* legacy */ NULL }; static const char* canon_BJC_S800_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_std2",*/ -/* "600x600dpi_draft2",*/ + "1200x1200dpi", /* legacy */ + "600x600dpi_std2", + "600x600dpi_draft2", + "600x600dpi_std3", /* legacy */ + "300x300dpi", /* legacy */ NULL }; @@ -1350,72 +1354,51 @@ 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[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh3",*/ -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo2",*/ + "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[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "600x600dpi_tshirt", NULL }; static const char* canon_BJC_S820_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_std2",*/ -/* "600x600dpi_draft2",*/ + "600x600dpi_std2", + "600x600dpi_draft2", NULL }; @@ -1441,80 +1424,56 @@ DECLARE_MODEUSES(canon_BJC_S820); /* ----------------------------------- Canon BJC S900 ----------------------------------- */ static const char* canon_BJC_S900_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high",*/ -/* "600x600dpi",*/ + "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[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh5",*/ -/* "600x600dpi_photohigh",*/ + "600x600dpi_photohigh5", + "600x600dpi_photohigh", NULL }; static const char* canon_BJC_S900_modeuses_PPplus[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh3",*/ -/* "600x600dpi_photo2",*/ /*untested*/ + "600x600dpi_photohigh3", + "600x600dpi_photo2", /*untested*/ NULL }; static const char* canon_BJC_S900_modeuses_PPgloss[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo2",*/ + "600x600dpi_photohigh2", + "600x600dpi_photo2", NULL }; static const char* canon_BJC_S900_modeuses_coated[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh4",*/ -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo2",*/ + "600x600dpi_photohigh4", + "600x600dpi_photohigh", + "600x600dpi_photo2", NULL }; static const char* canon_BJC_S900_modeuses_glossFilm[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo",*/ /*untested*/ + "600x600dpi_photohigh2", + "600x600dpi_photo", /*untested*/ NULL }; static const char* canon_BJC_S900_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "600x600dpi_tshirt", NULL }; static const char* canon_BJC_S900_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_std2",*/ -/* "600x600dpi_draft2",*/ + "600x600dpi_std2", + "600x600dpi_draft2", NULL }; @@ -1619,8 +1578,10 @@ static const char* canon_BJC_i80_modeuses_plain[] = { "600x600dpi_high", "600x600dpi_high2",/*mono*/ "600x600dpi", + "600x600dpi_std2", /* legacy */ "300x300dpi", "300x300dpi_draft", + "300x300dpi_std2", /* legacy */ NULL }; @@ -1661,6 +1622,8 @@ static const char* canon_BJC_i80_modeuses_Hagaki[] = { "600x600dpi_high4",/*mono*/ "600x600dpi_std3", "600x600dpi_draft3", + "600x600dpi_std2", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; @@ -1963,9 +1926,11 @@ DECLARE_MODEUSES(canon_BJC_i550); static const char* canon_BJC_i560_modeuses_plain[] = { "600x600dpi_high", "600x600dpi", + "600x600dpi_high3", /* legacy */ "300x300dpi_high",/*untested*/ "300x300dpi", "300x300dpi_draft", + "300x300dpi_std2", /* legacy */ NULL }; @@ -2006,6 +1971,8 @@ static const char* canon_BJC_i560_modeuses_inkjetHagaki[] = { static const char* canon_BJC_i560_modeuses_Hagaki[] = { "600x600dpi_high2", "600x600dpi_std2", + "600x600dpi_high3", /* legacy */ + "300x300dpi_std2", /* legacy */ NULL }; @@ -2320,12 +2287,9 @@ DECLARE_MODEUSES(canon_BJC_i900); /* ----------------------------------- Canon i950 ----------------------------------- */ static const char* canon_BJC_i950_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high2",*/ -/* "600x600dpi_high",*/ /*untested*/ -/* "600x600dpi",*/ + "600x600dpi_high2", + "600x600dpi_high", /*untested*/ + "600x600dpi", "600x600dpi_draft",/*untested*/ "600x600dpi_draft2", "600x600dpi_draftmono",/* mono --- untested*/ @@ -2334,84 +2298,57 @@ static const char* canon_BJC_i950_modeuses_plain[] = { }; static const char* canon_BJC_i950_modeuses_PPpro[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo3",*/ + "600x600dpi_photohigh2", + "600x600dpi_photo3", NULL }; static const char* canon_BJC_i950_modeuses_PPplus[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo2",*/ /*untested*/ + "600x600dpi_photohigh2", + "600x600dpi_photo2", /*untested*/ NULL }; static const char* canon_BJC_i950_modeuses_PPgloss[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo2",*/ + "600x600dpi_photohigh2", + "600x600dpi_photo2", NULL }; static const char* canon_BJC_i950_modeuses_PPmatte[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo2",*/ + "600x600dpi_photohigh2", + "600x600dpi_photo2", NULL }; static const char* canon_BJC_i950_modeuses_coated[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo3",*/ -/* "600x600dpi_photo",*/ + "600x600dpi_photohigh", + "600x600dpi_photo3", + "600x600dpi_photo", NULL }; static const char* canon_BJC_i950_modeuses_GlossyFilm[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ + "600x600dpi_photohigh", NULL }; static const char* canon_BJC_i950_modeuses_inkjetHagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh4",*/ -/* "600x600dpi_photo4",*/ -/* "600x600dpi_photodraft4",*/ + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", NULL }; static const char* canon_BJC_i950_modeuses_disc[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo5",*/ -/* "600x600dpi_photodraft5",*/ + "600x600dpi_photo5", + "600x600dpi_photodraft5", NULL }; static const char* canon_BJC_i950_modeuses_Hagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high4",*/ -/* "600x600dpi_high5",*/ /*untested*/ + "600x600dpi_high4", + "600x600dpi_high5", /*untested*/ "600x600dpi_std4",/*untested*/ "600x600dpi_std5", "600x600dpi_draftmono4",/* mono---untested*/ @@ -2420,28 +2357,19 @@ static const char* canon_BJC_i950_modeuses_Hagaki[] = { }; static const char* canon_BJC_i950_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "600x600dpi_tshirt", NULL }; static const char* canon_BJC_i950_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_std3",*/ -/* "600x600dpi_draft3",*/ -/* "600x600dpi_draft4",*/ + "600x600dpi_std3", + "600x600dpi_draft3", + "600x600dpi_draft4", NULL }; static const char* canon_BJC_i950_modeuses_PPother[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo2",*/ /*untested*/ + "600x600dpi_photo2", /*untested*/ NULL }; @@ -2468,13 +2396,10 @@ DECLARE_MODEUSES(canon_BJC_i950); /* ----------------------------------- Canon i960 ----------------------------------- */ static const char* canon_BJC_i960_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high2",*/ -/* "600x600dpi_high3",*/ /* duplex */ -/* "600x600dpi_high",*/ -/* "600x600dpi",*/ /*untested*/ + "600x600dpi_high2", + "600x600dpi_high3", /* duplex */ + "600x600dpi_high", + "600x600dpi", /*untested*/ "600x600dpi_draft", "600x600dpi_draft2", "600x600dpi_draftmono",/* mono */ @@ -2483,76 +2408,52 @@ static const char* canon_BJC_i960_modeuses_plain[] = { }; static const char* canon_BJC_i960_modeuses_PPpro[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo",*/ + "600x600dpi_photohigh", + "600x600dpi_photo", NULL }; static const char* canon_BJC_i960_modeuses_PPplus[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo5",*/ /*untested*/ + "600x600dpi_photohigh", + "600x600dpi_photo5", /*untested*/ NULL }; static const char* canon_BJC_i960_modeuses_PPgloss[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo2",*/ + "600x600dpi_photohigh", + "600x600dpi_photo2", NULL }; static const char* canon_BJC_i960_modeuses_PPmatte[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo2",*/ + "600x600dpi_photohigh2", + "600x600dpi_photo2", NULL }; static const char* canon_BJC_i960_modeuses_coated[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo",*/ -/* "600x600dpi_photo5",*/ + "600x600dpi_photohigh2", + "600x600dpi_photo", + "600x600dpi_photo5", NULL }; static const char* canon_BJC_i960_modeuses_inkjetHagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh3",*/ -/* "600x600dpi_photo3",*/ + "600x600dpi_photohigh3", + "600x600dpi_photo3", NULL }; static const char* canon_BJC_i960_modeuses_disc[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo4",*/ -/* "600x600dpi_photodraft4",*/ + "600x600dpi_photo4", + "600x600dpi_photodraft4", NULL }; static const char* canon_BJC_i960_modeuses_Hagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high4",*/ -/* "600x600dpi_high5",*/ -/* "600x600dpi_std4",*/ /*untested*/ + "600x600dpi_high4", + "600x600dpi_high5", + "600x600dpi_std4", /*untested*/ "600x600dpi_std5", "600x600dpi_draft5", "600x600dpi_draftmono4", @@ -2561,28 +2462,19 @@ static const char* canon_BJC_i960_modeuses_Hagaki[] = { }; static const char* canon_BJC_i960_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "600x600dpi_tshirt", NULL }; static const char* canon_BJC_i960_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_std3",*/ -/* "600x600dpi_draft3",*/ -/* "600x600dpi_draft4",*/ /*untested*/ + "600x600dpi_std3", + "600x600dpi_draft3", + "600x600dpi_draft4", /*untested*/ NULL }; static const char* canon_BJC_i960_modeuses_PPother[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo2",*/ /*untested*/ + "600x600dpi_photo2", /*untested*/ NULL }; @@ -2608,12 +2500,9 @@ DECLARE_MODEUSES(canon_BJC_i960); /* ----------------------------------- Canon i990 ----------------------------------- */ static const char* canon_BJC_i990_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high2",*/ -/* "600x600dpi_high3",*/ /*duplex*/ -/* "600x600dpi",*/ + "600x600dpi_high2", + "600x600dpi_high3", /*duplex*/ + "600x600dpi", "600x600dpi_draft", "600x600dpi_draft2", "600x600dpi_draftmono",/*mono*/ @@ -2624,76 +2513,52 @@ static const char* canon_BJC_i990_modeuses_plain[] = { /* most photo modes use R ink and therefore unsupported */ /* unsupported */ static const char* canon_BJC_i990_modeuses_PPpro[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ + "600x600dpi_photohigh", /*stand-in*/ NULL }; /* highest mode not yet supported */ static const char* canon_BJC_i990_modeuses_PPplus[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ -/* "600x600dpi_photodraft",*/ + "600x600dpi_photohigh", /*stand-in*/ + "600x600dpi_photodraft", NULL }; /* unsupported */ static const char* canon_BJC_i990_modeuses_PPmatte[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ + "600x600dpi_photohigh", /*stand-in*/ NULL }; /* highest mode not yet supported */ static const char* canon_BJC_i990_modeuses_PPgloss[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ -/* "600x600dpi_photodraft2",*/ + "600x600dpi_photohigh", /*stand-in*/ + "600x600dpi_photodraft2", NULL }; static const char* canon_BJC_i990_modeuses_coated[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photomed",*/ -/* "600x600dpi_photo",*/ + "600x600dpi_photohigh", + "600x600dpi_photomed", + "600x600dpi_photo", NULL }; /* high mode not yet supported */ static const char* canon_BJC_i990_modeuses_inkjetHagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo2",*/ + "600x600dpi_photo2", NULL }; static const char* canon_BJC_i990_modeuses_disc[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo3",*/ -/* "600x600dpi_photodraft3",*/ + "600x600dpi_photo3", + "600x600dpi_photodraft3", NULL }; static const char* canon_BJC_i990_modeuses_Hagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high4",*/ -/* "600x600dpi_std4",*/ + "600x600dpi_high4", + "600x600dpi_std4", "600x600dpi_draft5", "600x600dpi_draft4", "600x600dpi_draftmono4",/*mono*/ @@ -2702,28 +2567,19 @@ static const char* canon_BJC_i990_modeuses_Hagaki[] = { }; static const char* canon_BJC_i990_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "600x600dpi_tshirt", NULL }; static const char* canon_BJC_i990_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_std3",*/ -/* "600x600dpi_draft3",*/ + "600x600dpi_std3", + "600x600dpi_draft3", NULL }; /* untested */ static const char* canon_BJC_i990_modeuses_PPother[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo",*/ + "600x600dpi_photo", NULL }; @@ -2832,11 +2688,8 @@ DECLARE_MODEUSES(canon_BJC_i6100); /* ----------------------------------- Canon i9100 ----------------------------------- */ static const char* canon_BJC_i9100_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high2",*/ -/* "600x600dpi_high",*/ + "600x600dpi_high2", + "600x600dpi_high", "600x600dpi", "600x600dpi_draft",/*untested*/ "600x600dpi_mono",/*untested*/ @@ -2845,87 +2698,60 @@ static const char* canon_BJC_i9100_modeuses_plain[] = { }; static const char* canon_BJC_i9100_modeuses_PPpro[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo2",*/ + "600x600dpi_photohigh2", + "600x600dpi_photo2", NULL }; static const char* canon_BJC_i9100_modeuses_PPplus[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh2",*/ -/* "600x600dpi_photo2",*/ /*untested*/ + "600x600dpi_photohigh2", + "600x600dpi_photo2", /*untested*/ NULL }; static const char* canon_BJC_i9100_modeuses_PPmatte[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo",*/ + "600x600dpi_photohigh", + "600x600dpi_photo", NULL }; static const char* canon_BJC_i9100_modeuses_coated[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photo2",*/ -/* "600x600dpi_photo",*/ + "600x600dpi_photohigh", + "600x600dpi_photo2", + "600x600dpi_photo", NULL }; static const char* canon_BJC_i9100_modeuses_inkjetHagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh4",*/ -/* "600x600dpi_photo4",*/ -/* "600x600dpi_photodraft4",*/ + "600x600dpi_photohigh4", + "600x600dpi_photo4", + "600x600dpi_photodraft4", NULL }; static const char* canon_BJC_i9100_modeuses_Hagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high3",*/ -/* "600x600dpi_std3",*/ + "600x600dpi_high3", + "600x600dpi_std3", "600x600dpi_draft3", "600x600dpi_draftmono2", NULL }; static const char* canon_BJC_i9100_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "600x600dpi_tshirt", NULL }; static const char* canon_BJC_i9100_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh3",*/ -/* "600x600dpi_photo3",*/ /*untested*/ -/* "600x600dpi_photodraft3",*/ + "600x600dpi_photohigh3", + "600x600dpi_photo3", /*untested*/ + "600x600dpi_photodraft3", NULL }; static const char* canon_BJC_i9100_modeuses_PPother[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo2",*/ /*untested*/ -/* "600x600dpi_photo",*/ /*untested*/ + "600x600dpi_photo2", /*untested*/ + "600x600dpi_photo", /*untested*/ NULL }; @@ -2949,11 +2775,8 @@ DECLARE_MODEUSES(canon_BJC_i9100); /* ----------------------------------- Canon i9900 ----------------------------------- */ static const char* canon_BJC_i9900_modeuses_plain[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high2",*/ -/* "600x600dpi",*/ + "600x600dpi_high2", + "600x600dpi", "600x600dpi_draft", "600x600dpi_draft2", "600x600dpi_draftmono",/*mono*/ @@ -2964,76 +2787,52 @@ static const char* canon_BJC_i9900_modeuses_plain[] = { /* most photo modes use R,G inks and therefore unsupported */ /* unsupported */ static const char* canon_BJC_i9900_modeuses_PPpro[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ + "600x600dpi_photohigh", /*stand-in*/ NULL }; /* highest mode not yet supported */ static const char* canon_BJC_i9900_modeuses_PPplus[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ -/* "600x600dpi_photodraft",*/ + "600x600dpi_photohigh", /*stand-in*/ + "600x600dpi_photodraft", NULL }; /* unsupported */ static const char* canon_BJC_i9900_modeuses_PPmatte[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ + "600x600dpi_photohigh", /*stand-in*/ NULL }; /* highest mode not yet supported */ static const char* canon_BJC_i9900_modeuses_PPgloss[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ /*stand-in*/ -/* "600x600dpi_photodraft",*/ + "600x600dpi_photohigh", /*stand-in*/ + "600x600dpi_photodraft", NULL }; static const char* canon_BJC_i9900_modeuses_coated[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photohigh",*/ -/* "600x600dpi_photomed",*/ -/* "600x600dpi_photo",*/ + "600x600dpi_photohigh", + "600x600dpi_photomed", + "600x600dpi_photo", NULL }; /* high mode not yet supported */ static const char* canon_BJC_i9900_modeuses_inkjetHagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo2",*/ + "600x600dpi_photo2", NULL }; static const char* canon_BJC_i9900_modeuses_disc[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo3",*/ -/* "600x600dpi_photodraft3",*/ + "600x600dpi_photo3", + "600x600dpi_photodraft3", NULL }; static const char* canon_BJC_i9900_modeuses_Hagaki[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_high4",*/ -/* "600x600dpi_std4",*/ + "600x600dpi_high4", + "600x600dpi_std4", "600x600dpi_draft5", "600x600dpi_draft4", "600x600dpi_draftmono4",/*mono*/ @@ -3042,27 +2841,18 @@ static const char* canon_BJC_i9900_modeuses_Hagaki[] = { }; static const char* canon_BJC_i9900_modeuses_TShirt[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_tshirt",*/ + "600x600dpi_tshirt", NULL }; static const char* canon_BJC_i9900_modeuses_Transparency[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_std3",*/ -/* "600x600dpi_draft3",*/ + "600x600dpi_std3", + "600x600dpi_draft3", NULL }; static const char* canon_BJC_i9900_modeuses_PPother[] = { - "1200x1200dpi_legacy", - "600x600dpi_legacy", - "300x300dpi_legacy", -/* "600x600dpi_photo",*/ + "600x600dpi_photo", NULL }; @@ -4971,9 +4761,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 */ @@ -4982,86 +4772,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); @@ -5234,9 +5024,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 */ @@ -5246,109 +5036,109 @@ 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_high2",*/ -/* "600x600dpi",*/ + "600x600dpi_high", + "600x600dpi_high2", + "600x600dpi", "600x600dpi_draft", "600x600dpi_draft2", "600x600dpi_mono", @@ -5357,93 +5147,93 @@ static const char* canon_PIXMA_iP8500_modeuses_plain[] = { }; /* 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 */ @@ -5453,94 +5243,94 @@ 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); @@ -5640,9 +5430,9 @@ DECLARE_MODEUSES(canon_PIXMA_iP8700); /* ----------------------------------- Canon iP9910 ----------------------------------- */ static const char* canon_PIXMA_iP9910_modeuses_plain[] = { -/* "600x600dpi_high",*/ -/* "600x600dpi_high2",*/ /*duplex*/ -/* "600x600dpi",*/ + "600x600dpi_high", + "600x600dpi_high2", /*duplex*/ + "600x600dpi", "600x600dpi_draft", "600x600dpi_draft2", /* Mono */ @@ -5652,92 +5442,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); @@ -6097,6 +5887,255 @@ static const canon_modeuse_t canon_PIXMA_iX7000_modeuses[] = { DECLARE_MODEUSES(canon_PIXMA_iX7000); +/* ----------------------------------- Canon MP5 ----------------------------------- */ +static const char* canon_PIXMA_MP5_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "300x300dpi",/*untested*/ + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_MP5_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MP5_modeuses_PPmatte[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MP5_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MP5_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_PIXMA_MP5_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MP5_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + "600x600dpi_stdmono2", + "600x600dpi_draft2", + NULL +}; + +static const char* canon_PIXMA_MP5_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MP5_modeuses_PPother[] = { + "600x600dpi_photohigh2",/*untested*/ + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MP5_modeuses[] = { + { "Plain", canon_PIXMA_MP5_modeuses_plain, 0 }, + { "GlossyPro", canon_PIXMA_MP5_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_MP5_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_PIXMA_MP5_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MP5_modeuses_PPgloss, 0 }, + { "Coated", canon_PIXMA_MP5_modeuses_PPmatte, 0 }, + { "InkJetHagaki", canon_PIXMA_MP5_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_MP5_modeuses_Hagaki, 0 }, + { "GlossyFilm", canon_PIXMA_MP5_modeuses_PPmatte, 0 }, + { "TShirt", canon_PIXMA_MP5_modeuses_TShirt, 0 }, + { "Transparency", canon_PIXMA_MP5_modeuses_Transparency, 0 }, + { "Envelope", canon_PIXMA_MP5_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MP5_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MP5); + +/* ----------------------------------- Canon MP55 ----------------------------------- */ +static const char* canon_PIXMA_MP55_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_medium", + "600x600dpi", + "300x300dpi",/*untested*/ + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_MP55_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_HiRes[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_Hagaki[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +static const char* canon_PIXMA_MP55_modeuses_PPother[] = { + "600x600dpi_photohigh",/*untested*/ + "600x600dpi_photo",/*untested*/ + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MP55_modeuses[] = { + { "Plain", canon_PIXMA_MP55_modeuses_plain, 0 }, + { "GlossyPro", canon_PIXMA_MP55_modeuses_PPpro, 0 }, + { "PhotopaperPlus", canon_PIXMA_MP55_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_PIXMA_MP55_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MP55_modeuses_PPgloss, 0 }, + { "Coated", canon_PIXMA_MP55_modeuses_HiRes, 0 }, + { "InkJetHagaki", canon_PIXMA_MP55_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_MP55_modeuses_Hagaki, 0 }, + { "GlossyFilm", canon_PIXMA_MP55_modeuses_PPpro, 0 }, + { "TShirt", canon_PIXMA_MP55_modeuses_TShirt, 0 }, + { "Transparency", canon_PIXMA_MP55_modeuses_Transparency, 0 }, + { "Envelope", canon_PIXMA_MP55_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MP55_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MP55); + +/* ----------------------------------- Canon MPC400 ----------------------------------- */ +static const char* canon_PIXMA_MPC400_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi", + "600x600dpi_draft", + "300x300dpi",/*untested*/ + "300x300dpi_draft", + NULL + }; + +static const char* canon_PIXMA_MPC400_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo2", + NULL +}; + +/* experimental */ +static const char* canon_PIXMA_MPC400_modeuses_PPmatte[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +static const char* canon_PIXMA_MPC400_modeuses_PPgloss[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MPC400_modeuses_HiRes[] = { + "600x600dpi_photohigh3", + "600x600dpi_photohigh", + "600x600dpi_photo", + "600x600dpi_photodraft", + NULL +}; + +/* experimental */ +static const char* canon_PIXMA_MPC400_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MPC400_modeuses_Transparency[] = { + "600x600dpi_ohphigh", + "600x600dpi_ohp", + NULL +}; + +static const char* canon_PIXMA_MPC400_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MPC400_modeuses_Env[] = { + "600x600dpi_high2", + "600x600dpi_std2", + NULL +}; + +/* experimental */ +static const char* canon_PIXMA_MPC400_modeuses_PPother[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MPC400_modeuses[] = { + { "Plain", canon_PIXMA_MPC400_modeuses_plain, 0 }, + { "GlossyPro", canon_PIXMA_MPC400_modeuses_PPpro, 0 }, + { "PhotopaperMatte", canon_PIXMA_MPC400_modeuses_PPmatte, 0 }, + { "GlossyPaper", canon_PIXMA_MPC400_modeuses_PPgloss, 0 }, + { "Coated", canon_PIXMA_MPC400_modeuses_HiRes, 0 }, + { "InkJetHagaki", canon_PIXMA_MPC400_modeuses_inkjetHagaki, 0 }, + { "Hagaki", canon_PIXMA_MPC400_modeuses_Env, 0 }, + { "GlossyFilm", canon_PIXMA_MPC400_modeuses_PPpro, 0 }, + { "GlossyCard", canon_PIXMA_MPC400_modeuses_PPgloss, 0 }, + { "TShirt", canon_PIXMA_MPC400_modeuses_TShirt, 0 }, + { "Transparency", canon_PIXMA_MPC400_modeuses_Transparency, 0 }, + { "Envelope", canon_PIXMA_MPC400_modeuses_Env, 0 }, + { "PhotopaperOther", canon_PIXMA_MPC400_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MPC400); + /* ----------------------------------- Canon MP150 ----------------------------------- */ static const char* canon_MULTIPASS_MP150_modeuses_plain[] = { "600x600dpi_high", @@ -8387,8 +8426,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 */ @@ -8397,92 +8436,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); @@ -11148,6 +11187,66 @@ static const canon_modeuse_t canon_PIXMA_MG3500_modeuses[] = { DECLARE_MODEUSES(canon_PIXMA_MG3500); +/* ----------------------------------- Canon MG3600 ----------------------------------- */ +static const char* canon_PIXMA_MG3600_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high5",/* color */ + "600x600dpi", + "300x300dpi", + NULL + }; + +static const char* canon_PIXMA_MG3600_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3600_modeuses_PPpro[] = { + "600x600dpi_photohigh2", + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG3600_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MG3600_modeuses_TShirt[] = { + "600x600dpi_photohigh", + NULL +}; + +static const char* canon_PIXMA_MG3600_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG3600_modeuses[] = { + { "Plain", canon_PIXMA_MG3600_modeuses_plain, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL | DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProPlat", canon_PIXMA_MG3600_modeuses_PPpro, INKSET_COLOR_SUPPORT }, + { "PhotoProLuster", canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotoProSemiGloss",canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "PhotopaperMatte", canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "GlossyPaperStandard",canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "Coated", canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "HagakiA", canon_PIXMA_MG3600_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkJetHagaki", canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "InkJetHagakiaddr", canon_PIXMA_MG3600_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "InkjetPhotoHagakiK",canon_PIXMA_MG3600_modeuses_PPplusG2, INKSET_COLOR_SUPPORT }, + { "InkjetPhotoHagakiKaddr",canon_PIXMA_MG3600_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "Hagaki", canon_PIXMA_MG3600_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "TShirt", canon_PIXMA_MG3600_modeuses_TShirt, INKSET_COLOR_SUPPORT }, + { "Envelope", canon_PIXMA_MG3600_modeuses_Hagaki, INKSET_BLACK_SUPPORT | INKSET_COLOR_SUPPORT | INKSET_BLACK_MODEREPL | INKSET_COLOR_MODEREPL }, + { "PhotopaperOther", canon_PIXMA_MG3600_modeuses_PPother, INKSET_COLOR_SUPPORT }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG3600); + /* ----------------------------------- Canon MG5100 ----------------------------------- */ static const char* canon_PIXMA_MG5100_modeuses_plain[] = { "600x600dpi_high", @@ -11585,6 +11684,73 @@ static const canon_modeuse_t canon_PIXMA_MG5600_modeuses[] = { DECLARE_MODEUSES(canon_PIXMA_MG5600); +/* ----------------------------------- Canon MG5700 ----------------------------------- */ +static const char* canon_PIXMA_MG5700_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "600x600dpi_draft", + NULL + }; + +static const char* canon_PIXMA_MG5700_modeuses_PPplusG2[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5700_modeuses_PPpro[] = { + /*ud1 not supported */ + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5700_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MG5700_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh2", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG5700_modeuses_TShirt[] = { + "600x600dpi_tshirt", + NULL +}; + +static const char* canon_PIXMA_MG5700_modeuses_PPother[] = { + "600x600dpi_photohigh", + NULL +}; + +static const canon_modeuse_t canon_PIXMA_MG5700_modeuses[] = { + { "Plain", canon_PIXMA_MG5700_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + { "PhotoPlusGloss2", canon_PIXMA_MG5700_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MG5700_modeuses_PPpro, 0 }, + { "PhotoProLuster", canon_PIXMA_MG5700_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MG5700_modeuses_PPplusG2, 0 }, + { "PhotopaperMatte", canon_PIXMA_MG5700_modeuses_PPplusG2, 0 }, + { "GlossyPaperStandard",canon_PIXMA_MG5700_modeuses_PPplusG2, 0 }, + { "Coated", canon_PIXMA_MG5700_modeuses_PPplusG2, 0 }, + { "InkJetHagakiaddr", canon_PIXMA_MG5700_modeuses_Hagaki, 0 }, + { "InkJetHagaki", canon_PIXMA_MG5700_modeuses_inkjetHagaki, 0 }, + { "InkjetPhotoHagakiKaddr",canon_PIXMA_MG5700_modeuses_Hagaki, 0 }, + { "InkjetPhotoHagakiK",canon_PIXMA_MG5700_modeuses_PPplusG2, 0 }, + { "HagakiA", canon_PIXMA_MG5700_modeuses_Hagaki, 0 }, + { "Hagaki", canon_PIXMA_MG5700_modeuses_Hagaki, 0 }, + { "TShirt", canon_PIXMA_MG5700_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG5700_modeuses_Hagaki, 0 }, + { "PhotopaperOther", canon_PIXMA_MG5700_modeuses_PPother, 0 }, +}; + +DECLARE_MODEUSES(canon_PIXMA_MG5700); + /* ----------------------------------- Canon MG6100 ----------------------------------- */ /* most photo modes use gray ink which is unsupported */ /* TODO: mono modes for photo media */ @@ -12052,6 +12218,74 @@ static const canon_modeuse_t canon_PIXMA_MG6700_modeuses[] = { DECLARE_MODEUSES(canon_PIXMA_MG6700); +/* ----------------------------------- Canon MG7700 ----------------------------------- */ +/* most photo modes use gray ink which is unsupported */ +/* TODO: mono modes for photo media */ +static const char* canon_PIXMA_MG7700_modeuses_plain[] = { + "600x600dpi_high", + "600x600dpi_high2",/* duplex */ + "600x600dpi", + "600x600dpi_std2",/* duplex */ + "600x600dpi_draft", + NULL + }; + +static const char* canon_PIXMA_MG7700_modeuses_PPmatte[] = { + "600x600dpi_photohigh", + "600x600dpi_photo", + NULL +}; + +static const char* canon_PIXMA_MG7700_modeuses_Hagaki[] = { + "600x600dpi_high3", + "600x600dpi_std3", + NULL +}; + +static const char* canon_PIXMA_MG7700_modeuses_inkjetHagaki[] = { + "600x600dpi_photohigh4", + "600x600dpi_photo4", + NULL +}; + +static const char* canon_PIXMA_MG7700_modeuses_disc[] = { + "600x600dpi_photohigh3", + "600x600dpi_photo3", + NULL +}; + +static const char* canon_PIXMA_MG7700_modeuses_TShirt[] = { + "600x600dpi_photohigh", + NULL +}; + +/* media using modes requiring H ink are commented out */ +static const canon_modeuse_t canon_PIXMA_MG7700_modeuses[] = { + { "Plain", canon_PIXMA_MG7700_modeuses_plain, DUPLEX_SUPPORT | DUPLEX_MODEREPL }, + /* { "PhotoPlusGloss2", canon_PIXMA_MG7700_modeuses_PPplusG2, 0 }, + { "PhotoProPlat", canon_PIXMA_MG7700_modeuses_PPpro, 0 }, + { "PhotoProLuster", canon_PIXMA_MG7700_modeuses_PPplusG2, 0 }, + { "PhotoProSemiGloss",canon_PIXMA_MG7700_modeuses_PPplusG2, 0 }, + { "GlossyPaper", canon_PIXMA_MG7700_modeuses_PPplusG2, 0 },*/ + { "PhotopaperMatte", canon_PIXMA_MG7700_modeuses_PPmatte, 0 }, + { "Coated", canon_PIXMA_MG7700_modeuses_PPmatte, 0 }, + { "InkJetHagakiaddr", canon_PIXMA_MG7700_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "InkJetHagaki", canon_PIXMA_MG7700_modeuses_inkjetHagaki, 0 }, + { "InkjetPhotoHagakiKaddr",canon_PIXMA_MG7700_modeuses_Hagaki, DUPLEX_SUPPORT }, + /*{ "InkjetPhotoHagakiK",canon_PIXMA_MG7700_modeuses_PPplusG2, 0 },*/ + { "HagakiA", canon_PIXMA_MG7700_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "Hagaki", canon_PIXMA_MG7700_modeuses_Hagaki, DUPLEX_SUPPORT }, + { "DiscCompat", canon_PIXMA_MG7700_modeuses_disc, 0 }, + { "DiscOthers", canon_PIXMA_MG7700_modeuses_disc, 0 }, + { "TShirt", canon_PIXMA_MG7700_modeuses_TShirt, 0 }, + { "Envelope", canon_PIXMA_MG7700_modeuses_Hagaki, 0 }, + /*{ "FineArtPhotoRag", canon_PIXMA_MG7700_modeuses_photorag, 0 }, + { "FineArtOther", canon_PIXMA_MG7700_modeuses_photorag, 0 }, + { "PhotopaperOther", canon_PIXMA_MG7700_modeuses_PPother, 0 },*/ +}; + +DECLARE_MODEUSES(canon_PIXMA_MG7700); + /* ----------------------------------- Canon MG8100 ----------------------------------- */ /* most photo modes use gray ink which is unsupported */ /* TODO: mono modes for photo media */ @@ -12241,155 +12475,155 @@ DECLARE_MODEUSES(canon_PIXMA_MG8200); /* ----------------------------------- Canon Pro9000 ----------------------------------- */ static const char* canon_PIXMA_Pro9000_modeuses_plain[] = { -/* "600x600dpi_high2",*/ -/* "600x600dpi",*/ + "600x600dpi_high2",/* exp */ + "600x600dpi",/* exp */ "600x600dpi_std2", "600x600dpi_draft", "600x600dpi_draft2", /* Mono */ -/* "600x600dpi_highmono",*/ -/* "600x600dpi_mono",*/ + "600x600dpi_highmono",/* exp */ + "600x600dpi_mono",/* exp */ "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",/* exp */ + "600x600dpi_std3",/* exp */ /*Mono High*/ + "600x600dpi_std4",/* exp */ /* 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); @@ -12397,13 +12631,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 @@ -12411,7 +12645,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", @@ -12419,8 +12653,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", @@ -12429,8 +12663,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*/ @@ -12440,7 +12674,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", @@ -12448,8 +12682,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", @@ -12457,8 +12691,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", @@ -12466,17 +12700,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", @@ -12484,28 +12718,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 @@ -12530,7 +12764,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 }, }; @@ -12544,9 +12778,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 @@ -12599,9 +12833,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 @@ -12674,9 +12908,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 @@ -12721,9 +12955,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 diff --git a/src/main/canon-media.h b/src/main/canon-media.h index 7d0069e..2b37391 100644 --- a/src/main/canon-media.h +++ b/src/main/canon-media.h @@ -235,12 +235,14 @@ static const canon_slot_t canon_PIXMA_MG5200_slots[] = { }; DECLARE_SLOTS(canon_PIXMA_MG5200); +/* Casssette containing an upper (cassette 1) and a lower tray (cassette 2) */ static const canon_slot_t canon_PIXMA_MG5400_slots[] = { { "Cassette", N_ ("Cassette"), 0xd }, { "CD", N_ ("CD tray"), 0xa }, }; DECLARE_SLOTS(canon_PIXMA_MG5400); +/* Casssette containing an upper (cassette 1) and a lower tray (cassette 2) */ static const canon_slot_t canon_PIXMA_MX720_slots[] = { { "Cassette", N_ ("Cassette"), 0xd }, }; @@ -267,6 +269,7 @@ typedef struct { unsigned char media_code_c; /* Media Code used for the ESC (c (SetColor) command */ unsigned char media_code_l; /* Media Code used for the ESC (l (SetTray) command */ unsigned char media_code_P; /* Media Code used for the ESC (P (Unknown) command */ + unsigned char media_code_w; /* Media Code used for the ESC (w (Unknown) command */ double base_density; double k_lower_scale; double k_upper; @@ -291,2003 +294,2086 @@ static const canon_paperlist_t name##_paperlist = { \ /* paperlists for the various printers. The first entry will be the default */ -static const canon_paper_t canon_default_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00, 0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "Transparency", N_ ("Transparencies"), 0x02, 0x02,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, - { "BackPrint", N_ ("Back Print Film"), 0x03, 0x03,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, - { "Fabric", N_ ("Fabric Sheets"), 0x04, 0x04,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "Envelope", N_ ("Envelope"), 0x08, 0x08,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "Coated", N_ ("High Resolution Paper"), 0x07, 0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03, 0x03,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06, 0x06,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05, 0x05,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "GlossyCard", N_ ("Glossy Photo Cards"), 0x0a, 0x0a,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09, 0x09,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "Other", N_ ("Other"), 0x00, 0x00,0x00,0.50, 0.25, .5, 0, 0, 0 }, +static const canon_paper_t canon_default_papers[] = { /* k_lower hue_adj sat_adj */ + /* Name Text (c (l (P (w Density k_upper lum_adj */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, + { "BackPrint", N_ ("Back Print Film"), 0x03,0x03,0x00,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, + { "Fabric", N_ ("Fabric Sheets"), 0x04,0x04,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyCard", N_ ("Glossy Photo Cards"), 0x0a,0x0a,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x09,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "Other", N_ ("Other"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_default); static const canon_paper_t canon_PIXMA_iP4000_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,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 }, - { "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 }, - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,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 }, - { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "CD", N_ ("CD"), 0x00,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* legacy */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CD", N_ ("CD"), 0x00,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* legacy */ /* FIXME media code for c) should be 0x0c for CD but this will restrict CD printing to a single, not well supported, resolution */ - { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ - { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,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 }, - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ }; DECLARE_PAPERS(canon_PIXMA_iP4000); static const canon_paper_t canon_PIXMA_iP2000_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 */ - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP2000); static const canon_paper_t canon_PIXMA_iP3000_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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP3000); static const canon_paper_t canon_PIXMA_iP3100_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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_PIXMA_iP3100); +static const canon_paper_t canon_PIXMA_MP5_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0d 0x09 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ +}; +DECLARE_PAPERS(canon_PIXMA_MP5); + +static const canon_paper_t canon_PIXMA_MP55_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0a 0x10 */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0d 0x09 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ +}; +DECLARE_PAPERS(canon_PIXMA_MP55); + +static const canon_paper_t canon_PIXMA_MPC400_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested: using different from 0x0d 0x09 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested: using different from 0x0d 0x09 */ + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyCard", N_ ("Glossy Photo Cards"), 0x05,0x0c,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ +}; +DECLARE_PAPERS(canon_PIXMA_MPC400); + 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photopaper Plus Double Sided"), 0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,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 }, - { "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 }, - { "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 */ - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ }; DECLARE_PAPERS(canon_PIXMA_iP4100); static const canon_paper_t canon_PIXMA_iP4200_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble", N_ ("Photopaper 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* FIXME media code for c) should be 0x0c for CD but this will restrict CD printing to an unsupported resolution */ - { "CD", N_ ("CD"), 0x00,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ - { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ - { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0.78, 0.25, 0.900, 0, 0, 0 }, + { "CD", N_ ("CD"), 0x00,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* added 2011-11-26 */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP4200); static const canon_paper_t canon_BJC_S200_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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 */ - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_S200); static const canon_paper_t canon_BJC_S300_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested*/ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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 */ - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "GlossyCard", N_ ("Glossy Photo Cards"), 0x05,0x0c,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/* different from expected 0xa 0xa */ - { "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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested*/ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyCard", N_ ("Glossy Photo Cards"), 0x05,0x0c,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/* different from expected 0xa 0xa */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_S300); static const canon_paper_t canon_BJC_S330_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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 */ - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_S330); static const canon_paper_t canon_BJC_S520_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0a 0x10 */ - { "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 */ - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0a 0x10 */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_S520); static const canon_paper_t canon_BJC_S750_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0a 0x10 */ - { "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 */ - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0a 0x10 */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_S750); static const canon_paper_t canon_BJC_S800_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0a 0x10 */ - { "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 */ - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "GlossyCard", N_ ("Glossy Photo Cards"), 0x05,0x0a,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/* different from expected 0xa 0xa */ - { "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.900, 0, 0, 0 }, - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x00,0x0f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0xf 0x14 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.50, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0b 0x11 */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0x0a 0x10 */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyCard", N_ ("Glossy Photo Cards"), 0x05,0x0a,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/* different from expected 0xa 0xa */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x00,0x0f,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0xf 0x14 */ }; DECLARE_PAPERS(canon_BJC_S800); static const canon_paper_t canon_BJC_i50_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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"), 0x08,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 }, - { "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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i50); static const canon_paper_t canon_BJC_i80_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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"), 0x08,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 }, - { "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.900, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_BJC_i80); static const canon_paper_t canon_BJC_i250_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 11 */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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 },/* 250i,350i different from expected 08 */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* 250i,350i */ - { "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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 11 */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* 250i,350i different from expected 08 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* 250i,350i */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i250); static const canon_paper_t canon_BJC_i320_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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"), 0x08,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 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i320); static const canon_paper_t canon_BJC_i450_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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 }, - { "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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i450); static const canon_paper_t canon_BJC_i455_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 },/* untested */ - { "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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0.78, 0.25, 0.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i455); static const canon_paper_t canon_BJC_i550_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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"), 0x07,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i550); static const canon_paper_t canon_BJC_i560_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i560); static const canon_paper_t canon_BJC_i850_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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"), 0x07,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d 9 */ - { "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 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d 9 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i850); static const canon_paper_t canon_BJC_i950_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 },/* untested */ - { "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 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0.78, 0.25, 0.999, 0, 0, 0 }, - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x09,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d 9 */ - { "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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.999, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x09,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d 9 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i950); static const canon_paper_t canon_BJC_i6100_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected b 11 */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected a 10 */ - { "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"), 0x07,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,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.900, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected b 11 */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected a 10 */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_BJC_i6100); static const canon_paper_t canon_BJC_i9100_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected b 11 */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected a 10 */ - { "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"), 0x09,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d 09 */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected b 11 */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected a 10 */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x09,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected d 09 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i9100); static const canon_paper_t canon_BJC_i9900_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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.900, 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_BJC_i9900); static const canon_paper_t canon_PIXMA_iP90_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP90); static const canon_paper_t canon_PIXMA_iP100_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGgold*/ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,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 }, - { "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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGgold*/ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP100); static const canon_paper_t canon_PIXMA_iP1000_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,1.00, 1.00, 0.900, 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 }, - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/*experiment*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/*experiment*/ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*experiment*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*experiment*/ }; DECLARE_PAPERS(canon_PIXMA_iP1000); static const canon_paper_t canon_PIXMA_iP1200_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,1.00, 1.00, 0.900, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP1200); static const canon_paper_t canon_PIXMA_iP1500_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 },/* experimental */ - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,1.00, 1.00, 0.900, 0, 0, 0 },/* experimental */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* experimental */ + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 1.00, 0.900, 0, 0, 0 },/* experimental */ }; DECLARE_PAPERS(canon_PIXMA_iP1500); static const canon_paper_t canon_PIXMA_iP2200_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,1.00, 1.00, 0.900, 0, 0, 0 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP2200); static const canon_paper_t canon_PIXMA_iP2600_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP2600); static const canon_paper_t canon_PIXMA_iP3300_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 },/* PPpro*/ - { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuper */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuperDS */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPgloss */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PPmatte */ - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* PPother */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* HiRes */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjetHagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPpro*/ + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuper */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuperDS */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPgloss */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPmatte */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPother */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* HiRes */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjetHagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ }; DECLARE_PAPERS(canon_PIXMA_iP3300); static const canon_paper_t canon_PIXMA_iP5000_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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photopaper Plus Double Sided"), 0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*untested*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*untested*/ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP5000); static const canon_paper_t canon_PIXMA_iP6100_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 }, - { "CD", N_ ("CD"), 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photopaper Plus Double Sided"), 0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CD", N_ ("CD"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP6100); -static const canon_paper_t canon_PIXMA_iP6600_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 }, - { "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 }, - { "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 }, +static const canon_paper_t canon_PIXMA_iP6600_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP6600); -static const canon_paper_t canon_PIXMA_iP6700_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"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 }, - { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x18,0x29,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different from usual 13,1b,29 */ - { "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 }, - { "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 }, +static const canon_paper_t canon_PIXMA_iP6700_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different from usual 13,1b,29 */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP6700); -static const canon_paper_t canon_PIXMA_iP7100_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 */ +static const canon_paper_t canon_PIXMA_iP7100_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x02,0x0d,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different c,l from usual */ + { "FineArtOther", N_ ("Fine Art Other"), 0x02,0x0d,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different c,l from usual */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; 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 */ +static const canon_paper_t canon_PIXMA_iP7100_limited_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x02,0x0d,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* note: different c,l from usual */ + { "FineArtOther", N_ ("Fine Art Other"), 0x02,0x0d,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* note: different c,l from usual */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,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 }, - { "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"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 }, - { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,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 }, - { "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 },/* untested */ - { "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 }, +static const canon_paper_t canon_PIXMA_iP7500_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP7500); static const canon_paper_t canon_PIXMA_iP8500_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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; 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 },*/ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photopaper Plus Double Sided"), 0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.900, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,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 }, - { "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 }, +static const canon_paper_t canon_PIXMA_iP9910_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x09,0x11,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different c,l from usual */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x09,0x0d,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different c,l from usual */ + { "FineArtOther", N_ ("Fine Art Other"), 0x09,0x0d,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* note: different c,l from usual */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; 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 }, +static const canon_paper_t canon_PIXMA_iP9910_limited_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x09,0x11,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* note: different c,l from usual */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x09,0x0d,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* note: different c,l from usual */ + { "FineArtOther", N_ ("Fine Art Other"), 0x09,0x0d,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* note: different c,l from usual */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,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 },*/ - { "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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /*PPsuper*/ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x0b,0x11,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /*PPGgold*/ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /*PPgloss*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /*PPpro*/ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x09,0x0d,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /*PPGpro*/ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x09,0x11,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /*PPGproPlat*/ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x20,0x1b,0x00,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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Canvas", N_ ("Canvas"), 0x19,0x1e,0x2d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x1b,0x29,0x00,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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtMuseumEtching",N_ ("Fine Art Museum Etching"), 0x14,0x19,0x31,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_Pro9000); /* PIXMA Pro9000 Mk.II */ static const canon_paper_t canon_PIXMA_Pro9000mk2_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*/ - { "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 },/*PP kinumecho*/ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGpro*/ - { "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 },*/ - { "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,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGgold*/ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPgloss*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PP kinumecho*/ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGpro*/ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGproPlat*/ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* 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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Canvas", N_ ("Canvas"), 0x19,0x1e,0x2d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x1b,0x29,0x00,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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtMuseumEtching",N_ ("Fine Art Museum Etching"), 0x14,0x19,0x31,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_Pro9000mk2); /* PIXMA Pro9500 */ static const canon_paper_t canon_PIXMA_Pro9500_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*/ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGpro*/ - { "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 },/* untested */ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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 },/* untested */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGgold*/ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGpro*/ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGproPlat*/ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* 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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Canvas", N_ ("Canvas"), 0x19,0x1e,0x2d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x1b,0x29,0x00,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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtMuseumEtching",N_ ("Fine Art Museum Etching"), 0x14,0x19,0x31,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_Pro9500); /* PIXMA Pro9500 Mk.II */ static const canon_paper_t canon_PIXMA_Pro9500mk2_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 },/*PPGproPlat*/ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "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 },/* untested */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGgold*/ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*PPGproPlat*/ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, /* 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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Canvas", N_ ("Canvas"), 0x19,0x1e,0x2d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x16,0x1b,0x29,0x00,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,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtMuseumEtching",N_ ("Fine Art Museum Etching"), 0x14,0x19,0x31,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_Pro9500mk2); static const canon_paper_t canon_SELPHY_DS700_papers[] = { - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09, 0x0d,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b, 0x11,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/*PPsuper*/ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a, 0x10,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05, 0x05,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d, 0x09,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, - { "Hagaki", N_ ("Hagaki"), 0x08, 0x09,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/*PPsuper*/ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, }; DECLARE_PAPERS(canon_SELPHY_DS700); static const canon_paper_t canon_SELPHY_DS810_papers[] = { - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09, 0x0d,0x1a,1.00, 1.00, 0.999, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b, 0x11,0x1d,1.00, 1.00, 0.999, 0, 0, 0 },/*PPsuper*/ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a, 0x10,0x1c,1.00, 1.00, 0.999, 0, 0, 0 }, - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05, 0x05,0x16,1.00, 1.00, 0.999, 0, 0, 0 }, - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d, 0x09,0x1b,1.00, 1.00, 0.999, 0, 0, 0 }, - { "Hagaki", N_ ("Hagaki"), 0x08, 0x09,0x07,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/*PPsuper*/ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, }; DECLARE_PAPERS(canon_SELPHY_DS810); static const canon_paper_t canon_PIXMA_mini320_papers[] = { - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09, 0x0d,0x1a,1.00, 1.00, 0.999, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b, 0x11,0x1d,1.00, 1.00, 0.999, 0, 0, 0 },/*PPsuper*/ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10, 0x15,0x25,1.00, 1.00, 0.999, 0, 0, 0 }, - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a, 0x10,0x1c,1.00, 1.00, 0.999, 0, 0, 0 }, - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05, 0x05,0x16,1.00, 1.00, 0.999, 0, 0, 0 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d, 0x23,0x32,1.00, 1.00, 0.999, 0, 0, 0 },/*PPGgold*/ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d, 0x09,0x1b,1.00, 1.00, 0.999, 0, 0, 0 }, - { "Hagaki", N_ ("Hagaki"), 0x08, 0x09,0x07,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/*PPsuper*/ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,1.00, 1.00, 0.999, 0, 0, 0 },/*PPGgold*/ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_mini320); static const canon_paper_t canon_MULTIPASS_MP150_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP150); static const canon_paper_t canon_MULTIPASS_MP190_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 },/* PPpro */ - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,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 }, - { "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 }, - { "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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPpro */ + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP190); static const canon_paper_t canon_MULTIPASS_MP360_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,1.00, 1.00, 0.900, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP360); /* MX300, MX310, MX700 */ static const canon_paper_t canon_MULTIPASS_MX300_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 */ - { "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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MX300); static const canon_paper_t canon_MULTIPASS_MX330_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "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 }, - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,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 }, - { "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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MX330); /* MX340 --- MX350 is the same */ static const canon_paper_t canon_MULTIPASS_MX340_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "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 }, - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MX340); /* MX360 --- MX410 is the same */ static const canon_paper_t canon_MULTIPASS_MX360_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 },/* PPGproPlat */ - { "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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MX360); static const canon_paper_t canon_MULTIPASS_MX420_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 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MX420); static const canon_paper_t canon_MULTIPASS_MX850_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 */ - { "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 }, - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Semi-gloss"), 0x0b,0x11,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho new !! */ - { "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 }, - { "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 }, - { "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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Semi-gloss"), 0x0b,0x11,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho new !! */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MX850); static const canon_paper_t canon_MULTIPASS_MX880_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 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ - { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_MULTIPASS_MX880); -static const canon_paper_t canon_MULTIPASS_MX7600_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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,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 }, - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,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 }, - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,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"), 0x13,0x18,0x29,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 }, +static const canon_paper_t canon_MULTIPASS_MX7600_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MX7600); -static const canon_paper_t canon_PIXMA_iX7000_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 }, - { "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 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,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 },/* all hagaki */ - { "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"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 }, - { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 }, +static const canon_paper_t canon_PIXMA_iX7000_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iX7000); static const canon_paper_t canon_MULTIPASS_MP240_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_MULTIPASS_MP240); static const canon_paper_t canon_MULTIPASS_MP250_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "ProPhotoHagakiP", N_ ("Hagaki P (Pro Photo)"), 0x1f,0x25,0x37,0.78, 0.25, 0.500, 0, 0, 0 },/* pro photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "ProPhotoHagakiP", N_ ("Hagaki P (Pro Photo)"), 0x1f,0x25,0x37,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* pro photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_MULTIPASS_MP250); static const canon_paper_t canon_MULTIPASS_MP280_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 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_MULTIPASS_MP280); static const canon_paper_t canon_MULTIPASS_MP470_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ - { "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 }, - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP470); static const canon_paper_t canon_MULTIPASS_MP480_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ }; DECLARE_PAPERS(canon_MULTIPASS_MP480); static const canon_paper_t canon_MULTIPASS_MP493_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,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 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "ProPhotoHagakiP", N_ ("Hagaki P (Pro Photo)"), 0x1f,0x25,0x37,0.78, 0.25, 0.500, 0, 0, 0 },/* Pro photo hagaki*/ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "ProPhotoHagakiP", N_ ("Hagaki P (Pro Photo)"), 0x1f,0x25,0x37,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Pro photo hagaki*/ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ }; DECLARE_PAPERS(canon_MULTIPASS_MP493); static const canon_paper_t canon_MULTIPASS_MP520_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ - { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0.78, 0.25, 0.500, 0, 0, 0 },/* PPpro*/ - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ - { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuper */ - { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuperDS */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPgloss */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PPmatte */ - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* PPother */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* HiRes */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjetHagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPpro*/ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuper */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPsuperDS */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPgloss */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPmatte */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPother */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* HiRes */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjetHagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ }; DECLARE_PAPERS(canon_MULTIPASS_MP520); static const canon_paper_t canon_PIXMA_iP1900_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 }, - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_PIXMA_iP1900); static const canon_paper_t canon_MULTIPASS_MP600_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "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 }, - { "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 }, - { "CD", N_ ("CD"), 0x00,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 },/*allow plain modes for now*/ - { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 }, - { "DiscOthers", N_ ("Printable Disc (others)"), 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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CD", N_ ("CD"), 0x00,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*allow plain modes for now*/ + { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (others)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP600); static const canon_paper_t canon_MULTIPASS_MP610_papers[] = { - { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,1.00, 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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ - { "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 }, - { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 }, - { "DiscOthers", N_ ("Printable Disc (others)"), 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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (others)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP610); static const canon_paper_t canon_MULTIPASS_MP630_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 }, - { "DiscOthers", N_ ("Printable Disc (others)"), 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 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (others)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_MULTIPASS_MP630); static const canon_paper_t canon_MULTIPASS_MP640_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "ProPhotoHagakiP", N_ ("Hagaki P (Pro Photo)"), 0x1f,0x25,0x37,0.78, 0.25, 0.500, 0, 0, 0 },/* pro photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 }, - { "DiscOthers", N_ ("Printable Disc (others)"), 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 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "ProPhotoHagakiP", N_ ("Hagaki P (Pro Photo)"), 0x1f,0x25,0x37,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* pro photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (others)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_MULTIPASS_MP640); static const canon_paper_t canon_MULTIPASS_MP700_papers[] = { /* no ESC (P for MP700/730 */ - { "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 },/* untested */ - { "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 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0.78, 0.25, 0.999, 0, 0, 0 }, - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 07 09 */ - { "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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photopaper Plus Double Sided"), 0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.999, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 07 09 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_MULTIPASS_MP700); static const canon_paper_t canon_MULTIPASS_MP710_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 },/* untested */ - { "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 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0.78, 0.25, 0.999, 0, 0, 0 },/* untested */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0d 09 */ - { "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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photopaper Plus Double Sided"), 0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.999, 0, 0, 0 },/* untested */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x07,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* different from expected 0d 09 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* untested */ }; DECLARE_PAPERS(canon_MULTIPASS_MP710); /* MP750/MP760/MP770/MP780/MP790 */ static const canon_paper_t canon_MULTIPASS_MP750_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 }, - { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0.78, 0.25, 0.999, 0, 0, 0 },/* untested */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* from Japanese models */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* from Japanese models */ - { "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 },/* from US models */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Professional Photo Paper"), 0x09,0x0d,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Glossy Photo Paper Plus"), 0x0b,0x11,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photopaper Plus Double Sided"), 0x10,0x15,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyFilm", N_ ("High Gloss Film"), 0x06,0x06,0x00,0x00,0.78, 0.25, 0.999, 0, 0, 0 },/* untested */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* from Japanese models */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* from Japanese models */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* from US models */ }; DECLARE_PAPERS(canon_MULTIPASS_MP750); static const canon_paper_t canon_PIXMA_iP2700_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 */ - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ - { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ - { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ - { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ - { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGpro */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGproPlat */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP kinumecho */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPG */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP matte */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hi res paper */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_PIXMA_iP2700); -static const canon_paper_t canon_PIXMA_iP3600_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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 }, - { "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 }, - { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0.78, 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 }, +static const canon_paper_t canon_PIXMA_iP3600_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP3600); static const canon_paper_t canon_PIXMA_iP4500_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 */ - { "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 }, - { "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 }, - { "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 }, - { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0.78, 0.25, 0.500, 0, 0, 0 }, - { "DiscOthers", N_ ("Printable Disc (others)"), 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 }, - { "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 }, + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (recommended)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (others)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP4500); -static const canon_paper_t canon_PIXMA_iP4600_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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 }, - { "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 }, - { "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 Transfer"), 0x03,0x03,0x12,0.78, 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 }, +static const canon_paper_t canon_PIXMA_iP4600_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP4600); -static const canon_paper_t canon_PIXMA_iP4700_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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "OtherPhotoHagakiO",N_ ("Hagaki O (Other Photo)"), 0x1f,0x25,0x37,0.78, 0.25, 0.500, 0, 0, 0 },/* Other photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,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 }, - { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0.78, 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 }, +static const canon_paper_t canon_PIXMA_iP4700_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "OtherPhotoHagakiO",N_ ("Hagaki O (Other Photo)"), 0x1f,0x25,0x37,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Other photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_PIXMA_iP4700); -static const canon_paper_t canon_MULTIPASS_MP950_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"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 }, - { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,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 }, - { "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 }, +static const canon_paper_t canon_MULTIPASS_MP950_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP950); -static const canon_paper_t canon_MULTIPASS_MP960_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,1.00, 1.00, 0.999, 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 }, - { "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 }, - { "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 }, - { "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 Transfer"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,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"), 0x13,0x18,0x29,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,1.00, 0.25, 0.500, 0, 0, 0 }, /* untested */ - { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 }, +static const canon_paper_t canon_MULTIPASS_MP960_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble",N_ ("Photo Paper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Transparency", N_ ("Transparencies"), 0x02,0x02,0x01,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, /* untested */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP960); -static const canon_paper_t canon_MULTIPASS_MP970_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,1.00, 1.00, 0.999, 0, 0, 0 }, - { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x25,0.78, 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 }, - { "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 }, - { "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 }, - { "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 Transfer"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 }, - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,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"), 0x13,0x18,0x29,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotopaperOther", N_ ("Other Coated Photo Paper"), 0x0f,0x14,0x24,0.78, 0.25, 0.500, 0, 0, 0 }, +static const canon_paper_t canon_MULTIPASS_MP970_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPro", N_ ("Photo Paper Pro"), 0x09,0x0d,0x1a,0x00,1.00, 1.00, 0.999, 0, 0, 0 }, + { "PhotopaperPlus", N_ ("Photo Paper Plus Glossy"), 0x0b,0x11,0x1d,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperPlusDouble", N_ ("Photopaper Plus Double Sided"),0x10,0x15,0x25,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Coated Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP970); -static const canon_paper_t canon_MULTIPASS_MP980_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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 }, - { "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"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 }, - { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,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 }, - { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0.78, 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 }, +static const canon_paper_t canon_MULTIPASS_MP980_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; DECLARE_PAPERS(canon_MULTIPASS_MP980); -static const canon_paper_t canon_MULTIPASS_MP990_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 }, - { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0.78, 0.25, 0.500, 0, 0, 0 }, - { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 Transfer"), 0x03,0x03,0x12,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"), 0x13,0x18,0x29,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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 }, - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "ProPhotoHagakiP", N_ ("Hagaki K (Pro Photo)"), 0x1f,0x25,0x37,0.78, 0.25, 0.500, 0, 0, 0 },/* Pro photo hagaki*/ - { "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 }, +static const canon_paper_t canon_MULTIPASS_MP990_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPro2", N_ ("Photo Paper Pro II"), 0x1f,0x25,0x34,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfer"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "ProPhotoHagakiP", N_ ("Hagaki K (Pro Photo)"), 0x1f,0x25,0x37,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Pro photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, }; 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 },/* 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 },/* 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 },/* unconfirmed: PP other */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 },/* plain */ + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: PPproLuster*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* glossy */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: Canon photo hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: hagaki */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: PP other */ }; DECLARE_PAPERS(canon_PIXMA_MG2400); /* new paper type from October 2012 */ static const canon_paper_t canon_PIXMA_MG3200_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 }, - { "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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPproLuster*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; 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*/ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,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 */ - { "PhotoProPlat", N_ ("Photo Paper Platinum"), 0x1e,0x24,0x33,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 }, - { "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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_PIXMA_MG5100); static const canon_paper_t canon_PIXMA_MG5200_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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "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 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_PIXMA_MG5200); /* new paper type from October 2012 */ static const canon_paper_t canon_PIXMA_MG5400_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 }, - { "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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "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 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPproLuster*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_PIXMA_MG5400); static const canon_paper_t canon_PIXMA_MG6100_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 }, - { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "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 },/* T-shirt */ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ - { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 }, - { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,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 },/* PP other */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; DECLARE_PAPERS(canon_PIXMA_MG6100); /* new paper type from October 2012 */ static const canon_paper_t canon_PIXMA_MG6300_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 }, - { "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 }, - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ - { "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 },/* T-shirt */ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ - { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 },/* Untested */ - { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,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 },/* PP other */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPproLuster*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05,0x05,0x16,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "CanonPhotoHagakiK",N_ ("Hagaki K (Canon Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Canon photo hagaki*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki*/ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Untested */ + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: PPproLuster*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: inkjet hagaki */ + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: Canon photo hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: hagaki */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unconfirmed: T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,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 */ - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Inkjet photo hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki */ - { "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 },/* T-shirt */ - { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ - { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0.78, 0.25, 0.500, 0, 0, 0 },/* Untested */ - { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,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 },/* PP other */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPproLuster */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Inkjet photo hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki */ + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "FineArtPhotoRag", N_ ("Fine Art Photo Rag"), 0x13,0x18,0x28,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Untested */ + { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; 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*/ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/*unsupported*/ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPproLuster */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: inkjet hagaki */ + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: Inkjet photo hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: hagaki */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported: T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,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 */ - { "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 },/* all hagaki */ - { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ - { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0.78, 0.25, 0.500, 0, 0, 0 },/* Inkjet photo hagaki */ - { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki */ - { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0.78, 0.25, 0.500, 0, 0, 0 },/* 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPproLuster */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* all hagaki */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* inkjet hagaki */ + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* Inkjet photo hagaki */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* hagaki */ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* T-shirt */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* env */ + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PP other */ }; 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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x09,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* note Esc (l different */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,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 */ + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki A (address side)"), 0x08,0x09,0x38,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x00,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x00,0.78, 0.25, 0.500, 0, 0, 0 },/* unsupported */ }; DECLARE_PAPERS(canon_MAXIFY_iB4000); +/* new papers from September 2015 */ +/* MG3600 does not use ESC (w command but MG5700, MG6800 do */ +static const canon_paper_t canon_PIXMA_MG3600_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x03,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGgold */ + { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x05,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x11,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x06,0.78, 0.25, 0.500, 0, 0, 0 }, + { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x0e,0.78, 0.25, 0.500, 0, 0, 0 },/* PPGstandard */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x0f,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x09,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagakiaddr", N_ ("Ink Jet Hagaki (A)"), 0x08,0x09,0x46,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* NEW Sep 2015 */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x0b,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkjetPhotoHagakiKaddr",N_ ("Hagaki K (Inkjet Photo) (A)"),0x08,0x09,0x47,0x26,0.78, 0.25, 0.500, 0, 0, 0 },/* NEW Sep 2015 */ + { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x0d,0.78, 0.25, 0.500, 0, 0, 0 }, + { "HagakiA", N_ ("Hagaki (A)"), 0x08,0x09,0x48,0x28,0.78, 0.25, 0.500, 0, 0, 0 },/* Renamed Sep 2015 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x0c,0.78, 0.25, 0.500, 0, 0, 0 }, + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x2a,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x12,0.78, 0.25, 0.500, 0, 0, 0 }, + { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x13,0.78, 0.25, 0.500, 0, 0, 0 }, +}; +DECLARE_PAPERS(canon_PIXMA_MG3600); + +/* media using only modes with (unsupported) H ink commented out */ +static const canon_paper_t canon_PIXMA_MG7700_papers[] = { + { "Plain", N_ ("Plain Paper"), 0x00,0x00,0x00,0x00,1.00, 0.25, 0.500, 0, 0, 0 }, + /* { "PhotoPlusGloss2", N_ ("Photo Paper Plus Glossy II"), 0x1d,0x23,0x32,0x03,0.78, 0.25, 0.500, 0, 0, 0 },*//* PPGgold */ + /* { "PhotoProPlat", N_ ("Photo Paper Pro Platinum"), 0x1e,0x24,0x33,0x05,0.78, 0.25, 0.500, 0, 0, 0 },*/ + /* { "PhotoProLuster", N_ ("Photo Paper Pro Luster"), 0x25,0x28,0x3f,0x11,0.78, 0.25, 0.500, 0, 0, 0 },*/ + /* { "PhotoProSemiGloss",N_ ("Photo Paper Plus Semi-gloss"), 0x1a,0x1f,0x2a,0x06,0.78, 0.25, 0.500, 0, 0, 0 },*/ + /* { "GlossyPaperStandard",N_ ("Photo Paper Glossy"), 0x05,0x05,0x44,0x0e,0.78, 0.25, 0.500, 0, 0, 0 },*//* PPGstandard */ + { "PhotopaperMatte", N_ ("Matte Photo Paper"), 0x0a,0x10,0x1c,0x0f,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Coated", N_ ("High Resolution Paper"), 0x07,0x07,0x10,0x09,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkJetHagakiaddr", N_ ("Ink Jet Hagaki (A)"), 0x08,0x09,0x46,0x24,0.78, 0.25, 0.500, 0, 0, 0 },/* NEW Sep 2015 */ + { "InkJetHagaki", N_ ("Ink Jet Hagaki"), 0x0d,0x09,0x1b,0x0b,0.78, 0.25, 0.500, 0, 0, 0 }, + { "InkjetPhotoHagakiKaddr",N_ ("Hagaki K (Inkjet Photo) (A)"),0x08,0x09,0x47,0x26,0.78, 0.25, 0.500, 0, 0, 0 },/* NEW Sep 2015 */ + /* { "InkjetPhotoHagakiK",N_ ("Hagaki K (Inkjet Photo)"), 0x05,0x05,0x36,0x0d,0.78, 0.25, 0.500, 0, 0, 0 },*/ + { "HagakiA", N_ ("Hagaki (A)"), 0x08,0x09,0x48,0x28,0.78, 0.25, 0.500, 0, 0, 0 },/* Renamed Sep 2015 */ + { "Hagaki", N_ ("Hagaki"), 0x08,0x09,0x07,0x0c,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscCompat", N_ ("Printable Disc (Compatible)"), 0x0c,0x12,0x1f,0x21,0.78, 0.25, 0.500, 0, 0, 0 }, + { "DiscOthers", N_ ("Printable Disc (Other)"), 0x0c,0x12,0x20,0x22,0.78, 0.25, 0.500, 0, 0, 0 }, + /* { "FineArtOther", N_ ("Fine Art Other"), 0x13,0x18,0x29,0x24,0.78, 0.25, 0.500, 0, 0, 0 },*/ + { "TShirt", N_ ("T-Shirt Transfers"), 0x03,0x03,0x12,0x2a,0.78, 0.25, 0.500, 0, 0, 0 }, + { "Envelope", N_ ("Envelope"), 0x08,0x08,0x08,0x12,0.78, 0.25, 0.500, 0, 0, 0 }, + /* { "PhotopaperOther", N_ ("Other Photo Paper"), 0x0f,0x14,0x24,0x13,0.78, 0.25, 0.500, 0, 0, 0 },*/ +}; +DECLARE_PAPERS(canon_PIXMA_MG7700); + #endif diff --git a/src/main/canon-modes.h b/src/main/canon-modes.h index 653cb43..bb9ed09 100644 --- a/src/main/canon-modes.h +++ b/src/main/canon-modes.h @@ -313,15 +313,15 @@ DECLARE_MODES(canon_BJC_i50,1); /* inkjetHagaki and Hagaki from 80i */ static const canon_mode_t canon_BJC_i80_modes[] = { - /* original modes */ - /* { 300, 300,CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, */ - /* { 600, 600,CANON_INK_CMYK,"600x600dpi",N_("600x600 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, */ - /* plain modes --- Env/Hagaki same */ + /* legacy modes, from before Windows printjobs fully analysed */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_CMYK,"300x300dpi_std2",N_("300x300 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* plain modes --- Env/Hagaki same */ { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_high2",N_("600x600 DPI HIGH"),INKSET(9_C4M4Y4K2c4m4y4plain),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_MP360,NULL,1.0,1.0,NULL,NULL,NULL,3},/* CMYKcmy */ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH MONO"),INKSET(9_C3M3Y2K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3},/* mono only---color untested*/ { 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}, - { 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}, + { 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}, /* 1bpp */ + { 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}, /* 1bpp */ /* photo modes */ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST Pro"),INKSET(9_C9M9Y9K2c9m9y9photo8),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4}, /* cmy */ { 600, 600,CANON_INK_CMY,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH"),INKSET(9_C9M9Y9K2c9m9y9photo8),8,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, /* cmy */ @@ -344,7 +344,7 @@ static const canon_mode_t canon_BJC_i80_modes[] = { { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_std3",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|CANON_INK_CMYK,"600x600dpi_draft3",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_BJC_i80,2); +DECLARE_MODES(canon_BJC_i80,4); /* not known what is format of sending of logical color data, just sequence of (z commands like some iP devices */ /* all modes use MP360 flag */ @@ -501,10 +501,10 @@ DECLARE_MODES(canon_BJC_i550,2); /* inkjetHagaki, Hagaki and CD from 560i */ static const canon_mode_t canon_BJC_i560_modes[] = { - /* original modes (2) */ - /* { 300, 300,CANON_INK_CMYK | CANON_INK_CcMmYyK,"300x300dpi",N_("300x300 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,3.5,1.0,NULL,NULL,NULL,2}, */ - /* { 600, 600,CANON_INK_CMYK | CANON_INK_CcMmYyK,"600x600dpi",N_("600x600 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,2}, */ - /* plain modes */ + /* legacy modes from before Windows printjobs fully analysed */ + { 600, 600,CANON_INK_CMYK | CANON_INK_CcMmYyK,"600x600dpi_high3",N_("600x600 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.8,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_CMYK | CANON_INK_CcMmYyK,"300x300dpi_std2",N_("300x300 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,3.5,1.0,NULL,NULL,NULL,2}, + /* plain modes */ { 600, 600,CANON_INK_CcMmYK|CANON_INK_K,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C4M4Y4K2c4m4plain),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(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, { 300, 300,CANON_INK_CMYK|CANON_INK_K,"300x300dpi_high",N_("300x300 DPI HIGH"),INKSET(4_C2M2Y2K2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},/*untested*/ @@ -532,7 +532,7 @@ static const canon_mode_t canon_BJC_i560_modes[] = { { 600, 600,CANON_INK_CcMmYK|CANON_INK_K,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(9_C4M4Y4K2c4m4plain),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, { 600, 600,CANON_INK_CMYK|CANON_INK_K,"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_BJC_i560,1); +DECLARE_MODES(canon_BJC_i560,3); /* inkjetHagaki, Hagaki and CD from 850i */ static const canon_mode_t canon_BJC_i850_modes[] = { @@ -628,129 +628,120 @@ DECLARE_MODES(canon_BJC_i900,1); /* inkjetHagaki, Hagaki and CD from 950i */ static const canon_mode_t canon_BJC_i950_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},/* 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_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,1); +DECLARE_MODES(canon_BJC_i950,2); /* inkjetHagaki, Hagaki and CD from 960i */ static const canon_mode_t canon_BJC_i960_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},/* 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_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,1); +DECLARE_MODES(canon_BJC_i960,2); /* inkjetHagaki and Hagaki from 990i */ static const canon_mode_t canon_BJC_i990_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},/* 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_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,1); +DECLARE_MODES(canon_BJC_i990,2); /* inkjetHagaki and Hagaki from 6100i */ static const canon_mode_t canon_BJC_i6100_modes[] = { @@ -784,34 +775,31 @@ DECLARE_MODES(canon_BJC_i6100,2); /* inkjetHagaki and Hagaki from 9100i */ static const canon_mode_t canon_BJC_i9100_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},/* 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_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}, }; @@ -819,34 +807,31 @@ DECLARE_MODES(canon_BJC_i9100,1); static const canon_mode_t canon_BJC_i9900_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},/* 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_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}, @@ -883,9 +868,9 @@ static const canon_mode_t canon_S200_modes[] = { DECLARE_MODES(canon_S200,2); static const canon_mode_t canon_BJC_S300_modes[] = { - /* original two modes */ - /*{ 300, 300,CANON_INK_CMYK | CANON_INK_CcMmYK,"300x300dpi",N_("300x300 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},*/ - /*{ 600, 600,CANON_INK_CMYK | CANON_INK_CcMmYK,"600x600dpi",N_("600x600 DPI"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2},*/ + /* legacy modes from before Windows printjobs fully analysed */ + { 600, 600,CANON_INK_CMYK | CANON_INK_CcMmYK,"600x600dpi_std4",N_("600x600 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_CMYK | CANON_INK_CcMmYK,"300x300dpi_std2",N_("300x300 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* plain modes */ { 600, 600,CANON_INK_CMYK|CANON_INK_K,"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_CMYK|CANON_INK_K,"600x600dpi_std2",N_("600x600 DPI MEDIUM"),INKSET(9_C3M3Y2K2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2},/* untested */ @@ -907,7 +892,7 @@ static const canon_mode_t canon_BJC_S300_modes[] = { { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_std3",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_CMYK|CANON_INK_K,"600x600dpi_draft3",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_BJC_S300,2); +DECLARE_MODES(canon_BJC_S300,4); static const canon_mode_t canon_BJC_S330_modes[] = { /* plain modes */ @@ -986,10 +971,11 @@ static const canon_mode_t canon_BJC_S520_modes[] = { DECLARE_MODES(canon_BJC_S520,2); static const canon_mode_t canon_BJC_S600_modes[] = { + /* legacy modes from before Windows printjobs fully analysed */ + { 1200,1200,CANON_INK_CMYK,"1200x1200dpi",N_("1200x1200 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_std2",N_("600x600 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_CMYK,"300x300dpi_std2",N_("300x300 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* 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 */ @@ -1015,7 +1001,7 @@ static const canon_mode_t canon_BJC_S600_modes[] = { { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),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_std3",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_BJC_S600,1); +DECLARE_MODES(canon_BJC_S600,4); static const canon_mode_t canon_BJC_S750_modes[] = { /* plain modes */ @@ -1043,97 +1029,92 @@ static const canon_mode_t canon_BJC_S750_modes[] = { DECLARE_MODES(canon_BJC_S750,1); static const canon_mode_t canon_BJC_S800_modes[] = { + /* legacy modes from before Windows printjobs fully analysed */ + { 1200,1200,CANON_INK_CMYK,"1200x1200dpi",N_("1200x1200 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_std3",N_("600x600 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 300, 300,CANON_INK_CMYK,"300x300dpi",N_("300x300 DPI (LEGACY)"),INKSET(6_C2M2Y2K2c2m2),8,0,NULL,1.0,1.0,NULL,NULL,NULL,2}, /* 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,1); +DECLARE_MODES(canon_BJC_S800,5); /* 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,1); +DECLARE_MODES(canon_BJC_S820,2); static const canon_mode_t canon_BJC_S900_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_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_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); @@ -1438,8 +1419,8 @@ static const canon_mode_t canon_PIXMA_iP4000_modes[] = { /* plain modes --- same for duplex */ /* NOTE: temporarily allowing plain modes for CD printing */ /* legacy modes were used before printer capabilites were improved to handle real mode from driver */ - { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_high2",N_("600x600 DPI HIGH (LEGACY)"),INKSET(4_C2M2Y2K2),16,MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},/* legacy */ - { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_std2",N_("600x600 DPI (LEGACY)"),INKSET(4_C2M2Y2K2),16,MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},/* legacy */ + { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_high4",N_("600x600 DPI HIGH (LEGACY)"),INKSET(4_C2M2Y2K2),16,MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,2},/* legacy */ + { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_std4",N_("600x600 DPI (LEGACY)"),INKSET(4_C2M2Y2K2),16,MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,1},/* legacy */ { 600, 600,CANON_INK_CMYK|CANON_INK_K,"600x600dpi_draft2",N_("600x600 DPI DRAFT (LEGACY)"),INKSET(4_C2M2Y2K2),16,MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,0},/* legacy */ /* actual printer modes --- same as for iP4100 */ { 600, 600,CANON_INK_CcMmYK|CANON_INK_K,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(9_C4M4Y4K2c4m4k4p),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_CD,NULL,1.0,1.0,NULL,NULL,NULL,3}, @@ -1695,7 +1676,7 @@ DECLARE_MODES(canon_PIXMA_iP6700,1); /* ------------------------------Start of MP series------------------------------ */ -/* MP5, MP10 */ +/* MP5, MP10, MPC190, MPC200 */ 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}, @@ -1754,6 +1735,34 @@ static const canon_mode_t canon_PIXMA_MP55_modes[] = { }; DECLARE_MODES(canon_PIXMA_MP55,2); +static const canon_mode_t canon_PIXMA_MPC400_modes[] = { + /* plain modes */ + { 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}, + { 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 (PPother, PPmatte are experimental) */ + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh3",N_("600x600 DPI PHOTO HIGHEST HiRes,Glossy,GlossyPhotoCard,Matte"),INKSET(9_C4M4Y4K2c4m4y4twobit),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4}, + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh2",N_("600x600 DPI PHOTO HIGH Pro,GlossyFilm"),INKSET(9_C2M2Y2K2c2m2y2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,4}, + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh",N_("600x600 DPI PHOTO HIGH HiRes,Glossy,GlossyPhotoCard,Matte,Other"),INKSET(9_C2M2Y2K2c2m2y2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo2",N_("600x600 DPI PHOTO Pro,GlossyFilm"),INKSET(9_C2M2Y2K2c2m2y2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo",N_("600x600 DPI PHOTO HiRes,Glossy,GlossyPhotoCard,Matte,Other"),INKSET(9_C2M2Y2K2c2m2y2),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,Matte"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* inkjet Hagaki: experimental as not included in overseas model drivers */ + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photohigh4",N_("600x600 DPI PHOTO HIGH inkjet Hagaki"),INKSET(9_C2M2Y2K2c2m2y2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_photo4",N_("600x600 DPI PHOTO inkjet Hagaki"),INKSET(9_C2M2Y2K2c2m2y2),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_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_ohp",N_("600x600 DPI Transparency"),INKSET(9_C3M3Y2K2_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,1}, + /* T-shirt */ + { 600, 600,CANON_INK_CcMmYyK,"600x600dpi_tshirt",N_("600x600 DPI T-SHIRT"),INKSET(9_C2M2Y2K2c2m2y2),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Env/Hagaki (Hagaki is experimental as not included in overseas model drivers) */ + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high2",N_("600x600 DPI HIGH Env/Hagaki"),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_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_MPC400,1); + 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 */ @@ -2665,36 +2674,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,0); +DECLARE_MODES(canon_MULTIPASS_MP900,1); static const canon_mode_t canon_PIXMA_iP2700_modes[] = { /* plain modes */ @@ -3384,89 +3393,89 @@ 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},*/ + /* 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},/* experimental */ + { 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},/* experimental */ { 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},/* experimental */ + { 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},/* experimental */ { 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},*/ + { 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_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},/* experimental */ + { 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},/* experimental */ + { 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},/* experimental */ { 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,0); +DECLARE_MODES(canon_PIXMA_Pro9000,1); /* 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,0); +DECLARE_MODES(canon_PIXMA_Pro9000mk2,1); /* 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 */ @@ -3479,16 +3488,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,0); +DECLARE_MODES(canon_PIXMA_Pro9500,1); /* 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 */ @@ -3500,46 +3509,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,0); +DECLARE_MODES(canon_PIXMA_Pro9500mk2,1); /* 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,0); +DECLARE_MODES(canon_PIXMA_iP7100,2); static const canon_mode_t canon_PIXMA_iP7200_modes[] = { /* plain - used for mono also. For duplex use CMYKk */ @@ -3589,101 +3598,101 @@ 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,0); +DECLARE_MODES(canon_PIXMA_iP8100,2); /* 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,0); +DECLARE_MODES(canon_PIXMA_iP8500,2); /* 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); +DECLARE_MODES(canon_PIXMA_iP8600,2); /* 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 */ @@ -3713,36 +3722,36 @@ DECLARE_MODES(canon_PIXMA_iP8700,1); /* 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,0); +DECLARE_MODES(canon_PIXMA_iP9910,2); static const canon_mode_t canon_PIXMA_MG2100_modes[] = { /* plain modes */ @@ -3818,7 +3827,7 @@ static const canon_mode_t canon_PIXMA_MG3100_modes[] = { { 600, 600,CANON_INK_CMY,"600x600dpi_high4",N_("600x600 DPI HIGH Env/Hagaki COLOR-ONLY"),INKSET(13_C3M3Y2K3off),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,3}, { 600, 600,CANON_INK_CMY,"600x600dpi_std4",N_("600x600 DPI STANDARD Env/Hagaki COLOR-ONLY"),INKSET(13_C3M3Y2K3off),8,MODE_FLAG_EXTENDED_T|MODE_FLAG_COLOR,NULL,1.0,1.0,NULL,NULL,NULL,2}, }; -DECLARE_MODES(canon_PIXMA_MG3100,1); +DECLARE_MODES(canon_PIXMA_MG3100,2); /* same as MG3100, but try to use inktypes to control use of inks in inkets */ static const canon_mode_t canon_PIXMA_MG3500_modes[] = { @@ -3835,7 +3844,23 @@ static const canon_mode_t canon_PIXMA_MG3500_modes[] = { { 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_PIXMA_MG3500,1); +DECLARE_MODES(canon_PIXMA_MG3500,2); + +static const canon_mode_t canon_PIXMA_MG3600_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_BLACK,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMY,"600x600dpi_high5",N_("600x600 DPI HIGH (color)"),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 (incl. inkjet Hagaki, inkjet Photo Hagaki) */ + { 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_PIXMA_MG3600,2); static const canon_mode_t canon_PIXMA_MG5100_modes[] = { /* plain modes --- duplex no mono */ @@ -3950,6 +3975,29 @@ static const canon_mode_t canon_PIXMA_MG5500_modes[] = { }; DECLARE_MODES(canon_PIXMA_MG5500,1); +static const canon_mode_t canon_PIXMA_MG5700_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 CMYKk */ + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH duplex"),INKSET(13_C6M6Y4K3k4on_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"),INKSET(13_C3M3Y2K3k3on_c),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* draft */ + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),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 (incl. Photo Hagaki)"),INKSET(13_C6M6Y4k4),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 (incl. Photo Hagaki)"),INKSET(13_C5M5Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* inkjet hagaki CMYk */ + { 600, 600,CANON_INK_CMYK,"600x600dpi_photohigh2",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_photo2",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}, + /* Env/(plain)Hagaki*/ + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_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_CMYKk,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(13_C3M3Y2K3k3on_c),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(13_C6M6Y4k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, +}; +DECLARE_MODES(canon_PIXMA_MG5700,1); + /* for this printer most photo modes have grey (H) ink. */ static const canon_mode_t canon_PIXMA_MG6100_modes[] = { /* plain modes --- duplex no mono CMYK */ @@ -4053,6 +4101,32 @@ static const canon_mode_t canon_PIXMA_MG6500_modes[] = { DECLARE_MODES(canon_PIXMA_MG6500,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_MG7700_modes[] = { + /* plain modes simplex */ + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(30_K3C6M6Y4k4off4bit),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_K3C3M3Y2k3off2bit),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* duplex CMYKk */ + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high2",N_("600x600 DPI HIGH duplex"),INKSET(30_K3C6M6Y4k4on4bit),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"),INKSET(30_K3C3M3Y2k3on2bit),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* plain draft (also duplex) */ + { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_draft",N_("600x600 DPI DRAFT"),INKSET(30_K2C2M2Y2),16,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 matte/HiRes/T-shirt"),INKSET(30_M8K8m4k4H8off4bit),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_M6K6m4k4H6off4bit),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_C5M5Y5k4),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_C5M5Y5k4),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(30_C5M5Y5k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_CMYK,"600x600dpi_photo4",N_("600x600 DPI Hagaki"),INKSET(30_C5M5Y5k4),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, + /* Env/(plain)Hagaki*/ + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_high3",N_("600x600 DPI HIGH Env/Hagaki"),INKSET(30_K3C3M3Y2k3on2bit),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,3}, + { 600, 600,CANON_INK_K|CANON_INK_CMYKk,"600x600dpi_std3",N_("600x600 DPI Env/Hagaki"),INKSET(30_K3C3M3Y2k3on2bit),16,MODE_FLAG_EXTENDED_T,NULL,1.0,1.0,NULL,NULL,NULL,2}, +}; +DECLARE_MODES(canon_PIXMA_MG7700,1); + +/* for this printer most photo modes have grey (H) ink. */ static const canon_mode_t canon_PIXMA_MG8100_modes[] = { /* plain modes --- duplex no mono CMYK */ { 600, 600,CANON_INK_K|CANON_INK_CMYK,"600x600dpi_high",N_("600x600 DPI HIGH"),INKSET(30_K2C6M6Y4k4),16,MODE_FLAG_EXTENDED_T|MODE_FLAG_NODUPLEX,NULL,1.0,1.0,NULL,NULL,NULL,3}, diff --git a/src/main/canon-printers.h b/src/main/canon-printers.h index 2447c29..fae13b9 100644 --- a/src/main/canon-printers.h +++ b/src/main/canon-printers.h @@ -636,7 +636,7 @@ static const canon_cap_t canon_model_capabilities[] = 618, 936, /* 8.58" x 13 " */ 11, 9, 10, 18, /* unconfirmed */ &canon_default_slotlist, - CANON_CAP_STD0 | CANON_CAP_cart,0, + CANON_CAP_STD0 | CANON_CAP_a | CANON_CAP_cart,0, 2,0, 0, /* Upper/Lower Cassette option */ NULL, @@ -1970,7 +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 */ + 1, /* Upper/Lower Cassette option */ control_cmd_PIXMA_MG5300, /* features Uses ESC (r only for CD media */ &canon_PIXMA_iP7200_modelist, &canon_PIXMA_MG5400_paperlist, @@ -2509,35 +2509,57 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, - { /* Canon PIXMA MP5 */ + { /* Canon PIXUS MP5, PIXUS MP10, SmartBase MPC190, SmartBase MPC200 */ + /* these printers declare themselves as USB mass storage devices + rather than printers, and require a special backend. Thus + they are not currently included in the supported printers */ "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_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder */ 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, + &canon_PIXMA_MP5_modelist, + &canon_PIXMA_MP5_paperlist, + &canon_PIXMA_MP5_modeuselist, NULL, NULL, NULL, NULL /* KYMC */ }, - { /* Canon PIXMA MP55 */ + { /* Canon PIXUS MP55 */ + /* Unknown if requires special backend or not, left in supported + printers as experimental */ "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_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder */ 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, + &canon_PIXMA_MP55_modelist, + &canon_PIXMA_MP55_paperlist, + &canon_PIXMA_MP55_modeuselist, + NULL, + NULL, + NULL, + NULL /* KYMC */ + }, + { /* Canon PIXMA MPC400, MPC600F */ + "PIXMA MPC400", 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: assumed */ + &canon_MULTIPASS_MP150_slotlist, /* these models only have an auto sheet feeder */ + CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_BORDERLESS,0, /* borderless not supported in Windows driver, adding experimentally */ + 2,0, /* ESC (l and (P command lengths */ + 0, /* Upper/Lower Cassette option */ + control_cmd_BJC_i6100, /* features */ + &canon_PIXMA_MPC400_modelist, + &canon_PIXMA_MPC400_paperlist, + &canon_PIXMA_MPC400_modeuselist, NULL, NULL, NULL, @@ -2917,6 +2939,24 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA MG3600 */ + /* no support for Esc (s and ESC (u commands yet for duplex */ + "PIXMA MG3600", 3, /*model, model_id*/ + INCH(17/2), 1917, /* max paper width and height */ /* unconfirmed */ + 10, 10, 9, 15, /*border_left, border_right, border_top, border_bottom */ + &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_MG3600_modelist, + &canon_PIXMA_MG3600_paperlist, /* Address side media added for inkjet and photo Hagaki, name of HagakiA changed to Hagaki (A) */ + &canon_PIXMA_MG3600_modeuselist, + NULL, + NULL, + NULL, + iP4500_channel_order + }, { /* Canon PIXMA MG5100 */ "PIXMA MG5100", 3, /*model, model_id*/ INCH(17/2), 1917, /* max paper width and height */ /* from linux driver v3.40 */ @@ -3020,6 +3060,24 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA MG5700 */ + /* no support for Esc (s and ESC (u commands yet for duplex */ + "PIXMA MG5700", 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_w|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_MG5700_modelist, + &canon_PIXMA_MG3600_paperlist, /* new media types September 2015 */ + &canon_PIXMA_MG5700_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 */ @@ -3044,7 +3102,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 */ + 0, /* Upper/Lower Cassette option */ control_cmd_PIXMA_MG5300, /* features */ &canon_PIXMA_MG6200_modelist, &canon_PIXMA_MG6100_paperlist, @@ -3122,6 +3180,23 @@ static const canon_cap_t canon_model_capabilities[] = NULL, iP4500_channel_order }, + { /* Canon PIXMA MG7700 */ + "PIXMA MG7700", 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_w|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_MG7700_modelist, + &canon_PIXMA_MG7700_paperlist, + &canon_PIXMA_MG7700_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 */ @@ -3402,7 +3477,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 */ + 1, /* Upper/Lower Cassette option */ control_cmd_PIXMA_MG5300, &canon_PIXMA_MX720_modelist, &canon_PIXMA_MG3200_paperlist, @@ -3487,7 +3562,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 */ + 1, /* Upper/Lower Cassette option */ control_cmd_PIXMA_MG5300, /* features Uses ESC (r only for CD media */ &canon_PIXMA_MX920_modelist, &canon_PIXMA_MG5400_paperlist, diff --git a/src/main/print-canon.c b/src/main/print-canon.c index f5d0714..0b13445 100644 --- a/src/main/print-canon.c +++ b/src/main/print-canon.c @@ -1,5 +1,5 @@ /* - * "$Id: print-canon.c,v 1.569 2015/05/26 16:33:07 gernot2270 Exp $" + * "$Id: print-canon.c,v 1.586 2015/10/01 15:22:29 gernot2270 Exp $" * * Print plug-in CANON BJL driver for the GIMP. * @@ -105,26 +105,26 @@ pack_pixels3_5(unsigned char* buf,int len) { int read_pos = 0; int write_pos = 0; - int shift = 7; + int shift = 4; while(read_pos < len) { - /* read 3pixels at 3 bit */ + /* read 3pixels at 4 bit */ unsigned short value = buf[read_pos] << 8; if(read_pos+1 < len) value += buf[read_pos + 1]; - if(shift) + if(shift) /*4,0*/ value >>= shift; /* write 8bit value representing the 12 bit pixel combination */ - buf[write_pos] = twelve2eight[value & 1023]; + buf[write_pos] = twelve2eight[value & 4095]; ++write_pos; if(shift == 0) { - shift = 7; + shift = 4; read_pos += 2; } else { - shift -= 1; + shift -= 4; ++read_pos; } } @@ -137,26 +137,26 @@ pack_pixels3_6(unsigned char* buf,int len) { int read_pos = 0; int write_pos = 0; - int shift = 7; + int shift = 4; while(read_pos < len) { - /* read 3pixels at 3 bit */ + /* read 3pixels at 4 bit */ unsigned short value = buf[read_pos] << 8; if(read_pos+1 < len) value += buf[read_pos + 1]; - if(shift) + if(shift) /*4,0*/ value >>= shift; /* write 8bit value representing the 12 bit pixel combination */ - buf[write_pos] = twelve2eight2[value & 1023]; + buf[write_pos] = twelve2eight2[value & 4095]; ++write_pos; if(shift == 0) { - shift = 7; + shift = 4; read_pos += 2; } else { - shift -= 1; + shift -= 4; ++read_pos; } } @@ -179,17 +179,18 @@ pack_pixels3_6(unsigned char* buf,int len) #define CANON_CAP_px 0x2000ul #define CANON_CAP_rr 0x4000ul #define CANON_CAP_I 0x8000ul -#define CANON_CAP_T 0x10000ul /* not sure of this yet! */ -#define CANON_CAP_P 0x20000ul -#define CANON_CAP_DUPLEX 0x40000ul -#define CANON_CAP_XML 0x80000ul /* not sure of this yet */ +#define CANON_CAP_T 0x10000ul /* cartridge selection for PIXMA printers with Black and Color carts */ +#define CANON_CAP_P 0x20000ul /* related to media type selection */ +#define CANON_CAP_DUPLEX 0x40000ul /* duplex printing */ +#define CANON_CAP_XML 0x80000ul /* use of XML at start and end of print data */ #define CANON_CAP_CARTRIDGE 0x100000ul /* not sure of this yet */ #define CANON_CAP_M 0x200000ul /* not sure of this yet */ #define CANON_CAP_S 0x400000ul /* not sure of this yet */ #define CANON_CAP_cart 0x800000ul /* BJC printers with Color, Black, Photo options */ -#define CANON_CAP_BORDERLESS 0x1000000ul /* borderless printing */ +#define CANON_CAP_BORDERLESS 0x1000000ul /* borderless (fullbleed) printing */ #define CANON_CAP_NOBLACK 0x2000000ul /* no Black cartridge selection */ #define CANON_CAP_v 0x4000000ul /* not sure of this yet */ +#define CANON_CAP_w 0x8000000ul /* related to media type selection */ #define CANON_CAP_STD0 (CANON_CAP_b|CANON_CAP_c|CANON_CAP_d|\ CANON_CAP_l|CANON_CAP_q|CANON_CAP_t) @@ -520,6 +521,7 @@ static const char* canon_families[] = { "PIXMA P", /* 13 */ "MAXIFY iB", /* 14 */ "MAXIFY MB", /* 15 */ + "PIXMA MPC", /* 16 */ }; /* canon model ids look like the following @@ -2605,7 +2607,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, MG6700, MG7100, MG7500 (only A4) */ + /* MG6300, MG6500, MG6700, MG7100, MG7500 (only A4), MG6900, MG7700 */ /* iP8700, iX6800 (A3 */ /* if (!strcmp(name,"A4")) return 0x58; */ /* FineArt A4 35mm border */ /* if (!strcmp(name,"Letter")) return 0x5a; */ /* FineArt Letter 35mm border */ @@ -2667,7 +2669,15 @@ static stp_parameter_list_t canon_list_parameters(const stp_vars_t *v) { stp_parameter_list_t *ret = stp_parameter_list_create(); + stp_parameter_list_t *tmp_list; + int i; + + /* Set up dithering */ + tmp_list = stp_dither_list_parameters(v); + stp_parameter_list_append(ret, tmp_list); + stp_parameter_list_destroy(tmp_list); + for (i = 0; i < the_parameter_count; i++) stp_parameter_list_add_param(ret, &(the_parameters[i])); for (i = 0; i < float_parameter_count; i++) @@ -2732,27 +2742,15 @@ canon_parameters(const stp_vars_t *v, const char *name, }else{ for (i = 0; i < papersizes; i++) { const stp_papersize_t *pt = stp_get_papersize_by_index(i); + if (pt->paper_size_type != PAPERSIZE_TYPE_STANDARD && + pt->paper_size_type != PAPERSIZE_TYPE_ENVELOPE) + continue; if (strlen(pt->name) > 0 && pt->width <= width_limit && pt->height <= height_limit){ stp_string_list_add_string(description->bounds.str, pt->name, gettext(pt->text)); } } - /* - { - for (i = 0; i < papersizes; i++) - { - const stp_papersize_t *pt = stp_get_papersize_by_index(i); - if (verify_papersize(v, pt)) - stp_string_list_add_string(description->bounds.str, - pt->name, gettext(pt->text)); - } - } - - - */ - - } description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; @@ -2761,9 +2759,9 @@ canon_parameters(const stp_vars_t *v, const char *name, { const char* input_slot = stp_get_string_parameter(v, "InputSlot"); description->bounds.str = stp_string_list_create(); - if (input_slot && !strcmp(input_slot,"CD") && + if ( (!input_slot || !strcmp(input_slot,"CD")) && (!stp_get_string_parameter(v, "PageSize") || - strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") != 0)) + strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") != 0) ) { stp_string_list_add_string (description->bounds.str, "None", _("Normal")); @@ -2781,9 +2779,9 @@ canon_parameters(const stp_vars_t *v, const char *name, description->bounds.dimension.lower = 16 * 10 * 72 / 254; description->bounds.dimension.upper = 43 * 10 * 72 / 254; description->deflt.dimension = 43 * 10 * 72 / 254; - if (input_slot && !strcmp(input_slot,"CD") && + if ( (!input_slot || !strcmp(input_slot,"CD")) && (!stp_get_string_parameter(v, "PageSize") || - strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") == 0)) + strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") == 0) ) description->is_active = 1; else description->is_active = 0; @@ -2794,9 +2792,9 @@ canon_parameters(const stp_vars_t *v, const char *name, description->bounds.dimension.lower = 65 * 10 * 72 / 254; description->bounds.dimension.upper = 120 * 10 * 72 / 254; description->deflt.dimension = 329; - if (input_slot && !strcmp(input_slot,"CD") && + if ( (!input_slot || !strcmp(input_slot,"CD")) && (!stp_get_string_parameter(v, "PageSize") || - strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") == 0)) + strcmp(stp_get_string_parameter(v, "PageSize"), "CDCustom") == 0) ) description->is_active = 1; else description->is_active = 0; @@ -2808,7 +2806,7 @@ canon_parameters(const stp_vars_t *v, const char *name, description->bounds.dimension.lower = -15; description->bounds.dimension.upper = 15; description->deflt.dimension = 0; - if (input_slot && !strcmp(input_slot,"CD")) + if (!input_slot || !strcmp(input_slot,"CD")) description->is_active = 1; else description->is_active = 0; @@ -2822,7 +2820,7 @@ canon_parameters(const stp_vars_t *v, const char *name, description->deflt.str = NULL; for(i=0;i<caps->modelist->count;i++){ #if 0 - if(!(input_slot && !strcmp(input_slot,"CD") && !(caps->modelist->modes[i].flags & MODE_FLAG_CD))) + if(!((!input_slot || !strcmp(input_slot,"CD")) && !(caps->modelist->modes[i].flags & MODE_FLAG_CD))) #endif stp_string_list_add_string(description->bounds.str, caps->modelist->modes[i].name, gettext(caps->modelist->modes[i].text)); @@ -2905,28 +2903,30 @@ canon_parameters(const stp_vars_t *v, const char *name, int count = caps->slotlist->count; description->bounds.str= stp_string_list_create(); description->deflt.str= canon_slot_list[0].name; - + for (i = 0; i < count; i ++) stp_string_list_add_string(description->bounds.str, - canon_slot_list[i].name, - gettext(canon_slot_list[i].text)); + 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->bounds.str= stp_string_list_create(); + description->is_active = 0; + if (caps->CassetteTray_Opts) { + const char* input_slot = stp_get_string_parameter(v, "InputSlot"); + stp_string_list_add_string + (description->bounds.str, "Default", _("Driver-Controlled")); + stp_string_list_add_string + (description->bounds.str, "Upper", _("Upper Tray/Cassette 1")); + stp_string_list_add_string + (description->bounds.str, "Lower", _("Lower Tray/Cassette 2")); description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; + if (!input_slot || !strcmp(input_slot,"Cassette")) + description->is_active = 1; } + } else if (strcmp(name, "PrintingMode") == 0) { int found_color, found_mono; @@ -4049,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 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")) ) + 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 MG7700")) || !(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 */ { @@ -4228,15 +4228,86 @@ static void canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) { unsigned char arg_ESCP_1, arg_ESCP_2, arg_ESCP_9; + + int width, length; + /* const char *media_size = stp_get_string_parameter(v, "PageSize"); + const stp_papersize_t *pt = NULL; */ + const char* input_slot = stp_get_string_parameter(v, "InputSlot"); + const char* input_tray = stp_get_string_parameter(v, "CassetteTray"); + /* const canon_cap_t * caps= canon_get_model_capabilities(v); */ + int print_cd = (input_slot && (!strcmp(input_slot, "CD"))); + int tray_upper = (input_tray && (!strcmp(input_tray, "Upper"))); + int tray_lower = (input_tray && (!strcmp(input_tray, "Lower"))); + int tray_user_select; + unsigned char user_ESCP_9; + if(!(init->caps->features & CANON_CAP_P)) return; + /* if (media_size) + pt = stp_get_papersize_by_name(media_size); */ + stp_default_media_size(v, &width, &length); + if (tray_upper || tray_lower) + tray_user_select=1; + else + tray_user_select=0; + if (tray_upper) + user_ESCP_9=0x01; + else if (tray_lower) + user_ESCP_9=0x02; + else + user_ESCP_9=0x00; /* fall-through setting, but this value is not used */ + 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")) || !(strcmp(init->caps->name,"PIXMA MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) ) { - arg_ESCP_9 = 0x02; + + /* Code for last argument in 9-byte ESC (P printers with and upper and lower tray included in the cassette input source + The intention appears to be to allow printing of photos and non-photo paper without needing to change trays. + Note, envelopes are printed from the lower tray. + + Upper tray specification from MG7700 user manual: + Min width: 3.5 inches / 89.0 mm (L size) + Min height: 5 inches / 127.0 mm (L size) + Max width: 7.87 inches / 200.0 mm (marked up to 5 inches) + Max height: 7.28 inches / 184.9 mm + + Lower tray specification: + Min width: 3.54 inches / 90.0 mm (takes business envelopes) + Min height: 7.29 inches / 185.0 mm + Max width: 8.5 inches / 215.9 mm + Max height: 14 inches / 355.6 mm + + Conditions: + Init: Upper tray + Media: + Hagaki, Photo media --> upper tray + Envelopes (argESCP_2 == 0x08) --> lower tray + Other --> lower tray + Size: Length: + < 7.29 inches (524 pt = 184.85 mm; 525 pt = 185.2 mm ) --> upper tray + >=7.29 inches (524 pt = 184.85 mm; 525 pt = 185.2 mm ) --> lower tray + + Printers with this capability: + Code 0xd for cassette (standard cassette code is 0x8) + + MG5400 + MG6300 + MG6500 + MG6700 + MG6900 - same as MG7700 + MG7500 + MG7700 + iP7200 + MX720 + 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 MG7700")) || !(strcmp(init->caps->name,"PIXMA MX720")) || !(strcmp(init->caps->name,"PIXMA MX920")) ) { + /* default: use upper tray of cassette with two trays, condition check later */ + arg_ESCP_9 = 0x01; } - 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")) ) { + 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 MG3600")) || !(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; } @@ -4284,7 +4355,7 @@ 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 MG6700")) || !(strcmp(init->caps->name,"PIXMA MG7500")) || !(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 MG7700")) || !(strcmp(init->caps->name,"PIXMA MX920")) ) { arg_ESCP_1 = 0x5b; arg_ESCP_9 = 0x00; } @@ -4355,7 +4426,9 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) /* MG6300: CD Tray J : 0x5b */ /* MG6500: CD Tray J : 0x5b */ /* MG6700: CD Tray J : 0x5b */ + /* MG6900: CD Tray J : 0x5b */ /* MG7500: CD Tray J : 0x5b */ + /* MG7700: CD Tray J : 0x5b */ /* MG8100: CD Tray G : 0x56 */ /* MG8200: CD Tray G : 0x56 */ /* pro9000:CD Tray E : 0x4c */ @@ -4471,33 +4544,67 @@ 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) - { - /* Hagaki media */ - case 0x07: arg_ESCP_9=0x01; break;; - case 0x14: arg_ESCP_9=0x01; break;; - case 0x1b: arg_ESCP_9=0x01; break;; - case 0x36: arg_ESCP_9=0x01; break;; - case 0x38: arg_ESCP_9=0x01; break;; - /* CD media */ - case 0x1f: arg_ESCP_9=0x00; break;; - case 0x20: arg_ESCP_9=0x00; break;; - /* other media */ - default: arg_ESCP_9=0x02; break;; + /* These printers use 0x02 (lower tray) usually and for envelopes, 0x01 (upper tray) with various Hagaki/Photo media, and 0x00 with CD media */ + 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 MG7700")) || !(strcmp(init->caps->name,"PIXMA MX720")) || !(strcmp(init->caps->name,"PIXMA MX920")) ) { + if (tray_user_select && !print_cd) + arg_ESCP_9=user_ESCP_9; + else { + switch(arg_ESCP_2) + { + /* Hagaki media */ + case 0x07: arg_ESCP_9=0x01; break;; + case 0x14: arg_ESCP_9=0x01; break;; /* not used with any of these models */ + case 0x1b: arg_ESCP_9=0x01; break;; + case 0x36: arg_ESCP_9=0x01; break;; + case 0x38: arg_ESCP_9=0x01; break;; + case 0x46: arg_ESCP_9=0x01; break;; + case 0x47: arg_ESCP_9=0x01; break;; + case 0x48: arg_ESCP_9=0x01; break;; + /* Photo media here */ + case 0x32: arg_ESCP_9=0x01; break;; + case 0x33: arg_ESCP_9=0x01; break;; + case 0x3f: arg_ESCP_9=0x01; break;; + case 0x2a: arg_ESCP_9=0x01; break;; + case 0x16: arg_ESCP_9=0x01; break;; + case 0x44: arg_ESCP_9=0x01; break;; /* MG6700, MG7500 only, instead of 0x16 */ + case 0x1c: arg_ESCP_9=0x01; break;; + case 0x24: arg_ESCP_9=0x01; break;; + /* Envelope media */ + case 0x08: arg_ESCP_9=0x02; break;; + /* CD media */ + case 0x1f: arg_ESCP_9=0x00; break;; + case 0x20: arg_ESCP_9=0x00; break;; + /* other media default to lower tray */ + default: arg_ESCP_9=0x02; break;; + } + + /* condition for length to use lower tray: 7.29 in equals 524-525 points */ + if ( (arg_ESCP_9 == 0x01) && ( length > 524 ) ) { + arg_ESCP_9=0x02; } + + /* even if user does not select correct CD media type, set appropriately */ + if (print_cd) + arg_ESCP_9=0x00; + } } /* 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 (tray_user_select && !print_cd) + arg_ESCP_9=user_ESCP_9; + else { + switch(arg_ESCP_2) + { + /* CD media */ + case 0x1f: arg_ESCP_9=0xff; break;; + case 0x20: arg_ESCP_9=0xff; break;; + } + + /* even if user does not select correct CD media type, set appropriately */ + if (print_cd) + arg_ESCP_9=0x00; + } } if ( init->caps->ESC_P_len == 9 ) /* support for new devices from October 2012. */ @@ -4537,6 +4644,21 @@ canon_init_setESC_P(const stp_vars_t *v, const canon_privdata_t *init) "ESC_P_len=%d!!\n",init->caps->ESC_P_len); } +#if 0 +/* ESC (s -- 0x73 -- used in some newer printers for duplex pages except last one -- */ +/* When capability available, used for non-tumble and tumble (unlike Esc (u which is non-tumble only) */ +static void +canon_init_setESC_s(const stp_vars_t *v, const canon_privdata_t *init) +{ + if (!(init->caps->features & CANON_CAP_DUPLEX)) + return; + if (!(init->caps->features & CANON_CAP_s)) + return; + + canon_cmd(v,ESC28,0x73, 1, 0x00); +} +#endif + /* ESC (S -- 0x53 -- unknown -- : Required by iP90/iP90v and iP100 printers. */ @@ -4607,7 +4729,6 @@ canon_init_setESC_S(const stp_vars_t *v, const canon_privdata_t *init) } - /* ESC (T -- 0x54 -- setCartridge -- : */ static void @@ -4873,7 +4994,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 MG2500")) || !(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")) || !(strcmp(init->caps->name,"PIXMA MG3600")) ) { /* if cmy there, add 0x60 to each --- all modes using cmy require it */ for(i=0;i<init->num_channels;i++){ @@ -4938,7 +5059,15 @@ canon_init_setMultiRaster(const stp_vars_t *v, const canon_privdata_t *init){ } } +/* ESC (u -- 0x75 -- even pages duplex for long side only -- */ +static void +canon_init_setESC_u(const stp_vars_t *v, const canon_privdata_t *init) +{ + if (!(init->caps->features & CANON_CAP_DUPLEX)) + return; + canon_cmd(v,ESC28,0x75, 1, 0x01); +} /* ESC (v -- 0x76 -- */ static void @@ -4950,12 +5079,27 @@ canon_init_setESC_v(const stp_vars_t *v, const canon_privdata_t *init) canon_cmd(v,ESC28,0x76, 1, 0x00); } +/* ESC (w -- 0x77 -- */ +static void +canon_init_setESC_w(const stp_vars_t *v, const canon_privdata_t *init) +{ + unsigned char arg_ESCw_1; + /* new September 2015, currently only 1 byte */ + if (!(init->caps->features & CANON_CAP_w)) + return; + + arg_ESCw_1 = (init->pt) ? init->pt->media_code_w: 0x00; + + canon_cmd(v,ESC28,0x77, 1, arg_ESCw_1); +} static void canon_init_printer(const stp_vars_t *v, canon_privdata_t *init) { unsigned int mytop; + int page_number = stp_get_int_parameter(v, "PageNumber"); + const char *duplex_mode =stp_get_string_parameter(v, "Duplex"); /* init printer */ if (init->is_first_page) { canon_init_resetPrinter(v,init); /* ESC [K */ @@ -4977,6 +5121,9 @@ canon_init_printer(const stp_vars_t *v, canon_privdata_t *init) canon_init_setTray(v,init); /* ESC (l */ canon_init_setX72(v,init); /* ESC (r */ canon_init_setESC_v(v,init); /* ESC (v */ + canon_init_setESC_w(v,init); /* ESC (w */ + if((page_number & 1) && duplex_mode && !strcmp(duplex_mode,"DuplexNoTumble")) + canon_init_setESC_u(v,init); /* ESC (u 0x1 */ canon_init_setMultiRaster(v,init); /* ESC (I (J (L */ /* some linefeeds */ diff --git a/src/main/print-escp2.c b/src/main/print-escp2.c index 2a5b03e..4619722 100644 --- a/src/main/print-escp2.c +++ b/src/main/print-escp2.c @@ -1,5 +1,5 @@ /* - * "$Id: print-escp2.c,v 1.442 2014/01/23 13:22:41 rlk Exp $" + * "$Id: print-escp2.c,v 1.444 2015/09/09 23:57:32 speachy Exp $" * * Print plug-in EPSON ESC/P2 driver for the GIMP. * @@ -1626,6 +1626,11 @@ verify_papersize(const stp_vars_t *v, const stp_papersize_t *pt) height_limit = escp2_max_paper_height(v); min_width_limit = escp2_min_paper_width(v); min_height_limit = escp2_min_paper_height(v); + + if (pt->paper_size_type != PAPERSIZE_TYPE_STANDARD && + pt->paper_size_type != PAPERSIZE_TYPE_ENVELOPE) + return 0; + if (strlen(pt->name) > 0 && (pt->paper_size_type != PAPERSIZE_TYPE_ENVELOPE || envelope_landscape || pt->height > pt->width) && @@ -1769,7 +1774,15 @@ static stp_parameter_list_t escp2_list_parameters(const stp_vars_t *v) { stp_parameter_list_t *ret = stp_parameter_list_create(); + stp_parameter_list_t *tmp_list; + int i; + + /* Set up dithering */ + tmp_list = stp_dither_list_parameters(v); + stp_parameter_list_append(ret, tmp_list); + stp_parameter_list_destroy(tmp_list); + for (i = 0; i < the_parameter_count; i++) stp_parameter_list_add_param(ret, &(the_parameters[i])); for (i = 0; i < float_parameter_count; i++) diff --git a/src/main/print-lexmark.c b/src/main/print-lexmark.c index 95b2881..d8d3dcd 100644 --- a/src/main/print-lexmark.c +++ b/src/main/print-lexmark.c @@ -1,6 +1,6 @@ /* - * "$Id: print-lexmark.c,v 1.163 2014/01/04 23:07:22 rlk Exp $" + * "$Id: print-lexmark.c,v 1.165 2015/09/09 23:57:32 speachy Exp $" * * Print plug-in Lexmark driver for the GIMP. * @@ -1128,7 +1128,15 @@ static stp_parameter_list_t lexmark_list_parameters(const stp_vars_t *v) { stp_parameter_list_t *ret = stp_parameter_list_create(); + stp_parameter_list_t *tmp_list; + int i; + + /* Set up dithering */ + tmp_list = stp_dither_list_parameters(v); + stp_parameter_list_append(ret, tmp_list); + stp_parameter_list_destroy(tmp_list); + for (i = 0; i < the_parameter_count; i++) stp_parameter_list_add_param(ret, &(the_parameters[i])); for (i = 0; i < float_parameter_count; i++) @@ -1204,6 +1212,11 @@ lexmark_parameters(const stp_vars_t *v, const char *name, for (i = 0; i < papersizes; i++) { const stp_papersize_t *pt = stp_get_papersize_by_index(i); + + if (pt->paper_size_type != PAPERSIZE_TYPE_STANDARD && + pt->paper_size_type != PAPERSIZE_TYPE_ENVELOPE) + continue; + if (strlen(pt->name) > 0 && pt->width <= width_limit && pt->height <= height_limit && (pt->height >= min_height_limit || pt->height == 0) && diff --git a/src/main/print-olympus.c b/src/main/print-olympus.c index 7499cda..1d1f653 100644 --- a/src/main/print-olympus.c +++ b/src/main/print-olympus.c @@ -1,5 +1,5 @@ /* - * "$Id: print-olympus.c,v 1.195 2015/06/26 02:47:11 rlk Exp $" + * "$Id: print-olympus.c,v 1.218 2015/09/13 14:26:01 speachy Exp $" * * Print plug-in DyeSub driver (formerly Olympus driver) for the GIMP. * @@ -42,11 +42,6 @@ #define inline __inline__ #endif -/* 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 @@ -60,6 +55,7 @@ #define DYESUB_FEATURE_16BPP 0x00000200 #define DYESUB_FEATURE_BIGENDIAN 0x00000400 #define DYESUB_FEATURE_RGBtoYCBCR 0x00000800 +#define DYESUB_FEATURE_DUPLEX 0x00001000 #define DYESUB_PORTRAIT 0 #define DYESUB_LANDSCAPE 1 @@ -144,7 +140,6 @@ typedef struct { size_t n_items; } dyesub_printsize_list_t; - typedef struct { const char *name; const char *text; @@ -167,6 +162,16 @@ typedef struct { size_t n_items; } dyesub_media_list_t; +typedef struct { + const char* name; + const char *text; +} dyesub_stringitem_t; + +typedef struct { + const dyesub_stringitem_t *item; + size_t n_items; +} dyesub_stringlist_t; + #define NPUTC_BUFSIZE (4096) typedef struct @@ -179,8 +184,11 @@ typedef struct const char* pagesize; const laminate_t* laminate; const dyesub_media_t* media; + const char* slot; int print_mode; int bpp; + const char* duplex_mode; + int page_number; char nputc_buf[NPUTC_BUFSIZE]; } dyesub_privdata_t; @@ -225,6 +233,7 @@ typedef struct /* printer specific parameters */ const char *adj_yellow; const laminate_list_t *laminate; const dyesub_media_list_t *media; + const dyesub_stringlist_t *uiconstraints; } dyesub_cap_t; @@ -272,8 +281,8 @@ LIST(dyesub_resolution_list_t, res_310dpi_list, dyesub_resolution_t, res_310dpi) static const dyesub_pagesize_t p10_page[] = { - { "w288h432", "4 x 6", 298, 430, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 4x6" */ - { "B7", "3.5 x 5", 266, 370, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 3.5x5" */ + { "w288h432", "4x6", 298, 430, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 4x6" */ + { "B7", "3.5x5", 266, 370, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 3.5x5" */ { "Custom", NULL, 298, 430, 28, 28, 48, 48, DYESUB_PORTRAIT}, }; @@ -384,7 +393,7 @@ LIST(dyesub_resolution_list_t, p300_res_list, dyesub_resolution_t, p300_res); static const dyesub_pagesize_t p300_page[] = { - { "A6", NULL, -1, -1, 28, 28, 48, 48, DYESUB_PORTRAIT}, + { "A6", "A6", -1, -1, 28, 28, 48, 48, DYESUB_PORTRAIT}, { "Custom", NULL, -1, -1, 28, 28, 48, 48, DYESUB_PORTRAIT}, }; @@ -480,7 +489,7 @@ LIST(dyesub_resolution_list_t, res_314dpi_list, dyesub_resolution_t, res_314dpi) static const dyesub_pagesize_t p400_page[] = { - { "A4", NULL, -1, -1, 22, 22, 54, 54, DYESUB_PORTRAIT}, + { "A4", "A4", -1, -1, 22, 22, 54, 54, DYESUB_PORTRAIT}, { "c8x10", "A5 wide", -1, -1, 58, 59, 84, 85, DYESUB_PORTRAIT}, { "C6", "2 Postcards (A4)", -1, -1, 9, 9, 9, 9, DYESUB_PORTRAIT}, { "Custom", NULL, -1, -1, 22, 22, 54, 54, DYESUB_PORTRAIT}, @@ -598,7 +607,7 @@ static const char p400_adj_yellow[] = /* Olympus P-440 series */ static const dyesub_pagesize_t p440_page[] = { - { "A4", NULL, -1, -1, 10, 9, 54, 54, DYESUB_PORTRAIT}, + { "A4", "A4", -1, -1, 10, 9, 54, 54, DYESUB_PORTRAIT}, { "c8x10", "A5 wide", -1, -1, 58, 59, 72, 72, DYESUB_PORTRAIT}, { "C6", "2 Postcards (A4)", -1, -1, 9, 9, 9, 9, DYESUB_PORTRAIT}, { "w255h581", "A6 wide", -1, -1, 25, 25, 25, 24, DYESUB_PORTRAIT}, @@ -693,8 +702,8 @@ static void p440_block_end_func(stp_vars_t *v) /* Olympus P-S100 */ static const dyesub_pagesize_t ps100_page[] = { - { "w288h432", "4 x 6", 296, 426, 0, 0, 0, 0, DYESUB_PORTRAIT},/* 4x6" */ - { "B7", "3.5 x 5", 264, 366, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 3.5x5" */ + { "w288h432", "4x6", 296, 426, 0, 0, 0, 0, DYESUB_PORTRAIT},/* 4x6" */ + { "B7", "3.5x5", 264, 366, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 3.5x5" */ { "Custom", NULL, 296, 426, 0, 0, 0, 0, DYESUB_PORTRAIT}, }; @@ -763,7 +772,6 @@ LIST(dyesub_resolution_list_t, res_300dpi_list, dyesub_resolution_t, res_300dpi) static const dyesub_pagesize_t cp10_page[] = { { "w155h244", "Card 54x86mm", 159, 250, 6, 6, 29, 29, DYESUB_PORTRAIT}, - { "Custom", NULL, -1, -1, 6, 6, 29, 29, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, cp10_page_list, dyesub_pagesize_t, cp10_page); @@ -771,7 +779,6 @@ LIST(dyesub_pagesize_list_t, cp10_page_list, dyesub_pagesize_t, cp10_page); static const dyesub_printsize_t cp10_printsize[] = { { "300x300", "w155h244", 662, 1040}, - { "300x300", "Custom", 662, 1040}, }; LIST(dyesub_printsize_list_t, cp10_printsize_list, dyesub_printsize_t, cp10_printsize); @@ -782,7 +789,6 @@ static const dyesub_pagesize_t cpx00_page[] = { "Postcard", "Postcard 100x148mm", 296, 434, 13, 13, 16, 19, DYESUB_PORTRAIT}, { "w253h337", "CP_L 89x119mm", 264, 350, 13, 13, 15, 15, DYESUB_PORTRAIT}, { "w155h244", "Card 54x86mm", 162, 250, 13, 13, 15, 15, DYESUB_LANDSCAPE}, - { "Custom", NULL, 296, 434, 13, 13, 16, 19, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, cpx00_page_list, dyesub_pagesize_t, cpx00_page); @@ -792,7 +798,6 @@ static const dyesub_printsize_t cpx00_printsize[] = { "300x300", "Postcard", 1232, 1808}, { "300x300", "w253h337", 1100, 1456}, { "300x300", "w155h244", 672, 1040}, - { "300x300", "Custom", 1232, 1808}, }; LIST(dyesub_printsize_list_t, cpx00_printsize_list, dyesub_printsize_t, cpx00_printsize); @@ -875,7 +880,6 @@ static const dyesub_pagesize_t cp220_page[] = { "w253h337", "CP_L 89x119mm", 264, 350, 13, 13, 15, 15, DYESUB_PORTRAIT}, { "w155h244", "Card 54x86mm", 162, 250, 13, 13, 15, 15, DYESUB_LANDSCAPE}, { "w283h566", "Wide 100x200mm", 296, 580, 13, 13, 20, 20, DYESUB_PORTRAIT}, - { "Custom", NULL, 296, 434, 13, 13, 16, 19, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, cp220_page_list, dyesub_pagesize_t, cp220_page); @@ -886,7 +890,6 @@ static const dyesub_printsize_t cp220_printsize[] = { "300x300", "w253h337", 1100, 1456}, { "300x300", "w155h244", 672, 1040}, { "300x300", "w283h566", 1232, 2416}, - { "300x300", "Custom", 1232, 1808}, }; LIST(dyesub_printsize_list_t, cp220_printsize_list, dyesub_printsize_t, cp220_printsize); @@ -1023,7 +1026,6 @@ static const dyesub_pagesize_t cp910_page[] = { "Postcard", "Postcard 100x148mm", PT(1248,300)+1, PT(1872,300)+1, 13, 13, 16, 19, DYESUB_PORTRAIT}, { "w253h337", "CP_L 89x119mm", PT(1104,300)+1, PT(1536,300)+1, 13, 13, 15, 15, DYESUB_PORTRAIT}, { "w155h244", "Card 54x86mm", PT(1088,300)+1, PT(668,300)+1, 13, 13, 15, 15, DYESUB_LANDSCAPE}, - { "Custom", NULL, PT(1248,300)+1, PT(1872,300)+1, 13, 13, 16, 19, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, cp910_page_list, dyesub_pagesize_t, cp910_page); @@ -1033,7 +1035,6 @@ static const dyesub_printsize_t cp910_printsize[] = { "300x300", "Postcard", 1248, 1872}, { "300x300", "w253h337", 1104, 1536}, { "300x300", "w155h244", 668, 1088}, - { "300x300", "Custom", 1248, 1872}, }; LIST(dyesub_printsize_list_t, cp910_printsize_list, dyesub_printsize_t, cp910_printsize); @@ -1267,7 +1268,6 @@ static const dyesub_pagesize_t updr100_page[] = { "B7", "3.5x5", 261, 369, 0, 0, 0, 0, DYESUB_LANDSCAPE}, { "w360h504", "5x7", 369, 514, 0, 0, 0, 0, DYESUB_PORTRAIT}, { "w432h576", "6x8", 442, 588, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "Custom", NULL, 298, 442, 0, 0, 0, 0, DYESUB_LANDSCAPE}, }; LIST(dyesub_pagesize_list_t, updr100_page_list, dyesub_pagesize_t, updr100_page); @@ -1278,7 +1278,6 @@ static const dyesub_printsize_t updr100_printsize[] = { "334x334", "B7", 1210, 1710}, { "334x334", "w360h504", 1710, 2380}, { "334x334", "w432h576", 2048, 2724}, - { "334x334", "Custom", 1382, 2048}, }; LIST(dyesub_printsize_list_t, updr100_printsize_list, dyesub_printsize_t, updr100_printsize); @@ -1590,9 +1589,9 @@ static void upcr10_printer_end_func(stp_vars_t *v) /* Fujifilm CX-400 */ static const dyesub_pagesize_t cx400_page[] = { - { "w288h432", NULL, 295, 428, 24, 24, 23, 22, DYESUB_PORTRAIT}, + { "w288h432", "4x6", 295, 428, 24, 24, 23, 22, DYESUB_PORTRAIT}, { "w288h387", "4x5 3/8", 295, 386, 24, 24, 23, 23, DYESUB_PORTRAIT}, - { "w288h504", NULL, 295, 513, 24, 24, 23, 22, DYESUB_PORTRAIT}, + { "w288h504", "4x7", 295, 513, 24, 24, 23, 22, DYESUB_PORTRAIT}, { "Custom", NULL, 295, 428, 0, 0, 0, 0, DYESUB_PORTRAIT}, }; @@ -1650,7 +1649,7 @@ LIST(dyesub_resolution_list_t, res_306dpi_list, dyesub_resolution_t, res_306dpi) static const dyesub_pagesize_t nx500_page[] = { - { "Postcard", NULL, -1, -1, 21, 21, 29, 29, DYESUB_PORTRAIT}, + { "Postcard", "Postcard", -1, -1, 21, 21, 29, 29, DYESUB_PORTRAIT}, { "Custom", NULL, -1, -1, 21, 21, 29, 29, DYESUB_PORTRAIT}, }; @@ -1682,7 +1681,7 @@ static void nx500_printer_init_func(stp_vars_t *v) /* Kodak Easyshare Dock family */ static const dyesub_pagesize_t kodak_dock_page[] = { - { "w288h432", NULL, PT(1248,300)+1, PT(1856,300)+1, 0, 0, 0, 0, + { "w288h432", "4x6", PT(1248,300)+1, PT(1856,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 4x6 */ { "Custom", NULL, PT(1248,300)+1, PT(1856,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 4x6 */ @@ -1719,8 +1718,6 @@ static const dyesub_pagesize_t kodak_6800_page[] = DYESUB_LANDSCAPE}, /* 4x6 */ { "w432h576", "6x8", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 6x8 */ - { "Custom", NULL, PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, - DYESUB_LANDSCAPE}, /* 4x6 */ }; LIST(dyesub_pagesize_list_t, kodak_6800_page_list, dyesub_pagesize_t, kodak_6800_page); @@ -1729,7 +1726,6 @@ static const dyesub_printsize_t kodak_6800_printsize[] = { { "300x300", "w288h432", 1240, 1844}, { "300x300", "w432h576", 1844, 2434}, - { "300x300", "Custom", 1240, 1844}, }; LIST(dyesub_printsize_list_t, kodak_6800_printsize_list, dyesub_printsize_t, kodak_6800_printsize); @@ -1742,19 +1738,6 @@ static const laminate_t kodak_6800_laminate[] = LIST(laminate_list_t, kodak_6800_laminate_list, laminate_t, kodak_6800_laminate); - -static void kodak_6800_printer_init(stp_vars_t *v) -{ - stp_zfwrite("\x03\x1b\x43\x48\x43\x0a\x00\x01\x00", 1, 9, v); - stp_putc(0x01, v); /* Number of copies */ - stp_put16_be(privdata.w_size, v); - stp_put16_be(privdata.h_size, v); - stp_putc(privdata.h_size == 1240 ? 0x00 : 0x06, v); /* XXX seen it on some 4x6 prints too! */ - stp_zfwrite((privdata.laminate->seq).data, 1, - (privdata.laminate->seq).bytes, v); - stp_putc(0x00, v); -} - /* Kodak 6850 */ static const dyesub_pagesize_t kodak_6850_page[] = { @@ -1764,8 +1747,6 @@ static const dyesub_pagesize_t kodak_6850_page[] = DYESUB_PORTRAIT}, /* 5x7 */ { "w432h576", "6x8", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 6x8 */ - { "Custom", NULL, PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, - DYESUB_LANDSCAPE}, /* 4x6 */ }; LIST(dyesub_pagesize_list_t, kodak_6850_page_list, dyesub_pagesize_t, kodak_6850_page); @@ -1775,19 +1756,26 @@ static const dyesub_printsize_t kodak_6850_printsize[] = { "300x300", "w288h432", 1240, 1844}, { "300x300", "w360h504", 1548, 2140}, { "300x300", "w432h576", 1844, 2434}, - { "300x300", "Custom", 1240, 1844}, }; LIST(dyesub_printsize_list_t, kodak_6850_printsize_list, dyesub_printsize_t, kodak_6850_printsize); -static void kodak_6850_printer_init(stp_vars_t *v) +static void kodak_68xx_printer_init(stp_vars_t *v) { - stp_zfwrite("\x03\x1b\x43\x48\x43\x0a\x00\x01\x00", 1, 9, v); - stp_putc(0x01, v); /* Number of copies */ + stp_zfwrite("\x03\x1b\x43\x48\x43\x0a\x00\x01", 1, 8, v); + stp_put16_be(0x01, v); /* Number of copies in BCD */ stp_put16_be(privdata.w_size, v); stp_put16_be(privdata.h_size, v); - stp_putc(privdata.h_size == 1240 ? 0x00 : - privdata.h_size == 1548 ? 0x07 : 0x06, v); + + if (!strcmp(privdata.pagesize,"w288h432")) + stp_putc(0x00, v); + else if (!strcmp(privdata.pagesize,"w432h576")) + stp_putc(0x06, v); + else if (!strcmp(privdata.pagesize,"w360h504")) + stp_putc(0x07, v); + else + stp_putc(0x00, v); /* Just in case */ + stp_zfwrite((privdata.laminate->seq).data, 1, (privdata.laminate->seq).bytes, v); stp_putc(0x00, v); @@ -1802,8 +1790,6 @@ static const dyesub_pagesize_t kodak_605_page[] = DYESUB_PORTRAIT}, /* 5x7 */ { "w432h576", "6x8", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 6x8 */ - { "Custom", NULL, PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, - DYESUB_LANDSCAPE}, /* 4x6 */ }; LIST(dyesub_pagesize_list_t, kodak_605_page_list, dyesub_pagesize_t, kodak_605_page); @@ -1813,7 +1799,6 @@ static const dyesub_printsize_t kodak_605_printsize[] = { "300x300", "w288h432", 1240, 1844}, { "300x300", "w360h504", 1500, 2100}, { "300x300", "w432h576", 1844, 2434}, - { "300x300", "Custom", 1240, 1844}, }; LIST(dyesub_printsize_list_t, kodak_605_printsize_list, dyesub_printsize_t, kodak_605_printsize); @@ -1825,14 +1810,13 @@ static void kodak_605_printer_init(stp_vars_t *v) stp_putc(0x00, v); stp_put16_le(privdata.w_size, v); stp_put16_le(privdata.h_size, v); - if (privdata.h_size == 1240) + + if (!strcmp(privdata.pagesize,"w288h432")) stp_putc(0x01, v); - else if (privdata.h_size == 2100) - stp_putc(0x02, v); - else if (privdata.h_size == 2434) + else if (!strcmp(privdata.pagesize,"w432h576")) stp_putc(0x03, v); - else if (privdata.h_size == 2490) - stp_putc(0x04, v); + else if (!strcmp(privdata.pagesize,"w360h504")) + stp_putc(0x02, v); else stp_putc(0x01, v); @@ -1869,10 +1853,9 @@ static const dyesub_pagesize_t kodak_1400_page[] = The printer can technically print a little wider but these dimensions are defined by the lamination area, which is fixed. */ - { "w612h864", "8.5 x 12", PT(2560,301)+1, PT(3010,301)+72*2, PT(76,301)+1, PT(76,301), 72, 72, DYESUB_PORTRAIT}, /* 8x12 */ - { "Legal", "8.5 x 14", PT(2560,301)+1, PT(3612,301)+72*2, PT(35,301)+1, PT(35,301)+1, 72, 72, DYESUB_PORTRAIT}, /* 8x14 */ + { "w612h864", "8.5x12", PT(2560,301)+1, PT(3010,301)+72*2, PT(76,301)+1, PT(76,301), 72, 72, DYESUB_PORTRAIT}, /* 8x12 */ + { "Legal", "8.5x14", PT(2560,301)+1, PT(3612,301)+72*2, PT(35,301)+1, PT(35,301)+1, 72, 72, DYESUB_PORTRAIT}, /* 8x14 */ { "A4", "A4", PT(2560,301)+1, PT(3010,301)+72*2, PT(76,301)+1, PT(76,301), 0, 0, DYESUB_PORTRAIT}, /* A4, indentical to 8x12 */ - { "Custom", NULL, PT(2560,301)+1, PT(3010,301)+72*2, PT(76,301)+1, PT(76,301), 72, 72, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, kodak_1400_page_list, dyesub_pagesize_t, kodak_1400_page); @@ -1899,7 +1882,6 @@ static const dyesub_printsize_t kodak_1400_printsize[] = { "301x301", "w612h864", 2560, 3010}, { "301x301", "Legal", 2560, 3612}, { "301x301", "A4", 2560, 3010}, - { "301x301", "Custom", 2560, 3010}, }; LIST(dyesub_printsize_list_t, kodak_1400_printsize_list, dyesub_printsize_t, kodak_1400_printsize); @@ -1926,9 +1908,8 @@ static const dyesub_pagesize_t kodak_805_page[] = { /* Identical to the Kodak 1400 except for the lack of A4 support. See the 1400 comments for explanations of this. */ - { "w612h864", "8.5 x 12", PT(2560,301)+1, PT(3010,301)+72*2, PT(76,301)+1, PT(76,301), 72, 72, DYESUB_PORTRAIT}, /* 8x12 */ - { "Legal", "8.5 x 14", PT(2560,301)+1, PT(3612,301)+72*2, PT(35,301)+1, PT(35,301)+1, 72, 72, DYESUB_PORTRAIT}, /* 8x14 */ - { "Custom", NULL, PT(2560,301)+1, PT(3010,301)+72*2, PT(76,301)+1, PT(76,301), 72, 72, DYESUB_PORTRAIT}, + { "w612h864", "8.5x12", PT(2560,301)+1, PT(3010,301)+72*2, PT(76,301)+1, PT(76,301), 72, 72, DYESUB_PORTRAIT}, /* 8x12 */ + { "Legal", "8.5x14", PT(2560,301)+1, PT(3612,301)+72*2, PT(35,301)+1, PT(35,301)+1, 72, 72, DYESUB_PORTRAIT}, /* 8x14 */ }; LIST(dyesub_pagesize_list_t, kodak_805_page_list, dyesub_pagesize_t, kodak_805_page); @@ -1937,7 +1918,6 @@ static const dyesub_printsize_t kodak_805_printsize[] = { { "301x301", "w612h864", 2560, 3010}, { "301x301", "Legal", 2560, 3612}, - { "301x301", "Custom", 2560, 3010}, }; LIST(dyesub_printsize_list_t, kodak_805_printsize_list, dyesub_printsize_t, kodak_805_printsize); @@ -1963,7 +1943,6 @@ static const dyesub_pagesize_t kodak_9810_page[] = { { "c8x10", "8x10", PT(2464,300)+1, PT(3024,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, { "w576h864", "8x12", PT(2464,300)+1, PT(3624,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "Custom", NULL, PT(2464,300)+1, PT(3024,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, kodak_9810_page_list, dyesub_pagesize_t, kodak_9810_page); @@ -1971,7 +1950,6 @@ static const dyesub_printsize_t kodak_9810_printsize[] = { { "300x300", "c8x10", 2464, 3024}, { "300x300", "w576h864", 2464, 3624}, - { "300x300", "Custom", 2464, 3024}, }; LIST(dyesub_printsize_list_t, kodak_9810_printsize_list, dyesub_printsize_t, kodak_9810_printsize); @@ -2160,9 +2138,7 @@ 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 + { "A4", "203x297mm", PT(2464,300)+1, PT(3531,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, { "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); @@ -2171,9 +2147,7 @@ static const dyesub_printsize_t kodak_8810_printsize[] = { { "300x300", "w288h576", 1208, 2464}, { "300x300", "c8x10", 2464, 3024}, -#if 0 - { "300x300", "???", 2464, 3531}, -#endif + { "300x300", "A4", 2464, 3531}, { "300x300", "w576h864", 2464, 3624}, }; @@ -2183,6 +2157,7 @@ static const laminate_t kodak_8810_laminate[] = { {"Glossy", N_("Glossy"), {1, "\x03"}}, {"Satin", N_("Satin"), {1, "\x02"}}, + {"None", N_("None"), {1, "\x01"}}, }; LIST(laminate_list_t, kodak_8810_laminate_list, laminate_t, kodak_8810_laminate); @@ -2194,8 +2169,7 @@ static void kodak_8810_printer_init(stp_vars_t *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(0x01, v); /* Actually, # of copies */ stp_put16_le(privdata.w_size, v); stp_put16_le(privdata.h_size, v); stp_put16_le(privdata.w_size, v); @@ -2203,15 +2177,78 @@ static void kodak_8810_printer_init(stp_vars_t *v) dyesub_nputc(v, 0, 4); stp_zfwrite((privdata.laminate->seq).data, 1, (privdata.laminate->seq).bytes, v); - dyesub_nputc(v, 0, 2); + stp_putc(0x00, v); /* Method -- 00 is normal, 02 is x2, 03 is x3 */ + stp_putc(0x00, v); /* Reserved */ +} + +/* Kodak 7000/7010 */ +static const dyesub_pagesize_t kodak_7000_page[] = +{ + { "w288h432", "4x6", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, /* 4x6 */ + { "w432h576", "6x8", PT(1844,300)+1, PT(2434,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, /* 6x8 */ +}; + +LIST(dyesub_pagesize_list_t, kodak_7000_page_list, dyesub_pagesize_t, kodak_7000_page); + +static const dyesub_printsize_t kodak_7000_printsize[] = +{ + { "300x300", "w288h432", 1240, 1844}, + { "300x300", "w432h576", 1844, 2434}, +}; + +LIST(dyesub_printsize_list_t, kodak_7000_printsize_list, dyesub_printsize_t, kodak_7000_printsize); +static const laminate_t kodak_7000_laminate[] = +{ + {"Glossy", N_("Glossy"), {1, "\x02"}}, + {"Satin", N_("Satin"), {1, "\x03"}}, +}; + +LIST(laminate_list_t, kodak_7000_laminate_list, laminate_t, kodak_7000_laminate); + +static void kodak_70xx_printer_init(stp_vars_t *v) +{ + stp_zfwrite("\x01\x40\x0a\x00\x01", 1, 5, v); + stp_put16_le(0x01, v); /* Actually, # of copies */ + stp_put16_le(privdata.w_size, v); + stp_put16_le(privdata.h_size, v); + + if (!strcmp(privdata.pagesize,"w288h432")) + stp_putc(0x01, v); + else if (!strcmp(privdata.pagesize,"w432h576")) + stp_putc(0x03, v); + else if (!strcmp(privdata.pagesize,"w360h504")) + stp_putc(0x06, v); + else + stp_putc(0x01, v); + + stp_zfwrite((privdata.laminate->seq).data, 1, + (privdata.laminate->seq).bytes, v); + stp_putc(0x00, v); } +/* Kodak 7015/7015 */ +static const dyesub_pagesize_t kodak_7015_page[] = +{ + { "w360h504", "5x7", PT(1548,300)+1, PT(2140,300)+1, 0, 0, 0, 0, + DYESUB_PORTRAIT}, /* 5x7 */ +}; + +LIST(dyesub_pagesize_list_t, kodak_7015_page_list, dyesub_pagesize_t, kodak_7015_page); + +static const dyesub_printsize_t kodak_7015_printsize[] = +{ + { "300x300", "w360h504", 1548, 2140}, +}; + +LIST(dyesub_printsize_list_t, kodak_7015_printsize_list, dyesub_printsize_t, kodak_7015_printsize); + /* Kodak Professional 8500 */ static const dyesub_pagesize_t kodak_8500_page[] = { - { "w612h864", "8.5 x 12", PT(2508,314)+1, PT(3134,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 8.5x12 & A4 */ - { "Letter", "8.5 x 11", PT(2508,314)+1, PT(2954,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* Letter */ - { "Custom", NULL, PT(2508,314), PT(3134,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "w612h864", "8.5x12", PT(2508,314)+1, PT(3134,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* 8.5x12 & A4 */ + { "Letter", "8.5x11", PT(2508,314)+1, PT(2954,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* Letter */ }; LIST(dyesub_pagesize_list_t, kodak_8500_page_list, dyesub_pagesize_t, kodak_8500_page); @@ -2220,7 +2257,6 @@ static const dyesub_printsize_t kodak_8500_printsize[] = { { "314x314", "w612h864", 2508, 3134}, { "314x314", "Letter", 2508, 2954}, - { "314x314", "Custom", 2508, 3134}, }; LIST(dyesub_printsize_list_t, kodak_8500_printsize_list, dyesub_printsize_t, kodak_8500_printsize); @@ -2328,7 +2364,6 @@ static const dyesub_pagesize_t mitsu_cp3020d_page[] = { { "A4", "A4", PT(2508,314)+1, PT(3134,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* A4 */ { "Legal", "Letter Long", PT(2508,314)+1, PT(3762,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, /* Letter */ - { "Custom", NULL, PT(2508,314), PT(3134,314)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, mitsu_cp3020d_page_list, dyesub_pagesize_t, mitsu_cp3020d_page); @@ -2337,7 +2372,6 @@ static const dyesub_printsize_t mitsu_cp3020d_printsize[] = { { "314x314", "A4", 2508, 3134}, { "314x314", "Legal", 2508, 3762}, - { "314x314", "Custom", 2508, 3134}, }; LIST(dyesub_printsize_list_t, mitsu_cp3020d_printsize_list, dyesub_printsize_t, mitsu_cp3020d_printsize); @@ -2507,10 +2541,8 @@ 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 MULTICUT - { "2x6_x2", "2x6*2", PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0, - DYESUB_LANDSCAPE}, -#endif + { "w288h432-div2", "2x6*2", PT(1416,346)+1, PT(2152,346)+1, 0, 0, 0, 0, + DYESUB_LANDSCAPE}, { "w360h504", "5x7", PT(1812,346)+1, PT(2402,346)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, { "w432h576", "6x8", PT(2152,346)+1, PT(2792,346)+1, 0, 0, 0, 0, @@ -2527,9 +2559,7 @@ static const dyesub_printsize_t mitsu_cp9550_printsize[] = { { "346x346", "B7", 1240, 1812}, { "346x346", "w288h432", 1416, 2152}, -#ifdef MULTICUT - { "346x346", "2x6_x2", 1416, 2152}, -#endif + { "346x346", "w288h432-div2", 1416, 2152}, { "346x346", "w360h504", 1812, 2402}, { "346x346", "w432h576", 2152, 2792}, { "346x346", "w432h612", 2152, 2956}, @@ -2566,7 +2596,7 @@ static void mitsu_cp9550_printer_init(stp_vars_t *v) dyesub_nputc(v, 0x00, 19); stp_putc(0x01, v); /* This is Copies on other models.. */ dyesub_nputc(v, 0x00, 2); - if (strcmp(privdata.pagesize,"2x6_x2") == 0) + if (strcmp(privdata.pagesize,"w288h432-div2") == 0) stp_putc(0x83, v); else stp_putc(0x00, v); @@ -2621,8 +2651,6 @@ static const dyesub_pagesize_t mitsu_cp9810_page[] = DYESUB_PORTRAIT}, { "w432h648", "6x9", PT(1868,300)+1, PT(2730,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "Custom", NULL, PT(1220,300)+1, PT(1868,300)+1, 0, 0, 0, 0, - DYESUB_LANDSCAPE}, }; LIST(dyesub_pagesize_list_t, mitsu_cp9810_page_list, dyesub_pagesize_t, mitsu_cp9810_page); @@ -2635,7 +2663,6 @@ static const dyesub_printsize_t mitsu_cp9810_printsize[] = { "300x300", "w432h576", 1868, 2442}, { "300x300", "w432h612", 1868, 2564}, { "300x300", "w432h648", 1868, 2730}, - { "300x300", "Custom", 1220, 1868}, }; LIST(dyesub_printsize_list_t, mitsu_cp9810_printsize_list, dyesub_printsize_t, mitsu_cp9810_printsize); @@ -2748,12 +2775,12 @@ 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 MULTICUT - { "2x6_x2", "4x6*2", PT(1228,300)+1, PT(1864,300)+1, 0, 0, 0, 0, + { "w288h432-div2", "2x6*2", PT(1228,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}, + { "w360h504-div2", "3.5x5*2", 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}, { "w432h576", "6x8", PT(1864,300)+1, PT(2422,300)+1, 0, 0, 0, 0, @@ -2762,10 +2789,8 @@ 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 MULTICUT - { "4x6_x2", "4x6*2", PT(1864,300)+1, PT(2730,300)+1, 0, 0, 0, 0, + { "w432h576-div2", "4x6*2", PT(1864,300)+1, PT(2730,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, -#endif }; LIST(dyesub_pagesize_list_t, mitsu_cpd70x_page_list, dyesub_pagesize_t, mitsu_cpd70x_page); @@ -2774,17 +2799,14 @@ static const dyesub_printsize_t mitsu_cpd70x_printsize[] = { { "300x300", "B7", 1076, 1568}, { "300x300", "w288h432", 1228, 1864}, -#ifdef MULTICUT - { "300x300", "2x6_x2", 1228, 1864}, -#endif + { "300x300", "w288h432-div2", 1228, 1864}, { "300x300", "w360h504", 1568, 2128}, + { "300x300", "w360h504-div2", 1568, 2128}, { "300x300", "w432h432", 1820, 1864}, { "300x300", "w432h576", 1864, 2422}, { "300x300", "w432h612", 1864, 2564}, { "300x300", "w432h648", 1864, 2730}, -#ifdef MULTICUT - { "300x300", "4x6_x2", 1864, 2730}, -#endif + { "300x300", "w432h576-div2", 1864, 2730}, }; LIST(dyesub_printsize_list_t, mitsu_cpd70x_printsize_list, dyesub_printsize_t, mitsu_cpd70x_printsize); @@ -2855,11 +2877,11 @@ static void mitsu_cpd70k60_printer_init(stp_vars_t *v, int is_k60, int is_305) stp_putc(0x00, v); } } else { - if (strcmp(privdata.pagesize,"4x6_x2") == 0) { + if (strcmp(privdata.pagesize,"w432h576-div2") == 0) { stp_putc(0x01, v); - } else if (strcmp(privdata.pagesize,"B7_x2") == 0) { + } else if (strcmp(privdata.pagesize,"w360h504-div2") == 0) { stp_putc(0x01, v); - } else if (strcmp(privdata.pagesize,"2x6_x2") == 0) { + } else if (strcmp(privdata.pagesize,"w288h432-div2") == 0) { stp_putc(0x05, v); } else { stp_putc(0x00, v); @@ -2945,24 +2967,18 @@ 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 MULTICUT - { "2x6_x2", "2x6*2", PT(1218,300)+1, PT(1864,300)+1, 0, 0, 0, 0, + { "w288h432-div2", "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 MULTICUT - { "B7_x2", "3.5x5*2", PT(1568,300)+1, PT(2190,300)+1, 0, 0, 0, 0, - DYESUB_PORTRAIT}, -#endif - { "w432h432", "6x6", PT(1864,300)+1, PT(1820,300)+1, 0, 0, 0, 0, + { "w360h504-div2", "3.5x5*2", PT(1568,300)+1, PT(2190,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "w432h432", "6x6", PT(1820,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}, -#ifdef MULTICUT - { "4x6_x2", "4x6*2", PT(1864,300)+1, PT(2454,300)+1, 0, 0, 0, 0, + { "w432h576-div2", "4x6*2", PT(1864,300)+1, PT(2454,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, -#endif }; LIST(dyesub_pagesize_list_t, mitsu_cpk60_page_list, dyesub_pagesize_t, mitsu_cpk60_page); @@ -2971,18 +2987,12 @@ static const dyesub_printsize_t mitsu_cpk60_printsize[] = { { "300x300", "B7", 1076, 1568}, { "300x300", "w288h432", 1218, 1864}, -#ifdef MULTICUT - { "300x300", "2x6_x2", 1218, 1864}, -#endif + { "300x300", "w288h432-div2", 1218, 1864}, { "300x300", "w360h504", 1568, 2128}, -#ifdef MULTICUT - { "B7_x2", "3.5x5*2", 1568, 2190}, -#endif - { "300x300", "w432h432", 1864, 1820}, + { "300x300", "w360h504-div2", 1568, 2190}, + { "300x300", "w432h432", 1820, 1864}, { "300x300", "w432h576", 1864, 2422}, -#ifdef MULTICUT - { "300x300", "4x6_x2", 1864, 2454}, -#endif + { "300x300", "w432h576-div2", 1864, 2454}, }; LIST(dyesub_printsize_list_t, mitsu_cpk60_printsize_list, dyesub_printsize_t, mitsu_cpk60_printsize); @@ -2996,10 +3006,8 @@ 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, + { "w288h432-div2", "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, @@ -3008,10 +3016,8 @@ static const dyesub_pagesize_t mitsu_cpd80_page[] = 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, + { "w432h576-div2", "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); @@ -3019,16 +3025,12 @@ LIST(dyesub_pagesize_list_t, mitsu_cpd80_page_list, dyesub_pagesize_t, mitsu_cpd static const dyesub_printsize_t mitsu_cpd80_printsize[] = { { "300x300", "w288h432", 1228, 1864}, -#ifdef MULTICUT - { "300x300", "2x6_x2", 1228, 1864}, -#endif + { "300x300", "w288h432-div2", 1228, 1864}, { "300x300", "w360h360", 1524, 1568}, { "300x300", "w360h504", 1568, 2128}, { "300x300", "w432h432", 1864, 1820}, { "300x300", "w432h576", 1864, 2422}, -#ifdef MULTICUT - { "300x300", "4x6_x2", 1864, 2730}, -#endif + { "300x300", "w432h576-div2", 1864, 2730}, }; LIST(dyesub_printsize_list_t, mitsu_cpd80_printsize_list, dyesub_printsize_t, mitsu_cpd80_printsize); @@ -3067,7 +3069,7 @@ static const dyesub_pagesize_t shinko_chcs9045_page[] = DYESUB_LANDSCAPE}, { "w360h504", "5x7", PT(1548,300)+1, PT(2140,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "w432h576", "6x9", PT(1844,300)+1, PT(2740,300)+1, 0, 0, 0, 0, + { "w432h648", "6x9", PT(1844,300)+1, PT(2740,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, { "w283h425", "Sticker paper", PT(1092,300)+1, PT(1726,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE}, @@ -3082,7 +3084,7 @@ static const dyesub_printsize_t shinko_chcs9045_printsize[] = { "300x300", "w288h432", 1240, 1844}, { "300x300", "B7", 1088, 1548}, { "300x300", "w360h504", 1548, 2140}, - { "300x300", "w432h576", 1844, 2740}, + { "300x300", "w432h648", 1844, 2740}, { "300x300", "w283h425", 1092, 1726}, { "300x300", "Custom", 1240, 1844}, }; @@ -3120,24 +3122,18 @@ 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 MULTICUT - { "2x6_x2", "2x6*2", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, + { "w288h432-div2", "2x6*2", PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, DYESUB_LANDSCAPE}, -#endif { "B7", "3.5x5", PT(1088,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}, { "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, + { "w432h576-div2", "4x6*2", PT(1844,300)+1, PT(2492,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, -#endif { "w432h648", "6x9", PT(1844,300)+1, PT(2740,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, - { "Custom", NULL, PT(1240,300)+1, PT(1844,300)+1, 0, 0, 0, 0, - DYESUB_LANDSCAPE}, }; LIST(dyesub_pagesize_list_t, shinko_chcs2145_page_list, dyesub_pagesize_t, shinko_chcs2145_page); @@ -3146,17 +3142,12 @@ static const dyesub_printsize_t shinko_chcs2145_printsize[] = { { "300x300", "w144h432", 634, 1844}, { "300x300", "w288h432", 1240, 1844}, -#ifdef MULTICUT - { "300x300", "2x6_x2", 1240, 1844}, -#endif + { "300x300", "w288h432-div2", 1240, 1844}, { "300x300", "B7", 1088, 1548}, { "300x300", "w360h504", 1548, 2140}, { "300x300", "w432h576", 1844, 2434}, -#ifdef MULTICUT - { "300x300", "4x6_x2", 1844, 2492}, -#endif + { "300x300", "w432h576-div2", 1844, 2492}, { "300x300", "w432h648", 1844, 2740}, - { "300x300", "Custom", 1240, 1844}, }; LIST(dyesub_printsize_list_t, shinko_chcs2145_printsize_list, dyesub_printsize_t, shinko_chcs2145_printsize); @@ -3180,7 +3171,7 @@ static void shinko_chcs2145_printer_init(stp_vars_t *v) if (strcmp(privdata.pagesize,"w288h432") == 0) media = '\0'; - else if (strcmp(privdata.pagesize,"2x6_x2") == 0) + else if (strcmp(privdata.pagesize,"w288h432-div2") == 0) media = '\0'; else if (strcmp(privdata.pagesize,"B7") == 0) media = '\1'; @@ -3190,7 +3181,7 @@ static void shinko_chcs2145_printer_init(stp_vars_t *v) media = '\6'; else if (strcmp(privdata.pagesize,"w432h648") == 0) media = '\5'; - else if (strcmp(privdata.pagesize,"4x6_x2") == 0) + else if (strcmp(privdata.pagesize,"w432h576-div2") == 0) media = '\5'; else if (strcmp(privdata.pagesize,"w144h432") == 0) media = '\7'; @@ -3205,9 +3196,9 @@ static void shinko_chcs2145_printer_init(stp_vars_t *v) stp_put32_le(media, v); /* Media Type */ stp_put32_le(0x00, v); - if (strcmp(privdata.pagesize,"4x6_x2") == 0) { + if (strcmp(privdata.pagesize,"w432h576-div2") == 0) { stp_put32_le(0x02, v); - } else if (strcmp(privdata.pagesize,"2x6_x2") == 0) { + } else if (strcmp(privdata.pagesize,"w288h432-div2") == 0) { stp_put32_le(0x04, v); } else { stp_put32_le(0x00, v); /* Print Method */ @@ -3256,19 +3247,13 @@ static const dyesub_pagesize_t shinko_chcs1245_page[] = { "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 + { "w576h576-div2", "8x4*2", PT(2446,300)+1, PT(2468,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, { "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 + { "c8x10-w576h432_w576h288", "8x6+8x4", PT(2446,300)+1, PT(3070,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "c8x10-div2", "8x5*2", PT(2446,300)+1, PT(3070,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, { "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 + { "w576h864-div2", "8x6*2", PT(2446,300)+1, PT(3672,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "w576h864-div3", "8x4*3", PT(2446,300)+1, PT(3707,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, shinko_chcs1245_page_list, dyesub_pagesize_t, shinko_chcs1245_page); @@ -3279,19 +3264,13 @@ static const dyesub_printsize_t shinko_chcs1245_printsize[] = { "300x300", "w360h576", 1530, 2446}, { "300x300", "w432h576", 1831, 2446}, { "300x300", "w576h576", 2436, 2446}, -#ifdef MULTICUT - { "300x300", "8x4_x2", 2446, 2468}, -#endif + { "300x300", "w576h576-div2", 2446, 2468}, { "300x300", "c8x10", 2446, 3036}, -#ifdef MULTICUT - { "300x300", "8x6_8x4", 2446, 3070}, - { "300x300", "8x5_x2", 2446, 3070}, -#endif + { "300x300", "c8x10-w576h432_w576h288", 2446, 3070}, + { "300x300", "c8x10-div2", 2446, 3070}, { "300x300", "w576h864", 2446, 3636}, -#ifdef MULTICUT - { "300x300", "8x6_x2", 2446, 3672}, - { "300x300", "8x4_x3", 2446, 3707}, -#endif + { "300x300", "w576h864-div2", 2446, 3672}, + { "300x300", "w576h864-div3", 2446, 3707}, }; LIST(dyesub_printsize_list_t, shinko_chcs1245_printsize_list, dyesub_printsize_t, shinko_chcs1245_printsize); @@ -3319,19 +3298,19 @@ static void shinko_chcs1245_printer_init(stp_vars_t *v) media = 6; else if (strcmp(privdata.pagesize,"w576h576") == 0) media = 9; - else if (strcmp(privdata.pagesize,"8x4_x2") == 0) + else if (strcmp(privdata.pagesize,"w576h576-div2") == 0) media = 2; else if (strcmp(privdata.pagesize,"c8x10") == 0) media = 0; - else if (strcmp(privdata.pagesize,"8x6_8x4") == 0) + else if (strcmp(privdata.pagesize,"c8x10-w576h432_w576h288") == 0) media = 3; - else if (strcmp(privdata.pagesize,"8x5_x2") == 0) + else if (strcmp(privdata.pagesize,"c8x10-div2") == 0) media = 1; else if (strcmp(privdata.pagesize,"w576h864") == 0) media = 0; - else if (strcmp(privdata.pagesize,"8x6_x2") == 0) + else if (strcmp(privdata.pagesize,"w576h864-div2") == 0) media = 7; - else if (strcmp(privdata.pagesize,"8x4_x3") == 0) + else if (strcmp(privdata.pagesize,"w576h864-div3") == 0) media = 8; stp_put32_le(0x10, v); @@ -3385,8 +3364,12 @@ static const dyesub_pagesize_t shinko_chcs6245_page[] = { "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}, + { "w576h576-div2", "8x4*2", PT(2464,300)+1, PT(2494,300)+1, 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, { "c8x10", "8x10", PT(2464,300)+1, PT(3036,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "c8x10-div2", "8x5*2", PT(2464,300)+1, PT(3094,300)+1, 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, { "w576h864", "8x12", PT(2464,300)+1, PT(3636,300)+1, 0, 0, 0, 0, DYESUB_PORTRAIT}, + { "w576h864-div2", "8x6*2", PT(2464,300)+1, PT(3694,300)+1, 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, + { "w576h864-div3", "8x4*3", PT(2464,300)+1, PT(3742,300)+1, 0, 0, PT(0,300), PT(0,300), DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, shinko_chcs6245_page_list, dyesub_pagesize_t, shinko_chcs6245_page); @@ -3397,8 +3380,12 @@ static const dyesub_printsize_t shinko_chcs6245_printsize[] = { "300x300", "w360h576", 1536, 2464}, { "300x300", "w432h576", 1836, 2464}, { "300x300", "w576h576", 2436, 2464}, + { "300x300", "w576h576-div2", 2464, 2494}, { "300x300", "c8x10", 2464, 3036}, + { "300x300", "c8x10-div2", 2464, 3094}, { "300x300", "w576h864", 2464, 3636}, + { "300x300", "w576h864-div2", 2464, 3694}, + { "300x300", "w576h864-div3", 2464, 3742}, }; LIST(dyesub_printsize_list_t, shinko_chcs6245_printsize_list, dyesub_printsize_t, shinko_chcs6245_printsize); @@ -3428,6 +3415,14 @@ static void shinko_chcs6245_printer_init(stp_vars_t *v) media = 0x10; else if (strcmp(privdata.pagesize,"w576h864") == 0) media = 0x11; + else if (strcmp(privdata.pagesize,"w576h576-div2") == 0) + media = 0x30; + else if (strcmp(privdata.pagesize,"c8x10-div2") == 0) + media = 0x31; + else if (strcmp(privdata.pagesize,"w576h864-div2") == 0) + media = 0x32; + else if (strcmp(privdata.pagesize,"w576h864-div3") == 0) + media = 0x40; stp_put32_le(0x10, v); stp_put32_le(6245, v); /* Printer Model */ @@ -3475,10 +3470,8 @@ static const dyesub_pagesize_t shinko_chcs6145_page[] = 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, + { "w288h432-div2", "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, @@ -3487,10 +3480,8 @@ static const dyesub_pagesize_t shinko_chcs6145_page[] = 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, + { "w432h576-w432h432_w432h144", "6x6+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); @@ -3499,16 +3490,12 @@ 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", "w288h432-div2", 1240, 1844}, { "300x300", "w360h360", 1536, 1548}, { "300x300", "w360h504", 1548, 2140}, { "300x300", "w432h432", 1832, 1844}, { "300x300", "w432h576", 1844, 2434}, -#ifdef MULTICUT - { "300x300", "4x6_2x6", 1844, 2434}, -#endif + { "300x300", "w432h576-w432h432_w432h144", 1844, 2434}, }; LIST(dyesub_printsize_list_t, shinko_chcs6145_printsize_list, dyesub_printsize_t, shinko_chcs6145_printsize); @@ -3528,7 +3515,7 @@ static void shinko_chcs6145_printer_init(stp_vars_t *v) if (strcmp(privdata.pagesize,"w288h432") == 0) media = 0x00; - else if (strcmp(privdata.pagesize,"2x6_x2") == 0) + else if (strcmp(privdata.pagesize,"w288h432-div2") == 0) media = 0x00; else if (strcmp(privdata.pagesize,"w360h360") == 0) media = 0x08; @@ -3540,9 +3527,7 @@ static void shinko_chcs6145_printer_init(stp_vars_t *v) 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) + else if (strcmp(privdata.pagesize,"w432h576-w432h432_w432h144") == 0) media = 0x06; stp_put32_le(0x10, v); @@ -3559,9 +3544,9 @@ static void shinko_chcs6145_printer_init(stp_vars_t *v) stp_put32_le(media, v); /* Media Type */ stp_put32_le(0x00, v); - if (strcmp(privdata.pagesize,"6x6_2x6") == 0) { + if (strcmp(privdata.pagesize,"w432h576-w432h432_w432h144") == 0) { stp_put32_le(0x05, v); - } else if (strcmp(privdata.pagesize,"2x6_x2") == 0) { + } else if (strcmp(privdata.pagesize,"w288h432-div2") == 0) { stp_put32_le(0x04, v); } else { stp_put32_le(0x00, v); @@ -3601,18 +3586,14 @@ static const dyesub_pagesize_t ciaat_brava21_page[] = 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, + { "w288h432-div2", "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, + { "w432h576-div2", "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); @@ -3621,14 +3602,10 @@ 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", "w288h432-div2", 1240, 1844}, { "300x300", "w360h504", 1548, 2140}, { "300x300", "w432h576", 1844, 2434}, -#ifdef MULTICUT - { "300x300", "4x6_x2", 1844, 2492}, -#endif + { "300x300", "w432h576-div2", 1844, 2492}, }; LIST(dyesub_printsize_list_t, ciaat_brava21_printsize_list, dyesub_printsize_t, ciaat_brava21_printsize); @@ -3648,7 +3625,7 @@ static void ciaat_brava21_printer_init(stp_vars_t *v) if (strcmp(privdata.pagesize,"w288h432") == 0) media = 0x00; - else if (strcmp(privdata.pagesize,"2x6_x2") == 0) + else if (strcmp(privdata.pagesize,"w288h432-div2") == 0) media = 0x00; else if (strcmp(privdata.pagesize,"w360h504") == 0) media = 0x03; @@ -3656,7 +3633,7 @@ static void ciaat_brava21_printer_init(stp_vars_t *v) media = 0x06; else if (strcmp(privdata.pagesize,"w144h432") == 0) media = 0x07; - else if (strcmp(privdata.pagesize,"w4x6_x2") == 0) + else if (strcmp(privdata.pagesize,"w432h576-div2") == 0) media = 0x06; stp_putc(0x01, v); @@ -3674,9 +3651,9 @@ static void ciaat_brava21_printer_init(stp_vars_t *v) dyesub_nputc(v, 0x00, 6); stp_putc(0x01, v); - if (strcmp(privdata.pagesize,"2x6_x2") == 0) + if (strcmp(privdata.pagesize,"w288h432-div2") == 0) media = 0x04; - else if (strcmp(privdata.pagesize,"4x6_x2") == 0) + else if (strcmp(privdata.pagesize,"w432h576-div2") == 0) media = 0x02; else media = 0x00; /* or 0x01 to turn off trimming */ @@ -3702,15 +3679,13 @@ static const dyesub_pagesize_t dnpds40_page[] = { { "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 MULTICUT - { "2x6_x2", "2x6*2", PT(1240,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, -#endif + { "w288h432-div2", "2x6*2", PT(1240,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, { "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 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}, + { "w360h504-div2", "3.5x5*2", PT(1920,300)+1, PT(2176,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576-div4", "2x6*4", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576-div2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h648", "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_page_list, dyesub_pagesize_t, dnpds40_page); @@ -3721,20 +3696,20 @@ static const dyesub_printsize_t dnpds40_printsize[] = { "300x600", "B7", 2176, 1920}, { "300x300", "w288h432", 1240, 1920}, { "300x600", "w288h432", 2480, 1920}, -#ifdef MULTICUT - { "300x300", "2x6_x2", 1240, 1920}, - { "300x600", "2x6_x2", 2480, 1920}, -#endif + { "300x300", "w288h432-div2", 1240, 1920}, + { "300x600", "w288h432-div2", 2480, 1920}, { "300x300", "w360h504", 1920, 2138}, { "300x600", "w360h504", 1920, 4276}, - { "300x300", "A5", 1920, 2436}, - { "300x600", "A5", 1920, 4872}, -#ifdef MULTICUT - { "300x300", "4x6_x2", 1920, 2498}, - { "300x600", "4x6_x2", 1920, 4996}, -#endif - { "300x300", "w432h576", 1920, 2740}, - { "300x600", "w432h576", 1920, 5480}, + { "300x300", "w360h504-div2", 1920, 2176}, + { "300x600", "w360h504-div2", 1920, 4352}, + { "300x300", "w432h576", 1920, 2436}, + { "300x600", "w432h576", 1920, 4872}, + { "300x300", "w432h576-div4", 1920, 2436}, + { "300x600", "w432h576-div4", 1920, 4872}, + { "300x300", "w432h576-div2", 1920, 2498}, + { "300x600", "w432h576-div2", 1920, 4996}, + { "300x300", "w432h648", 1920, 2740}, + { "300x600", "w432h648", 1920, 5480}, }; LIST(dyesub_printsize_list_t, dnpds40_printsize_list, dyesub_printsize_t, dnpds40_printsize); @@ -3766,7 +3741,9 @@ static void dnpds40_printer_start(stp_vars_t *v) /* Set cutter option to "normal" */ stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000"); - if (!strcmp(privdata.pagesize, "2x6_x2")) { + if (!strcmp(privdata.pagesize, "w288h432-div2")) { + stp_zprintf(v, "120"); + } else if (!strcmp(privdata.pagesize, "w432h576-div4")) { stp_zprintf(v, "120"); } else { stp_zprintf(v, "000"); @@ -3777,17 +3754,22 @@ static void dnpds40_printer_start(stp_vars_t *v) if (!strcmp(privdata.pagesize, "B7")) { stp_zprintf(v, "01"); - } else if (!strcmp(privdata.pagesize, "w288h432") || - !strcmp(privdata.pagesize, "2x6_x2")) { + } else if (!strcmp(privdata.pagesize, "w288h432")) { stp_zprintf(v, "02"); } else if (!strcmp(privdata.pagesize, "w360h504")) { stp_zprintf(v, "03"); - } else if (!strcmp(privdata.pagesize, "A5")) { - stp_zprintf(v, "04"); + } else if (!strcmp(privdata.pagesize, "w360h504-div2")) { + stp_zprintf(v, "22"); } else if (!strcmp(privdata.pagesize, "w432h576")) { + stp_zprintf(v, "04"); + } else if (!strcmp(privdata.pagesize, "w432h648")) { stp_zprintf(v, "05"); - } else if (!strcmp(privdata.pagesize, "4x6_x2")) { + } else if (!strcmp(privdata.pagesize, "w432h576-div2")) { stp_zprintf(v, "12"); + } else if (!strcmp(privdata.pagesize, "w288h432-div2")) { + stp_zprintf(v, "02"); + } else if (!strcmp(privdata.pagesize, "w432h576-div4")) { + stp_zprintf(v, "04"); } else { stp_zprintf(v, "00"); /* should be impossible. */ } @@ -3845,23 +3827,17 @@ static const dyesub_pagesize_t dnpds80_page[] = { "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 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 + { "w576h576-div2", "8x4*2", PT(2502,300)+1, PT(2560,300)+1, 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, + { "w576h648-w576h360_w576h288", "8x5+8x4", PT(2560,300)+1, PT(2802,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, { "c8x10", "8x10", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, -#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 + { "c8x10-div2", "8x5*2", PT(2560,300)+1, PT(3102,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "c8x10-w576h432_w576h288", "8x6+8x4", PT(2560,300)+1, PT(3102,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h792-w576h432_w576h360", "8x6+8x5", PT(2560,300)+1, PT(3402,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, { "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 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 + { "w576h864-div2", "8x6*2", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h864-w576h576_w576h288", "8x8+8x4", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h864-div3", "8x4*3", PT(2560,300)+1, PT(3768,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, dnpds80_page_list, dyesub_pagesize_t, dnpds80_page); @@ -3876,34 +3852,28 @@ static const dyesub_printsize_t dnpds80_printsize[] = { "300x600", "w432h576", 3672, 2560}, { "300x300", "w576h576", 2436, 2560}, { "300x600", "w576h576", 4872, 2560}, -#ifdef MULTICUT - { "300x300", "8x4_x2", 2502, 2560}, - { "300x600", "8x4_x2", 5004, 2560}, - { "300x300", "8x5_8x4", 2560, 2802}, - { "300x600", "8x5_8x4", 2560, 5604}, -#endif + { "300x300", "w576h576-div2", 2502, 2560}, + { "300x600", "w576h576-div2", 5004, 2560}, + { "300x300", "w576h648-w576h360_w576h288", 2560, 2802}, + { "300x600", "w576h648-w576h360_w576h288", 2560, 5604}, { "300x300", "c8x10", 2560, 3036}, { "300x600", "c8x10", 2560, 6072}, -#ifdef MULTICUT - { "300x300", "8x5_x2", 2560, 3102}, - { "300x600", "8x5_x2", 2560, 6204}, - { "300x300", "8x6_8x4", 2560, 3102}, - { "300x600", "8x6_8x4", 2560, 6204}, - { "300x300", "8x6_8x5", 2560, 3402}, - { "300x600", "8x6_8x5", 2560, 6804}, -#endif + { "300x300", "c8x10-div2", 2560, 3102}, + { "300x600", "c8x10-div2", 2560, 6204}, + { "300x300", "c8x10-w576h432_w576h288", 2560, 3102}, + { "300x600", "c8x10-w576h432_w576h288", 2560, 6204}, + { "300x300", "w576h792-w576h432_w576h360", 2560, 3402}, + { "300x600", "w576h792-w576h432_w576h360", 2560, 6804}, { "300x300", "A4", 2560, 3544}, { "300x600", "A4", 2560, 7088}, { "300x300", "w576h864", 2560, 3636}, { "300x600", "w576h864", 2560, 7272}, -#ifdef MULTICUT - { "300x300", "8x6_x2", 2560, 3702}, - { "300x600", "8x6_x2", 2560, 7404}, - { "300x300", "8x8_8x4", 2560, 3702}, - { "300x600", "8x8_8x4", 2560, 7404}, - { "300x300", "8x4_x3", 2560, 3768}, - { "300x600", "8x4_x3", 2560, 7536}, -#endif + { "300x300", "w576h864-div2", 2560, 3702}, + { "300x600", "w576h864-div2", 2560, 7404}, + { "300x300", "w576h864-w576h576_w576h288", 2560, 3702}, + { "300x600", "w576h864-w576h576_w576h288", 2560, 7404}, + { "300x300", "w576h864-div3", 2560, 3768}, + { "300x600", "w576h864-div3", 2560, 7536}, }; LIST(dyesub_printsize_list_t, dnpds80_printsize_list, dyesub_printsize_t, dnpds80_printsize); @@ -3931,21 +3901,21 @@ static void dnpds80_printer_start(stp_vars_t *v) stp_zprintf(v, "10"); } else if (!strcmp(privdata.pagesize, "w576h576")) { stp_zprintf(v, "11"); - } else if (!strcmp(privdata.pagesize, "8x4_x2")) { + } else if (!strcmp(privdata.pagesize, "w576h576-div2")) { stp_zprintf(v, "13"); - } else if (!strcmp(privdata.pagesize, "8x5_x2")) { + } else if (!strcmp(privdata.pagesize, "c8x10-div2")) { stp_zprintf(v, "14"); - } else if (!strcmp(privdata.pagesize, "8x6_x2")) { + } else if (!strcmp(privdata.pagesize, "w576h864-div2")) { stp_zprintf(v, "15"); - } else if (!strcmp(privdata.pagesize, "8x5_8x4")) { + } else if (!strcmp(privdata.pagesize, "w576h648-w576h360_w576h288")) { stp_zprintf(v, "16"); - } else if (!strcmp(privdata.pagesize, "8x6_8x4")) { + } else if (!strcmp(privdata.pagesize, "c8x10-w576h432_w576h288")) { stp_zprintf(v, "17"); - } else if (!strcmp(privdata.pagesize, "8x6_8x5")) { + } else if (!strcmp(privdata.pagesize, "w576h792-w576h432_w576h360")) { stp_zprintf(v, "18"); - } else if (!strcmp(privdata.pagesize, "8x8_8x4")) { + } else if (!strcmp(privdata.pagesize, "w576h864-w576h576_w576h288")) { stp_zprintf(v, "19"); - } else if (!strcmp(privdata.pagesize, "8x4_x3")) { + } else if (!strcmp(privdata.pagesize, "w576h864-div3")) { stp_zprintf(v, "20"); } else if (!strcmp(privdata.pagesize, "A4")) { stp_zprintf(v, "21"); @@ -3954,46 +3924,196 @@ static void dnpds80_printer_start(stp_vars_t *v) } } +/* Dai Nippon Printing DS80DX */ +static const dyesub_media_t dnpds80dx_medias[] = +{ + {"Roll", N_("Roll"), {0, ""}}, + {"Sheet", N_("Sheet"), {0, ""}}, +}; + +LIST(dyesub_media_list_t, dnpds80dx_media_list, dyesub_media_t, dnpds80dx_medias); + +/* This list is *not* translated */ +static const dyesub_stringitem_t dnpds80dx_uiconstraints[] = +{ + /* PPD generation handles constraint reciprocation */ + {"UIConstraints", "*Duplex *MediaType Roll"}, + {"UIConstraints", "*PageSize A4 *MediaType Sheet"}, + {"UIConstraints", "*PageSize w576h792-w576h432_w576h360 *MediaType Sheet"}, + {"UIConstraints", "*PageSize w576h648-w576h360_w576h288 *MediaType Sheet"}, + {"UIConstraints", "*PageSize c8x10-w576h432_w576h288 *MediaType Sheet"}, + {"UIConstraints", "*PageSize w576h864-w576h576_w576h288 *MediaType Sheet"}, + {"UIConstraints", "*PageSize w576h864-div3 *MediaType Sheet"}, + {"UIConstraints", "*PageSize w576h864-div3sheet *MediaType Roll"}, + {"UIConstraints", "*PageSize w576h774-w576h756 *MediaType Roll"}, + {"UIConstraints", "*PageSize w576h774 *MediaType Roll"}, +}; + +LIST(dyesub_stringlist_t, dnpds80dx_uiconstraints_list, dyesub_stringitem_t, dnpds80dx_uiconstraints); + +/* This is the same as the DS80, except with 10.5" and 10.75" sizes + only meant for sheet media. Duplex is *only* supported on sheet media. + + Also, 8x4*3 differs depending on if you're using sheet or roll media, + hence the almost-duplicated definition. + + See the constraints list for the illegal combinations +*/ + +static const dyesub_pagesize_t dnpds80dx_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}, + { "w576h576-div2", "8x4*2", PT(2502,300)+1, PT(2560,300)+1, 0, 0, PT(56,300), PT(56,300), DYESUB_LANDSCAPE}, + { "w576h648-w576h360_w576h288", "8x5+8x4", PT(2560,300)+1, PT(2802,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "c8x10", "8x10", PT(2560,300)+1, PT(3036,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "c8x10-div2", "8x5*2", PT(2560,300)+1, PT(3102,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "c8x10-w576h432_w576h288", "8x6+8x4", PT(2560,300)+1, PT(3102,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h774-w576h756", "8x10.5", PT(2560,300)+1, PT(3186,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h774", "8x10.75", PT(2560,300)+1, PT(3186,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h792-w576h432_w576h360", "8x6+8x5", PT(2560,300)+1, PT(3402,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "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}, + { "w576h864-div2", "8x6*2", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h864-w576h576_w576h288", "8x8+8x4", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h864-div3", "8x4*3", PT(2560,300)+1, PT(3768,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, + { "w576h864-div3sheet", "8x4*3 SHEET", PT(2560,300)+1, PT(3702,300)+1, PT(56,300), PT(56,300), 0, 0, DYESUB_PORTRAIT}, +}; + +LIST(dyesub_pagesize_list_t, dnpds80dx_page_list, dyesub_pagesize_t, dnpds80dx_page); + +static const dyesub_printsize_t dnpds80dx_printsize[] = +{ + { "300x300", "w288h576", 1236, 2560}, + { "300x600", "w288h576", 2472, 2560}, + { "300x300", "w360h576", 1536, 2560}, + { "300x600", "w360h576", 3072, 2560}, + { "300x300", "w432h576", 1836, 2560}, + { "300x600", "w432h576", 3672, 2560}, + { "300x300", "w576h576", 2436, 2560}, + { "300x600", "w576h576", 4872, 2560}, + { "300x300", "w576h576-div2", 2502, 2560}, + { "300x600", "w576h576-div2", 5004, 2560}, + { "300x300", "w576h648-w576h360_w576h288", 2560, 2802}, + { "300x600", "w576h648-w576h360_w576h288", 2560, 5604}, + { "300x300", "c8x10", 2560, 3036}, + { "300x600", "c8x10", 2560, 6072}, + { "300x300", "c8x10-div2", 2560, 3102}, + { "300x600", "c8x10-div2", 2560, 6204}, + { "300x300", "c8x10-w576h432_w576h288", 2560, 3102}, + { "300x600", "c8x10-w576h432_w576h288", 2560, 6204}, + { "300x300", "w576h774", 2560, 3186}, + { "300x600", "w576h774", 2560, 6372}, + { "300x300", "w576h774-w576h756", 2560, 3186}, + { "300x600", "w576h774-w576h756", 2560, 6372}, + { "300x300", "w576h792-w576h432_w576h360", 2560, 3402}, + { "300x600", "w576h792-w576h432_w576h360", 2560, 6804}, + { "300x300", "A4", 2560, 3544}, + { "300x600", "A4", 2560, 7088}, + { "300x300", "w576h864", 2560, 3636}, + { "300x600", "w576h864", 2560, 7272}, + { "300x300", "w576h864-div2", 2560, 3702}, + { "300x600", "w576h864-div2", 2560, 7404}, + { "300x300", "w576h864-w576h576_w576h288", 2560, 3702}, + { "300x600", "w576h864-w576h576_w576h288", 2560, 7404}, + { "300x300", "w576h864-div3", 2560, 3768}, + { "300x600", "w576h864-div3", 2560, 7536}, + { "300x300", "w576h864-div3sheet", 2560, 3702}, + { "300x600", "w576h864-div3sheet", 2560, 7404}, +}; + +LIST(dyesub_printsize_list_t, dnpds80dx_printsize_list, dyesub_printsize_t, dnpds80dx_printsize); + +static void dnpds80dx_printer_start(stp_vars_t *v) +{ + int multicut; + + /* If we're using roll media, act the same as a standard DS80 */ + if (!strcmp(privdata.media->name, "Roll")) + { + dnpds80_printer_start(v); + return; + } + + /* Common code */ + dnp_printer_start_common(v); + + /* Set cutter option to "normal" */ + stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000000"); + + if (!strcmp(privdata.pagesize, "c8x10")) { + multicut = 6; + } else if (!strcmp(privdata.pagesize, "w576h864")) { + multicut = 7; + } else if (!strcmp(privdata.pagesize, "w288h576")) { + multicut = 8; + } else if (!strcmp(privdata.pagesize, "w360h576")) { + multicut = 9; + } else if (!strcmp(privdata.pagesize, "w432h576")) { + multicut = 10; + } else if (!strcmp(privdata.pagesize, "w576h576")) { + multicut = 11; + } else if (!strcmp(privdata.pagesize, "w576h774-w576h756")) { + multicut = 25; + } else if (!strcmp(privdata.pagesize, "w576h774")) { + multicut = 26; + } else if (!strcmp(privdata.pagesize, "w576h576-div2")) { + multicut = 13; + } else if (!strcmp(privdata.pagesize, "c8x10-div2")) { + multicut = 14; + } else if (!strcmp(privdata.pagesize, "w576h864-div2")) { + multicut = 15; + } else if (!strcmp(privdata.pagesize, "w576h864-div3sheet")) { + multicut = 28; + } else { + multicut = 0; + } + + /* Add correct offset to multicut mode based on duplex state */ + if (!strcmp(privdata.duplex_mode, "None")) + multicut += 100; /* Simplex */ + else if (privdata.page_number & 1) + multicut += 300; /* Duplex, back */ + else + multicut += 200; /* Duplex, front */ + + stp_zprintf(v, "\033PIMAGE MULTICUT 00000008%08d", multicut); +} + /* 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_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 + { "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}, + { "w288h432-div2", "2x6*2", PT(1240,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, { "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 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 + { "w432h576", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576-div4", "2x6*4", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576-div2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, }; LIST(dyesub_pagesize_list_t, dnpsrx1_page_list, dyesub_pagesize_t, dnpsrx1_page); static const dyesub_printsize_t dnpsrx1_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", "B7", 1088, 1920}, + { "300x600", "B7", 2176, 1920}, + { "300x300", "w288h432", 1240, 1920}, + { "300x600", "w288h432", 2480, 1920}, + { "300x300", "w288h432-div2", 1240, 1920}, + { "300x600", "w288h432-div2", 2480, 1920}, { "300x300", "w360h504", 1920, 2138}, { "300x600", "w360h504", 1920, 4276}, - { "300x300", "A5", 1920, 2436}, - { "300x600", "A5", 1920, 4872}, -#ifdef MULTICUT - { "300x300", "2x6_x4", 1920, 2436}, - { "300x600", "2x6_x4", 1920, 4872}, - { "300x300", "4x6_x2", 1920, 2498}, - { "300x600", "4x6_x2", 1920, 4996}, -#endif + { "300x300", "w432h576", 1920, 2436}, + { "300x600", "w432h576", 1920, 4872}, + { "300x300", "w432h576-div4", 1920, 2436}, + { "300x600", "w432h576-div4", 1920, 4872}, + { "300x300", "w432h576-div2", 1920, 2498}, + { "300x600", "w432h576-div2", 1920, 4996}, }; LIST(dyesub_printsize_list_t, dnpsrx1_printsize_list, dyesub_printsize_t, dnpsrx1_printsize); @@ -4005,9 +4125,9 @@ static void dnpdsrx1_printer_start(stp_vars_t *v) /* Set cutter option to "normal" */ stp_zprintf(v, "\033PCNTRL CUTTER 0000000800000"); - if (!strcmp(privdata.pagesize, "2x6_x2")) { + if (!strcmp(privdata.pagesize, "w288h432-div2")) { stp_zprintf(v, "120"); - } else if (!strcmp(privdata.pagesize, "2x6_x4")) { + } else if (!strcmp(privdata.pagesize, "w432h576-div4")) { stp_zprintf(v, "120"); } else { stp_zprintf(v, "000"); @@ -4022,13 +4142,13 @@ static void dnpdsrx1_printer_start(stp_vars_t *v) stp_zprintf(v, "02"); } else if (!strcmp(privdata.pagesize, "w360h504")) { stp_zprintf(v, "03"); - } else if (!strcmp(privdata.pagesize, "A5")) { + } else if (!strcmp(privdata.pagesize, "w432h576")) { stp_zprintf(v, "04"); - } else if (!strcmp(privdata.pagesize, "4x6_x2")) { + } else if (!strcmp(privdata.pagesize, "w432h576-div2")) { stp_zprintf(v, "12"); - } else if (!strcmp(privdata.pagesize, "2x6_x2")) { + } else if (!strcmp(privdata.pagesize, "w288h432-div2")) { stp_zprintf(v, "02"); - } else if (!strcmp(privdata.pagesize, "2x6_x4")) { + } else if (!strcmp(privdata.pagesize, "w432h576-div4")) { stp_zprintf(v, "04"); } else { stp_zprintf(v, "00"); @@ -4040,70 +4160,54 @@ static void dnpdsrx1_printer_start(stp_vars_t *v) 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}, + { "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}, + { "w288h432-div2", "2x6*2", PT(1240,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, + { "w324h432", "4.5x6", PT(1386,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, + { "w360h360", "5x5", PT(1540,300)+1, PT(1920,300)+1, 0, 0, PT(186,300), PT(186,300), DYESUB_LANDSCAPE}, { "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 + { "w360h504-div2", "3.5x5*2", PT(1920,300)+1, PT(2176,300)+1, PT(186,300), PT(186,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h432", "6x6", PT(1836,300)+1, PT(1920,300)+1, 0, 0, PT(38,300), PT(38,300), DYESUB_LANDSCAPE}, + { "w432h576", "6x8", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576-w432h432_w432h144", "6x6+2x6", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576-div4", "2x6*4", PT(1920,300)+1, PT(2436,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h576-div2", "4x6*2", PT(1920,300)+1, PT(2498,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h648", "6x9", PT(1920,300)+1, PT(2740,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, + { "w432h648-div2", "4.5x6*2", PT(1920,300)+1, PT(2802,300)+1, PT(38,300), PT(38,300), 0, 0, DYESUB_PORTRAIT}, }; 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", "B7", 1088, 1920}, + { "300x600", "B7", 2176, 1920}, + { "300x300", "w288h432", 1240, 1920}, + { "300x600", "w288h432", 2480, 1920}, + { "300x300", "w288h432-div2", 1240, 1920}, + { "300x600", "w288h432-div2", 2480, 1920}, + { "300x300", "w324h432", 1386, 1920}, + { "300x600", "w324h432", 2772, 1920}, + { "300x300", "w360h360", 1540, 1920}, + { "300x600", "w360h360", 3080, 1920}, { "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 + { "300x300", "w360h504-div2", 1920, 2176}, + { "300x600", "w360h504-div2", 1920, 4352}, + { "300x300", "w432h432", 1836, 1920}, + { "300x600", "w432h432", 3672, 1920}, + { "300x300", "w432h576", 1920, 2436}, + { "300x600", "w432h576", 1920, 4872}, + { "300x300", "w432h576-div4", 1920, 2436}, + { "300x600", "w432h576-div4", 1920, 4872}, + { "300x300", "w432h576-w432h432_w432h144", 1920, 2436}, + { "300x600", "w432h576-w432h432_w432h144", 1920, 4872}, + { "300x300", "w432h576-div2", 1920, 2498}, + { "300x600", "w432h576-div2", 1920, 4996}, + { "300x300", "w432h648", 1920, 2740}, + { "300x600", "w432h648", 1920, 5480}, + { "300x300", "w432h648-div2", 1920, 2802}, + { "300x600", "w432h648-div2", 1920, 5604}, }; LIST(dyesub_printsize_list_t, dnpds620_printsize_list, dyesub_printsize_t, dnpds620_printsize); @@ -4114,49 +4218,50 @@ static void dnpds620_printer_start(stp_vars_t *v) dnp_printer_start_common(v); /* Multicut when 8x6 media is in use */ - if (!strcmp(privdata.pagesize, "A5") && + if (!strcmp(privdata.pagesize, "w432h576") && !strcmp(privdata.pagesize, "w432h648")) { - stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016"); + stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016"); stp_zprintf(v, "0000000000000000"); - } else if (!strcmp(privdata.pagesize, "2x6_x4")) { + } else if (!strcmp(privdata.pagesize, "w432h576-div4")) { stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016"); stp_zprintf(v, "0200200200200000"); - } else if (!strcmp(privdata.pagesize, "6x6_2x6")) { + } else if (!strcmp(privdata.pagesize, "w432h576-w432h432_w432h144")) { stp_zprintf(v, "\033PCNTRL FULL_CUTTER_SET 00000016"); - stp_zprintf(v, "0600200000000000"); - } else if (!strcmp(privdata.pagesize, "2x6_x2")) { + stp_zprintf(v, "0600200000000000"); + } else if (!strcmp(privdata.pagesize, "w288h432-div2")) { 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, "w288h432-div2")) { + 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, "w360h504-div2")) { + stp_zprintf(v, "22"); } 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")) { + } else if (!strcmp(privdata.pagesize, "w432h576-w432h432_w432h144")) { stp_zprintf(v, "04"); - } else if (!strcmp(privdata.pagesize, "2x6_x2")) { - stp_zprintf(v, "02"); - } else if (!strcmp(privdata.pagesize, "4x6_x2")) { + } else if (!strcmp(privdata.pagesize, "w432h576-div4")) { + stp_zprintf(v, "04"); + } else if (!strcmp(privdata.pagesize, "w432h576-div2")) { stp_zprintf(v, "12"); - } else if (!strcmp(privdata.pagesize, "w324h432_x2")) { + } else if (!strcmp(privdata.pagesize, "w432h648")) { + stp_zprintf(v, "05"); + } else if (!strcmp(privdata.pagesize, "w432h648-div2")) { stp_zprintf(v, "31"); } else { stp_zprintf(v, "00"); /* Should be impossible */ @@ -4179,8 +4284,8 @@ static const dyesub_pagesize_t citizen_cw01_page[] = { "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}, + { "w432h576", "6x8", PT(2048,334)+1, PT(2710,300)+1, PT(5,334), PT(5,334), 0, 0, DYESUB_PORTRAIT}, + { "w432h648", "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); @@ -4188,7 +4293,7 @@ LIST(dyesub_pagesize_list_t, citizen_cw01_page_list, dyesub_pagesize_t, citizen_ static const dyesub_printsize_t citizen_cw01_printsize[] = { { "334x334", "w252h338", 1210, 2048}, - { "334x600", "w252h388", 2176, 2048}, + { "334x600", "w252h338", 2176, 2048}, { "334x334", "B7", 1210, 2048}, { "334x600", "B7", 2176, 2048}, { "334x334", "w288h432", 1380, 2048}, @@ -4197,8 +4302,8 @@ static const dyesub_printsize_t citizen_cw01_printsize[] = { "334x600", "w338h504", 2048, 4276}, { "334x334", "w360h504", 2048, 2380}, { "334x600", "w360h504", 2048, 4276}, - { "334x334", "A5", 2048, 2710}, - { "334x600", "A5", 2048, 4870}, + { "334x334", "w432h576", 2048, 2710}, + { "334x600", "w432h576", 2048, 4870}, { "334x334", "w432h576", 2048, 3050}, { "334x600", "w432h576", 2048, 5480}, }; @@ -4219,7 +4324,7 @@ static void citizen_cw01_printer_start(stp_vars_t *v) media = 0x03; else if (strcmp(privdata.pagesize,"w360h504") == 0) media = 0x04; - else if (strcmp(privdata.pagesize,"A5") == 0) + else if (strcmp(privdata.pagesize,"w432h576") == 0) media = 0x05; else if (strcmp(privdata.pagesize,"w432h576") == 0) media = 0x06; @@ -4285,7 +4390,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, &p10_block_init_func, NULL, NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &p10_laminate_list, NULL, + &p10_laminate_list, NULL, NULL }, { /* Olympus P-200 */ 4, @@ -4300,7 +4405,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &p200_plane_init_func, NULL, NULL, NULL, p200_adj_any, p200_adj_any, p200_adj_any, - NULL, NULL, + NULL, NULL, NULL, }, { /* Olympus P-300 */ 0, @@ -4315,7 +4420,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, &p300_plane_end_func, &p300_block_init_func, NULL, p300_adj_cyan, p300_adj_magenta, p300_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Olympus P-400 */ 1, @@ -4330,7 +4435,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &p400_plane_init_func, &p400_plane_end_func, &p400_block_init_func, NULL, p400_adj_cyan, p400_adj_magenta, p400_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Olympus P-440 */ 3, @@ -4344,7 +4449,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, &p440_block_init_func, &p440_block_end_func, NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &p10_laminate_list, NULL, + &p10_laminate_list, NULL, NULL }, { /* Olympus P-S100 */ 20, @@ -4358,7 +4463,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon CP-10 */ 1002, @@ -4374,7 +4479,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &cpx00_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon CP-100, CP-200, CP-300 */ 1000, @@ -4390,7 +4495,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &cpx00_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon CP-220, CP-330, SELPHY CP400, SELPHY CP500, SELPHY CP510, SELPHY CP520, SELPHY CP530, SELPHY CP600, SELPHY CP710, @@ -4409,7 +4514,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &cpx00_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon SELPHY ES1 */ 1003, @@ -4425,7 +4530,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &es1_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon SELPHY ES2, SELPHY ES20 */ 1005, @@ -4441,7 +4546,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &es2_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon SELPHY ES3, SELPHY ES30 */ 1006, @@ -4457,7 +4562,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &es2_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon SELPHY ES40 */ 1007, @@ -4473,7 +4578,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &es2_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon SELPHY CP790 */ 1008, @@ -4489,7 +4594,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &es2_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon SELPHY CP800 */ 1009, @@ -4505,7 +4610,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &cpx00_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon SELPHY CP900 */ 1010, @@ -4521,7 +4626,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &cpx00_plane_init_func, NULL, NULL, NULL, cpx00_adj_cyan, cpx00_adj_magenta, cpx00_adj_yellow, - NULL, NULL, + NULL, NULL, NULL, }, { /* Canon CP820, CP910 */ 1011, @@ -4537,7 +4642,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* Printer handles color correction! */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Sony UP-DP10 */ 2000, @@ -4552,7 +4657,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, updp10_adj_cyan, updp10_adj_magenta, updp10_adj_yellow, - &updp10_laminate_list, NULL, + &updp10_laminate_list, NULL, NULL, }, { /* Sony UP-DR150 */ 2001, @@ -4566,7 +4671,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - &updp10_laminate_list, NULL, + &updp10_laminate_list, NULL, NULL, }, { /* Sony DPP-EX5, DPP-EX7 */ 2002, @@ -4581,7 +4686,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, &dppex5_block_init, NULL, NULL, NULL, NULL, - &dppex5_laminate_list, NULL, + &dppex5_laminate_list, NULL, NULL, }, { /* Sony UP-DR100 */ 2003, @@ -4595,7 +4700,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - &updr100_laminate_list, NULL, + &updr100_laminate_list, NULL, NULL, }, { /* Sony UP-DR200 */ 2004, @@ -4609,7 +4714,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - &updr200_laminate_list, NULL, + &updr200_laminate_list, NULL, NULL, }, { /* Sony UP-CR10L / DNP SL10 */ 2005, @@ -4623,7 +4728,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, + NULL, NULL, NULL, }, { /* Fujifilm Printpix CX-400 */ 3000, @@ -4638,7 +4743,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Fujifilm Printpix CX-550 */ 3001, @@ -4653,7 +4758,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Fujifilm FinePix NX-500 */ 3002, @@ -4667,7 +4772,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Kodak Easyshare Dock family */ 4000, @@ -4682,7 +4787,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_dock_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, + NULL, NULL, NULL, }, { /* Kodak Photo Printer 6800 */ 4001, @@ -4692,11 +4797,11 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_6800_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, - &kodak_6800_printer_init, NULL, + &kodak_68xx_printer_init, NULL, NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &kodak_6800_laminate_list, NULL, + &kodak_6800_laminate_list, NULL, NULL, }, { /* Kodak Photo Printer 6850 */ 4002, @@ -4706,11 +4811,11 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_6850_printsize_list, SHRT_MAX, DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT, - &kodak_6850_printer_init, NULL, + &kodak_68xx_printer_init, NULL, NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &kodak_6800_laminate_list, NULL, + &kodak_6800_laminate_list, NULL, NULL, }, { /* Kodak Photo Printer 605 */ 4003, @@ -4724,7 +4829,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &kodak_605_laminate_list, NULL, + &kodak_605_laminate_list, NULL, NULL, }, { /* Kodak Professional 1400 */ 4004, @@ -4740,8 +4845,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - &kodak_6800_laminate_list, - &kodak_1400_media_list, + &kodak_6800_laminate_list, &kodak_1400_media_list, NULL, }, { /* Kodak Photo Printer 805 */ 4005, @@ -4757,7 +4861,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &kodak_6800_laminate_list, NULL, + &kodak_6800_laminate_list, NULL, NULL, }, { /* Kodak Professional 9810 */ 4006, @@ -4772,7 +4876,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &kodak_9810_plane_init, NULL, NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &kodak_9810_laminate_list, NULL, + &kodak_9810_laminate_list, NULL, NULL, }, { /* Kodak 8810 */ 4007, @@ -4784,12 +4888,41 @@ static const dyesub_cap_t dyesub_model_capabilities[] = DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_PLANE_INTERLACE, &kodak_8810_printer_init, NULL, - NULL, NULL, + NULL, NULL, NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &kodak_8810_laminate_list, NULL, + &kodak_8810_laminate_list, NULL, NULL, + }, + { /* Kodak 7000/7010 */ + 4008, + &bgr_ink_list, + &res_300dpi_list, + &kodak_7000_page_list, + &kodak_7000_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE, + &kodak_70xx_printer_init, NULL, + NULL, NULL, + NULL, NULL, /* No block funcs */ + NULL, NULL, NULL, /* color profile/adjustment is built into printer */ + &kodak_7000_laminate_list, NULL, NULL, + }, + { /* Kodak 7015 */ + 4009, + &bgr_ink_list, + &res_300dpi_list, + &kodak_7015_page_list, + &kodak_7015_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT + | DYESUB_FEATURE_PLANE_INTERLACE, + &kodak_70xx_printer_init, NULL, + NULL, NULL, + NULL, NULL, /* No block funcs */ + NULL, NULL, NULL, /* color profile/adjustment is built into printer */ + &kodak_7000_laminate_list, NULL, NULL, }, - { /* Kodak Professional 8500 */ 4100, &bgr_ink_list, @@ -4802,8 +4935,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No plane funcs */ NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &kodak_8500_laminate_list, - &kodak_8500_media_list, + &kodak_8500_laminate_list, &kodak_8500_media_list, NULL, }, { /* Mitsubishi CP3020D/DU/DE */ 4101, @@ -4818,7 +4950,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp3020d_plane_init, &mitsu_cp3020d_plane_end, NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Mitsubishi CP3020DA/DAE */ 4102, @@ -4833,7 +4965,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Mitsubishi CP9550D */ 4103, @@ -4848,7 +4980,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - NULL, NULL, + NULL, NULL, NULL, }, { /* Mitsubishi CP9810D */ 4104, @@ -4864,7 +4996,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &mitsu_cp3020da_plane_init, NULL, NULL, NULL, /* No block funcs */ NULL, NULL, NULL, /* color profile/adjustment is built into printer */ - &mitsu_cp9810_laminate_list, NULL, + &mitsu_cp9810_laminate_list, NULL, NULL, }, { /* Mitsubishi CPD70D/CPD707D */ 4105, @@ -4880,7 +5012,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = 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, + &mitsu_cpd70x_laminate_list, NULL, NULL, }, { /* Mitsubishi CPK60D */ 4106, @@ -4896,7 +5028,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = 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, + &mitsu_cpd70x_laminate_list, NULL, NULL, }, { /* Mitsubishi CPD80D */ 4107, @@ -4912,7 +5044,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = 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, + &mitsu_cpd70x_laminate_list, NULL, NULL, }, { /* Kodak 305 */ 4108, @@ -4928,7 +5060,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = 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, + &mitsu_cpd70x_laminate_list, NULL, NULL, }, { /* Shinko CHC-S9045 (experimental) */ 5000, @@ -4942,7 +5074,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, + NULL, NULL, NULL, }, { /* Shinko/Sinfonia CHC-S2145 */ 5001, @@ -4956,7 +5088,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, NULL, NULL, /* Color correction in printer */ - &shinko_chcs2145_laminate_list, NULL, + &shinko_chcs2145_laminate_list, NULL, NULL, }, { /* Shinko/Sinfonia CHC-S1245 */ 5002, @@ -4970,7 +5102,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, NULL, NULL, /* Color correction in printer */ - &shinko_chcs1245_laminate_list, NULL, + &shinko_chcs1245_laminate_list, NULL, NULL, }, { /* Shinko/Sinfonia CHC-S6245 */ 5003, @@ -4984,11 +5116,11 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, NULL, NULL, /* Color correction in printer */ - &shinko_chcs6245_laminate_list, NULL, + &shinko_chcs6245_laminate_list, NULL, NULL, }, { /* Shinko/Sinfonia CHC-S6145 */ 5004, - &rgb_ink_list, + &ymc_ink_list, &res_300dpi_list, &shinko_chcs6145_page_list, &shinko_chcs6145_printsize_list, @@ -4998,7 +5130,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, NULL, NULL, /* Color correction in printer */ - &shinko_chcs6145_laminate_list, NULL, + &shinko_chcs6145_laminate_list, NULL, NULL, }, { /* CIAAT Brava 21 */ 5005, @@ -5012,7 +5144,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = NULL, NULL, /* No planes */ NULL, NULL, /* No blocks */ NULL, NULL, NULL, /* Color correction in printer */ - &ciaat_brava21_laminate_list, NULL, + &ciaat_brava21_laminate_list, NULL, NULL, }, { /* Dai Nippon Printing DS40 */ 6000, @@ -5027,7 +5159,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds40_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, NULL, + &dnpds40_laminate_list, NULL, NULL, }, { /* Dai Nippon Printing DS80 */ 6001, @@ -5042,7 +5174,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds40_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, NULL, + &dnpds40_laminate_list, NULL, NULL, }, { /* Dai Nippon Printing DSRX1 */ 6002, @@ -5057,7 +5189,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds40_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, NULL, + &dnpds40_laminate_list, NULL, NULL, }, { /* Dai Nippon Printing DS620 */ 6003, @@ -5072,7 +5204,7 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &dnpds40_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, - &dnpds40_laminate_list, NULL, + &dnpds40_laminate_list, NULL, NULL, }, { /* Citizen CW-01 */ 6005, @@ -5087,7 +5219,22 @@ static const dyesub_cap_t dyesub_model_capabilities[] = &citizen_cw01_plane_init, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, + }, + { /* Dai Nippon Printing DS80DX */ + 6006, + &bgr_ink_list, + &res_dnpds40_dpi_list, + &dnpds80dx_page_list, + &dnpds80dx_printsize_list, + SHRT_MAX, + DYESUB_FEATURE_FULL_WIDTH | DYESUB_FEATURE_FULL_HEIGHT | DYESUB_FEATURE_WHITE_BORDER + | DYESUB_FEATURE_PLANE_INTERLACE | DYESUB_FEATURE_PLANE_LEFTTORIGHT | DYESUB_FEATURE_DUPLEX, + &dnpds80dx_printer_start, &dnpds40_printer_end, + &dnpds40_plane_init, NULL, NULL, NULL, + NULL, NULL, NULL, + &dnpds40_laminate_list, &dnpds80dx_media_list, &dnpds80dx_uiconstraints_list, }, }; @@ -5145,6 +5292,24 @@ static const stp_parameter_t the_parameters[] = STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_CORE, STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 }, + { + "NativeCopies", N_("Printer Generates Copies Natively"), "Color=No,Category=Advanced Printer Functionality", + N_("Printer Generates Copies"), + STP_PARAMETER_TYPE_BOOLEAN, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_INTERNAL, 0, 0, STP_CHANNEL_NONE, 0, 1 + }, + { + "Duplex", N_("Double-Sided Printing"), "Color=No,Category=Basic Printer Setup", + N_("Duplex/Tumble Setting"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_BASIC, 1, 1, STP_CHANNEL_NONE, 1, 0 + }, + { + "PPDUIConstraints", N_("PPD User Interface Constraints"), "Color=No,Category=Advanced Printer Functionality", + N_("PPD UIConstraints List"), + STP_PARAMETER_TYPE_STRING_LIST, STP_PARAMETER_CLASS_FEATURE, + STP_PARAMETER_LEVEL_INTERNAL, 0, 0, STP_CHANNEL_NONE, 0, 1 + }, }; static int the_parameter_count = @@ -5198,6 +5363,20 @@ static const float_param_t float_parameters[] = static const int float_parameter_count = sizeof(float_parameters) / sizeof(const float_param_t); +/* + * Duplex 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 duplex_types[] = +{ + { "None", N_ ("Off") }, + { "DuplexNoTumble", N_ ("Long Edge (Standard)") }, + { "DuplexTumble", N_ ("Short Edge (Flip)") } +}; +#define NUM_DUPLEX (sizeof (duplex_types) / sizeof (stp_param_string_t)) + static const dyesub_cap_t* dyesub_get_model_capabilities(int model) { int i; @@ -5367,11 +5546,6 @@ dyesub_parameters(const stp_vars_t *v, const char *name, description->is_active = 0; } } - else if (strcmp(name, "InputSlot") == 0) - { - description->bounds.str = stp_string_list_create(); - description->is_active = 0; - } else if (strcmp(name, "Resolution") == 0) { char res_text[24]; @@ -5416,6 +5590,8 @@ dyesub_parameters(const stp_vars_t *v, const char *name, description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; description->is_active = 1; + } else { + description->is_active = 0; } } else if (strcmp(name, "Borderless") == 0) @@ -5431,6 +5607,54 @@ dyesub_parameters(const stp_vars_t *v, const char *name, description->deflt.str = stp_string_list_param(description->bounds.str, 0)->name; } + else if (strcmp(name, "PPDUIConstraints") == 0) + { + description->bounds.str = stp_string_list_create(); + if (caps->uiconstraints) { + const dyesub_stringlist_t *mlist = caps->uiconstraints; + for (i = 0; i < mlist->n_items; i++) + { + const dyesub_stringitem_t *m = &(mlist->item[i]); + stp_string_list_add_string(description->bounds.str, + m->name, m->text); /* Do *not* want this translated */ + } + description->deflt.str = + stp_string_list_param(description->bounds.str, 0)->name; + description->is_active = 1; + } else { + description->is_active = 0; + } + } + else if (strcmp(name, "Duplex") == 0) + { + int offer_duplex=0; + + description->bounds.str = stp_string_list_create(); + + /* + * Don't offer the Duplex/Tumble options if the JobMode parameter is + * set to "Page" Mode. + * "Page" mode is set by the Gimp Plugin, which only outputs one page at a + * time, so Duplex/Tumble is meaningless. + */ + + if (stp_get_string_parameter(v, "JobMode")) + offer_duplex = strcmp(stp_get_string_parameter(v, "JobMode"), "Page"); + else + offer_duplex=1; + + if (offer_duplex && (caps->features & DYESUB_FEATURE_DUPLEX)) + { + description->deflt.str = duplex_types[0].name; + for (i=0; i < NUM_DUPLEX; i++) + { + stp_string_list_add_string(description->bounds.str, + duplex_types[i].name,gettext(duplex_types[i].text)); + } + } + else + description->is_active = 0; + } else description->is_active = 0; } @@ -5586,7 +5810,7 @@ dyesub_describe_output_internal(const stp_vars_t *v, dyesub_print_vars_t *pv) int i; pv->ink_channels = 1; - pv->ink_order = NULL; + pv->ink_order = "\1"; output_type = "CMY"; if (ink_type) @@ -5954,8 +6178,6 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) int pl; - - if (!stp_verify(v)) { stp_eprintf(v, _("Print options not verified; cannot print.\n")); @@ -5970,6 +6192,12 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) stp_describe_resolution(v, &w_dpi, &h_dpi); dyesub_printsize(v, &max_print_px_width, &max_print_px_height); + /* Duplex processing -- Rotate even pages for DuplexNoTumble */ + privdata.duplex_mode = stp_get_string_parameter(v, "Duplex"); + privdata.page_number = stp_get_int_parameter(v, "PageNumber"); + if((privdata.page_number & 1) && privdata.duplex_mode && !strcmp(privdata.duplex_mode,"DuplexNoTumble")) + image = stpi_buffer_image(image,BUFFER_FLAG_FLIP_X | BUFFER_FLAG_FLIP_Y); + privdata.pagesize = stp_get_string_parameter(v, "PageSize"); if (caps->laminate) privdata.laminate = dyesub_get_laminate_pattern(v); @@ -5980,7 +6208,11 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) (dyesub_feature(caps, DYESUB_FEATURE_WHITE_BORDER) ? 1 : 0), &page_pt_left, &page_pt_right, &page_pt_bottom, &page_pt_top, &page_mode); - + + /* Swap DPI so these computations will work out properly */ + if (page_mode == DYESUB_LANDSCAPE) + dyesub_swap_ints(&w_dpi, &h_dpi); + pv.prnw_px = MIN(max_print_px_width, PX(page_pt_right - page_pt_left, w_dpi)); pv.prnh_px = MIN(max_print_px_height, @@ -5988,7 +6220,6 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) pv.outw_px = PX(out_pt_width, w_dpi); pv.outh_px = PX(out_pt_height, h_dpi); - /* if image size is close enough to output size send out original size */ if (abs(pv.outw_px - pv.imgw_px) < SIZE_THRESHOLD) pv.outw_px = pv.imgw_px; @@ -6003,7 +6234,10 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) pv.prnh_px - pv.outh_px); pv.outr_px = pv.outl_px + pv.outw_px; pv.outb_px = pv.outt_px + pv.outh_px; - + + /* Swap back so that everything that follows will work. */ + if (page_mode == DYESUB_LANDSCAPE) + dyesub_swap_ints(&w_dpi, &h_dpi); stp_deprintf(STP_DBG_DYESUB, "paper (pt) %d x %d\n" @@ -6027,8 +6261,7 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) page_pt_bottom, page_pt_top, page_pt_bottom - page_pt_top, pv.prnw_px, pv.prnh_px, w_dpi, h_dpi - ); - + ); /* FIXME: move this into print_init_drv */ ink_type = dyesub_describe_output_internal(v, &pv); @@ -6095,7 +6328,6 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) dyesub_adjust_curve(v, caps->adj_cyan, "CyanCurve"); dyesub_adjust_curve(v, caps->adj_magenta, "MagentaCurve"); dyesub_adjust_curve(v, caps->adj_yellow, "YellowCurve"); - stp_set_float_parameter(v, "Density", 1.0); if (dyesub_feature(caps, DYESUB_FEATURE_FULL_HEIGHT)) { @@ -6147,7 +6379,7 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) privdata.h_size = pv.prnh_px; privdata.print_mode = pv.print_mode; privdata.bpp = pv.bits_per_ink_channel; - + /* printer init */ dyesub_exec(v, caps->printer_init_func, "caps->printer_init"); diff --git a/src/main/print-papers.c b/src/main/print-papers.c index 7a7528d..fa84f96 100644 --- a/src/main/print-papers.c +++ b/src/main/print-papers.c @@ -1,5 +1,5 @@ /* - * "$Id: print-papers.c,v 1.43 2014/01/12 01:30:44 rlk Exp $" + * "$Id: print-papers.c,v 1.44 2015/09/07 21:57:37 speachy Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -386,6 +386,8 @@ stp_xml_process_paper(stp_mxml_node_t *paper) /* The paper node */ { if (!strcmp(stmp, "envelope")) outpaper->paper_size_type = PAPERSIZE_TYPE_ENVELOPE; + else if (!strcmp(stmp, "special")) + outpaper->paper_size_type = PAPERSIZE_TYPE_SPECIAL; else outpaper->paper_size_type = PAPERSIZE_TYPE_STANDARD; } diff --git a/src/main/print-pcl.c b/src/main/print-pcl.c index 239eb74..5f0d1fa 100644 --- a/src/main/print-pcl.c +++ b/src/main/print-pcl.c @@ -1,5 +1,5 @@ /* - * "$Id: print-pcl.c,v 1.163 2015/05/05 02:13:14 rlk Exp $" + * "$Id: print-pcl.c,v 1.165 2015/09/09 23:57:32 speachy Exp $" * * Print plug-in HP PCL driver for the GIMP. * @@ -1875,6 +1875,13 @@ pcl_papersize_valid(const stp_papersize_t *pt, return(0); /* + * Is it a valid type? + */ + if (pt->paper_size_type != PAPERSIZE_TYPE_STANDARD && + pt->paper_size_type != PAPERSIZE_TYPE_ENVELOPE) + return(0); + +/* * Is it a recognized supported name? */ @@ -1926,7 +1933,15 @@ static stp_parameter_list_t pcl_list_parameters(const stp_vars_t *v) { stp_parameter_list_t *ret = stp_parameter_list_create(); + stp_parameter_list_t *tmp_list; + int i; + + /* Set up dithering */ + tmp_list = stp_dither_list_parameters(v); + stp_parameter_list_append(ret, tmp_list); + stp_parameter_list_destroy(tmp_list); + for (i = 0; i < the_parameter_count; i++) stp_parameter_list_add_param(ret, &(the_parameters[i])); for (i = 0; i < float_parameter_count; i++) diff --git a/src/main/print-raw.c b/src/main/print-raw.c index 95c0ef2..6f4b57d 100644 --- a/src/main/print-raw.c +++ b/src/main/print-raw.c @@ -1,5 +1,5 @@ /* - * "$Id: print-raw.c,v 1.43 2013/09/08 15:35:18 rlk Exp $" + * "$Id: print-raw.c,v 1.47 2015/09/09 23:57:32 speachy Exp $" * * Print plug-in RAW driver for the GIMP. * @@ -26,6 +26,17 @@ * compile on generic platforms that don't support glib, gimp, gtk, etc. */ +/* + * To use this driver, we recommend this: + * + * stp_set_driver(v, "raw-data-8"); // or raw_data-16 + * stp_set_string_parameter(v, "PageSize", "Custom"); + * stp_set_page_height(v, HEIGHT); + * stp_set_page_width(v, WIDTH); + * + * For further details, see compute_thumbnail() in gutenprintui2/panel.c + */ + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -150,6 +161,8 @@ raw_parameters(const stp_vars_t *v, const char *name, description->bounds.str = stp_string_list_create(); for (i = 0; i < papersizes; i++) { + /* All users of the raw drivers should use "Custom" PageSize + and manually set page height/width! */ const stp_papersize_t *pt = stp_get_papersize_by_index(i); stp_string_list_add_string(description->bounds.str, pt->name, gettext(pt->text)); @@ -161,10 +174,6 @@ raw_parameters(const stp_vars_t *v, const char *name, description->is_active = 0; } -/* - * 'escp2_imageable_area()' - Return the imageable area of the page. - */ - static void raw_imageable_area(const stp_vars_t *v, int *left, @@ -210,9 +219,6 @@ raw_describe_output(const stp_vars_t *v) return "RGB"; } -/* - * 'escp2_print()' - Print an image to an EPSON printer. - */ static int raw_print(const stp_vars_t *v, stp_image_t *image) { @@ -258,7 +264,6 @@ raw_print(const stp_vars_t *v, stp_image_t *image) } } - stp_set_float_parameter(nv, "Density", 1.0); stp_set_boolean_parameter(nv, "SimpleGamma", 1); stp_channel_reset(nv); for (i = 0; i < ink_channels; i++) diff --git a/src/main/print-util.c b/src/main/print-util.c index c5bfebd..ca7cef9 100644 --- a/src/main/print-util.c +++ b/src/main/print-util.c @@ -1,5 +1,5 @@ /* - * "$Id: print-util.c,v 1.121 2015/04/11 16:19:46 rlk Exp $" + * "$Id: print-util.c,v 1.122 2015/09/09 23:57:32 speachy Exp $" * * Print plug-in driver utility functions for the GIMP. * @@ -639,8 +639,8 @@ stp_merge_printvars(stp_vars_t *user, const stp_vars_t *print) stp_parameter_list_t stp_get_parameter_list(const stp_vars_t *v) { - stp_parameter_list_t ret = stp_parameter_list_create(); - stp_parameter_list_t tmp_list; + stp_parameter_list_t *ret = stp_parameter_list_create(); + stp_parameter_list_t *tmp_list; tmp_list = stp_printer_list_parameters(v); stp_parameter_list_append(ret, tmp_list); @@ -650,10 +650,6 @@ stp_get_parameter_list(const stp_vars_t *v) stp_parameter_list_append(ret, tmp_list); stp_parameter_list_destroy(tmp_list); - tmp_list = stp_dither_list_parameters(v); - stp_parameter_list_append(ret, tmp_list); - stp_parameter_list_destroy(tmp_list); - tmp_list = stp_list_generic_parameters(v); stp_parameter_list_append(ret, tmp_list); stp_parameter_list_destroy(tmp_list); diff --git a/src/main/printers.c b/src/main/printers.c index 997a0ba..7effdfb 100644 --- a/src/main/printers.c +++ b/src/main/printers.c @@ -1,5 +1,5 @@ /* - * "$Id: printers.c,v 1.92 2014/05/22 02:08:20 rlk Exp $" + * "$Id: printers.c,v 1.94 2015/07/13 02:18:20 speachy Exp $" * * Print plug-in driver utility functions for the GIMP. * diff --git a/src/testpattern/Makefile.am b/src/testpattern/Makefile.am index a8680f1..7fe813f 100644 --- a/src/testpattern/Makefile.am +++ b/src/testpattern/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.28 2012/06/25 22:22:04 rlk Exp $ +## $Id: Makefile.am,v 1.29 2015/09/13 15:30:40 rlk Exp $ ## Copyright (C) 2000 Roger Leigh ## ## This program is free software; you can redistribute it and/or modify @@ -34,7 +34,7 @@ TESTS = run-testpattern-1 run-testpattern-2 if BUILD_TESTPATTERN bin_PROGRAMS = testpattern noinst_PROGRAMS = printers printer_options -noinst_SCRIPTS = run-testpattern-2 +noinst_SCRIPTS = run-testpattern-2 compare-checksums endif AM_LFLAGS = -i @@ -61,5 +61,5 @@ endif MAINTAINERCLEANFILES = Makefile.in testpatternl.c testpatterny.c testpatterny.h -EXTRA_DIST = testpatterny.h $(pkgdata_DATA) run-testpattern run-testpattern-1 +EXTRA_DIST = testpatterny.h $(pkgdata_DATA) run-testpattern run-testpattern-1 compare-checksums.in diff --git a/src/testpattern/Makefile.in b/src/testpattern/Makefile.in index 43d6242..152eea8 100644 --- a/src/testpattern/Makefile.in +++ b/src/testpattern/Makefile.in @@ -86,9 +86,10 @@ build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(top_srcdir)/scripts/global.mk $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(top_srcdir)/scripts/mkinstalldirs \ - $(srcdir)/run-testpattern-2.in testpatterny.h testpatterny.c \ - testpatternl.c $(top_srcdir)/scripts/depcomp \ - $(top_srcdir)/scripts/ylwrap $(top_srcdir)/scripts/test-driver + $(srcdir)/run-testpattern-2.in $(srcdir)/compare-checksums.in \ + testpatterny.h testpatterny.c testpatternl.c \ + $(top_srcdir)/scripts/depcomp $(top_srcdir)/scripts/ylwrap \ + $(top_srcdir)/scripts/test-driver @BUILD_TESTPATTERN_TRUE@bin_PROGRAMS = testpattern$(EXEEXT) @BUILD_TESTPATTERN_TRUE@noinst_PROGRAMS = printers$(EXEEXT) \ @BUILD_TESTPATTERN_TRUE@ printer_options$(EXEEXT) @@ -109,7 +110,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = run-testpattern-2 +CONFIG_CLEAN_FILES = run-testpattern-2 compare-checksums CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) @@ -452,6 +453,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ @@ -635,7 +638,7 @@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include $(LOCAL_CPPFLAGS) $(GNUCFLAGS) GUTENPRINTUI_LIBS = $(top_builddir)/src/gutenprintui/libgutenprintui.la TESTS = run-testpattern-1 run-testpattern-2 -@BUILD_TESTPATTERN_TRUE@noinst_SCRIPTS = run-testpattern-2 +@BUILD_TESTPATTERN_TRUE@noinst_SCRIPTS = run-testpattern-2 compare-checksums AM_LFLAGS = -i AM_YFLAGS = -d testpattern_SOURCES = testpattern.c testpatterny.y testpatternl.l testpattern.h @@ -644,7 +647,7 @@ printers_LDADD = $(GUTENPRINT_LIBS) printer_options_LDADD = $(GUTENPRINT_LIBS) @INSTALL_SAMPLES_TRUE@pkgdata_DATA = testpattern.sample extended.sample MAINTAINERCLEANFILES = Makefile.in testpatternl.c testpatterny.c testpatterny.h -EXTRA_DIST = testpatterny.h $(pkgdata_DATA) run-testpattern run-testpattern-1 +EXTRA_DIST = testpatterny.h $(pkgdata_DATA) run-testpattern run-testpattern-1 compare-checksums.in all: all-am .SUFFIXES: @@ -682,6 +685,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): run-testpattern-2: $(top_builddir)/config.status $(srcdir)/run-testpattern-2.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +compare-checksums: $(top_builddir)/config.status $(srcdir)/compare-checksums.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ diff --git a/src/testpattern/compare-checksums.in b/src/testpattern/compare-checksums.in new file mode 100755 index 0000000..0846424 --- /dev/null +++ b/src/testpattern/compare-checksums.in @@ -0,0 +1,109 @@ +#!@PERL@ + +use strict; + +my (%old_modes, %old_printers, %new_modes, %new_printers); + +if ($#ARGV != 1) { + die "Usage: $0 old_checksum_file new_checksum_file\n"; +} + +open(OLD, $ARGV[0]) or die("Can't open old checksum file $ARGV[0]: $!\n"); +open(NEW, $ARGV[1]) or die("Can't open new checksum file $ARGV[1]: $!\n"); + +sub get_printer($) { + my ($mode) = @_; + $mode =~ s/_PrintingMode.*//; + return $mode; +} + +sub get_mode($) { + my ($mode) = @_; + $mode =~ s/.*_PrintingMode/PrintingMode/; + return $mode; +} + +while (<OLD>) { + chomp; + my ($sum, $mode) = split(/ +[*]?/); + $mode =~ s/\.prn$//; + $old_modes{$mode} = $sum; + my ($printer) = get_printer($mode); + $old_printers{$printer} = 1; +} + +close OLD; + +while (<NEW>) { + chomp; + my ($sum, $mode) = split(/ +[*]?/); + $mode =~ s/\.prn$//; + $new_modes{$mode} = $sum; + my ($printer) = get_printer($mode); + $new_printers{$printer} = 1; +} + +my (%only_old_printers, %only_new_printers); + +foreach my $new_printer (keys %new_printers) { + if (! defined $old_printers{$new_printer}) { + $only_new_printers{$new_printer} = 1; + } +} + +foreach my $old_printer (keys %old_printers) { + if (! defined $new_printers{$old_printer}) { + $only_old_printers{$old_printer} = 1; + } +} + +my (@only_old_modes, @only_new_modes, @changed_modes); + +foreach my $old_mode (sort keys %old_modes) { + next if defined $only_old_printers{get_printer($old_mode)}; + if (defined $new_modes{$old_mode}) { + if ($new_modes{$old_mode} ne $old_modes{$old_mode}) { + push @changed_modes, $old_mode; + } + } else { + push @only_old_modes, $old_mode; + } +} + +foreach my $new_mode (sort keys %new_modes) { + next if defined $only_new_printers{get_printer($new_mode)}; + if (!defined $old_modes{$new_mode}) { + push @only_new_modes, $new_mode; + } +} + +my (@only_old_printers) = sort keys %only_old_printers; +my (@only_new_printers) = sort keys %only_new_printers; + +sub print_changes($$@) { + my ($tag, $detail, @changes) = @_; + my ($prev_printer); + return if ($#changes < 0); + print "$tag:\n"; + foreach my $m (@changes) { + my ($printer) = get_printer($m); + my ($mode) = get_mode($m); + if ($detail) { + if ($printer ne $prev_printer) { + print " $printer:\n"; + $prev_printer = $printer; + } + print " $mode\n"; + } else { + print " $mode\n"; + } + } + print "\n"; +} + +print "*** Changes from $ARGV[0] to $ARGV[1] ***\n\n"; +print_changes("Printers removed from $ARGV[1]", 0, @only_old_printers); +print_changes("Printers added to $ARGV[1]", 0, @only_new_printers); +print_changes("Modes removed from $ARGV[1]", 1, @only_old_modes); +print_changes("Modes added to $ARGV[1]", 1, @only_new_modes); +print_changes("Changed printing modes", 1, @changed_modes); diff --git a/src/testpattern/printer_options.c b/src/testpattern/printer_options.c index e0f1bf2..a13479e 100644 --- a/src/testpattern/printer_options.c +++ b/src/testpattern/printer_options.c @@ -1,5 +1,5 @@ /* - * "$Id: printer_options.c,v 1.6 2012/05/26 15:56:03 rlk Exp $" + * "$Id: printer_options.c,v 1.7 2015/10/04 15:09:54 rlk Exp $" * * Dump the per-printer options for the OpenPrinting database * @@ -57,7 +57,7 @@ main(int argc, char **argv) const stp_printer_t *printer = stp_get_printer_by_index(i); const char *driver = stp_printer_get_driver(printer); const char *family = stp_printer_get_family(printer); - stp_vars_t *pv = stp_vars_create_copy(stp_printer_get_defaults(printer)); + stp_vars_t *pv; int tcount = 0; size_t count; int printer_is_color = 0; @@ -66,6 +66,7 @@ main(int argc, char **argv) if (printer_list && !stp_string_list_is_present(printer_list, driver)) continue; + pv = stp_vars_create_copy(stp_printer_get_defaults(printer)); /* Set Job Mode to "Job" as this enables the Duplex option */ stp_set_string_parameter(pv, "JobMode", "Job"); diff --git a/src/testpattern/run-testpattern-2.in b/src/testpattern/run-testpattern-2.in index 4c44027..62c7cbf 100644 --- a/src/testpattern/run-testpattern-2.in +++ b/src/testpattern/run-testpattern-2.in @@ -41,6 +41,8 @@ my $global_printer; my $global_messages; my $global_page; my $global_case; +my $enable_static = "@ENABLE_STATIC@"; +my $enable_shared = "@ENABLE_SHARED@"; my @extras = (); my @job_extras = (); @@ -62,6 +64,7 @@ my $rerun = 0; my $list_printers = 0; my $list_options = 0; my $verbose = 0; +my $use_unused_options = 0; my @default_options = (); my %base_settings = ("DitherAlgorithm" => "Fast"); @@ -99,6 +102,7 @@ GetOptions("C=s" => \$csum_type, "q+" => \$quiet, "r!" => \$skip_resolutions, "s!" => \$skip_duplicate_printers, + "N!" => \$use_unused_options, "v+" => \$valgrind, "x=s" => \@exclude_list, "y=s" => \@exclude_patterns); @@ -169,6 +173,7 @@ Usage: run-testpattern-2 [opts] [model ...] -RR Use only the minimum resolution, and do not test other resolutions. -X Repeat specified cases listed on standard input. + -N Supply all requested options, even if unused. Miscellaneous options: -i Use the installed Gutenprint libraries rather than @@ -266,6 +271,10 @@ if (! $run_installed && ! defined $ENV{"STP_DATA_PATH"}) { $ENV{"STP_DATA_PATH"} = "${sdir}/../xml"; } +if ($valgrind && ! $run_installed && $enable_shared ne "no") { + die "Valgrind is not compatible with --enable-shared in tree.\nPlease use autogen.sh --disable-shared.\n"; +} + if (! defined $ENV{"STP_MODULE_PATH"}) { $ENV{"STP_MODULE_PATH"} = "${sdir}/../main:${sdir}/../main/.libs"; } @@ -618,7 +627,7 @@ sub do_printer($$) { } set_opt("PrintingMode", $pmode, $printer); set_opt("Resolution", $resolution, $printer); - map { set_opt($_, $base_settings{$_}, $printer)} sort keys %base_settings; + map { set_opt($_, $base_settings{$_}, $printer)} grep { $use_unused_options || defined $stpdata{$printer}{$_}} sort keys %base_settings; my ($case) = "${printer}_PrintingMode_${pmode}_Resolution_${resolution}"; $global_case = $case; if (! $rerun || $rerun_cases{$case}) { @@ -687,7 +696,7 @@ sub do_printer($$) { $pages = $duplex_pages; } } - } keys %base_settings; + } grep { $use_unused_options || defined $stpdata{$printer}{$_}} (keys %base_settings); my ($mstring) = join "_", @mvals; my ($ostring) = join "+", @ovals; my $case; diff --git a/src/xml/Makefile.in b/src/xml/Makefile.in index dfd1747..3e494b4 100644 --- a/src/xml/Makefile.in +++ b/src/xml/Makefile.in @@ -284,6 +284,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/Makefile.in b/src/xml/escp2/Makefile.in index 0917eb3..c234cc1 100644 --- a/src/xml/escp2/Makefile.in +++ b/src/xml/escp2/Makefile.in @@ -221,6 +221,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/inks/Makefile.in b/src/xml/escp2/inks/Makefile.in index 208bb1f..e7af151 100644 --- a/src/xml/escp2/inks/Makefile.in +++ b/src/xml/escp2/inks/Makefile.in @@ -191,6 +191,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/inputslots/Makefile.in b/src/xml/escp2/inputslots/Makefile.in index 6a9eb25..e8cec78 100644 --- a/src/xml/escp2/inputslots/Makefile.in +++ b/src/xml/escp2/inputslots/Makefile.in @@ -191,6 +191,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/media/Makefile.in b/src/xml/escp2/media/Makefile.in index 11813e8..062fae0 100644 --- a/src/xml/escp2/media/Makefile.in +++ b/src/xml/escp2/media/Makefile.in @@ -191,6 +191,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/mediasizes/Makefile.in b/src/xml/escp2/mediasizes/Makefile.in index 5e63aaa..cdf2ee9 100644 --- a/src/xml/escp2/mediasizes/Makefile.in +++ b/src/xml/escp2/mediasizes/Makefile.in @@ -191,6 +191,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/model/Makefile.in b/src/xml/escp2/model/Makefile.in index 4e8ccdc..c6a2d79 100644 --- a/src/xml/escp2/model/Makefile.in +++ b/src/xml/escp2/model/Makefile.in @@ -191,6 +191,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/model/model_47.xml b/src/xml/escp2/model/model_47.xml index a85b89b..8073e8e 100644 --- a/src/xml/escp2/model/model_47.xml +++ b/src/xml/escp2/model/model_47.xml @@ -29,7 +29,7 @@ xsi:schemaLocation="http://gimp-print.sourceforge.net/xsd/gp.xsd-1.0 gutenprint. <preinitRemoteSequence>PM\002\000\000\000</preinitRemoteSequence> <postinitRemoteSequence>JE\001\000\000</postinitRemoteSequence> <commandSet>2000</commandSet> - <borderless>VerticalRestricted</borderless> + <borderless>Yes</borderless> <supportsVariableDropsizes/> <hasFastGraymode/> <hasFast360DPI/> diff --git a/src/xml/escp2/qualitypresets/Makefile.in b/src/xml/escp2/qualitypresets/Makefile.in index cec2145..8bf1efa 100644 --- a/src/xml/escp2/qualitypresets/Makefile.in +++ b/src/xml/escp2/qualitypresets/Makefile.in @@ -191,6 +191,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/escp2/weaves/Makefile.in b/src/xml/escp2/weaves/Makefile.in index c9b6ba7..fdf41d0 100644 --- a/src/xml/escp2/weaves/Makefile.in +++ b/src/xml/escp2/weaves/Makefile.in @@ -191,6 +191,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_SHARED = @ENABLE_SHARED@ +ENABLE_STATIC = @ENABLE_STATIC@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FIND = @FIND@ diff --git a/src/xml/papers.xml b/src/xml/papers.xml index 7b6d2f9..e6a637f 100644 --- a/src/xml/papers.xml +++ b/src/xml/papers.xml @@ -1,7 +1,7 @@ <?xml version="1.0"?> <!-- - "$Id: papers.xml,v 1.20 2015/06/22 23:02:44 speachy Exp $" + "$Id: papers.xml,v 1.30 2015/10/04 15:20:31 rlk Exp $" XML description of papers known to libgutenprint. You can add additional paper sizes here. @@ -118,6 +118,7 @@ </paper> <paper name="w252h338"> <description translate="value" value="3.5x4.7"/> + <comment value="Only used by CW-01/OP900 dyesub printers"/> <width value="252"/> <height value="338"/> <unit value="english-extended"/> @@ -154,9 +155,10 @@ </paper> <paper name="w324h432"> <description translate="value" value="4.5x6"/> + <comment value="Only used by DS620 dyesub printer"/> <width value="324"/> <height value="432"/> - <unit value="english"/> + <unit value="english-extended"/> </paper> <paper name="w324h495"> <description translate="value" value="Epson 4x6 Photo Paper (tear-off borders)"/> @@ -186,6 +188,7 @@ </paper> <paper name="w338h504"> <description translate="value" value="4.7x7"/> + <comment value="Only used by CW-01/OP900 dyesub printers"/> <width value="338"/> <height value="504"/> <unit value="english-extended"/> @@ -210,6 +213,7 @@ </paper> <paper name="w432h432"> <description translate="value" value="6x6"/> + <comment value="Only used by certain dyesub models"/> <width value="432"/> <height value="432"/> <unit value="english-extended"/> @@ -222,6 +226,7 @@ </paper> <paper name="w432h612"> <description translate="value" value="6x8.5"/> + <comment value="Only used by certain Mitsubishi dyesub models"/> <width value="432"/> <height value="612"/> <unit value="english-extended"/> @@ -276,16 +281,25 @@ --> <paper name="w360h360"> <description translate="value" value="5x5"/> + <comment value="Only used by certain dyesub models"/> <width value="360"/> <height value="360"/> <unit value="english-extended"/> </paper> <paper name="w576h576"> <description translate="value" value="8x8"/> + <comment value="Only used by certain dyesub models"/> <width value="576"/> <height value="576"/> <unit value="english-extended"/> </paper> + <paper name="w576h774"> + <description translate="value" value="8x10.75"/> + <comment value="Only used by DS80DX dyesub printer"/> + <width value="576"/> + <height value="774"/> + <unit value="english-extended"/> + </paper> <paper name="w576h864"> <description translate="value" value="8x12"/> <comment value="Sometimes used for 35mm"/> @@ -295,7 +309,7 @@ </paper> <paper name="w612h864"> <description translate="value" value="8.5x12"/> - <comment value="8.5in x 12in"/> + <comment value="Only used by Kodak 1400 and 805 dyesub printers"/> <width value="612"/> <height value="864"/> <unit value="english"/> @@ -1643,6 +1657,126 @@ <unit value="metric"/> </paper> + <!-- + Special dyesub-specific sizes + + These are all used solely to expose multicut parameters + + They can be removed once we figure out a better paper API + --> + <paper name="w288h432-div2"> + <description translate="value" value="2x6*2"/> + <width value="288"/> + <height value="432"/> + <unit value="english"/> + <type value="special"/> + </paper> + <paper name="w360h504-div2"> + <description translate="value" value="3.5x5*2"/> + <width value="360"/> + <height value="504"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w432h576-div2"> + <description translate="value" value="4x6*2"/> + <width value="432"/> + <height value="576"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w432h576-div4"> + <description translate="value" value="2x6*4"/> + <width value="432"/> + <height value="576"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w432h576-w432h432_w432h144"> + <description translate="value" value="6x6+2x6"/> + <width value="432"/> + <height value="576"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w432h648-div2"> + <description translate="value" value="4.5x6*2"/> + <width value="432"/> + <height value="648"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h576-div2"> + <description translate="value" value="4x8*2"/> + <width value="576"/> + <height value="576"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h648-w576h360_w576h288"> + <description translate="value" value="8x5+8x4"/> + <width value="576"/> + <height value="648"/> + <unit value="english-extended"/> + </paper> + <paper name="c8x10-div2"> + <description translate="value" value="8x5*2"/> + <width value="576"/> + <height value="720"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="c8x10-w576h432_w576h288"> + <description translate="value" value="8x6+8x4"/> + <width value="576"/> + <height value="720"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h774-w576h756"> + <description translate="value" value="8x10.5"/> + <comment value="Only used by DS80DX dyesub printer"/> + <width value="576"/> + <height value="774"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h792-w576h432_w576h360"> + <description translate="value" value="8x6+8x5"/> + <width value="576"/> + <height value="792"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h864-div2"> + <description translate="value" value="8x6*2"/> + <width value="576"/> + <height value="864"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h864-div3"> + <description translate="value" value="8x4*3"/> + <width value="576"/> + <height value="864"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h864-div3sheet"> + <description translate="value" value="8x4*3"/> + <width value="576"/> + <height value="864"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <paper name="w576h864-w576h576_w576h288"> + <description translate="value" value="8x8+8x4"/> + <width value="576"/> + <height value="864"/> + <unit value="english-extended"/> + <type value="special"/> + </paper> + <!-- Custom --> diff --git a/src/xml/printers.xml b/src/xml/printers.xml index bffe238..8ec79c5 100644 --- a/src/xml/printers.xml +++ b/src/xml/printers.xml @@ -1,7 +1,7 @@ <?xml version="1.0"?> <!-- - "$Id: printers.xml,v 1.407 2015/06/24 15:01:03 gernot2270 Exp $" + "$Id: printers.xml,v 1.427 2015/10/03 22:20:34 rlk Exp $" XML description of printers known to libgutenprint You can add additional printers here, but the underlying driver has @@ -308,7 +308,7 @@ <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">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA iP8500" deviceid="MFG:Canon;MDL:iP8500;CMD:BJL,BJRaster3,BSCCe;" 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">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> @@ -375,6 +375,11 @@ <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 MPC400 family --> + <printer translate="name" name="Canon SmartBase MPC400" driver="bjc-SmartBase-MPC400" manufacturer="Canon" model="16000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MPC400">EXPERIMENTAL</printer> + <printer translate="name" name="Canon SmartBase MPC600F" driver="bjc-SmartBase-MPC600F" manufacturer="Canon" model="16000400" parameters="PIXMA_iP4000_params" foomaticid="Canon-SmartBase-MPC600F">EXPERIMENTAL</printer> + <!-- Canon MP55 family --> + <printer translate="name" name="Canon PIXUS MP55" driver="bjc-PIXUS-MP55" manufacturer="Canon" model="5000055" parameters="PIXMA_iP4000_params" foomaticid="Canon-PIXUS-MP55">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">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 --> @@ -657,7 +662,9 @@ <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 MG2570S" driver="bjc-PIXMA-MG2570S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2570S">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 MG2580S" driver="bjc-PIXMA-MG2580S" manufacturer="Canon" model="8002400" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG2580S">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> @@ -704,6 +711,15 @@ <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 MG3600 family --> + <printer translate="name" name="Canon MG3600 series" driver="bjc-MG3600-series" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG3600-series">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3610" driver="bjc-PIXMA-MG3610" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3610">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3620" driver="bjc-PIXMA-MG3620" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3620">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG3630" driver="bjc-PIXUS-MG3630" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG3630">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3640" driver="bjc-PIXMA-MG3640" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3640">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3650" driver="bjc-PIXMA-MG3650" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3650">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3670" driver="bjc-PIXMA-MG3670" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3670">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG3680" driver="bjc-PIXMA-MG3680" manufacturer="Canon" model="8003600" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG3680">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">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> @@ -788,6 +804,23 @@ <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 MG5700 family --> + <printer translate="name" name="Canon MG5700 series" driver="bjc-MG5700-series" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG5700-series">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5710" driver="bjc-PIXMA-MG5710" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5710">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5720" driver="bjc-PIXMA-MG5720" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5720">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG5721" driver="bjc-PIXMA-MG5721" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5721">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG5722" driver="bjc-PIXMA-MG5722" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5722">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXUS MG5730" driver="bjc-PIXUS-MG5730" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG5730">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5740" driver="bjc-PIXMA-MG5740" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5740">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5750" driver="bjc-PIXMA-MG5750" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5750">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG5751" driver="bjc-PIXMA-MG5751" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5751">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA MG5752" driver="bjc-PIXMA-MG5752" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5752">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG5753" driver="bjc-PIXMA-MG5753" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5753">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXMA MG5770" driver="bjc-PIXMA-MG5770" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5770">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5780" driver="bjc-PIXMA-MG5780" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5780">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5790" driver="bjc-PIXMA-MG5790" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5790">EXPERIMENTAL</printer> + <printer translate="name" name="Canon Mommy Photo MG5790" driver="bjc-Mommy-Photo-MG5790" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-Mommy-Photo-MG5790">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG5795" driver="bjc-PIXMA-MG5795" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG5795">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">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> @@ -843,6 +876,22 @@ <!-- 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 MG6800 family --> + <printer translate="name" name="Canon MG6800 series" driver="bjc-MG6800-series" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6800-series">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6810" driver="bjc-PIXMA-MG6810" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6810">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6820" driver="bjc-PIXMA-MG6820" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6820">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG6821" driver="bjc-PIXMA-MG6821" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6821">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG6822" driver="bjc-PIXMA-MG6822" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6822">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXMA MG6840" driver="bjc-PIXMA-MG6840" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6840">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6850" driver="bjc-PIXMA-MG6850" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6850">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG6851" driver="bjc-PIXMA-MG6851" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6851">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA MG6852" driver="bjc-PIXMA-MG6852" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6852">EXPERIMENTAL</printer><!-- silver/black model --> + <printer translate="name" name="Canon PIXMA MG6853" driver="bjc-PIXMA-MG6853" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6853">EXPERIMENTAL</printer><!-- silver/white model --> + <printer translate="name" name="Canon PIXMA MG6870" driver="bjc-PIXMA-MG6870" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6870">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG6880" driver="bjc-PIXMA-MG6880" manufacturer="Canon" model="8005700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG6880">EXPERIMENTAL</printer> + <!-- Canon MG6900 family --> + <printer translate="name" name="Canon MG6900 series" driver="bjc-MG6900-series" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG6900-series">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG6930" driver="bjc-PIXUS-MG6930" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG6930">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">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> @@ -864,6 +913,20 @@ <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 MG7700 family --> + <printer translate="name" name="Canon MG7700 series" driver="bjc-MG7700-series" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-MG7700-series">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7710" driver="bjc-PIXMA-MG7710" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7710">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7720" driver="bjc-PIXMA-MG7720" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7720">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG7730" driver="bjc-PIXUS-MG7730" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG7730">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXUS MG7730F" driver="bjc-PIXUS-MG7730F" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXUS-MG7730F">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7740" driver="bjc-PIXMA-MG7740" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7740">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7750" driver="bjc-PIXMA-MG7750" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7750">EXPERIMENTAL</printer><!-- black model --> + <printer translate="name" name="Canon PIXMA MG7751" driver="bjc-PIXMA-MG7751" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7751">EXPERIMENTAL</printer><!-- white model --> + <printer translate="name" name="Canon PIXMA MG7752" driver="bjc-PIXMA-MG7752" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7752">EXPERIMENTAL</printer><!-- red model --> + <printer translate="name" name="Canon PIXMA MG7753" driver="bjc-PIXMA-MG7753" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7753">EXPERIMENTAL</printer><!-- gold model --> + <printer translate="name" name="Canon PIXMA MG7770" driver="bjc-PIXMA-MG7770" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7770">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7780" driver="bjc-PIXMA-MG7780" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7780">EXPERIMENTAL</printer> + <printer translate="name" name="Canon PIXMA MG7790" driver="bjc-PIXMA-MG7790" manufacturer="Canon" model="8007700" parameters="PIXMA_iP4300_params" foomaticid="Canon-PIXMA-MG7790">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">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> @@ -1254,6 +1317,8 @@ <printer translate="name" name="Epson B-500DN" driver="escp2-b500dn" manufacturer="Epson" model="87" parameters="standard_params" foomaticid="Epson-B500DN" /> <printer translate="name" name="Epson B-508DN" driver="escp2-b508dn" manufacturer="Epson" model="87" parameters="standard_params" foomaticid="Epson-B508DN" /> <printer translate="name" name="Epson B-510DN" driver="escp2-b510dn" manufacturer="Epson" model="87" parameters="standard_params" foomaticid="Epson-B510DN" /> + <printer translate="name" name="Epson L120" driver="escp2-l120" manufacturer="Epson" model="80" parameters="cx3500_params" foomaticid="Epson-L120" /> + <printer translate="name" name="Epson L210" driver="escp2-l210" manufacturer="Epson" model="80" parameters="cx3500_params" foomaticid="Epson-L210" /> <printer translate="name" name="Epson Stylus C20" deviceid="MFG:EPSON;MDL:Stylus C20;DES:EPSON Stylus C20;CMD:ESCPL2,BDC,D4;" driver="escp2-c20" manufacturer="Epson" model="42" parameters="480_params" foomaticid="Epson-Stylus_C20" /> <printer translate="name" name="Epson Stylus C20SX" driver="escp2-c20sx" manufacturer="Epson" model="42" parameters="480_params" foomaticid="Epson-Stylus_C20SX" /> <printer translate="name" name="Epson Stylus C20UX" deviceid="MFG:EPSON;MDL:Stylus C20;DES:EPSON Stylus C20;CMD:ESCPL2,BDC,D4;" driver="escp2-c20ux" manufacturer="Epson" model="42" parameters="480_params" foomaticid="Epson-Stylus_C20UX" /> @@ -1677,7 +1742,6 @@ <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" /> @@ -1821,6 +1885,7 @@ <printer translate="name" name="Brother HL-2035" driver="brother-hl-2035" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-2035" /> <!-- --> <printer translate="name" name="Brother HL-2060" driver="brother-hl-2060" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-2060" /> + <printer translate="name" name="Brother HL-2250DN" driver="brother-hl-2250dn" manufacturer="Brother" model="62" parameters="pcl_laser_params" foomaticid="Brother-HL-2250DN" /> <printer translate="name" name="Brother HL-2460" deviceid="MFG:Brother;MDL:Brother HL-2460 series;" driver="brother-hl-2460" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-2460" /> <printer translate="name" name="Brother HL-2460N" driver="brother-hl-2460n" manufacturer="Brother" model="6" parameters="pcl_laser_params" foomaticid="Brother-HL-2460N" /> <printer translate="name" name="Brother HL-4Ve" driver="brother-hl-4ve" manufacturer="Brother" model="2" parameters="pcl_laser_params" foomaticid="Brother-HL-4Ve" /> @@ -1892,8 +1957,10 @@ <printer translate="name" name="Fujitsu PrintPartner 20W" driver="fujitsu-pp_20w" manufacturer="Fujitsu" model="6" parameters="pcl_laser_params" foomaticid="Fujitsu-PrintPartner_20W" /> <printer translate="name" name="Fujitsu PrintPartner 8000" driver="fujitsu-pp_8000" manufacturer="Fujitsu" model="3" parameters="pcl_laser_params" foomaticid="Fujitsu-PrintPartner_8000" /> <printer translate="name" name="Generic PCL 4 Printer" driver="pcl-g_4" manufacturer="Generic" model="2" parameters="pcl_laser_params" foomaticid="Generic-PCL_4_Printer" /> + <printer translate="name" name="Generic PCL 4 Printer wide margin" driver="pcl-g_4_a4" manufacturer="Generic" model="22" parameters="pcl_laser_params" foomaticid="Generic-PCL_4_Printer_wide_margin" /> <printer translate="name" name="Generic PCL 4 LF Printer" driver="pcl-g_4_l" manufacturer="Generic" model="23" parameters="pcl_laser_params" foomaticid="Generic-PCL_4_LF_Printer" /> <printer translate="name" name="Generic PCL 5 Printer" driver="pcl-g_5" manufacturer="Generic" model="3" parameters="pcl_laser_params" foomaticid="Generic-PCL_5_Printer" /> + <printer translate="name" name="Generic PCL 5 Printer wide margin" driver="pcl-g_5_a4" manufacturer="Generic" model="32" parameters="pcl_laser_params" foomaticid="Generic-PCL_5_Printer_wide_margin" /> <printer translate="name" name="Generic PCL 5 LF Printer" driver="pcl-g_5_l" manufacturer="Generic" model="33" parameters="pcl_laser_params" foomaticid="Generic-PCL_5_LF_Printer" /> <printer translate="name" name="Generic PCL 5c Printer" driver="pcl-g_5c" manufacturer="Generic" model="6" parameters="pcl_laser_params" foomaticid="Generic-PCL_5c_Printer" /> <printer translate="name" name="Generic PCL 5c LF Printer" driver="pcl-g_5c_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" foomaticid="Generic-PCL_5c_LF_Printer" /> @@ -1901,6 +1968,9 @@ <printer translate="name" name="Generic PCL 5e LF Printer" driver="pcl-g_5e_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" foomaticid="Generic-PCL_5e_LF_Printer" /> <printer translate="name" name="Generic PCL 6/PCL XL Printer" driver="pcl-g_6" manufacturer="Generic" model="6" parameters="pcl_laser_params" foomaticid="Generic-PCL_6_PCL_XL_Printer" /> <printer translate="name" name="Generic PCL 6/PCL XL LF Printer" driver="pcl-g_6_l" manufacturer="Generic" model="61" parameters="pcl_laser_params" foomaticid="Generic-PCL_6_PCL_XL_LF_Printer" /> + <printer translate="name" name="Generic PCL 6 Printer wide margin" driver="pcl-g_6_a4" manufacturer="Generic" model="62" parameters="pcl_laser_params" foomaticid="Generic-PCL_6_Printer_wide_margin" /> + <printer translate="name" name="Generic PCL 6 LF Printer wide margin" driver="pcl-g_6_lf_a4" manufacturer="Generic" model="63" parameters="pcl_laser_params" foomaticid="Generic-PCL_6_LF_Printer_wide_margin" /> + <printer translate="name" name="Generic PCL 6 Tabl Printer wide margin" driver="pcl-g_6_tabloid_a4" manufacturer="Generic" model="64" parameters="pcl_laser_params" foomaticid="Generic-PCL_6_Tabloid_Printer_wide_margin" /> <printer translate="name" name="Gestetner 10512" driver="gestetner-10512" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" foomaticid="Gestetner-10512" /> <printer translate="name" name="Gestetner 2212" driver="gestetner-2212" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" foomaticid="Gestetner-2212" /> <printer translate="name" name="Gestetner 2712" driver="gestetner-2712" manufacturer="Gestetner" model="61" parameters="pcl_laser_params" foomaticid="Gestetner-2712" /> @@ -2759,6 +2829,9 @@ <printer translate="name" name="Lexmark Z53" driver="lexmark-z53" manufacturer="Lexmark" model="10052" parameters="standard_params" foomaticid="Lexmark-Z53" /> </family> <family name="dyesub"> + <parameters name="nativecopies"> + <parameter type="boolean" name="NativeCopies">1</parameter> + </parameters> <printer translate="name" name="Olympus P-10" driver="olympus-p10" manufacturer="Olympus" model="2" foomaticid="Olympus-P-10" /> <printer translate="name" name="Olympus P-11" driver="olympus-p11" manufacturer="Olympus" model="2" foomaticid="Olympus-P-11" /> <printer translate="name" name="Olympus P-200" driver="olympus-p200" manufacturer="Olympus" model="4" foomaticid="Olympus-P-200" /> @@ -2770,46 +2843,46 @@ <printer translate="name" name="Olympus P-400" driver="olympus-p400" manufacturer="Olympus" model="1" foomaticid="Olympus-P-400" /> <printer translate="name" name="Olympus P-440" driver="olympus-p440" manufacturer="Olympus" model="3" foomaticid="Olympus-P-440" /> <printer translate="name" name="Olympus P-S100" driver="olympus-ps100" manufacturer="Olympus" model="20" foomaticid="Olympus-P-S100" /> - <printer translate="name" name="Canon CP-10" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-10;CLS:PRINTER;DES:Canon CP-10;VER:1.00;" driver="canon-cp10" manufacturer="Canon" model="1002" foomaticid="Canon-CP-10" /> - <printer translate="name" name="Canon CP-100" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-100;CLS:PRINTER;DES:Canon CP-100;VER:1.00;" driver="canon-cp100" manufacturer="Canon" model="1000" foomaticid="Canon-CP-100" /> - <printer translate="name" name="Canon CP-200" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-200;CLS:PRINTER;DES:Canon CP-200;VER:1.00;" driver="canon-cp200" manufacturer="Canon" model="1000" foomaticid="Canon-CP-200" /> - <printer translate="name" name="Canon CP-220" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-220;CLS:PRINTER;DES:Canon CP-220;VER:1.00;" driver="canon-cp220" manufacturer="Canon" model="1001" foomaticid="Canon-CP-220" /> - <printer translate="name" name="Canon CP-300" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-300;CLS:PRINTER;DES:Canon CP-300;VER:1.00;" driver="canon-cp300" manufacturer="Canon" model="1000" foomaticid="Canon-CP-300" /> - <printer translate="name" name="Canon CP-330" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-330;CLS:PRINTER;DES:Canon CP-330;VER:1.00;" driver="canon-cp330" manufacturer="Canon" model="1001" foomaticid="Canon-CP-330" /> - <printer translate="name" name="Canon SELPHY CP400" deviceid="MFG:Canon;CMD:Raster3;MDL:CP400;CLS:PRINTER;DES:Canon CP400;VER:1.00;" driver="canon-cp400" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP400" /> - <printer translate="name" name="Canon SELPHY CP500" deviceid="MFG:Canon;CMD:Raster3;MDL:CP500;CLS:PRINTER;DES:Canon CP500;VER:1.00;" driver="canon-cp500" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP500" /> - <printer translate="name" name="Canon SELPHY CP510" deviceid="MFG:Canon;CMD:Raster3;MDL:CP510;CLS:PRINTER;DES:Canon CP510;VER:1.00;" driver="canon-cp510" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP510" /> - <printer translate="name" name="Canon SELPHY CP520" driver="canon-cp520" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP520" /> - <printer translate="name" name="Canon SELPHY CP530" deviceid="MFG:Canon;CMD:Raster3;MDL:CP530;CLS:PRINTER;DES:Canon CP530;VER:1.00;" driver="canon-cp530" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP530" /> - <printer translate="name" name="Canon SELPHY CP600" deviceid="MFG:Canon;CMD:Raster3;MDL:CP600;CLS:PRINTER;DES:Canon CP600;VER:1.00;" driver="canon-cp600" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP600" /> - <printer translate="name" name="Canon SELPHY CP710" deviceid="MFG:Canon;CMD:Raster3;MDL:CP710;CLS:PRINTER;DES:Canon CP710;VER:1.00;" driver="canon-cp710" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP710" /> - <printer translate="name" name="Canon SELPHY CP720" deviceid="MFG:Canon;CMD:Raster3;MDL:CP720;CLS:PRINTER;DES:Canon CP720;VER:1.00;" driver="canon-cp720" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP720" /> - <printer translate="name" name="Canon SELPHY CP730" deviceid="MFG:Canon;CMD:Raster3;MDL:CP730;CLS:PRINTER;DES:Canon CP730;VER:1.00;" driver="canon-cp730" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP730" /> - <printer translate="name" name="Canon SELPHY CP740" driver="canon-cp740" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP740" /> - <printer translate="name" name="Canon SELPHY CP750" deviceid="MFG:Canon;CMD:Raster3;MDL:CP750;CLS:PRINTER;DES:Canon CP750;VER:1.00;" driver="canon-cp750" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP750" /> - <printer translate="name" name="Canon SELPHY CP760" deviceid="MFG:Canon;CMD:Raster3;MDL:CP760;CLS:PRINTER;DES:Canon CP760;VER:1.00;" driver="canon-cp760" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP760" /> - <printer translate="name" name="Canon SELPHY CP770" driver="canon-cp770" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP770" /> - <printer translate="name" name="Canon SELPHY CP780" deviceid="MFG:Canon;CMD:Raster3;MDL:CP780;CLS:PRINTER;DES:Canon CP780;VER:1.00;" driver="canon-cp780" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP780" /> - <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 CP-10" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-10;CLS:PRINTER;DES:Canon CP-10;VER:1.00;" driver="canon-cp10" manufacturer="Canon" model="1002" foomaticid="Canon-CP-10" parameters="nativecopies" /> + <printer translate="name" name="Canon CP-100" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-100;CLS:PRINTER;DES:Canon CP-100;VER:1.00;" driver="canon-cp100" manufacturer="Canon" model="1000" foomaticid="Canon-CP-100" parameters="nativecopies" /> + <printer translate="name" name="Canon CP-200" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-200;CLS:PRINTER;DES:Canon CP-200;VER:1.00;" driver="canon-cp200" manufacturer="Canon" model="1000" foomaticid="Canon-CP-200" parameters="nativecopies" /> + <printer translate="name" name="Canon CP-220" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-220;CLS:PRINTER;DES:Canon CP-220;VER:1.00;" driver="canon-cp220" manufacturer="Canon" model="1001" foomaticid="Canon-CP-220" parameters="nativecopies" /> + <printer translate="name" name="Canon CP-300" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-300;CLS:PRINTER;DES:Canon CP-300;VER:1.00;" driver="canon-cp300" manufacturer="Canon" model="1000" foomaticid="Canon-CP-300" parameters="nativecopies" /> + <printer translate="name" name="Canon CP-330" deviceid="MFG:Canon;CMD:Raster3;MDL:CP-330;CLS:PRINTER;DES:Canon CP-330;VER:1.00;" driver="canon-cp330" manufacturer="Canon" model="1001" foomaticid="Canon-CP-330" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP400" deviceid="MFG:Canon;CMD:Raster3;MDL:CP400;CLS:PRINTER;DES:Canon CP400;VER:1.00;" driver="canon-cp400" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP400" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP500" deviceid="MFG:Canon;CMD:Raster3;MDL:CP500;CLS:PRINTER;DES:Canon CP500;VER:1.00;" driver="canon-cp500" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP500" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP510" deviceid="MFG:Canon;CMD:Raster3;MDL:CP510;CLS:PRINTER;DES:Canon CP510;VER:1.00;" driver="canon-cp510" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP510" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP520" driver="canon-cp520" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP520" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP530" deviceid="MFG:Canon;CMD:Raster3;MDL:CP530;CLS:PRINTER;DES:Canon CP530;VER:1.00;" driver="canon-cp530" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP530" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP600" deviceid="MFG:Canon;CMD:Raster3;MDL:CP600;CLS:PRINTER;DES:Canon CP600;VER:1.00;" driver="canon-cp600" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP600" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP710" deviceid="MFG:Canon;CMD:Raster3;MDL:CP710;CLS:PRINTER;DES:Canon CP710;VER:1.00;" driver="canon-cp710" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP710" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP720" deviceid="MFG:Canon;CMD:Raster3;MDL:CP720;CLS:PRINTER;DES:Canon CP720;VER:1.00;" driver="canon-cp720" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP720" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP730" deviceid="MFG:Canon;CMD:Raster3;MDL:CP730;CLS:PRINTER;DES:Canon CP730;VER:1.00;" driver="canon-cp730" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP730" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP740" driver="canon-cp740" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP740" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP750" deviceid="MFG:Canon;CMD:Raster3;MDL:CP750;CLS:PRINTER;DES:Canon CP750;VER:1.00;" driver="canon-cp750" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP750" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP760" deviceid="MFG:Canon;CMD:Raster3;MDL:CP760;CLS:PRINTER;DES:Canon CP760;VER:1.00;" driver="canon-cp760" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP760" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP770" driver="canon-cp770" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP770" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY CP780" deviceid="MFG:Canon;CMD:Raster3;MDL:CP780;CLS:PRINTER;DES:Canon CP780;VER:1.00;" driver="canon-cp780" manufacturer="Canon" model="1001" foomaticid="Canon-SELPHY-CP780" parameters="nativecopies" /> + <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" parameters="nativecopies" /> + <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" parameters="nativecopies" /> + <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" parameters="nativecopies" /> <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 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" parameters="nativecopies" /> <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" /> - <printer translate="name" name="Canon SELPHY ES20" driver="canon-es20" manufacturer="Canon" model="1005" foomaticid="Canon-SELPHY-ES20" /> - <printer translate="name" name="Canon SELPHY ES30" deviceid="MFG:Canon;CMD:Raster3;MDL:ES30;CLS:PRINTER;DES:Canon SELPHY ES30;VER:1.00;" driver="canon-es30" manufacturer="Canon" model="1006" foomaticid="Canon-SELPHY-ES30" /> - <printer translate="name" name="Canon SELPHY ES40" deviceid="MFG:Canon;CMD:Raster3;MDL:ES40;CLS:PRINTER;DES:Canon SELPHY ES40;VER:1.00;" driver="canon-es40" manufacturer="Canon" model="1007" foomaticid="Canon-SELPHY-ES40" /> + <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" parameters="nativecopies" /> + <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" parameters="nativecopies" /> + <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" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY ES20" driver="canon-es20" manufacturer="Canon" model="1005" foomaticid="Canon-SELPHY-ES20" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY ES30" deviceid="MFG:Canon;CMD:Raster3;MDL:ES30;CLS:PRINTER;DES:Canon SELPHY ES30;VER:1.00;" driver="canon-es30" manufacturer="Canon" model="1006" foomaticid="Canon-SELPHY-ES30" parameters="nativecopies" /> + <printer translate="name" name="Canon SELPHY ES40" deviceid="MFG:Canon;CMD:Raster3;MDL:ES40;CLS:PRINTER;DES:Canon SELPHY ES40;VER:1.00;" driver="canon-es40" manufacturer="Canon" model="1007" foomaticid="Canon-SELPHY-ES40" parameters="nativecopies" /> <printer translate="name" name="Sony UP-DP10" driver="sony-updp10" manufacturer="Sony" model="2000" foomaticid="Sony-UP-DP10" /> - <printer translate="name" name="Sony UP-DR150" deviceid="MFG:Sony;MDL:UP-DR150;DES:Sony UP-DR150;CMD:SONY-Original;CLS:PRINTER" driver="sony-updr150" manufacturer="Sony" model="2001" foomaticid="Sony-UP-DR150" /> + <printer translate="name" name="Sony UP-DR150" deviceid="MFG:Sony;MDL:UP-DR150;DES:Sony UP-DR150;CMD:SONY-Original;CLS:PRINTER" driver="sony-updr150" manufacturer="Sony" model="2001" foomaticid="Sony-UP-DR150" parameters="nativecopies" /> <printer translate="name" name="Sony DPP-EX5" driver="sony-dppex5" manufacturer="Sony" model="2002" foomaticid="Sony-DPP-EX5" /> <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="Sony UP-DR200" driver="sony-updr200" manufacturer="Sony" model="2004" foomaticid="Sony-UP-DR200" parameters="nativecopies" /> + <printer translate="name" name="Sony UP-CR10L" driver="sony-upcr10l" manufacturer="Sony" model="2005" foomaticid="Sony-UP-CR10L" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Dai Nippon Printing SL10" driver="dnp-sl10" manufacturer="Dai Nippon Printing" model="2005" foomaticid="DNP-SL10" parameters="nativecopies">EXPERIMENTAL</printer> <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" /> @@ -2821,52 +2894,56 @@ <printer translate="name" name="Kodak Photo-Printer-500" driver="kodak-photo-printer-500" manufacturer="Kodak" model="4000" foomaticid="Kodak-Photo-Printer-500" /> <printer translate="name" name="Kodak Printer-Dock-Plus" driver="kodak-dock-plus" manufacturer="Kodak" model="4000" foomaticid="Kodak-Printer-Dock-Plus" /> <printer translate="name" name="Kodak Printer-Dock-Plus-S3" driver="kodak-dock-plus-s3" manufacturer="Kodak" model="4000" foomaticid="Kodak-Printer-Dock-Plus-S3" /> - <printer translate="name" name="Kodak 6800" deviceid="MFG:Eastman Kodak Company;CMD:ESC;MDL:Photo Printer 6800;CLS:PRINTER;DES:KODAK Photo Printer 6800;" driver="kodak-6800" manufacturer="Kodak" model="4001" foomaticid="Kodak-6800" /> - <printer translate="name" name="Kodak 6850" deviceid="MFG:Eastman Kodak Company;CMD:ESC;MDL:Photo Printer 6850;CLS:PRINTER;DES:KODAK Photo Printer 6850;" driver="kodak-6850" manufacturer="Kodak" model="4002" foomaticid="Kodak-6850" /> - <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 6800" deviceid="MFG:Eastman Kodak Company;CMD:ESC;MDL:Photo Printer 6800;CLS:PRINTER;DES:KODAK Photo Printer 6800;" driver="kodak-6800" manufacturer="Kodak" model="4001" foomaticid="Kodak-6800" parameters="nativecopies" /> + <printer translate="name" name="Kodak 6850" deviceid="MFG:Eastman Kodak Company;CMD:ESC;MDL:Photo Printer 6850;CLS:PRINTER;DES:KODAK Photo Printer 6850;" driver="kodak-6850" manufacturer="Kodak" model="4002" foomaticid="Kodak-6850" parameters="nativecopies" /> + <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" parameters="nativecopies" /> + <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" parameters="nativecopies" /> + <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" parameters="nativecopies" /> <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="Kodak 7000" driver="kodak-7000" manufacturer="Kodak" model="4008" foomaticid="Kodak-7000">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak 7010" driver="kodak-7010" manufacturer="Kodak" model="4008" foomaticid="Kodak-7010">EXPERIMENTAL</printer> + <printer translate="name" name="Kodak 7015" driver="kodak-7015" manufacturer="Kodak" model="4009" foomaticid="Kodak-7015">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-9550D" deviceid="MFG:MITSUBISHI;CMD:MEL;MDL:CP9550D ;CLS:PRINTER;DES:MITSUBISHI CP9550D" driver="mitsubishi-9550d" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550D" parameters="nativecopies" /> + <printer translate="name" name="Mitsubishi CP-9550DW" driver="mitsubishi-9550dw" manufacturer="Mitsubishi" model="4103" foomaticid="Mitsubishi-9550DW" parameters="nativecopies" /> + <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" parameters="nativecopies">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">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="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" parameters="nativecopies">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" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-K60DW-S" driver="mitsubishi-k60dw" manufacturer="Mitsubishi" model="4106" foomaticid="Mitsubishi-K60DW-S" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-D80DW" driver="mitsubishi-d80dw" manufacturer="Mitsubishi" model="4107" foomaticid="Mitsubishi-D80DW" parameters="nativecopies">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" parameters="nativecopies">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 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="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" parameters="nativecopies" /> + <printer translate="name" name="Sinfonia S2145/S2" driver="sinfonia-chcs2145" manufacturer="Sinfonia" model="5001" foomaticid="Sinfonia-CHC-S2145" parameters="nativecopies" /> + <printer translate="name" name="Shinko CHC-S1245" driver="shinko-chcs1245" manufacturer="Shinko" model="5002" foomaticid="Shinko-CHC-S1245" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Sinfonia CHC-S1245/E1" driver="sinfonia-chcs1245" manufacturer="Sinfonia" model="5002" foomaticid="Sinfonia-CHC-S1245" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Shinko CHC-S6245" driver="shinko-chcs6245" manufacturer="Shinko" model="5003" foomaticid="Shinko-CHC-S6245" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Sinfonia CHC-S6245/CE1" driver="sinfonia-chcs6245" manufacturer="Sinfonia" model="5003" foomaticid="Sinfonia-CHC-S6245" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Shinko CHC-S6145" deviceid="MFG:SINFONIA;CMD:SUPCC;MDL:CHC-S6145;CLS:PRINTER;DES:Thermal Dye Photo Printer;" 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" 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="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" /> + <printer translate="name" name="Dai Nippon Printing DS40" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS40;" driver="dnp-ds40" manufacturer="Dai Nippon Printing" model="6000" foomaticid="DNP-DS40" parameters="nativecopies" /> + <printer translate="name" name="Dai Nippon Printing DS80" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS80;" driver="dnp-ds80" manufacturer="Dai Nippon Printing" model="6001" foomaticid="DNP-DS80" parameters="nativecopies" /> + <printer translate="name" name="Dai Nippon Printing DSRX1" driver="dnp-dsrx1" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DS-RX1;" manufacturer="Dai Nippon Printing" model="6002" foomaticid="DNP-DSRX1" parameters="nativecopies" /> + <printer translate="name" name="Dai Nippon Printing DS620" driver="dnp-ds620" deviceid="MANUFACTURER:Dai Nippon Printing ;MODEL:DP-DS620;" manufacturer="Dai Nippon Printing" model="6003" foomaticid="DNP-DS620" parameters="nativecopies" /> + <printer translate="name" name="Citizen CX" driver="citizen-cx" deviceid="MANUFACTURER:CITIZEN SYSTEMS ;MODEL:CX;" manufacturer="Citizen" model="6000" foomaticid="Citizen-CX" parameters="nativecopies" /> + <printer translate="name" name="Citizen CX-W" driver="citizen-cx-w" manufacturer="Citizen" model="6001" foomaticid="Citizen-CX-W" parameters="nativecopies" /> + <printer translate="name" name="Citizen CY" driver="citizen-cy" manufacturer="Citizen" model="6002" foomaticid="Citizen-CY" parameters="nativecopies" /> + <printer translate="name" name="Citizen CW-01" driver="citizen-cw-01" manufacturer="Citizen" model="6005" foomaticid="Citizen-CW-01" parameters="nativecopies" /> + <printer translate="name" name="Citizen OP900" driver="citizen-op900" manufacturer="Citizen" model="6005" foomaticid="Citizen-OP900" parameters="nativecopies" /> + <printer translate="name" name="Citizen CW-02" driver="citizen-cw-02" manufacturer="Citizen" model="6000" foomaticid="Citizen-CW-02" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Citizen OP900II" driver="citizen-op900ii" manufacturer="Citizen" model="6000" foomaticid="Citizen-OP900II" parameters="nativecopies">EXPERIMENTAL</printer> + <printer translate="name" name="Mitsubishi CP-3800DW" driver="mitsubishi-cp-3800dw" manufacturer="Mitsubishi" model="6001" foomaticid="Mitsubishi-CP-3800DW" parameters="nativecopies" /> + <printer translate="name" name="Dai Nippon Printing DS80DX" driver="dnp-ds80dx" manufacturer="Dai Nippon Printing" model="6006" foomaticid="DNP-DS80DX" parameters="nativecopies">EXPERIMENTAL</printer> </family> <family name="raw"> <printer translate="name" name="RAW DATA 16 bit" driver="raw-data-16" manufacturer="" model="0" /> |